diff --git a/config/zentaopms.php b/config/zentaopms.php
index d1d7953112..823209c6f1 100644
--- a/config/zentaopms.php
+++ b/config/zentaopms.php
@@ -395,6 +395,10 @@ define('TABLE_DESIGN', '`' . $config->db->prefix . 'design`');
define('TABLE_DESIGNSPEC', '`' . $config->db->prefix . 'designspec`');
define('TABLE_DOCLIB', '`' . $config->db->prefix . 'doclib`');
define('TABLE_DOC', '`' . $config->db->prefix . 'doc`');
+define('TABLE_DEMANDPOOL', '`' . $config->db->prefix . 'demandpool`');
+define('TABLE_DEMAND', '`' . $config->db->prefix . 'demand`');
+define('TABLE_DEMANDSPEC', '`' . $config->db->prefix . 'demandspec`');
+define('TABLE_DEMANDREVIEW', '`' . $config->db->prefix . 'demandreview`');
define('TABLE_API', '`' . $config->db->prefix . 'api`');
define('TABLE_API_SPEC', '`' . $config->db->prefix . 'apispec`');
define('TABLE_APISTRUCT', '`' . $config->db->prefix . 'apistruct`');
@@ -591,6 +595,13 @@ define('TABLE_AI_MODEL', '`' . $config->db->prefix . 'ai_model`');
define('TABLE_SQLITE_QUEUE', '`' . $config->db->prefix . 'sqlite_queue`');
+if(!defined('TABLE_ROADMAP')) define('TABLE_ROADMAP', '`' . $config->db->prefix . 'roadmap`');
+if(!defined('TABLE_ROADMAPSTORY')) define('TABLE_ROADMAPSTORY', '`' . $config->db->prefix . 'roadmapstory`');
+if(!defined('TABLE_CHARTER')) define('TABLE_CHARTER', '`' . $config->db->prefix . 'charter`');
+if(!defined('TABLE_MARKET')) define('TABLE_MARKET', '`' . $config->db->prefix . 'market`');
+if(!defined('TABLE_MARKETREPORT')) define('TABLE_MARKETREPORT', '`' . $config->db->prefix . 'marketreport`');
+if(!defined('TABLE_MARKETRESEARCH')) define('TABLE_MARKETRESEARCH', '`' . $config->db->prefix . 'project`');
+
$config->objectTables['dept'] = TABLE_DEPT;
$config->objectTables['product'] = TABLE_PRODUCT;
$config->objectTables['productplan'] = TABLE_PRODUCTPLAN;
@@ -614,6 +625,10 @@ $config->objectTables['user'] = TABLE_USER;
$config->objectTables['api'] = TABLE_API;
$config->objectTables['doc'] = TABLE_DOC;
$config->objectTables['doclib'] = TABLE_DOCLIB;
+$config->objectTables['demand'] = TABLE_DEMAND;
+$config->objectTables['demandpool'] = TABLE_DEMANDPOOL;
+$config->objectTables['demandspec'] = TABLE_DEMANDSPEC;
+$config->objectTables['demandreview'] = TABLE_DEMANDREVIEW;
$config->objectTables['todo'] = TABLE_TODO;
$config->objectTables['custom'] = TABLE_LANG;
$config->objectTables['branch'] = TABLE_BRANCH;
@@ -671,6 +686,12 @@ $config->objectTables['design'] = TABLE_DESIGN;
$config->objectTables['prompt'] = TABLE_AI_PROMPT;
$config->objectTables['aiapp'] = TABLE_AI_MINIPROGRAM;
$config->objectTables['miniprogram'] = TABLE_AI_MINIPROGRAM;
+$config->objectTables['roadmap'] = TABLE_ROADMAP;
+$config->objectTables['charter'] = TABLE_CHARTER;
+$config->objectTables['market'] = TABLE_MARKET;
+$config->objectTables['marketreport'] = TABLE_MARKETREPORT;
+$config->objectTables['marketresearch'] = TABLE_PROJECT;
+$config->objectTables['researchstage'] = TABLE_PROJECT;
$config->newFeatures = array('introduction', 'tutorial', 'youngBlueTheme', 'visions', 'aiPrompts', 'promptDesign', 'promptExec');
$config->disabledFeatures = '';
diff --git a/db/update20.0.beta2.sql b/db/update20.0.beta2.sql
index 36d961d7ae..5c731d6f40 100644
--- a/db/update20.0.beta2.sql
+++ b/db/update20.0.beta2.sql
@@ -17,3 +17,7 @@ ALTER TABLE zt_metriclib MODIFY id bigint AUTO_INCREMENT;
UPDATE `zt_chart` SET `sql` = 'select tt.topProgram,tt.programID as id,tt.`year`,sum(tt.product) as product,sum(tt.plan) as plan,sum(tt.`release`) as `release`,sum(tt.story) as story,sum(tt.bug) as bug,sum(tt.doc) as doc\r\nfrom (\r\nselect t2.name as topProgram,t2.id as programID,t0.`year`,count(1) as product,0 as plan,0 as story,0 as bug,0 as `release`, 0 as doc\r\nfrom zt_product t1\r\nleft join (SELECT DISTINCT YEAR(`date`) as \'year\' FROM zt_action) t0 on YEAR(t1.createdDate) = t0.`year`\r\nleft join zt_project t2 on t1.program = t2.id\r\nwhere t1.deleted = \'0\' and t1.shadow = \'0\'\r\nand t2.type = \'program\' and t2.grade = 1 and t2.deleted = \'0\'\r\ngroup by t2.id, t0.`year`\r\nunion all\r\nselect t3.name as topProgram,t3.id as programID,t0.`year`,0 as product,count(1) as plan,0 as story,0 as bug,0 as `release`, 0 as doc\r\nfrom zt_productplan t1\r\nleft join (SELECT DISTINCT YEAR(`date`) as \'year\' FROM zt_action) t0 on YEAR(t1.createdDate) = t0.`year`\r\nleft join zt_product t2 on t2.id = t1.product\r\nleft join zt_project t3 on t2.program = t3.id\r\nwhere t1.deleted = \'0\'\r\nand t2.deleted = \'0\'\r\nand t3.type = \'program\' and t3.grade = 1 and t3.deleted = \'0\'\r\ngroup by t3.id, t0.`year`\r\nunion all\r\nselect t3.name as topProgram,t3.id as programID,t0.`year`,0 as product,0 as plan,0 as story,0 as bug,0 as `release`, count(1) as doc\r\nfrom zt_doc t1\r\nleft join (SELECT DISTINCT YEAR(`date`) as \'year\' FROM zt_action) t0 on YEAR(t1.addedDate) = t0.`year`\r\nleft join zt_product t2 on t2.id = t1.product\r\nleft join zt_project t3 on t2.program = t3.id\r\nwhere t1.deleted = \'0\'\r\nand t2.deleted = \'0\'\r\nand t3.type = \'program\' and t3.grade = 1 and t3.deleted = \'0\'\r\ngroup by t3.id, t0.`year`\r\nunion all\r\nselect t3.name as topProgram,t3.id as programID,t0.`year`,0 as product,0 as plan,0 as story,0 as bug,0 as `release`, count(distinct t1.id) as doc\r\nfrom zt_doc t1\r\nleft join (SELECT DISTINCT YEAR(`date`) as \'year\' FROM zt_action) t0 on YEAR(t1.addedDate) = t0.`year`\r\nleft join zt_projectproduct t4 on t1.project = t4.project\r\nleft join zt_product t2 on t2.id = t4.product\r\nleft join zt_project t3 on t2.program = t3.id\r\nwhere t1.deleted = \'0\'\r\nand t2.deleted = \'0\'\r\nand t3.type = \'program\' and t3.grade = 1 and t3.deleted = \'0\'\r\ngroup by t3.id, t0.`year`\r\nunion all\r\nselect t3.name as topProgram,t3.id as programID,t0.`year`,0 as product,0 as plan,0 as story,0 as bug,count(1) as `release`, 0 as doc\r\nfrom zt_release t1\r\nleft join (SELECT DISTINCT YEAR(`date`) as \'year\' FROM zt_action) t0 on YEAR(t1.date) = t0.`year`\r\nleft join zt_product t2 on t2.id = t1.product\r\nleft join zt_project t3 on t2.program = t3.id\r\nwhere t1.deleted = \'0\'\r\nand t2.deleted = \'0\'\r\nand t3.type = \'program\' and t3.grade = 1 and t3.deleted = \'0\'\r\ngroup by t3.id, t0.`year`\r\nunion all\r\nselect t3.name as topProgram,t3.id as programID,t0.`year`,0 as product,0 as plan,count(1) as story,0 as bug,0 as `release`, 0 as doc\r\nfrom zt_story t1\r\nleft join (SELECT DISTINCT YEAR(`date`) as \'year\' FROM zt_action) t0 on YEAR(t1.openedDate) = t0.`year`\r\nleft join zt_product t2 on t2.id = t1.product\r\nleft join zt_project t3 on t2.program = t3.id\r\nwhere t1.deleted = \'0\'\r\nand t2.deleted = \'0\'\r\nand t3.type = \'program\' and t3.grade = 1 and t3.deleted = \'0\'\r\ngroup by t3.id, t0.`year`\r\nunion all\r\nselect t3.name as topProgram,t3.id as programID,t0.`year`,0 as product,0 as plan,0 as story,count(1) as bug,0 as `release`, 0 as doc\r\nfrom zt_bug t1\r\nleft join (SELECT DISTINCT YEAR(`date`) as \'year\' FROM zt_action) t0 on YEAR(t1.openedDate) = t0.`year`\r\nleft join zt_product t2 on t2.id = t1.product\r\nleft join zt_project t3 on t2.program = t3.id\r\nwhere t1.deleted = \'0\'\r\nand t2.deleted = \'0\'\r\nand t3.type = \'program\' and t3.grade = 1 and t3.deleted = \'0\'\r\ngroup by t3.id, t0.`year`\r\n) tt\r\ngroup by tt.programID, tt.`year`' WHERE `name` = '年度新增-项目集年度新增数据汇总表';
UPDATE `zt_chart` SET `sql` = 'SELECT YEAR(t1.date) AS `year`,IFNULL(t2.realname,t1.actor) AS realname,count(1) AS count FROM zt_action t1 LEFT JOIN zt_user AS t2 ON t1.actor=t2.account where t1.actor is not null and t1.actor not in(\'\', \'system\') GROUP BY `year`,t1.actor ORDER BY `year`, `count` DESC' WHERE `name` = '年度排行-个人-禅道操作次数榜';
UPDATE `zt_chart` SET `sql` = 'SELECT t1.id, t1.NAME AS project, IFNULL( t2.NAME, \'/\') AS program, IFNULL( t3.story, 0 ) AS story, IFNULL( t3.estimate, 0 ) AS estimate, IFNULL( t4.execution, 0 ) AS execution, IFNULL( t5.workhour, 0 ) AS workhour FROM zt_project AS t1 LEFT JOIN zt_project AS t2 ON FIND_IN_SET( t2.id, t1.path ) AND t2.deleted = \'0\' AND t2.type = \'program\' AND t2.grade = 1 LEFT JOIN( SELECT t1.parent AS project, COUNT( 1 ) AS story, ROUND( SUM( t1.estimate ), 1 ) AS estimate FROM ( SELECT DISTINCT t1.parent, t3.id, t3.estimate FROM zt_project AS t1 LEFT JOIN zt_projectstory AS t2 ON t1.id = t2.project LEFT JOIN zt_story AS t3 ON t2.story = t3.id AND t3.deleted = \'0\' AND t3.stage NOT IN ( \'verified\', \'released\', \'closed\' ) WHERE t1.deleted = \'0\' AND t1.type IN ( \'sprint\', \'stage\', \'kanban\' ) AND t3.id IS NOT NULL ) AS t1 GROUP BY project ) AS t3 ON t1.id = t3.project LEFT JOIN ( SELECT parent AS project, COUNT( 1 ) AS execution FROM zt_project WHERE deleted = \'0\' AND type IN ( \'sprint\', \'stage\', \'kanban\' ) AND multiple = \'1\' AND STATUS NOT IN ( \'done\', \'closed\' ) GROUP BY project ) AS t4 ON t1.id = t4.project LEFT JOIN ( SELECT t1.parent AS project, ROUND( SUM( t2.LEFT ), 1 ) AS workhour FROM zt_project AS t1 LEFT JOIN zt_task AS t2 ON t1.id = t2.execution AND t2.deleted = \'0\' AND t2.parent < 1 WHERE t1.deleted = \'0\' AND t1.type IN ( \'sprint\', \'stage\', \'kanban\' ) AND t1.STATUS NOT IN ( \'done\', \'closed\' ) AND t2.id IS NOT NULL GROUP BY project ) AS t5 ON t1.id = t5.project WHERE t1.deleted = \'0\' AND t1.type = \'project\' AND t1.STATUS = \'doing\'' WHERE `name` = '年度进行中项目-项目剩余工作量透视表';
+
+UPDATE `zt_grouppriv` SET `method` = 'recordWorkhour' WHERE `module` = 'task' AND `method` = 'recordEstimate';
+UPDATE `zt_grouppriv` SET `method` = 'editEffort' WHERE `module` = 'task' AND `method` = 'editEstimate';
+UPDATE `zt_grouppriv` SET `method` = 'deleteWorkhour' WHERE `module` = 'task' AND `method` = 'deleteEstimate';
diff --git a/doc/CHANGELOG b/doc/CHANGELOG
index 9a7481802f..8d0b250ec1 100644
--- a/doc/CHANGELOG
+++ b/doc/CHANGELOG
@@ -1,125 +1,307 @@
-2024-04-15 20.0
+2024-04-23 20.0
完成的需求
修复的Bug
开源版:
-45780 【20版本】项目集年度新增数据汇总表文档数没有统计项目和执行下的数据
-46259 【20版本】关联代码库页面字段展示空白
-46209 【20版本】测试用例页面报错
-46099 【20版本】新手教程项目概况页面有报错
-46090 【20版本】后台设置关闭软需备注为必填项关闭需求时设置不生效
-46013 【20版本】个人面板下拉被遮挡
-45936 【20版本】执行看板中转入任务弹窗中部分内容未添加英文语言项
-45916 【20版本】测试单下批量执行用例建议增加提示信息
-45552 【20版本】待处理-用例下执行用例,执行结果为失败,关闭弹窗没有刷新页面
-45541 【20版本】创建泳道时泳道颜色按钮样式异常
-45351 【20版本】产品计划删除计划提示弹窗样式未更新为最新
-45210 【20版本】设置看板泳道颜色的显示样式有误
-45168 【20版本】创建好执行后的提示语不对
-45163 【20版本】树状图和20版本需求样式不同
-45154 【20版本】删除阶段弹窗样式与20版本规范不一致
-45098 【20版本】创建融合瀑布项目,复制项目后,提示语不展示
-45083 【20版本】用例列表区块没有数据时,中间多了一条横线
-45062 【20版本】后台二开编辑器页面列表标题和缩进样式有误
-45032 【20版本】测试下提bug表单中维护模块时,点击产品跳转链接不正确
-44993 【20版本】接口空间的版本管理样式需要优化
-44899 【20版本】看板项目在设置-产品新关联产品没有历史记录
-44885 【20版本】瀑布和融合瀑布项目于产品解除关联的逻辑未修改
-44871 【20版本】敏捷项目-产品型-有迭代不能关联其他产品
-44870 【20版本】执行总览中执行总量的数据和列表对不上
-44743 【20版本】项目集白名单选择权限组后,项目集白名单内无白名单人员展示
-44694 【20版本】地盘动态的背景太暗了
-44691 【20版本】审批按钮语义不清晰
-44689 【20版本】创建执行固定团队名称字段后,勾选复制团队后未显示复制团队字段
-44681 【20版本】编辑泳道的泳道颜色样式需优化
-44635 【20版本】创建泳道的泳道颜色样式需优化
-44626 【20版本】项目的历史记录,汉化不完整
-44605 【20版本】项目列表选“全部”,选一个项目点删除,删完跳到了“进行中”
-44591 【20版本】项目列表保存搜索条件,无效
-44550 【20版本】融合瀑布-项目型编辑页面不应该展示阶段类型
-44524 【20版本】地盘仪表盘使用帮助区块中,鼠标悬浮的样式奇怪
-44519 【20版本】地盘仪表盘欢迎总览区块指派给我的任务数和待处理模块不一致
-43519 【20版本】专业研发看板下设置背景色弹窗中样式不对
-42994 【20版本】批量删除用例库用例没有二次提醒
-42583 【20版本】用例导图模式下点返回后到了列表视图下
-42460 【20版本】地盘仪表盘区块的问号提示闪动
-42405 【20版本】修改日志内容后弹窗没有更新
-42306 【20版本】执行研发需求导出弹窗页导出字段中显示了平台/分支
-42274 【20版本】点击已保存的查询条件后没有自动显示
-42233 【20版本】阶段列表各tab标签下子阶段的显示优化
+31080 公司级需求完成率和Bug修复率鼠标悬停时,显示了status
+31283 年度排行榜大屏中禅道操作次数帮有个人名称没有显示出来
+31554 项目剩余工作量透视表中无迭代项目的剩余执行数显示成了“1”
+32497 查看BI大屏公司数据盘点产品数量对不上
+34645 内置接口文档页面其他下显示dimension和pivot
+34772 产品名称较长时图表展示时右移了
+34807 图表的滚动条无法拖动
41081 【20版本】设置泳道背景色弹窗页,需再次点击才可设置颜色
-47667 【20版本】下载发布基本信息页面的附件提示没有权限访问
-46905 【20版本】操作文档库目录后,目录应不折叠
-46027 【20版本】员工负载表字段显示不完整
-45048 【20版本】用例列表自动化测试用例标签颜色
-44592 【20版本】产品列表选择某一项目集后,切换回所有项目集的交互异常
-43625 【20版本】新手教程部分页面未校验必填
-43214 【20版本】项目发布下修改附件名称保存后跳转到了发布的需求列表
-42486 【20版本】项目仪表盘[今年完成]迭代统计数量不正确
-47709 【20版本】全局搜索结果页输入ID全局搜索时搜索项重复展示
-47706 【20版本】任务记录工时保存后新增日志不能到已提交区块中
-47680 【20版本】全局搜索关键字搜索结果页面显示了二级导航
-47679 【20版本】全局搜索结果页面分页无效
-47673 【20版本】项目型项目的发布通知弹窗中选项换行显示
-47666 【20版本】发布下查看需求详情右侧会有重叠显示
-47594 【20版本】执行-bug页面报错
-47567 【20版本】已解决的bug批量解决后提示保存成功
-46466 【20版本】仅自动化下创建用例没有自动都选上自动化按钮
-46464 【20版本】关联用例默认记住了上次的查询条件,导致无法获取到可关联的用例
-46462 【20版本】套件关联用例,底部按钮被遮挡
-44667 【20版本】创建项目页,权限交互操作范围过大
-44597 【20版本】项目列表的搜索,这个按钮点了会闪
-43269 【20版本】上传php附件时未出现风险提示
-47675 【20版本】项目列表中勾选项目后点批量编辑按钮提示保存成功
-47672 【20版本】融合瀑布项目仪表盘有报错
-47663 【20版本】创建产品页面字段显示设置弹窗点击保存按钮没有反应
-47558 【20版本】接口库中创建数据结构报错
-44939 【20版本】批量编辑项目页面,计划结束不能选择长期
-43438 【20版本】用例或者场景无法拖动
-47640 【20版本】视野没BI权限,无法查看欢迎总览区块
-47457 【20版本】项目视图下选中某个项目集后创建项目页面所属项目集为自动带出
-47002 【20版本】执行下任务列表转入Bug时Bug详情页点击编辑或复制按钮后二级导航不对
-46977 【20版本】有产品无迭代项目用户需求列表页显示了按照计划关联按钮
-46497 【20版本】子场景下有用例,父场景下还提示暂无用例
-45157 【20版本】任务详情页中研发需求有变更时左侧缺少确认按钮
-45151 【20版本】编辑融合瀑布项目的自建测试阶段切换阶段类型为需求后,编辑前创建的阶段下Bug显示所属执行已删除
-45132 【20版本】创建执行页,同一个产品可以重复选择,且提示语不对
-45109 【20版本】创建执行选择运维迭代时未添加提示语
-45104 【20版本】复制执行的样式和需求不一致
-45079 【20版本】瀑布项目统计区块中进度偏差率和成本偏差率的背景颜色太暗
-45003 【20版本】项目集产品视角列表编辑产品选项缺失
-44992 【20版本】执行关联产品页面热区太小
-44950 【20版本】在小屏批量创建任务时,表单底部横向滚动条被遮挡
-44944 【20版本】当项目名称字段过长时,项目列表的延期标签不显示
-44930 【20版本】测试单阻塞的弹窗中备注字段没有居左对齐
-44923 【20版本】给项目型项目创建发布时,发布名称右侧缺少里程碑的勾选
-44915 【20版本】项目发布的通知弹窗字段没有居左对齐
-44906 【20版本】项目导出数据选择导出字段下拉框超出弹窗
-44895 【20版本】发布详情中切换的文字样式不对
-44809 【20版本】禅道客户端未兼容20版本
-44581 【20版本】勾选待定后,预算单位也只读了
-44566 【20版本】文档版本的位置不对
-44530 【20版本】执行维护团队列表没有对齐
-44528 【20版本】融合敏捷-项目型创建迭代页面“关联计划”没有对齐
-43504 【20版本】可关联的需求列表显示不友好
-43334 【20版本】接口空间接口详情页左侧标签和二级导航重叠
-43256 【20版本】项目列表按预算排序不正确
-43075 【20版本】项目关闭和激活的窗口显示过长
-42305 【20版本】创建任务默认类型为设计,建议更新为开发
+42233 【20版本】阶段列表各tab标签下子阶段的显示优化
42252 【20版本】统一列表字段加粗显示
-47449 【20版本】执行下创建用例保存后出现空白页面
-47448 【20版本】用例详情页“相关研发需求”文案部分遮挡
-47446 【20版本】待处理用例页面有代码报错
-47429 【20版本】项目列表看板视图更多按钮下样式不对
-47369 【20版本】项目和执行版本列表编辑按钮右侧显示了多余的“编辑”
-47190 【20版本】创建无产品无迭代项目报错
-47180 【20版本】待处理研发需求搜索表单下拉项显示了“所属路标”
-47177 【20版本】复制项目可以修改项目类型
-47036 【20版本】多分支产品批量提Bug页面项目和执行的逻辑取决了1.5及级导航
-47021 【20版本】待处理需求/Bug/用例搜索表单下拉中显示空项
-46997 【20版本】ID搜索显示的对象不正确
-46757 【20版本】升级后默认给之前的Bug截止提起设置为0000-00-00
-46450 【20版本】零用例需求批量编辑时,二级导航高亮缺失
+42274 【20版本】点击已保存的查询条件后没有自动显示
+42305 【20版本】创建任务默认类型为设计,建议更新为开发
+42306 【20版本】执行研发需求导出弹窗页导出字段中显示了平台/分支
+42405 【20版本】修改日志内容后弹窗没有更新
+42460 【20版本】地盘仪表盘区块的问号提示闪动
+42486 【20版本】项目仪表盘[今年完成]迭代统计数量不正确
+42583 【20版本】用例导图模式下点返回后到了列表视图下
+42772 【20版本】迭代燃尽图横坐标名应该在横坐标后面
+42774 【20版本】透视表左侧产品汇总列表建议与顶部产品标签对齐
+42778 【20版本】透视表左侧表名及内容建议与“更多精彩”广告语添加间隔
+42994 【20版本】批量删除用例库用例没有二次提醒
+43075 【20版本】项目关闭和激活的窗口显示过长
+43077 【20版本】BI的1.5级导航背景色显示有误
+43214 【20版本】项目发布下修改附件名称保存后跳转到了发布的需求列表
+43256 【20版本】项目列表按预算排序不正确
+43269 【20版本】上传php附件时未出现风险提示
+43334 【20版本】接口空间接口详情页左侧标签和二级导航重叠
+43438 【20版本】用例或者场景无法拖动
+43504 【20版本】可关联的需求列表显示不友好
+43519 【20版本】专业研发看板下设置背景色弹窗中样式不对
+43625 【20版本】新手教程部分页面未校验必填
+44519 【20版本】地盘仪表盘欢迎总览区块指派给我的任务数和待处理模块不一致
+44524 【20版本】地盘仪表盘使用帮助区块中,鼠标悬浮的样式奇怪
+44528 【20版本】融合敏捷-项目型创建迭代页面“关联计划”没有对齐
+44530 【20版本】执行维护团队列表没有对齐
+44550 【20版本】融合瀑布-项目型编辑页面不应该展示阶段类型
+44566 【20版本】文档版本的位置不对
+44581 【20版本】勾选待定后,预算单位也只读了
+44591 【20版本】项目列表保存搜索条件,无效
+44592 【20版本】产品列表选择某一项目集后,切换回所有项目集的交互异常
+44597 【20版本】项目列表的搜索,这个按钮点了会闪
+44605 【20版本】项目列表选“全部”,选一个项目点删除,删完跳到了“进行中”
+44626 【20版本】项目的历史记录,汉化不完整
+44635 【20版本】创建泳道的泳道颜色样式需优化
+44667 【20版本】创建项目页,权限交互操作范围过大
+44681 【20版本】编辑泳道的泳道颜色样式需优化
+44689 【20版本】创建执行固定团队名称字段后,勾选复制团队后未显示复制团队字段
+44691 【20版本】审批按钮语义不清晰
+44694 【20版本】地盘动态的背景太暗了
+44743 【20版本】项目集白名单选择权限组后,项目集白名单内无白名单人员展示
+44809 【20版本】禅道客户端未兼容20版本
+44852 【20版本】产品计划搜索条件顺序错误
+44870 【20版本】执行总览中执行总量的数据和列表对不上
+44871 【20版本】敏捷项目-产品型-有迭代不能关联其他产品
+44885 【20版本】瀑布和融合瀑布项目于产品解除关联的逻辑未修改
+44895 【20版本】发布详情中切换的文字样式不对
+44899 【20版本】看板项目在设置-产品新关联产品没有历史记录
+44906 【20版本】项目导出数据选择导出字段下拉框超出弹窗
+44915 【20版本】项目发布的通知弹窗字段没有居左对齐
+44923 【20版本】给项目型项目创建发布时,发布名称右侧缺少里程碑的勾选
+44930 【20版本】测试单阻塞的弹窗中备注字段没有居左对齐
+44939 【20版本】批量编辑项目页面,计划结束不能选择长期
+44944 【20版本】当项目名称字段过长时,项目列表的延期标签不显示
+44950 【20版本】在小屏批量创建任务时,表单底部横向滚动条被遮挡
+44992 【20版本】执行关联产品页面热区太小
+44993 【20版本】接口空间的版本管理样式需要优化
+45003 【20版本】项目集产品视角列表编辑产品选项缺失
+45032 【20版本】测试下提bug表单中维护模块时,点击产品跳转链接不正确
+45048 【20版本】用例列表自动化测试用例标签颜色
+45062 【20版本】后台二开编辑器页面列表标题和缩进样式有误
+45079 【20版本】瀑布项目统计区块中进度偏差率和成本偏差率的背景颜色太暗
+45083 【20版本】用例列表区块没有数据时,中间多了一条横线
+45098 【20版本】创建融合瀑布项目,复制项目后,提示语不展示
+45104 【20版本】复制执行的样式和需求不一致
+45109 【20版本】创建执行选择运维迭代时未添加提示语
+45132 【20版本】创建执行页,同一个产品可以重复选择,且提示语不对
+45151 【20版本】编辑融合瀑布项目的自建测试阶段切换阶段类型为需求后,编辑前创建的阶段下Bug显示所属执行已删除
+45154 【20版本】删除阶段弹窗样式与20版本规范不一致
+45157 【20版本】任务详情页中研发需求有变更时左侧缺少确认按钮
+45163 【20版本】树状图和20版本需求样式不同
+45168 【20版本】创建好执行后的提示语不对
+45210 【20版本】设置看板泳道颜色的显示样式有误
+45351 【20版本】产品计划删除计划提示弹窗样式未更新为最新
+45541 【20版本】创建泳道时泳道颜色按钮样式异常
+45552 【20版本】待处理-用例下执行用例,执行结果为失败,关闭弹窗没有刷新页面
+45780 【20版本】项目集年度新增数据汇总表文档数没有统计项目和执行下的数据
+45916 【20版本】测试单下批量执行用例建议增加提示信息
+45936 【20版本】执行看板中转入任务弹窗中部分内容未添加英文语言项
+46013 【20版本】个人面板下拉被遮挡
+46027 【20版本】员工负载表字段显示不完整
+46090 【20版本】后台设置关闭软需备注为必填项关闭需求时设置不生效
+46099 【20版本】新手教程项目概况页面有报错
+46209 【20版本】测试用例页面报错
+46259 【20版本】关联代码库页面字段展示空白
46397 【20版本】创建联系人页面列表名称和选择用户字段没有必填项标识
+46413 【20版本】图表前台页面显示滚动条
+46450 【20版本】零用例需求批量编辑时,二级导航高亮缺失
+46462 【20版本】套件关联用例,底部按钮被遮挡
+46464 【20版本】关联用例默认记住了上次的查询条件,导致无法获取到可关联的用例
+46466 【20版本】仅自动化下创建用例没有自动都选上自动化按钮
+46497 【20版本】子场景下有用例,父场景下还提示暂无用例
+46757 【20版本】升级后默认给之前的Bug截止提起设置为0000-00-00
+46783 【20版本】BI升级引导弹窗中,关闭按钮和图片底部边框重合
+46905 【20版本】操作文档库目录后,目录应不折叠
+46977 【20版本】有产品无迭代项目用户需求列表页显示了按照计划关联按钮
+46997 【20版本】ID搜索显示的对象不正确
+47002 【20版本】执行下任务列表转入Bug时Bug详情页点击编辑或复制按钮后二级导航不对
+47004 【20版本】运营界面仪表盘目标数据不正确
+47021 【20版本】待处理需求/Bug/用例搜索表单下拉中显示空项
+47036 【20版本】多分支产品批量提Bug页面项目和执行的逻辑取决了1.5及级导航
+47177 【20版本】复制项目可以修改项目类型
+47180 【20版本】待处理研发需求搜索表单下拉项显示了“所属路标”
+47190 【20版本】创建无产品无迭代项目报错
+47369 【20版本】项目和执行版本列表编辑按钮右侧显示了多余的“编辑”
+47429 【20版本】项目列表看板视图更多按钮下样式不对
+47446 【20版本】待处理用例页面有代码报错
+47448 【20版本】用例详情页“相关研发需求”文案部分遮挡
+47449 【20版本】执行下创建用例保存后出现空白页面
+47457 【20版本】项目视图下选中某个项目集后创建项目页面所属项目集为自动带出
+47493 “按产品统计的年度完成计划数”统计不到直接关闭关闭原因为已完成的计划
+47558 【20版本】接口库中创建数据结构报错
+47567 【20版本】已解决的bug批量解决后提示保存成功
+47594 【20版本】执行-bug页面报错
+47640 【20版本】视野没BI权限,无法查看欢迎总览区块
+47663 【20版本】创建产品页面字段显示设置弹窗点击保存按钮没有反应
+47666 【20版本】发布下查看需求详情右侧会有重叠显示
+47667 【20版本】下载发布基本信息页面的附件提示没有权限访问
+47672 【20版本】融合瀑布项目仪表盘有报错
+47673 【20版本】项目型项目的发布通知弹窗中选项换行显示
+47675 【20版本】项目列表中勾选项目后点批量编辑按钮提示保存成功
+47679 【20版本】全局搜索结果页面分页无效
+47680 【20版本】全局搜索关键字搜索结果页面显示了二级导航
+47706 【20版本】任务记录工时保存后新增日志不能到已提交区块中
+47709 【20版本】全局搜索结果页输入ID全局搜索时搜索项重复展示
+47728 收到消息后,点击桌面底部大桌面图标后,没有定位到消息会话中
+47764 【20版本】设置过阶段工作量占比的项目,后台关闭该功能后,融合瀑布项目设置阶段页面的工作量占比字段依然显示
+47840 【20版本】批量添加用户时默认显示一行
+47841 【20版本】产品下创建研发需求后二级导航错乱
+47842 【20版本】无法删除产品模块
+47843 【20版本】瀑布项目设置阶段保存后有报错
+47844 【20版本】xmind导出没有导出3级用例
+47845 【20版本】测试单用例报表不显示柱状图和折线图
+47846 【20版本】创建子计划勾选待定后依然校验了超出父计划的范围
+47847 【20版本】研发需求详情页未显示研发需求细分按钮
+47848 【20版本】创建测试报告页面代码报错
+47849 【20版本】计划看板视图卡片中的更多按钮点击后不显现
+47850 目标详情页的操作按钮显示不全
+47851 【20版本】版本的编辑删除按钮显示不正确
+47852 【20版本】pms12.4.1升级20.0版本,创建有产品项目选择计划后,项目的迭代列表报错
+47853 【20版本】pms12.4.1升级20.0版本,创建无产品项目的迭代时出现报错
+47855 【20版本】研发需求变更后,关联的用例操作栏确认图标未显示
+47856 【20版本】测试视图下模块维护页面鼠标无法选中模块名称
+47857 【20版本】无产品项目下创建计划跳转到了添加产品页面
+47858 【20版本】执行版本列表和详情页缺少部分操作按钮
+47859 【20版本】用例库下编辑页面和搜索表单中显示了“所属场景”
+47860 【20版本】融合瀑布项目细分阶段选择迭代/看板时页面代码报错
+47861 【20版本】升级时一致性检查报错
+47863 【20版本】用例库用例详情页显示多余的分割线
+47864 【20版本】代码关联任务页面点击搜索后有代码报错
+47865 【20版本】透视表页有报错
+47867 【20版本】系统无产品时,代码库页面的提示不对
+47868 【20版本】无产品项目列表中,关联产品按钮仍然高亮
+47869 【20版本】度量项切换分页后有报错
+47870 【20版本】20beta2版本升级到20版本,文心一言语言模型供应商的值有误
+47872 【20版本】接口文档详情页刷新页面后点击返回按钮无响应
+47873 【20版本】DevOps代码库页面不显示创建和关联代码库的按钮
+47876 【20版本】全局提词使用时,报错:API 返回值为空或返回了错误
+47877 【20版本】项无产品添加计划页面点击返回跳转到了添加产品页面
+47878 【20版本】[未解决bug指派表]表头缺少中文语言项
+47880 【20版本】客户端初始化左侧导航栏有重叠
+47882 【20版本】图表无条件点击查询后不再展示图表
+47883 【20版本】编辑用例步骤拖拽排序不生效
+47886 【20版本】编辑用例步骤宽度不够
+47887 【20版本】新手教程顶部出现了白条
+47889 【20版本】鼠标拖动无法选中内容
+47890 【20版本】用例关联的需求变更后,用例详情页确认按钮被遮挡
+47892 【20版本】左侧导航右键菜单空白了
+47893 【20版本】用例详情页点击需求弹窗中的按钮,以页面形式打开
+47894 【20版本】度量项中日期不显示月和日
+47895 【20版本】登录时填写系统不存在用户名时点击登录没有提示
+47896 【20版本】用例详情页点击需求弹窗中的撤销评审按钮,弹窗未刷新
+47897 【20版本】编辑待定状态的子计划,修改结束日期后保存,子计划仍然是待定状态
+47898 【20版本】添加GitFox应用保存时提示文案不对
+47899 【20版本】从用例库导入用例列表进入用例详情页后操作按钮缺失
+47901 【20版本】安装导入demo数据有报错
+47903 【20版本】测试报告详情页悬浮不展示按钮名
+47905 【20版本】编辑测试单页面不显示页面title
+47906 【20版本】待处理下编辑测试单页面保存按钮显示成了“编辑测试单”
+47907 【20版本】待处理下测试单概况页点击编辑后二级导航未高亮
+47908 【20版本】批量执行用例有报错
+47910 【20版本】项目版本列表有代码报错
+47911 【20版本】没有部分项目操作权限时,项目列表的操作栏中仍然高亮相应的操作按钮
+47913 【20版本】上传文件过大的提示信息中显示%s
+47914 【20版本】批量添加用户,密码输入框和横向滚动条重合了
+47915 【20版本】测试-bug报表图中没有显示值
+47917 【20版本】升级前有创建项目的权限,升级后没了
+47918 【20版本】创建项目集页面白名单使用联系人方式添加没有添加上
+47920 【20版本】项目研发/用户需求列表页点击模块设置时跳转不正确
+47924 【20版本】编辑模块没有负责人字段
+47925 【20版本】用需变更时没有列出影响范围
+47926 【20版本】选择模块后,指派给没默认显示模块负责人
+47930 【20版本】编辑模块页面,所属产品字段宽度不一致
+47932 【20版本】执行测试单下执行用例有报错
+47934 【20版本】用例列表查看自动化脚本报错
+47936 【20版本】执行1.5级导航都应显示项目/执行名
+47937 【20版本】批量添加任务,显示2个加载样式
+47938 【20版本】开源版显示了提词设计按钮
+47939 【20版本】创建/编辑用例页面自动化脚本处允许的文件类型不能上传
+47949 【20版本】多分支产品研发需求页面显示设置中没有显示分支的设置
+47950 【20版本】无法查看软需的相关研发需求
+47951 【20版本】软需详情页中相关研发需求没有选中样式
+47952 【20版本】自动化用例不能上传自动化脚本
+47962 导出产品列表文件中变更中显示已变更
+47965 【20版本】后台显示多余的度量项权限
+47968 【20版本】项目版本的详情页点击编辑出现zui报错
+47969 【20版本】编辑和批量编辑软需计划选择范围不一致
+47970 【20版本】开源版显示了[重置调试]权限
+47971 【20版本】项目测试下Bug转任务的弹窗中切换项目后,所属执行显示为ID
+47972 【20版本】编辑数据结构页面有报错
+47973 【20版本】版本管理弹窗页显示了无用滚动条
+47976 【20版本】没有选择模块时样式不正确
+47978 【20版本】动态页面有报错
+47979 【20版本】执行提词后,没有重新生成按钮
+47980 【20版本】上下架小程序和提词,动态中缺少中文语言项
+47983 【20版本】[产品缺陷数据汇总表]不展示数据
+47984 【20版本】没有项目时进入项目文档,索引页面显示太大
+47985 【20版本】变更研发需求,影响的项目执行数为0
+47986 【20版本】接口空间添加目录时输入框下边框遮挡
+47990 【20版本】产品空间下附件库列表需求详情页删除需求后页面和导航不对应
+47992 【20版本】透视表查看原始数据报错
+47995 【20版本】透视表、图表的分组树没有显示分组名称
+48000 【20版本】下载xxd报错
+48010 【20版本】win一键安装包首次登录后页面有代码报错
+48013 【20版本】仪表盘下未完成执行统计区块切换执行时报错
+48029 【20版本】团队下度量项未显示且进入组合查看页面报错
+48031 【20版本】导出xml格式的任务,导出的文件中含有文字格式代码
+48033 【20版本】删除模块没有保留最后一行
+48034 【20版本】客户端应用颜色有误
+48036 【20版本】1366*768分辨率下chrom浏览器中选择项目管理方式弹窗中有上下滑动条
+48039 【20版本】IPD的表常量定义应该写到config/zentaopms.php下,否则本地开源版仪表盘会报错
+48040 【20版本】创建项目集刷新页面后变为添加子项目集页面
+48041 【20版本】编辑单人任务为多人任务后团队弹窗中样式显示错误
+48043 【20版本】IPD1.3升级到IPD1.5beta1替换授权后页面空白
+48044 【20版本】项目下批量移除需求不生效
+48045 【20版本】项目/执行下可以关联父需求
+48047 【20版本】研发需求详情页代码报错
+48048 【20版本】编辑父需求后子需求不显示在父需求详情页
+48050 【20版本】无产品无迭代项目看板中批量提Bug,所属执行带出了影子执行的ID
+48051 【20版本】项目看板中批量上传研发需求多图上传失败
+48053 【20版本】设置阶段为非里程碑阶段,创建出的阶段显示了里程碑icon
+48055 【20版本】无产品无迭代项目看板中可以移除研发需求
+48056 【20版本】测试单关联用例页面代码报错
+48057 【20版本】点击删除接口空间目录动态后跳转错误
+48058 【20版本】无产品无迭代项目看板中任务导入Bug弹窗切换页码后才会出现返回按钮
+48059 【20版本】内置透视表的标题展示有误
+48060 【20版本】无产品无迭代项目中任务导入Bug页面的返回按钮跳转到了执行下
+48062 【20版本】完成任务弹窗中的“实际开始”字段没有必填标识
+48063 【20版本】全局搜索目标,点击后报错
+48064 【20版本】子研发需求详情页有报错
+48065 【20版本】执行测试单用例分组视图下移除用例时有报错
+48067 【20版本】测试用例分组视图下类型下拉中未显示“单元测试”
+48070 【20版本】目录的文件夹排序按钮不可操作
+48071 【20版本】编辑文档的目录在英文语言项下字段显示不完整
+48073 【20版本】修改度量项筛选按钮的默认、悬浮与选中的样式
+48074 【20版本】文件关联的需求显示不全
+48076 【20版本】代码文件关联任务复选框没对齐
+48078 【20版本】运营界面无法复制项目
+48079 【20版本】用例库导入csv不显示步骤和预期
+48081 【20版本】用例库用例详情页有报错
+48082 【20版本】无产品无迭代看板下建任务,弹窗跳转到了别的执行
+48084 【20版本】无迭代项目下研发需求转任务有所属执行字段
+48086 【20版本】运营界面目标设置页有报错
+48087 【20版本】运营项目下设置看板提示看板代号不能为空
+48088 【20版本】运营界面项目目标详情页有报错
+48098 【20版本】后台二次开发下左侧模块树显示了排序按钮但不可用
+48099 【20版本】linux一键包运营界面创建项目及看板,看板卡片中有代码显示
+48101 【20版本】运营管理界面编辑目标代码报错
+48102 【20版本】无产品无迭代项目用户需求细分成了子研发需求
+48103 【20版本】测试视图下Bug详情页有报错
+48104 【20版本】运营界面查看任务报表1.5级导航没有选择项目
+48105 【20版本】运营管理界面下复制项目页名称换行
+48107 【20版本】点击开始备份后F12有报错
+48111 【20版本】专业研发看板下版本列表点击提交测试/查看Bug后导航和页面不对应
+48113 【20版本】测试用例导入xmind控制台报错
+48114 【20版本】创建自动化用例后返回用例列表,自动勾选了“仅自动化”
+48116 【20版本】下载大桌面弹窗异常
+48117 【20版本】自动化用例无法执行
+48119 【20版本】全局搜索结果页面有报错
+48126 【20版本】复制用例用例名称和所属模块未带出
+48127 【20版本】用例库导入测试用例页面所属模块不应该显示必填标识
+48128 【20版本】自动化用例详情页没有执行按钮
+48130 【20版本】效能管理维度下完成项目工时透视表页点击查看原始数据后有报错
+48142 【20版本】人员批量编辑相关字段没有自动带过来
+48150 【20版本】运营管理界面下复制项目页显示2个确认按钮
+48159 【20版本】运营界面任务详情页显示了子任务按钮但不可用
+48162 【20版本】切换到研发综合界面下后显示了运营界面下的执行
+48171 【20版本】效能管理维度下完成项目工时透视表页面有报错
+48178 【20版本】执行下创建用例不显示在执行用例列表中
+48194 【20版本】脑图查看用例没列出预期
+48202 【20版本】运营界面下专业研发看板头像中文案未居中
2024-04-12 18.12
完成的需求
diff --git a/extension/lite/common/ext/lang/de/lite.php b/extension/lite/common/ext/lang/de/lite.php
index a5a7cc9331..f653cfe325 100644
--- a/extension/lite/common/ext/lang/de/lite.php
+++ b/extension/lite/common/ext/lang/de/lite.php
@@ -1,4 +1,9 @@
productLink);
+list($projectModule, $projectMethod) = explode('-', $config->projectLink);
+list($executionModule, $executionMethod) = explode('-', $config->executionLink);
+
$lang->execution->common = 'Kanban';
$lang->executionCommon = 'Kanban';
$lang->task->common = 'Task';
@@ -72,7 +77,6 @@ $lang->my->menu->calendar = array('link' => "$lang->calendar|my|calendar|", 'sub
$lang->my->menu->task = array('link' => "{$lang->task->common}|my|work|mode=task&type=assignedTo", 'subModule' => 'task');
$lang->my->menu->contacts = array('link' => "{$lang->contact->common}|my|managecontacts|");
-global $config;
if($config->edition != 'open') $lang->my->menu->effort = array('link' => 'Effort|effort|calendar|', 'exclude' => 'my-todo');
/* My menu order. */
@@ -194,7 +198,6 @@ $lang->createObjects['kanban'] = 'Kanban';
$lang->createIcons['execution'] = 'kanban';
/* Xuan */
-global $config;
if(isset($config->xuanxuan) && strpos($config->visions, ',rnd,') === false)
{
$lang->xuanxuan = new stdclass();
diff --git a/extension/lite/common/ext/lang/en/lite.php b/extension/lite/common/ext/lang/en/lite.php
index a5a7cc9331..f653cfe325 100644
--- a/extension/lite/common/ext/lang/en/lite.php
+++ b/extension/lite/common/ext/lang/en/lite.php
@@ -1,4 +1,9 @@
productLink);
+list($projectModule, $projectMethod) = explode('-', $config->projectLink);
+list($executionModule, $executionMethod) = explode('-', $config->executionLink);
+
$lang->execution->common = 'Kanban';
$lang->executionCommon = 'Kanban';
$lang->task->common = 'Task';
@@ -72,7 +77,6 @@ $lang->my->menu->calendar = array('link' => "$lang->calendar|my|calendar|", 'sub
$lang->my->menu->task = array('link' => "{$lang->task->common}|my|work|mode=task&type=assignedTo", 'subModule' => 'task');
$lang->my->menu->contacts = array('link' => "{$lang->contact->common}|my|managecontacts|");
-global $config;
if($config->edition != 'open') $lang->my->menu->effort = array('link' => 'Effort|effort|calendar|', 'exclude' => 'my-todo');
/* My menu order. */
@@ -194,7 +198,6 @@ $lang->createObjects['kanban'] = 'Kanban';
$lang->createIcons['execution'] = 'kanban';
/* Xuan */
-global $config;
if(isset($config->xuanxuan) && strpos($config->visions, ',rnd,') === false)
{
$lang->xuanxuan = new stdclass();
diff --git a/extension/lite/common/ext/lang/fr/lite.php b/extension/lite/common/ext/lang/fr/lite.php
index a5a7cc9331..f653cfe325 100644
--- a/extension/lite/common/ext/lang/fr/lite.php
+++ b/extension/lite/common/ext/lang/fr/lite.php
@@ -1,4 +1,9 @@
productLink);
+list($projectModule, $projectMethod) = explode('-', $config->projectLink);
+list($executionModule, $executionMethod) = explode('-', $config->executionLink);
+
$lang->execution->common = 'Kanban';
$lang->executionCommon = 'Kanban';
$lang->task->common = 'Task';
@@ -72,7 +77,6 @@ $lang->my->menu->calendar = array('link' => "$lang->calendar|my|calendar|", 'sub
$lang->my->menu->task = array('link' => "{$lang->task->common}|my|work|mode=task&type=assignedTo", 'subModule' => 'task');
$lang->my->menu->contacts = array('link' => "{$lang->contact->common}|my|managecontacts|");
-global $config;
if($config->edition != 'open') $lang->my->menu->effort = array('link' => 'Effort|effort|calendar|', 'exclude' => 'my-todo');
/* My menu order. */
@@ -194,7 +198,6 @@ $lang->createObjects['kanban'] = 'Kanban';
$lang->createIcons['execution'] = 'kanban';
/* Xuan */
-global $config;
if(isset($config->xuanxuan) && strpos($config->visions, ',rnd,') === false)
{
$lang->xuanxuan = new stdclass();
diff --git a/extension/lite/common/ext/lang/zh-cn/lite.php b/extension/lite/common/ext/lang/zh-cn/lite.php
index 362af7c3bf..b7cbf9e966 100644
--- a/extension/lite/common/ext/lang/zh-cn/lite.php
+++ b/extension/lite/common/ext/lang/zh-cn/lite.php
@@ -1,4 +1,9 @@
productLink);
+list($projectModule, $projectMethod) = explode('-', $config->projectLink);
+list($executionModule, $executionMethod) = explode('-', $config->executionLink);
+
$lang->execution->common = '看板';
$lang->executionCommon = '看板';
$lang->task->common = '任务';
@@ -72,7 +77,6 @@ $lang->my->menu->calendar = array('link' => "$lang->calendar|my|calendar|", 'sub
$lang->my->menu->task = array('link' => "{$lang->task->common}|my|contribute|mode=task&type=assignedTo", 'subModule' => 'task');
$lang->my->menu->contacts = array('link' => "{$lang->contact->common}|my|managecontacts|");
-global $config;
if($config->edition != 'open') $lang->my->menu->effort = array('link' => '日志|effort|calendar|', 'exclude' => 'my-todo');
/* My menu order. */
@@ -195,7 +199,6 @@ $lang->createObjects['kanban'] = '通用看板';
$lang->createIcons['execution'] = 'kanban';
/* Xuan */
-global $config;
if(isset($config->xuanxuan) && strpos($config->visions, ',rnd,') === false)
{
$lang->xuanxuan = new stdclass();
diff --git a/extension/lite/custom/ext/lang/de/lite.php b/extension/lite/custom/ext/lang/de/lite.php
index f65e2686c7..cdb20705d0 100644
--- a/extension/lite/custom/ext/lang/de/lite.php
+++ b/extension/lite/custom/ext/lang/de/lite.php
@@ -19,6 +19,6 @@ $lang->custom->story->fields['reviewRules'] = 'Review Rules';
$lang->custom->story->fields['reviewResultList'] = 'Review Result';
$lang->custom->story->fields['review'] = 'Need Review';
-$lang->custom->execution = new stdClass();
+$lang->custom->execution = new stdclass();
$lang->custom->system = array('required');
diff --git a/extension/lite/custom/ext/lang/en/lite.php b/extension/lite/custom/ext/lang/en/lite.php
index f65e2686c7..cdb20705d0 100644
--- a/extension/lite/custom/ext/lang/en/lite.php
+++ b/extension/lite/custom/ext/lang/en/lite.php
@@ -19,6 +19,6 @@ $lang->custom->story->fields['reviewRules'] = 'Review Rules';
$lang->custom->story->fields['reviewResultList'] = 'Review Result';
$lang->custom->story->fields['review'] = 'Need Review';
-$lang->custom->execution = new stdClass();
+$lang->custom->execution = new stdclass();
$lang->custom->system = array('required');
diff --git a/extension/lite/custom/ext/lang/fr/lite.php b/extension/lite/custom/ext/lang/fr/lite.php
index f65e2686c7..cdb20705d0 100644
--- a/extension/lite/custom/ext/lang/fr/lite.php
+++ b/extension/lite/custom/ext/lang/fr/lite.php
@@ -19,6 +19,6 @@ $lang->custom->story->fields['reviewRules'] = 'Review Rules';
$lang->custom->story->fields['reviewResultList'] = 'Review Result';
$lang->custom->story->fields['review'] = 'Need Review';
-$lang->custom->execution = new stdClass();
+$lang->custom->execution = new stdclass();
$lang->custom->system = array('required');
diff --git a/extension/lite/custom/ext/lang/zh-cn/lite.php b/extension/lite/custom/ext/lang/zh-cn/lite.php
index 01c12af1d1..e272ecd7c6 100644
--- a/extension/lite/custom/ext/lang/zh-cn/lite.php
+++ b/extension/lite/custom/ext/lang/zh-cn/lite.php
@@ -19,6 +19,6 @@ $lang->custom->story->fields['reviewRules'] = '评审规则';
$lang->custom->story->fields['reviewResultList'] = '评审结果';
$lang->custom->story->fields['review'] = '评审流程';
-$lang->custom->execution = new stdClass();
+$lang->custom->execution = new stdclass();
$lang->custom->system = array('required');
diff --git a/extension/lite/project/ext/css/execution/lite.ui.css b/extension/lite/project/ext/css/execution/lite.ui.css
index 0648627757..76d95bb4ea 100644
--- a/extension/lite/project/ext/css/execution/lite.ui.css
+++ b/extension/lite/project/ext/css/execution/lite.ui.css
@@ -7,16 +7,14 @@
.kanban-card .kanban-actions .dropdown-menu.pull-right {top:31px; right: -84px; left: auto;}
.kanban-card .kanban-actions .dropdown-menu.pull-left {top:31px; right:-1px; left: auto;}
.kanban-card .kanban-desc {color: #838a9d; word-break:break-all; height: 85px; overflow: hidden; display: -webkit-box;}
-.kanban-card .kanban-members {float: left; height: 24px; line-height: 24px;}
.kanban-card .kanban-members > div {display: inline-block; height: 24px;}
.kanban-card .kanban-members > div + div {margin-left: -5px;}
-.kanban-card .kanban-members > div > .avatar {display: inline-block; width: 24px !important; height: 24px !important; line-height: 24px; margin-right: 1px;}
.kanban-card .kanban-members > span {display: inline-block; color: transparent; width: 2px; height: 2px; background-color: #8990a2; position: relative; border-radius: 50%; top: 3px; margin: 0 3px;}
.kanban-card .kanban-members > span:before,
.kanban-card .kanban-members > span:after {content: ''; display: block; position: absolute; width: 2px; height: 2px; background-color: #8990a2; top: 0; border-radius: 50%}
.kanban-card .kanban-members > span:before {left: -4px;}
.kanban-card .kanban-members > span:after {right: -4px;}
-.kanban-card .kanban-members-count {display: inline-block; margin-left: 6px; position: relative; top: 3px}
+.kanban-card .kanban-members-count {display: inline-block; position: relative; top: 3px}
.kanban-card .kanban-acl {position: absolute; right: 0px; bottom: 2px; color: #838a9d;}
.kanban-card .label.kanban-status-wait {background-color: #E5E5E5; color: #808080;}
.kanban-card .label.kanban-status-doing {background-color: #DDF4DF; color: #38B03F;}
diff --git a/extension/lite/project/ext/ui/create.html.php b/extension/lite/project/ext/ui/create.html.php
index 2826e05592..0716f7a869 100644
--- a/extension/lite/project/ext/ui/create.html.php
+++ b/extension/lite/project/ext/ui/create.html.php
@@ -217,20 +217,6 @@ modalTrigger
)
),
- to::footer
- (
- div
- (
- setClass('flex mt-4 w-full justify-center'),
- btn
- (
- setClass('px-6'),
- set::type('primary'),
- on::click($copySelectedProject),
- $lang->confirm
- )
- )
- ),
div
(
set::id('copyProjects'),
diff --git a/extension/lite/project/ext/ui/execution.html.php b/extension/lite/project/ext/ui/execution.html.php
index a876e2c4fb..46dfc22114 100644
--- a/extension/lite/project/ext/ui/execution.html.php
+++ b/extension/lite/project/ext/ui/execution.html.php
@@ -37,7 +37,7 @@ $fnGetKanbanTeams = function($kanbanID) use ($memberGroup, $users, $usersAvatar)
$teamElements[] = div
(
set::title(zget($users, $member->account)),
- userAvatar(set::avatar(zget($usersAvatar, $member->account)), set::account($member->account), set::realname(zget($member, 'realname', ''))),
+ avatar(set::src(zget($usersAvatar, $member->account)), set::text(zget($member, 'realname', '')), set::size('sm'), set::className('mr-1')),
);
}
if(count($teams) > 4) $teamElements[] = span('… ');
@@ -47,7 +47,7 @@ $fnGetKanbanTeams = function($kanbanID) use ($memberGroup, $users, $usersAvatar)
$teamElements[] = div
(
set::title(zget($users, $lastMember->account)),
- userAvatar(set::avatar(zget($usersAvatar, $lastMember->account)), set::account($lastMember->account), set::realname(zget($lastMember, 'realname', '')), set::style(array('width' => '24px', 'height' => '24px'))),
+ avatar(set::src(zget($usersAvatar, $lastMember->account)), set::text(zget($lastMember, 'realname', '')), set::size('sm')),
);
}
return $teamElements;
diff --git a/extension/lite/task/ext/config/lite.php b/extension/lite/task/ext/config/lite.php
index 076a194eab..76394495d1 100644
--- a/extension/lite/task/ext/config/lite.php
+++ b/extension/lite/task/ext/config/lite.php
@@ -12,5 +12,5 @@ $config->task->dtable->fieldList['lane']['sortType'] = false;
$config->task->dtable->fieldList['name']['data-toggle'] = 'modal';
$config->task->dtable->fieldList['name']['data-size'] = 'lg';
-$config->task->view->operateList['main'] = array('assignTo', 'start', 'restart', 'recordWorkhour', 'pause', 'finish', 'activate', 'close', 'cancel');
-$config->task->view->operateList['common'] = array('edit', 'delete', 'view');
+$config->task->actions->view['mainActions'] = array('assignTo', 'start', 'restart', 'recordWorkhour', 'pause', 'finish', 'activate', 'close', 'cancel');
+$config->task->actions->view['suffixActions'] = array('edit', 'delete', 'view');
diff --git a/extension/xuanxuan/extension/xuan/index/ext/ui/index.xuanxuan.html.hook.php b/extension/xuanxuan/extension/xuan/index/ext/ui/index.xuanxuan.html.hook.php
index 42d48b8470..38c7df8242 100644
--- a/extension/xuanxuan/extension/xuan/index/ext/ui/index.xuanxuan.html.hook.php
+++ b/extension/xuanxuan/extension/xuan/index/ext/ui/index.xuanxuan.html.hook.php
@@ -34,78 +34,4 @@ $(document).on('hideapp', function(e, app)
window.open('xxc://extension.zentao-integrated.hideAppMenuItem/' + encodeURIComponent(JSON.stringify({id: app.code, openedApps:Object.keys($.apps.openedApps)})));
});
-
-control->loadModel('im');
-$xxdStatus = $im->getXxdStatus();
-if(isset($config->xuanxuan->turnon) && $config->xuanxuan->turnon && $xxdStatus == 'online')
-{
- $xuanConfig = new stdclass();
- $token = $im->userGetAuthToken($app->user->id, 'zentaoweb');
- $clientUrl = isset($config->webClientUrl) ? $config->webClientUrl : 'data/xuanxuan/web/index.html';
- $backendUrl = $im->getServer('zentao');
-
- $xuanConfig->clientUrl = $clientUrl;
- $xuanConfig->server = ($config->xuanxuan->https == 'on' ? 'https' : 'http') . '://' . parse_url($backendUrl, PHP_URL_HOST) . ':' . $config->xuanxuan->commonPort;
- $xuanConfig->account = $app->user->account;
- $xuanConfig->authKey = $token->token;
- $xuanConfig->debug = $config->debug;
-}
-?>
-
-
-getWebRoot() . 'data/xuanxuan/sdk/sdk.min.js'); ?>
-
-getClientLang()); ?>
-
-
diff --git a/extension/xuanxuan/extension/xuan/user/ext/lang/en/xuanxuan.php b/extension/xuanxuan/extension/xuan/user/ext/lang/en/xuanxuan.php
index d2a3bc7ac6..3fb99baddd 100644
--- a/extension/xuanxuan/extension/xuan/user/ext/lang/en/xuanxuan.php
+++ b/extension/xuanxuan/extension/xuan/user/ext/lang/en/xuanxuan.php
@@ -1,7 +1,7 @@
user->tokenInvalid = "Token denied, please login with password.";
-if(strpos($_SERVER['HTTP_USER_AGENT'], 'xuanxuan') != false)
+if(isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'], 'xuanxuan') != false)
{
$lang->user->errorDeny = "Sorry, your access to %2\$s of %1\$s is denied. Please contact your Admin to get privileges.";
}
diff --git a/framework/base/helper.class.php b/framework/base/helper.class.php
index 2f39a16bd8..a1eb4cfca2 100644
--- a/framework/base/helper.class.php
+++ b/framework/base/helper.class.php
@@ -15,6 +15,17 @@ declare(strict_types=1);
*/
class baseHelper
{
+
+ /**
+ * 已加载的目录.
+ * The loaded directories.
+ *
+ * @static
+ * @var array
+ * @access public
+ */
+ static $loadedDirs = array();
+
/**
* 设置一个对象的成员变量。
* Set the member's value of one object.
@@ -665,6 +676,7 @@ class baseHelper
static public function ls($dir, $pattern = '')
{
if(empty($dir)) return array();
+ if(isset(self::$loadedDirs[$dir][$pattern])) return self::$loadedDirs[$dir][$pattern];
$files = array();
$dir = realpath($dir);
@@ -672,7 +684,10 @@ class baseHelper
if($dir === false) return array();
if(is_dir($dir)) $files = glob($dir . DIRECTORY_SEPARATOR . '*' . $pattern);
- return empty($files) ? array() : $files;
+
+ self::$loadedDirs[$dir][$pattern] = $files ?: array();
+
+ return self::$loadedDirs[$dir][$pattern];
}
/**
diff --git a/framework/base/router.class.php b/framework/base/router.class.php
index 77226b0b65..72a1b6e3ff 100644
--- a/framework/base/router.class.php
+++ b/framework/base/router.class.php
@@ -287,6 +287,16 @@ class baseRouter
*/
static $loadedLangs = array();
+ /**
+ * 已加载的模块.
+ * Modules loaded.
+ *
+ * @static
+ * @var array
+ * @access public
+ */
+ static $loadedModules = array();
+
/**
* 全局$lang对象。
* The global $lang object.
@@ -466,9 +476,6 @@ class baseRouter
*/
public function setClient(): void
{
- $this->setOpenApp();
- $this->setSuperVars();
-
$this->startSession();
if($this->config->framework->multiSite) $this->setSiteCode() && $this->loadExtraConfig();
@@ -480,6 +487,9 @@ class baseRouter
if($this->config->framework->multiLanguage) $this->loadLang('common');
if($this->config->framework->multiTheme) $this->setClientTheme();
+
+ $this->setOpenApp();
+ $this->setSuperVars();
}
/**
@@ -859,7 +869,7 @@ class baseRouter
$account = isset($_SESSION['user']) ? $_SESSION['user']->account : '';
if(empty($account) and isset($_POST['account'])) $account = $_POST['account'];
if(empty($account) and isset($_GET['account'])) $account = $_GET['account'];
- if(empty($account)) $account = $this->cookie->za;
+ if(empty($account) and isset($_COOKIE['za'])) $account = $_COOKIE['za'];
$vision = '';
$sql = new sql();
@@ -1308,8 +1318,9 @@ class baseRouter
{
$this->clientDevice = 'desktop';
- if($this->cookie->device == 'mobile') $this->clientDevice = 'mobile';
- if($this->cookie->device == 'desktop') $this->clientDevice = 'desktop';
+ $cookieDevice = zget($_COOKIE, 'device', 'desktop');
+ if($cookieDevice == 'mobile') $this->clientDevice = 'mobile';
+ if($cookieDevice == 'desktop') $this->clientDevice = 'desktop';
if(empty($this->cookie->device) || !str_contains('mobile,desktop', (string) $this->cookie->device))
{
@@ -2917,30 +2928,35 @@ class baseRouter
* 加载语言文件,返回全局$lang对象。
* Load lang and return it as the global lang object.
*
- * @param string $moduleName the module name
+ * @param string $moduleName the module name
* @param string $appName the app name
* @access public
- * @return bool|object the lang object or false.
+ * @return object the lang object
*/
- public function loadLang(string $moduleName, string $appName = ''): bool|object
+ public function loadLang(string $moduleName, string $appName = ''): object
{
- /* 计算最终要加载的语言文件。 Get the lang files to be loaded. */
- $langFilesToLoad = $this->getMainAndExtFiles($moduleName, $appName, 'lang');
- if(empty($langFilesToLoad)) return false;
-
/* 加载语言文件。Load lang files. */
global $lang;
if(!is_object($lang)) $lang = new language();
if(!isset($lang->$moduleName)) $lang->$moduleName = new stdclass();
+ if(isset(self::$loadedModules[$moduleName])) return $lang;
+
+ self::$loadedModules[$moduleName] = $moduleName;
+
+ /* 计算最终要加载的语言文件。 Get the lang files to be loaded. */
+ $langFilesToLoad = $this->getMainAndExtFiles($moduleName, $appName, 'lang');
+ if(empty($langFilesToLoad)) return $lang;
+
foreach($langFilesToLoad as $langFile)
{
- if(in_array($langFile, self::$loadedLangs)) continue;
+ if(isset(self::$loadedLangs[$langFile])) continue;
include $langFile;
- self::$loadedLangs[] = $langFile;
+ self::$loadedLangs[$langFile] = $langFile;
}
$this->lang = $lang;
+
return $lang;
}
diff --git a/framework/helper.class.php b/framework/helper.class.php
index 4cd5e1cd5a..02022d66c3 100644
--- a/framework/helper.class.php
+++ b/framework/helper.class.php
@@ -717,8 +717,8 @@ function initItemActions(object &$item, string $actionMenu, array $actionList, o
$module = $actionConfig['url']['module'];
if(!$notLoadModel)
{
- $rowModule = $module == 'projectbuild' ? 'build' : $module;
- $model = $app->control->loadModel($rowModule);
+ $rawModule = $module == 'projectbuild' ? 'build' : $module;
+ $model = $app->control->loadModel($rawModule);
}
}
diff --git a/framework/router.class.php b/framework/router.class.php
index cdb6070d0d..76b6733c95 100755
--- a/framework/router.class.php
+++ b/framework/router.class.php
@@ -122,9 +122,9 @@ class router extends baseRouter
* @param string $moduleName the module name
* @param string $appName the app name
* @access public
- * @return bool|object the lang object or false.
+ * @return object the lang object or false.
*/
- public function loadLang($moduleName, $appName = ''): bool|object
+ public function loadLang($moduleName, $appName = ''): object
{
global $lang;
if(!is_object($lang)) $lang = new language();
@@ -296,7 +296,7 @@ class router extends baseRouter
$config->executionLink = 'execution-task';
/* Get user preference. */
- $account = $this->session->user->account ?? '';
+ $account = $_SESSION['user']->account ?? '';
$userSetting = array();
if($this->dbh and !empty($this->config->db->name) and $account)
{
diff --git a/lib/sqlparser/vendor/composer/platform_check.php b/lib/sqlparser/vendor/composer/platform_check.php
index 589e9e770b..7f2efc1a1a 100644
--- a/lib/sqlparser/vendor/composer/platform_check.php
+++ b/lib/sqlparser/vendor/composer/platform_check.php
@@ -4,7 +4,7 @@
$issues = array();
-if (!(PHP_VERSION_ID >= 70200)) {
+if (!(PHP_VERSION_ID >= 50400)) {
$issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.0". You are running ' . PHP_VERSION . '.';
}
diff --git a/lib/zin/wg/backbtn/v1.php b/lib/zin/wg/backbtn/v1.php
index e3fe5940db..77bfcb94bc 100644
--- a/lib/zin/wg/backbtn/v1.php
+++ b/lib/zin/wg/backbtn/v1.php
@@ -48,7 +48,7 @@ class backBtn extends btn
'bug' => 'bug-browse,project-bug,my-work,my-contribute,execution-bug,bug-view,qa-index,execution-task,product-track,execution-task,task-view,repo-view,story-change',
'testcase' => 'testcase-browse,project-testcase,my-work,my-contribute,execution-testcase,testtask-cases,testsuite-view,product-browse,testcase-view,qa-index,caselib-browse,product-track,story-change,my-index',
'testsuite' => 'testsuite-browse,testsuite-view,',
- 'testtask' => 'testtask-browse,testtask-cases,qa-index,testcase-browse,my-index',
+ 'testtask' => 'testtask-browse,testtask-cases,qa-index,testcase-browse,execution-build,my-index',
'testreport' => 'testreport-browse,project-testreport,execution-testreport,execution-testtask',
'tree' => 'product-browse,project-browse,execution-task,bug-browse,projectstory-story,host-browse,execution-story,feedback-admin,testcase-browse,caselib-browse',
'doc' => 'doc-mySpace,doc-productSpace,doc-projectSpace,doc-teamSpace,doc-view,execution-doc',
diff --git a/lib/zin/wg/docmenu/js/v1.js b/lib/zin/wg/docmenu/js/v1.js
index 0eab0a6c47..53f3cda4be 100644
--- a/lib/zin/wg/docmenu/js/v1.js
+++ b/lib/zin/wg/docmenu/js/v1.js
@@ -65,7 +65,7 @@ window.addModule = function(id, addType)
document.getElementById("moduleName").addEventListener('blur', saveModule);
document.getElementById("moduleName").addEventListener('keydown', function(e)
{
- if(e.keyCode == 13) saveModule.call(this);
+ if(e.keyCode == 13) e.target.blur();
});
}, 1);
}
diff --git a/misc/ci/Jenkinsfile b/misc/ci/Jenkinsfile
index a7119e5de5..319bcfc3d8 100644
--- a/misc/ci/Jenkinsfile
+++ b/misc/ci/Jenkinsfile
@@ -185,6 +185,15 @@ pipeline {
}
}
+ stage("xuan") {
+ steps {
+ container('package') {
+ sh 'cd $SRC_ZENTAOEXT_PATH && make xuan'
+ sh 'cd $SRC_ZENTAOEXT_PATH && make encrypt-xuan UUID=`uuidgen`'
+ }
+ }
+ }
+
stage("中转") {
steps {
container('package') {
diff --git a/module/account/config/form.php b/module/account/config/form.php
index ade8db8d40..fc30a45e93 100644
--- a/module/account/config/form.php
+++ b/module/account/config/form.php
@@ -1,5 +1,4 @@
account->form = new stdclass();
$config->account->form->create = array();
$config->account->form->create['name'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
@@ -12,7 +11,6 @@ $config->account->form->create['mobile'] = array('type' => 'string', 'requi
$config->account->form->create['type'] = array('type' => 'string', 'required' => false, 'default' => '', 'filter' => 'trim');
$config->account->form->create['status'] = array('type' => 'string', 'required' => false, 'default' => '', 'filter' => 'trim');
$config->account->form->create['extra'] = array('type' => 'string', 'required' => false, 'default' => '', 'filter' => 'trim');
-$config->account->form->create['createdBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
$config->account->form->create['createdDate'] = array('type' => 'string', 'required' => false, 'default' => helper::now());
$config->account->form->edit = array();
@@ -26,5 +24,4 @@ $config->account->form->edit['mobile'] = array('type' => 'string', 'required
$config->account->form->edit['type'] = array('type' => 'string', 'required' => false, 'default' => '', 'filter' => 'trim');
$config->account->form->edit['status'] = array('type' => 'string', 'required' => false, 'default' => '', 'filter' => 'trim');
$config->account->form->edit['extra'] = array('type' => 'string', 'required' => false, 'default' => '', 'filter' => 'trim');
-$config->account->form->edit['editedBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
$config->account->form->edit['editedDate'] = array('type' => 'string', 'required' => false, 'default' => helper::now());
diff --git a/module/account/control.php b/module/account/control.php
index 38454784b9..6f26839022 100644
--- a/module/account/control.php
+++ b/module/account/control.php
@@ -63,7 +63,9 @@ class account extends control
{
if($_POST)
{
- $account = form::data($this->config->account->form->create)->get();
+ $account = form::data($this->config->account->form->create)
+ ->add('createdBy', $this->app->user->account)
+ ->get();
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
$this->account->create($account);
@@ -90,7 +92,9 @@ class account extends control
{
if($_POST)
{
- $account = form::data($this->config->account->form->edit)->get();
+ $account = form::data($this->config->account->form->edit)
+ ->add('editedBy', $this->app->user->account)
+ ->get();
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
$this->account->update($accountID, $account);
diff --git a/module/action/model.php b/module/action/model.php
index 84c71827dc..5cbd72d371 100755
--- a/module/action/model.php
+++ b/module/action/model.php
@@ -319,10 +319,14 @@ class actionModel extends model
}
}
+ if(isset($typeTrashes['execution'])) $noMultipleExecutions = $this->dao->select('id')->from(TABLE_EXECUTION)->where('multiple')->eq('0')->andWhere('id')->in($typeTrashes['execution'])->fetchPairs();
+
/* 将对象名称字段添加到回收站数据中。 */
/* Add name field to the trashes. */
- foreach($trashes as $trash)
+ foreach($trashes as $key => $trash)
{
+ if($trash->objectType == 'execution' && isset($noMultipleExecutions[$trash->objectID])) unset($trashes[$key]);
+
if($trash->objectType == 'pipeline' && isset($objectNames['gitlab'][$trash->objectID])) $trash->objectType = 'gitlab';
if($trash->objectType == 'pipeline' && isset($objectNames['jenkins'][$trash->objectID])) $trash->objectType = 'jenkins';
@@ -1951,6 +1955,10 @@ class actionModel extends model
$productID = $this->loadModel('product')->getProductIDByProject($object->id);;
$this->dao->update(TABLE_PRODUCT)->set('name')->eq($object->name)->set('deleted')->eq(0)->where('id')->eq($productID)->exec();
}
+
+ /* 恢复隐藏执行。 */
+ /* Resotre hidden execution. */
+ if($action->objectType == 'project' && !$object->multiple) $this->dao->update(TABLE_EXECUTION)->set('deleted')->eq('0')->where('project')->eq($object->id)->andWhere('multiple')->eq('0')->exec();
}
if($action->objectType == 'doc' && $object->files) $this->dao->update(TABLE_FILE)->set('deleted')->eq('0')->where('id')->in($object->files)->exec();
diff --git a/module/aiapp/js/square.ui.js b/module/aiapp/js/square.ui.js
index ee104baa38..ce7af33c54 100644
--- a/module/aiapp/js/square.ui.js
+++ b/module/aiapp/js/square.ui.js
@@ -19,5 +19,6 @@ window.aiSquare.handleStarBtnClick = function(e)
$btn.children('img').attr('src', 'static/svg/star-empty.svg');
$btn.attr('data-url', $btn.attr('data-url').replace('true', 'false'));
}
+ if(category == 'collection') loadCurrentPage();
}, 'json');
};
diff --git a/module/aiapp/ui/square.html.php b/module/aiapp/ui/square.html.php
index 0d60f7bd99..a50c819245 100644
--- a/module/aiapp/ui/square.html.php
+++ b/module/aiapp/ui/square.html.php
@@ -3,6 +3,8 @@ declare(strict_types=1);
namespace zin;
+jsVar('category', $category);
+
$navItems = array();
$showTag = in_array($category, array('collection', 'discovery', 'latest'));
diff --git a/module/artifactrepo/config/form.php b/module/artifactrepo/config/form.php
index 2717a607d1..864b8521a2 100644
--- a/module/artifactrepo/config/form.php
+++ b/module/artifactrepo/config/form.php
@@ -1,7 +1,6 @@
artifactrepo->form = new stdclass();
$config->artifactrepo->form->create = array();
$config->artifactrepo->form->create['name'] = array('required' => true, 'type' => 'string');
@@ -11,12 +10,9 @@ $config->artifactrepo->form->create['type'] = array('required' => true,
$config->artifactrepo->form->create['status'] = array('required' => true, 'type' => 'string');
$config->artifactrepo->form->create['products'] = array('required' => false, 'type' => 'array', 'default' => array(), 'filter' => 'join');
$config->artifactrepo->form->create['format'] = array('required' => false, 'type' => 'string', 'default' => '');
-$config->artifactrepo->form->create['createdBy'] = array('required' => false, 'type' => 'string', 'default' => $app->user->account);
-$config->artifactrepo->form->create['editedBy'] = array('required' => false, 'type' => 'string', 'default' => $app->user->account);
$config->artifactrepo->form->create['createdDate'] = array('required' => false, 'type' => 'string', 'default' => helper::now());
$config->artifactrepo->form->edit = array();
$config->artifactrepo->form->edit['name'] = array('required' => true, 'type' => 'string');
$config->artifactrepo->form->edit['products'] = array('required' => false, 'type' => 'array', 'default' => array(), 'filter' => 'join');
-$config->artifactrepo->form->edit['editedBy'] = array('required' => false, 'type' => 'string', 'default' => $app->user->account);
$config->artifactrepo->form->edit['editedDate'] = array('required' => false, 'type' => 'string', 'default' => helper::now());
diff --git a/module/artifactrepo/control.php b/module/artifactrepo/control.php
index 2f26a03487..683cebed88 100644
--- a/module/artifactrepo/control.php
+++ b/module/artifactrepo/control.php
@@ -56,7 +56,9 @@ class artifactrepo extends control
{
if($_POST)
{
- $repo = form::data($this->config->artifactrepo->form->create)->get();
+ $repo = form::data($this->config->artifactrepo->form->create)
+ ->add('createdBy', $this->app->user->account)
+ ->get();
if($repo->products) $repo->products = ',' . $repo->products . ',';
$repoID = $this->artifactrepo->create($repo);
@@ -85,7 +87,9 @@ class artifactrepo extends control
{
if($_POST)
{
- $repo = form::data($this->config->artifactrepo->form->edit)->get();
+ $repo = form::data($this->config->artifactrepo->form->edit)
+ ->add('editedBy', $this->app->user->account)
+ ->get();
if($repo->products) $repo->products = ',' . $repo->products . ',';
$this->artifactrepo->update($repo, $artifactRepoID);
diff --git a/module/backup/model.php b/module/backup/model.php
index bcfa92ccd3..852d7f89be 100644
--- a/module/backup/model.php
+++ b/module/backup/model.php
@@ -326,7 +326,11 @@ class backupModel extends model
public function getBackupDirProgress(string $backup): array
{
$tmpLogFile = $this->getTmpLogFile($backup);
- if(file_exists($tmpLogFile)) return json_decode(file_get_contents($tmpLogFile), true);
+ if(file_exists($tmpLogFile))
+ {
+ $log = json_decode(file_get_contents($tmpLogFile), true);
+ return empty($log) ? array() : $log;
+ }
return array();
}
@@ -433,8 +437,9 @@ class backupModel extends model
public function getDirSize(string $dir): int
{
if(!file_exists($dir)) return 0;
+ if(!is_readable($dir)) return 0;
$totalSize = 0;
- $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS));
+ $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS), RecursiveIteratorIterator::LEAVES_ONLY, RecursiveIteratorIterator::CATCH_GET_CHILD);
foreach($iterator as $file) $totalSize += $file->getSize();
return $totalSize;
diff --git a/module/block/css/guideblock.ui.css b/module/block/css/guideblock.ui.css
index 1a3cb4fd4a..e7bec74c24 100644
--- a/module/block/css/guideblock.ui.css
+++ b/module/block/css/guideblock.ui.css
@@ -13,7 +13,7 @@
.guide-block .flowchart .flow-item > div:before {border-left-color: #fff; z-index: 1;}
.guide-block .flowchart .flow-item > div > div {display: flow-root; overflow: hidden;}.ie-8 .flow-item > div {margin-right: 10px}.flow-item-0 > div {color: #FFF; font-weight: 400;}
.guide-block .flowchart .flow-item-0 > div:before {display: none;}
-.guide-block .flowchart {.flow-item-1, .flow-item-2, .flow-item-3, .flow-item-4, .flow-item-5 {background-image: url('static/svg/arrow-white.svg');}}
+.guide-block .flowchart .flow-item-arrow {background-image: url('static/svg/arrow-white.svg');}
.guide-block .flowchart .flow-item-display {overflow: hidden; white-space:nowrap; text-overflow: clip; font-size: 12px;}
.guide-block .theme-switch div.theme-default {color: #3785ff;}
diff --git a/module/block/ui/assigntomeblock.html.php b/module/block/ui/assigntomeblock.html.php
index 92bdef8632..20412dd0aa 100644
--- a/module/block/ui/assigntomeblock.html.php
+++ b/module/block/ui/assigntomeblock.html.php
@@ -88,14 +88,15 @@ foreach($hasViewPriv as $type => $bool)
$statusList = array();
foreach($data as $review)
{
- $review->module = $review->type;
-
$reviewType = $review->type;
if($reviewType == 'projectreview') $reviewType = 'review';
+ $review->module = $reviewType;
+
$typeName = '';
if(isset($lang->{$review->type}->common)) $typeName = $lang->{$review->type}->common;
if($reviewType == 'story') $typeName = $review->storyType == 'story' ? $lang->SRCommon : $lang->URCommon;
+ if($review->type == 'projectreview') $typeName = $lang->project->common;
if(isset($lang->$reviewType->statusList)) $statusList = array_merge($statusList, $lang->$reviewType->statusList);
if($reviewType == 'attend') $statusList = array_merge($statusList, $lang->attend->reviewStatusList);
diff --git a/module/block/ui/executionstatisticblock.html.php b/module/block/ui/executionstatisticblock.html.php
index d219e23ed2..6dbd1d7361 100644
--- a/module/block/ui/executionstatisticblock.html.php
+++ b/module/block/ui/executionstatisticblock.html.php
@@ -254,7 +254,7 @@ statisticBlock
),
set::block($block),
set::active($active),
- set::moreLink(createLink('execution', 'all', 'status=' . $block->params->type)),
+ set::moreLink(createLink('execution', 'all', 'status=' . zget($block->params, 'type', ''))),
set::items($items),
$blockView,
);
diff --git a/module/block/ui/flowchart.html.php b/module/block/ui/flowchart.html.php
index 698b589b39..bd46ae2a6c 100644
--- a/module/block/ui/flowchart.html.php
+++ b/module/block/ui/flowchart.html.php
@@ -28,13 +28,14 @@ function printFlowchart()
{
$items[] = div
(
- set('class', 'flow-item flow-item-' . $index++),
+ set('class', "flow-item flow-item-$index " . ($index >= 1 ? 'flow-item-arrow' : '')),
div
(
set('class', 'flow-item-display'),
$flowItem
)
);
+ $index ++;
}
$charts[] = div
(
diff --git a/module/block/ui/guideblock.html.php b/module/block/ui/guideblock.html.php
index e1224c90a5..2cd8529107 100644
--- a/module/block/ui/guideblock.html.php
+++ b/module/block/ui/guideblock.html.php
@@ -95,7 +95,7 @@ blockPanel
setClass('guide-block'),
to::heading
(
- !commonModel::isTutorialMode() ? btn
+ !commonModel::isTutorialMode() && $config->vision == 'rnd' ? btn
(
set::url('tutorial', 'start'),
set::type('warning'),
diff --git a/module/block/zen.php b/module/block/zen.php
index 1e3e38ff1d..f1e20310f3 100644
--- a/module/block/zen.php
+++ b/module/block/zen.php
@@ -2012,7 +2012,7 @@ class blockZen extends block
if(common::hasPriv('todo', 'view')) $hasViewPriv['todo'] = true;
if(common::hasPriv('demand', 'view') && $this->config->edition == 'ipd' && $this->config->vision == 'or') $hasViewPriv['demand'] = true;
- if(common::hasPriv('task', 'view')) $hasViewPriv['task'] = true;
+ if((common::hasPriv('task', 'view') && $this->config->vision == 'rnd') || (common::hasPriv('marketresearch', 'viewTask') && $this->config->vision == 'or')) $hasViewPriv['task'] = true;
if(common::hasPriv('story', 'view') && $this->config->vision != 'lite') $hasViewPriv['story'] = true;
if($this->config->URAndSR && common::hasPriv('story', 'view') && $this->config->vision != 'lite') $hasViewPriv['requirement'] = true;
if(common::hasPriv('bug', 'view') && !in_array($this->config->vision, array('lite', 'or'))) $hasViewPriv['bug'] = true;
@@ -2147,6 +2147,9 @@ class blockZen extends block
$this->view->depts = $this->loadModel('dept')->getOptionMenu();
}
+ /* Compatible with the logic of the back button on the old page. */
+ $this->session->set('demandList', $this->createLink('my', 'index'), 'my');
+
$this->view->users = $this->loadModel('user')->getPairs('all,noletter');
$this->view->isExternalCall = $this->isExternalCall();
$this->view->hasViewPriv = $hasViewPriv;
diff --git a/module/bug/config.php b/module/bug/config.php
index 1fea40ed24..78baf22335 100755
--- a/module/bug/config.php
+++ b/module/bug/config.php
@@ -157,6 +157,7 @@ $config->bug->actionList['delete']['hint'] = $lang->bug->delete;
$config->bug->actionList['delete']['url'] = array('module' => 'bug', 'method' => 'delete', 'params' => 'bugID={id}');
$config->bug->actionList['delete']['className'] = 'ajax-submit';
$config->bug->actionList['delete']['data-confirm'] = array('message' => $lang->bug->notice->confirmDelete, 'icon' => 'icon-exclamation-sign', 'iconClass' => 'warning-pale rounded-full icon-2x');
+$config->bug->actionList['delete']['notInModal'] = true;
$config->bug->actionList['createBranch']['icon'] = 'treemap';
$config->bug->actionList['createBranch']['hint'] = $lang->bug->codeBranch;
diff --git a/module/bug/control.php b/module/bug/control.php
index c76f8f5ebf..d79fb6d6ad 100755
--- a/module/bug/control.php
+++ b/module/bug/control.php
@@ -457,7 +457,8 @@ class bug extends control
/* Set menu. */
$this->qa->setMenu($oldBug->product, $oldBug->branch);
- $users = $this->loadModel('user')->getPairs('noclosed');
+ $users = $this->loadModel('user')->getPairs('noclosed');
+ $builds = $this->loadModel('build')->getBuildPairs(array($oldBug->product), $oldBug->branch, 'withbranch,noreleased');
/* 展示相关变量。 */
/* Show the variables associated. */
@@ -467,7 +468,7 @@ class bug extends control
$this->view->users = $users;
$this->view->assignedTo = isset($users[$oldBug->openedBy]) ? $oldBug->openedBy : $this->bug->getModuleOwner($oldBug->module, $oldBug->product);
$this->view->executions = $this->loadModel('product')->getExecutionPairsByProduct($oldBug->product, $oldBug->branch ? "0,{$oldBug->branch}" : '0', (int)$oldBug->project, 'stagefilter');
- $this->view->builds = $this->loadModel('build')->getBuildPairs(array($oldBug->product), $oldBug->branch, 'withbranch,noreleased');
+ $this->view->builds = $this->bugZen->addReleaseLabelForBuilds($oldBug->product, $builds);
$this->view->actions = $this->loadModel('action')->getList('bug', $bugID);
$this->display();
}
diff --git a/module/bug/ui/resolve.html.php b/module/bug/ui/resolve.html.php
index bf45658f27..4091802c61 100644
--- a/module/bug/ui/resolve.html.php
+++ b/module/bug/ui/resolve.html.php
@@ -92,6 +92,9 @@ formPanel
set::required(strpos(",{$config->bug->resolve->requiredFields},", ',resolvedBuild,') !== false),
picker
(
+ set::popWidth('auto'),
+ set::popMaxWidth('300px'),
+ set::popMinWidth('145px'),
set::name('resolvedBuild'),
set::value(''),
set::items($builds)
diff --git a/module/bug/zen.php b/module/bug/zen.php
index bdf67b0c0f..b454ba0d5a 100644
--- a/module/bug/zen.php
+++ b/module/bug/zen.php
@@ -995,6 +995,7 @@ class bugZen extends bug
{
$builds = $this->build->getBuildPairs(array($productID), $branch, 'noempty,noterminate,nodone,withbranch,noreleased');
}
+ $builds = $this->addReleaseLabelForBuilds($productID, $builds);
return $this->updateBug($bug, array('builds' => $builds));
}
@@ -1213,10 +1214,13 @@ class bugZen extends bug
$cases = $this->loadmodel('testcase')->getPairsByProduct($bug->product, array(0, $bug->branch), $case->title, $this->config->maxCount);
}
+ $resolvedBuilds = $this->build->getBuildPairs(array($bug->product), $bug->branch, 'noempty');
+ $resolvedBuilds = $this->addReleaseLabelForBuilds($bug->product, $resolvedBuilds);
+
$this->config->moreLinks['case'] = inlink('ajaxGetProductCases', "bugID={$bug->id}");
$this->view->openedBuilds = $openedBuilds;
- $this->view->resolvedBuilds = $this->build->getBuildPairs(array($bug->product), $bug->branch, 'noempty');
+ $this->view->resolvedBuilds = $resolvedBuilds;
$this->view->plans = $this->loadModel('productplan')->getPairs($bug->product, $bug->branch, '', true);
$this->view->stories = $bug->execution ? $this->story->getExecutionStoryPairs($bug->execution) : $this->story->getProductStoryPairs($bug->product, $bug->branch, 0, 'all', 'id_desc', 0, 'full', 'story', false);
$this->view->tasks = $this->task->getExecutionTaskPairs($bug->execution);
@@ -2398,4 +2402,32 @@ class bugZen extends bug
return $chartOption;
}
+
+ /**
+ * 给版本中的发布增加标识。
+ * Add label for the release in the builds.
+ *
+ * @param int $productID
+ * @param array $builds
+ * @access protected
+ * @return array
+ */
+ protected function addReleaseLabelForBuilds(int $productID, array $builds): array
+ {
+ $releases = $this->loadModel('build')->getRelatedReleases(array($productID));
+
+ $buildItems = array();
+ foreach($builds as $buildID => $buildName)
+ {
+ $buildItem = array('value' => $buildID, 'text' => $buildName);
+ if(isset($releases[$buildID])) $buildItem['content'] = array('html' => "
{$buildName}
", 'class' => 'w-full flex nowrap');
+ $buildItems[$buildID] = $buildItem;
+ }
+ foreach($releases as $release)
+ {
+ if(isset($buildItems[$release->shadow])) $buildItems[$release->shadow]['content'] = array('html' => "{$buildItems[$release->shadow]['text']}
", 'class' => 'w-full flex nowrap');
+ }
+
+ return array_values($buildItems);
+ }
}
diff --git a/module/build/config/form.php b/module/build/config/form.php
index 0798b3274c..7b20f78dd6 100644
--- a/module/build/config/form.php
+++ b/module/build/config/form.php
@@ -17,7 +17,7 @@ $config->build->form->create['builds'] = array('type' => 'array', 'r
$config->build->form->create['bugs'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->build->form->create['stories'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->build->form->create['date'] = array('type' => 'date', 'required' => true, 'default' => helper::today());
-$config->build->form->create['createdBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
+$config->build->form->create['createdBy'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->build->form->create['createdDate'] = array('type' => 'datetime ', 'required' => false, 'default' => $now);
$config->build->form->edit['execution'] = array('type' => 'int', 'required' => $app->tab == 'execution', 'default' => 0);
diff --git a/module/build/control.php b/module/build/control.php
index 7d32f284d3..35514661d3 100644
--- a/module/build/control.php
+++ b/module/build/control.php
@@ -49,7 +49,7 @@ class build extends control
{
if(!empty($_POST))
{
- $build = form::data()->get();
+ $build = form::data()->setDefault('createdBy', $this->app->user->account)->get();
if(!empty($_FILES['buildFiles'])) $_FILES['files'] = $_FILES['buildFiles'];
unset($_FILES['buildFiles']);
if(dao::isError()) return $this->sendError(dao::getError());
diff --git a/module/build/model.php b/module/build/model.php
index da457dc062..426fdebbae 100644
--- a/module/build/model.php
+++ b/module/build/model.php
@@ -263,30 +263,8 @@ class buildModel extends model
/* if the build has been released and replace is true, replace build name with release name. */
if($replace)
{
- $releases = $this->dao->select('t1.id,t1.shadow,t1.product,t1.branch,t1.build,t1.name,t1.date,t3.name as branchName,t4.type as productType')->from(TABLE_RELEASE)->alias('t1')
- ->leftJoin(TABLE_BUILD)->alias('t2')->on('FIND_IN_SET(t2.id, t1.build)')
- ->leftJoin(TABLE_BRANCH)->alias('t3')->on('FIND_IN_SET(t3.id, t1.branch)')
- ->leftJoin(TABLE_PRODUCT)->alias('t4')->on('t1.product=t4.id')
- ->where('t1.product')->in($productIdList)
- ->beginIF(!empty($buildIdList))->andWhere('t2.id')->in($buildIdList)->fi()
- ->andWhere('t1.deleted')->eq(0)
- ->andWhere('t1.shadow')->ne(0)
- ->fetchAll('id');
-
- /* Get the buildID under the shadow product. */
- $shadows = $this->dao->select('shadow')->from(TABLE_RELEASE)->where('product')->in($productIdList)->fetchPairs('shadow', 'shadow');
- if($shadows)
- {
- /* Append releases of only shadow and not link build. */
- $releases += $this->dao->select('t1.id,t1.shadow,t1.product,t1.branch,t1.build,t1.name,t1.date,t2.name as branchName,t3.type as productType')->from(TABLE_RELEASE)->alias('t1')
- ->leftJoin(TABLE_BRANCH)->alias('t2')->on('FIND_IN_SET(t2.id, t1.branch)')
- ->leftJoin(TABLE_PRODUCT)->alias('t3')->on('t1.product=t3.id')
- ->where('t1.shadow')->in($shadows)
- ->andWhere('t1.build')->eq(0)
- ->andWhere('t1.deleted')->eq(0)
- ->fetchAll('id');
- }
- $builds = $this->replaceNameWithRelease($allBuilds, $builds, $releases, $branch, $params, $excludedReleaseIdList);
+ $releases = $this->getRelatedReleases($productIdList, $buildIdList, $shadows);
+ $builds = $this->replaceNameWithRelease($allBuilds, $builds, $releases, $branch, $params, $excludedReleaseIdList);
}
krsort($builds);
@@ -409,6 +387,43 @@ class buildModel extends model
return $builds;
}
+ /**
+ * 获取关联的发布。
+ * Get releated release.
+ *
+ * @param array|int $productIdList
+ * @param string $buildIdList
+ * @param array|bool $shadows
+ * @access public
+ * @return array
+ */
+ public function getRelatedReleases(array|int $productIdList, string $buildIdList = '', array|bool $shadows = false): array
+ {
+ $releases = $this->dao->select('t1.id,t1.shadow,t1.product,t1.branch,t1.build,t1.name,t1.date,t3.name as branchName,t4.type as productType')->from(TABLE_RELEASE)->alias('t1')
+ ->leftJoin(TABLE_BUILD)->alias('t2')->on('FIND_IN_SET(t2.id, t1.build)')
+ ->leftJoin(TABLE_BRANCH)->alias('t3')->on('FIND_IN_SET(t3.id, t1.branch)')
+ ->leftJoin(TABLE_PRODUCT)->alias('t4')->on('t1.product=t4.id')
+ ->where('t1.product')->in($productIdList)
+ ->beginIF(!empty($buildIdList))->andWhere('t2.id')->in($buildIdList)->fi()
+ ->andWhere('t1.deleted')->eq(0)
+ ->andWhere('t1.shadow')->ne(0)
+ ->fetchAll('id');
+
+ if($shadows === false) $shadows = $this->dao->select('shadow')->from(TABLE_RELEASE)->where('product')->in($productIdList)->fetchPairs('shadow', 'shadow'); // Get the buildID under the shadow product.
+ if($shadows)
+ {
+ /* Append releases of only shadow and not link build. */
+ $releases += $this->dao->select('t1.id,t1.shadow,t1.product,t1.branch,t1.build,t1.name,t1.date,t2.name as branchName,t3.type as productType')->from(TABLE_RELEASE)->alias('t1')
+ ->leftJoin(TABLE_BRANCH)->alias('t2')->on('FIND_IN_SET(t2.id, t1.branch)')
+ ->leftJoin(TABLE_PRODUCT)->alias('t3')->on('t1.product=t3.id')
+ ->where('t1.shadow')->in($shadows)
+ ->andWhere('t1.build')->eq(0)
+ ->andWhere('t1.deleted')->eq(0)
+ ->fetchAll('id');
+ }
+ return $releases;
+ }
+
/**
* 获取最后一次创建的版本信息。
* Get the last build.
diff --git a/module/custom/lang/de.php b/module/custom/lang/de.php
index 50bc7b0e21..17fa08fb33 100644
--- a/module/custom/lang/de.php
+++ b/module/custom/lang/de.php
@@ -63,6 +63,7 @@ $lang->custom->setPercent = "Enable or Disable {$lang->stage->percent}
$lang->custom->beginAndEndDate = 'Begin & End';
$lang->custom->beginAndEndDateRange = 'The Range Of Begin & End';
$lang->custom->limitTaskDateAction = 'Set start and end date required';
+$lang->custom->closedSetting = 'Close Setting';
$lang->custom->unitList['efficiency'] = 'Working Hours/';
$lang->custom->unitList['manhour'] = 'Man-hour/';
diff --git a/module/custom/lang/en.php b/module/custom/lang/en.php
index 906fcf7911..e31d1da4ac 100644
--- a/module/custom/lang/en.php
+++ b/module/custom/lang/en.php
@@ -63,6 +63,7 @@ $lang->custom->setPercent = "Enable or Disable {$lang->stage->percent}
$lang->custom->beginAndEndDate = 'Begin & End';
$lang->custom->beginAndEndDateRange = 'The Range Of Begin & End';
$lang->custom->limitTaskDateAction = 'Set start and end date required';
+$lang->custom->closedSetting = 'Close Setting';
$lang->custom->unitList['efficiency'] = 'Working Hours/';
$lang->custom->unitList['manhour'] = 'Man-hour/';
diff --git a/module/custom/lang/fr.php b/module/custom/lang/fr.php
index 634a258671..15faf5be2e 100644
--- a/module/custom/lang/fr.php
+++ b/module/custom/lang/fr.php
@@ -63,6 +63,7 @@ $lang->custom->setPercent = "Enable or Disable {$lang->stage->percent}
$lang->custom->beginAndEndDate = 'Begin & End';
$lang->custom->beginAndEndDateRange = 'The Range Of Begin & End';
$lang->custom->limitTaskDateAction = 'Set start and end date required';
+$lang->custom->closedSetting = 'Close Setting';
$lang->custom->unitList['efficiency'] = 'Working Hours/';
$lang->custom->unitList['manhour'] = 'Man-hour/';
diff --git a/module/custom/lang/zh-cn.php b/module/custom/lang/zh-cn.php
index f5be356858..1457012bf5 100644
--- a/module/custom/lang/zh-cn.php
+++ b/module/custom/lang/zh-cn.php
@@ -63,6 +63,7 @@ $lang->custom->setPercent = "是否启用{$lang->stage->percent}";
$lang->custom->beginAndEndDate = '起止日期';
$lang->custom->beginAndEndDateRange = '起止日期范围';
$lang->custom->limitTaskDateAction = '设置起止日期必填';
+$lang->custom->closedSetting = '关闭设置';
$lang->custom->unitList['efficiency'] = '工时/';
$lang->custom->unitList['manhour'] = '人时/';
diff --git a/module/custom/ui/execution.html.php b/module/custom/ui/execution.html.php
index 18b8946d46..72b44a5c42 100644
--- a/module/custom/ui/execution.html.php
+++ b/module/custom/ui/execution.html.php
@@ -25,7 +25,7 @@ div
span
(
setClass('text-md font-bold'),
- $lang->custom->$module->fields[$module]
+ $lang->custom->closedSetting
),
formGroup
(
diff --git a/module/dataview/lang/de.php b/module/dataview/lang/de.php
index 79cfcf936f..6c28aa6018 100644
--- a/module/dataview/lang/de.php
+++ b/module/dataview/lang/de.php
@@ -100,9 +100,9 @@ $lang->dataview->objects['testrun'] = 'testrun';
$lang->dataview->objects['testcase'] = 'testcase';
$lang->dataview->objects['testresult'] = 'result';
$lang->dataview->objects['casemodule'] = 'case module';
-$lang->dataview->objects['feedback'] = 'Feedback';
$lang->dataview->objects['action'] = 'Action';
$lang->dataview->objects['effort'] = 'Effort';
+if($this->config->edition != 'open') $lang->dataview->objects['feedback'] = 'Feedback';
$lang->dataview->tables = array();
$lang->dataview->tables['build'] = array('name' => 'Build', 'desc' => '');
diff --git a/module/dataview/lang/en.php b/module/dataview/lang/en.php
index 79cfcf936f..6c28aa6018 100644
--- a/module/dataview/lang/en.php
+++ b/module/dataview/lang/en.php
@@ -100,9 +100,9 @@ $lang->dataview->objects['testrun'] = 'testrun';
$lang->dataview->objects['testcase'] = 'testcase';
$lang->dataview->objects['testresult'] = 'result';
$lang->dataview->objects['casemodule'] = 'case module';
-$lang->dataview->objects['feedback'] = 'Feedback';
$lang->dataview->objects['action'] = 'Action';
$lang->dataview->objects['effort'] = 'Effort';
+if($this->config->edition != 'open') $lang->dataview->objects['feedback'] = 'Feedback';
$lang->dataview->tables = array();
$lang->dataview->tables['build'] = array('name' => 'Build', 'desc' => '');
diff --git a/module/dataview/lang/fr.php b/module/dataview/lang/fr.php
index 79cfcf936f..6c28aa6018 100644
--- a/module/dataview/lang/fr.php
+++ b/module/dataview/lang/fr.php
@@ -100,9 +100,9 @@ $lang->dataview->objects['testrun'] = 'testrun';
$lang->dataview->objects['testcase'] = 'testcase';
$lang->dataview->objects['testresult'] = 'result';
$lang->dataview->objects['casemodule'] = 'case module';
-$lang->dataview->objects['feedback'] = 'Feedback';
$lang->dataview->objects['action'] = 'Action';
$lang->dataview->objects['effort'] = 'Effort';
+if($this->config->edition != 'open') $lang->dataview->objects['feedback'] = 'Feedback';
$lang->dataview->tables = array();
$lang->dataview->tables['build'] = array('name' => 'Build', 'desc' => '');
diff --git a/module/dataview/lang/zh-cn.php b/module/dataview/lang/zh-cn.php
index 8f819c490b..ca697ec1a9 100644
--- a/module/dataview/lang/zh-cn.php
+++ b/module/dataview/lang/zh-cn.php
@@ -100,9 +100,9 @@ $lang->dataview->objects['testrun'] = '测试执行';
$lang->dataview->objects['testcase'] = '测试用例';
$lang->dataview->objects['testresult'] = '执行结果';
$lang->dataview->objects['casemodule'] = '用例模块';
-$lang->dataview->objects['feedback'] = '反馈';
$lang->dataview->objects['action'] = '动态';
$lang->dataview->objects['effort'] = '日志';
+if($this->config->edition != 'open') $lang->dataview->objects['feedback'] = '反馈';
$lang->dataview->tables = array();
$lang->dataview->tables['build'] = array('name' => '版本数据', 'desc' => '包括版本名称、所属产品、所属项目、所属执行、创建人等');
diff --git a/module/dataview/table/feedback.php b/module/dataview/table/feedback.php
new file mode 100644
index 0000000000..2bef823938
--- /dev/null
+++ b/module/dataview/table/feedback.php
@@ -0,0 +1,18 @@
+app->loadLang('feedback');
+
+$schema = new stdclass();
+
+$schema->primaryTable = 'feedback';
+
+$schema->tables = array();
+$schema->tables['feedback'] = 'zt_feedback';
+
+$schema->fields = array();
+$schema->fields['id'] = array('type' => 'number', 'name' => $this->lang->feedback->id);
+$schema->fields['type'] = array('type' => 'option', 'name' => $this->lang->feedback->type, 'options' => $this->lang->feedback->typeList);
+$schema->fields['status'] = array('type' => 'option', 'name' => $this->lang->feedback->status, 'options' => $this->lang->feedback->statusList);
+$schema->fields['closedReason'] = array('type' => 'option', 'name' => $this->lang->feedback->closedReason, 'options' => $this->lang->feedback->closedReasonList);
+$schema->fields['solution'] = array('type' => 'option', 'name' => $this->lang->feedback->solution, 'options' => $this->lang->feedback->solutionList);
+$schema->fields['public'] = array('type' => 'option', 'name' => $this->lang->feedback->public, 'options' => $this->lang->feedback->publicList);
+
diff --git a/module/dataview/table/user.php b/module/dataview/table/user.php
new file mode 100644
index 0000000000..c1bd324f4a
--- /dev/null
+++ b/module/dataview/table/user.php
@@ -0,0 +1,18 @@
+app->loadLang('user');
+$this->app->loadLang('dept');
+
+$schema = new stdclass();
+
+$schema->primaryTable = 'user';
+
+$schema->tables = array();
+$schema->tables['user'] = 'zt_user';
+$schema->tables['dept'] = 'zt_dept';
+
+$schema->joins = array();
+$schema->joins['dept'] = 'dept.id = user.dept';
+
+$schema->fields = array();
+$schema->fields['id'] = array('type' => 'number', 'name' => $this->lang->user->id);
+$schema->fields['dept'] = array('type' => 'object', 'name' => $this->lang->user->dept, 'object' => 'dept', 'show' => 'dept.name');
diff --git a/module/design/config/dtable.php b/module/design/config/dtable.php
index f9e6ef7f8b..cc6e3b32bf 100644
--- a/module/design/config/dtable.php
+++ b/module/design/config/dtable.php
@@ -26,7 +26,6 @@ $config->design->dtable->fieldList['type']['statusMap'] = $lang->design->typeLis
$config->design->dtable->fieldList['type']['sortType'] = true;
$config->design->dtable->fieldList['assignedTo']['type'] = 'assign';
-$config->design->dtable->fieldList['assignedTo']['currentUser'] = $app->user->account;
$config->design->dtable->fieldList['assignedTo']['assignLink'] = array('module' => 'design', 'method' => 'assignTo', 'params' => 'designID={id}');
$config->design->dtable->fieldList['assignedTo']['data-toggle'] = 'modal';
$config->design->dtable->fieldList['assignedTo']['sortType'] = false;
diff --git a/module/design/config/form.php b/module/design/config/form.php
index b1acd11e7e..1ba880c4c4 100644
--- a/module/design/config/form.php
+++ b/module/design/config/form.php
@@ -12,7 +12,7 @@ $config->design->form->create['project'] = array('type' => 'int', 'requ
$config->design->form->create['story'] = array('type' => 'int', 'required' => false, 'default' => 0);
$config->design->form->create['desc'] = array('type' => 'string', 'required' => false, 'default' => '', 'control' => 'editor');
$config->design->form->create['version'] = array('type' => 'int', 'required' => false, 'default' => 1);
-$config->design->form->create['createdBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
+$config->design->form->create['createdBy'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->design->form->create['createdDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
$config->design->form->batchcreate['name'] = array('type' => 'string', 'required' => false, 'default' => '', 'filter' => 'trim', 'base' => true);
@@ -22,7 +22,7 @@ $config->design->form->batchcreate['project'] = array('type' => 'int',
$config->design->form->batchcreate['story'] = array('type' => 'int', 'required' => false, 'default' => 0);
$config->design->form->batchcreate['desc'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->design->form->batchcreate['version'] = array('type' => 'int', 'required' => false, 'default' => 1);
-$config->design->form->batchcreate['createdBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
+$config->design->form->batchcreate['createdBy'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->design->form->batchcreate['createdDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
$config->design->form->edit['name'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
@@ -30,10 +30,10 @@ $config->design->form->edit['type'] = array('type' => 'string', 'require
$config->design->form->edit['product'] = array('type' => 'int', 'required' => false, 'default' => 0);
$config->design->form->edit['story'] = array('type' => 'int', 'required' => false, 'default' => 0);
$config->design->form->edit['desc'] = array('type' => 'string', 'required' => false, 'default' => '', 'control' => 'editor');
-$config->design->form->edit['editedBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
+$config->design->form->edit['editedBy'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->design->form->edit['editedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
$config->design->form->assignto['assignedTo'] = array('type' => 'string', 'required' => false, 'default' => '');
-$config->design->form->assignto['editedBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
+$config->design->form->assignto['editedBy'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->design->form->assignto['editedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
$config->design->form->assignto['assignedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
diff --git a/module/design/control.php b/module/design/control.php
index 23b7223940..f5e1dd04d8 100755
--- a/module/design/control.php
+++ b/module/design/control.php
@@ -138,6 +138,7 @@ class design extends control
{
$designData = form::data()
->add('project', $projectID)
+ ->setDefault('createdBy', $this->app->user->account)
->get();
$designID = $this->design->create($designData);
@@ -247,7 +248,7 @@ class design extends control
if($_POST)
{
- $designData = form::data()->get();
+ $designData = form::data()->setDefault('editedBy', $this->app->user->account)->get();
$changes = $this->design->update($designID, $designData);
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
@@ -482,7 +483,7 @@ class design extends control
{
if($_POST)
{
- $designData = form::data()->get();
+ $designData = form::data()->setDefault('editedBy', $this->app->user->account)->get();
$changes = $this->design->assign($designID, $designData);
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
diff --git a/module/design/model.php b/module/design/model.php
index 0cb1ae1a04..1b189c5289 100755
--- a/module/design/model.php
+++ b/module/design/model.php
@@ -60,8 +60,9 @@ class designModel extends model
$this->loadModel('action');
foreach($designs as $rowID => $design)
{
- $design->product = $productID;
- $design->project = $projectID;
+ $design->product = $productID;
+ $design->project = $projectID;
+ $design->createdBy = $this->app->user->account;
$this->dao->insert(TABLE_DESIGN)->data($design)->autoCheck()->batchCheck($this->config->design->batchcreate->requiredFields, 'notempty')->exec();
if(dao::isError())
diff --git a/module/doc/config/form.php b/module/doc/config/form.php
index 414a49dc4b..6cb7229289 100644
--- a/module/doc/config/form.php
+++ b/module/doc/config/form.php
@@ -15,7 +15,7 @@ $config->doc->form->createlib['execution'] = array('type' => 'int', 'requir
$config->doc->form->createlib['groups'] = array('type' => 'array', 'required' => false, 'default' => '', 'filter' => 'join');
$config->doc->form->createlib['users'] = array('type' => 'array', 'required' => false, 'default' => '', 'filter' => 'join');
$config->doc->form->createlib['vision'] = array('type' => 'string', 'required' => false, 'default' => $config->vision);
-$config->doc->form->createlib['addedBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
+$config->doc->form->createlib['addedBy'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->doc->form->createlib['addedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
$config->doc->form->editlib['name'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
@@ -35,9 +35,9 @@ $config->doc->form->create['type'] = array('type' => 'string', 'requir
$config->doc->form->create['keywords'] = array('type' => 'string', 'required' => false, 'default' => '', 'skipRequired' => true);
$config->doc->form->create['acl'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->doc->form->create['vision'] = array('type' => 'string', 'required' => false, 'default' => $config->vision);
-$config->doc->form->create['addedBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
+$config->doc->form->create['addedBy'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->doc->form->create['addedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
-$config->doc->form->create['editedBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
+$config->doc->form->create['editedBy'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->doc->form->create['editedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
$config->doc->form->create['groups'] = array('type' => 'array', 'required' => false, 'default' => '', 'filter' => 'join');
$config->doc->form->create['users'] = array('type' => 'array', 'required' => false, 'default' => '', 'filter' => 'join');
@@ -62,5 +62,5 @@ $config->doc->form->edit['content'] = array('type' => 'string', 'required'
$config->doc->form->edit['groups'] = array('type' => 'array', 'required' => false, 'default' => '', 'filter' => 'join');
$config->doc->form->edit['users'] = array('type' => 'array', 'required' => false, 'default' => '', 'filter' => 'join');
$config->doc->form->edit['mailto'] = array('type' => 'array', 'required' => false, 'default' => '', 'filter' => 'join');
-$config->doc->form->edit['editedBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
+$config->doc->form->edit['editedBy'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->doc->form->edit['editedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
diff --git a/module/doc/control.php b/module/doc/control.php
index 61b1afdd73..d2ec54b1f3 100755
--- a/module/doc/control.php
+++ b/module/doc/control.php
@@ -332,7 +332,11 @@ class doc extends control
helper::setcookie('lastDocModule', $moduleID);
if(!isset($_POST['lib']) && strpos($_POST['module'], '_') !== false) list($_POST['lib'], $_POST['module']) = explode('_', $_POST['module']);
- $docData = form::data()->get();
+ $docData = form::data()
+ ->setDefault('addedBy', $this->app->user->account)
+ ->setDefault('editedBy', $this->app->user->account)
+ ->get();
+
$docResult = $this->doc->create($docData, $this->post->labels);
if(!$docResult || dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
return $this->docZen->responseAfterCreate($docData->lib, $docResult);
@@ -383,7 +387,10 @@ class doc extends control
if($comment == false)
{
if(!isset($_POST['lib']) && strpos($_POST['module'], '_') !== false) list($_POST['lib'], $_POST['module']) = explode('_', $_POST['module']);
- $docData = form::data()->setIF(strpos(",$doc->editedList,", ",{$this->app->user->account},") === false, 'editedList', $doc->editedList . ",{$this->app->user->account}")->get();
+ $docData = form::data()
+ ->setDefault('editedBy', $this->app->user->account)
+ ->setIF(strpos(",$doc->editedList,", ",{$this->app->user->account},") === false, 'editedList', $doc->editedList . ",{$this->app->user->account}")
+ ->get();
$result = $this->doc->update($docID, $docData);
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
diff --git a/module/doc/ui/create.html.php b/module/doc/ui/create.html.php
index ac55f0be0a..f65371b2c8 100644
--- a/module/doc/ui/create.html.php
+++ b/module/doc/ui/create.html.php
@@ -88,6 +88,7 @@ else
input
(
set::name('title'),
+ set::maxlength(100),
set::placeholder($lang->doc->titlePlaceholder)
)
),
diff --git a/module/doc/ui/edit.html.php b/module/doc/ui/edit.html.php
index bebee025bf..5dec9191ed 100644
--- a/module/doc/ui/edit.html.php
+++ b/module/doc/ui/edit.html.php
@@ -34,6 +34,7 @@ form
(
set::name('title'),
set::value($doc->title),
+ set::maxlength(100),
set::placeholder($lang->doc->titlePlaceholder)
)
),
diff --git a/module/doc/ui/view.html.php b/module/doc/ui/view.html.php
index 66b2dc1a6a..1e485bb81c 100644
--- a/module/doc/ui/view.html.php
+++ b/module/doc/ui/view.html.php
@@ -253,6 +253,7 @@ $treeDom = isset($outlineTree) ? div
setID('contentTree'),
tree
(
+ set::className('pl-4'),
set::items($outlineTree),
set::defaultNestedShow(true)
)
diff --git a/module/doc/zen.php b/module/doc/zen.php
index 012613ccf9..bec7dec4d1 100644
--- a/module/doc/zen.php
+++ b/module/doc/zen.php
@@ -79,7 +79,7 @@ class docZen extends doc
$item = array();
$item['id'] = $index;
- $item['title'] = strip_tags($headElement[3]);
+ $item['title'] = array('html' => strip_tags($headElement[3]));
$item['hint'] = strip_tags($headElement[3]);
$item['url'] = '#anchor' . $index;
$item['level'] = $currentLevel;
@@ -271,6 +271,7 @@ class docZen extends doc
{
$this->lang->doc->name = $this->lang->doclib->name;
$lib = form::data()
+ ->setDefault('addedBy', $this->app->user->account)
->setIF($this->post->type == 'product' && !empty($_POST['product']), 'product', $this->post->product)
->setIF($this->post->type == 'project' && !empty($_POST['project']), 'project', $this->post->project)
->setIF($this->post->libType != 'api' && !empty($_POST['execution']), 'execution', $this->post->execution)
diff --git a/module/execution/control.php b/module/execution/control.php
index 174b65c7b7..a0fdc5acdf 100644
--- a/module/execution/control.php
+++ b/module/execution/control.php
@@ -359,6 +359,7 @@ class execution extends control
*/
public function importBug(int $executionID = 0, string $browseType = 'all', int $param = 0, int $recTotal = 0, int $recPerPage = 30, int $pageID = 1)
{
+ $this->session->set('bugList', $this->app->getURI(true), 'execution');
$execution = $this->execution->getByID($executionID);
if(!empty($_POST))
{
@@ -1968,9 +1969,9 @@ class execution extends control
public function storyKanban(int $executionID)
{
$this->app->loadLang('kanban');
- $this->execution->setMenu($executionID);
- $execution = $this->loadModel('execution')->getByID($executionID);
- $stories = $this->loadModel('story')->getExecutionStories($executionID);
+ $execution = $this->commonAction($executionID);
+ $executionID = $execution->id;
+ $stories = $this->loadModel('story')->getExecutionStories($executionID);
$this->loadModel('common')->saveQueryCondition($this->dao->get(), 'story', false);
$stories = array_filter($stories, function($story) {return in_array($story->stage, $this->config->execution->storyKanbanCols);});
diff --git a/module/execution/js/taskkanban.ui.js b/module/execution/js/taskkanban.ui.js
index 9e53ba453e..3f64df38e1 100644
--- a/module/execution/js/taskkanban.ui.js
+++ b/module/execution/js/taskkanban.ui.js
@@ -233,7 +233,7 @@ window.getItem = function(info)
info.item.title = info.item.title.replaceAll(searchValue, "" + searchValue + "");
info.item.title = {html: info.item.title};
}
- info.item.titleUrl = $.createLink(info.laneInfo.type, 'view', `id=${info.item.id}`);
+ info.item.titleUrl = info.laneInfo.type == 'story' ? $.createLink('execution', 'storyView', `id=${info.item.id}&executionID=${executionID}`) : $.createLink(info.laneInfo.type, 'view', `id=${info.item.id}`);
info.item.titleAttrs = {'data-toggle': 'modal', 'data-size' : 'lg', 'title' : info.item.title};
info.item.content = {html: content};
diff --git a/module/execution/model.php b/module/execution/model.php
index 81da973b67..7f68ea9ded 100755
--- a/module/execution/model.php
+++ b/module/execution/model.php
@@ -1283,8 +1283,7 @@ class executionModel extends model
/* Order by status's content whether or not done. */
$executions = $this->dao->select("*, IF(INSTR('done,closed', status) < 2, 0, 1) AS isDone, INSTR('doing,wait,suspended,closed', status) AS sortStatus")->from(TABLE_EXECUTION)
- ->where('type')->ne('')
- ->beginIF(strpos(',lite,or,', ",{$this->config->vision},") !== false)->andWhere('vision')->eq($this->config->vision)->fi()
+ ->where('vision')->eq($this->config->vision)
->beginIF((!$this->session->multiple && $this->app->tab == 'execution') || strpos($mode, 'multiple') !== false)->andWhere('multiple')->eq('1')->fi()
->beginIF($type != 'all')->andWhere('type')->in($type)->fi()
->beginIF($type == 'all')->andWhere('type')->in('stage,sprint,kanban')->fi()
diff --git a/module/execution/tao.php b/module/execution/tao.php
index 9e3683f2d1..3e05576f54 100644
--- a/module/execution/tao.php
+++ b/module/execution/tao.php
@@ -278,7 +278,7 @@ class executionTao extends executionModel
$this->lang->execution->menu = new stdclass();
$this->lang->execution->menu->kanban = array('link' => "{$this->lang->kanban->common}|execution|kanban|executionID=%s", 'subModule' => 'task');
$this->lang->execution->menu->CFD = array('link' => "{$this->lang->execution->CFD}|execution|cfd|executionID=%s");
- $this->lang->execution->menu->build = array('link' => "{$this->lang->build->common}|execution|build|executionID=%s");
+ $this->lang->execution->menu->build = array('link' => "{$this->lang->build->common}|execution|build|executionID=%s", 'alias' => 'bug,testcase,testtask', 'subModule' => 'projectbuild,build,testcase,testtask,bug');
$this->lang->execution->menu->settings = array('link' => "{$this->lang->settings}|execution|view|executionID=%s", 'subModule' => 'personnel', 'alias' => 'edit,manageproducts,team,whitelist,addwhitelist,managemembers', 'class' => 'dropdown dropdown-hover');
$this->lang->execution->dividerMenu = '';
diff --git a/module/execution/ui/build.html.php b/module/execution/ui/build.html.php
index 1de6fa2943..daa3d34f87 100644
--- a/module/execution/ui/build.html.php
+++ b/module/execution/ui/build.html.php
@@ -44,7 +44,11 @@ jsVar('filePathTip', $lang->build->filePath);
jsVar('confirmDelete', $lang->build->confirmDelete);
$fieldList = $config->build->dtable->fieldList;
-if($execution->type == 'kanban') unset($fieldList['actions']['actionsMap']['createTest']['data-app']);
+if($execution->type == 'kanban')
+{
+ unset($fieldList['actions']['list']['createTest']['data-app']);
+ $fieldList['actions']['list']['viewBug']['url'] = $config->build->actionList['bugList']['url'];
+}
$builds = initTableData($builds, $fieldList, $this->build);
dtable
diff --git a/module/execution/ui/story.html.php b/module/execution/ui/story.html.php
index c16113de86..a250065da1 100644
--- a/module/execution/ui/story.html.php
+++ b/module/execution/ui/story.html.php
@@ -103,13 +103,15 @@ $product ? toolbar
setClass('text-primary font-bold shadow-inner bg-canvas'),
set::icon('format-list-bulleted'),
set::hint($lang->execution->list),
- set::url(inlink('story', "executionID={$execution->id}&storyType={$storyType}&orderBy={$orderBy}&type=all"))
+ set::url(inlink('story', "executionID={$execution->id}&storyType={$storyType}&orderBy={$orderBy}&type=all")),
+ setData('app', $app->tab)
),
btn
(
set::icon('kanban'),
set::hint($lang->execution->kanban),
- set::url($this->createLink('execution', 'storykanban', "executionID={$execution->id}"))
+ set::url($this->createLink('execution', 'storykanban', "executionID={$execution->id}")),
+ setData('app', $app->tab)
),
) : null,
hasPriv('story', 'report') ? item(set(array
diff --git a/module/execution/ui/storykanban.html.php b/module/execution/ui/storykanban.html.php
index e95a3244b2..e3aac8bbba 100644
--- a/module/execution/ui/storykanban.html.php
+++ b/module/execution/ui/storykanban.html.php
@@ -55,14 +55,16 @@ $product ? toolbar
(
set::icon('format-list-bulleted'),
set::hint($lang->execution->list),
- set::url(inlink('story', "executionID={$execution->id}"))
+ set::url(inlink('story', "executionID={$execution->id}")),
+ setData('app', $app->tab)
),
btn
(
setClass('text-primary font-bold shadow-inner bg-canvas'),
set::icon('kanban'),
set::hint($lang->execution->kanban),
- set::url($this->createLink('execution', 'storykanban', "executionID={$execution->id}"))
+ set::url($this->createLink('execution', 'storykanban', "executionID={$execution->id}")),
+ setData('app', $app->tab)
),
) : null,
hasPriv('story', 'export') ? item(set(array
diff --git a/module/file/control.php b/module/file/control.php
index 99b65eb97b..d831c82ec9 100755
--- a/module/file/control.php
+++ b/module/file/control.php
@@ -184,7 +184,7 @@ class file extends control
$output .= '"';
foreach($fields as $fieldName => $fieldLabel)
{
- $output .= isset($row->$fieldName) ? str_replace(array('"', ' '), array('“', ' '), htmlspecialchars_decode(strip_tags((string)$row->$fieldName, '
'))) : '';
+ $output .= isset($row->$fieldName) ? str_replace(array('"', ' '), array('“', ' '), htmlSpecialString(strip_tags((string)$row->$fieldName, '
'))) : '';
$output .= '","';
}
$output .= '"' . "\n";
@@ -218,7 +218,7 @@ class file extends control
$output .= " \n";
foreach($fields as $fieldName => $fieldLabel)
{
- $fieldValue = isset($row->$fieldName) ? htmlSpecialString($row->$fieldName) : '';
+ $fieldValue = isset($row->$fieldName) ? htmlSpecialString(strip_tags((string)$row->$fieldName, '
')) : '';
$output .= " <$fieldName>$fieldValue$fieldName>\n";
}
$output .= "
\n";
diff --git a/module/git/model.php b/module/git/model.php
index 7b508a81d1..4a3d393347 100644
--- a/module/git/model.php
+++ b/module/git/model.php
@@ -199,9 +199,9 @@ class gitModel extends model
{
$scm = strtolower($repo->SCM);
$userList = $this->loadModel($scm)->apiGetUsers((int)$repo->serviceHost);
- $acountIDPairs = $this->loadModel('pipeline')->getUserBindedPairs((int)$repo->serviceHost, $scm, 'openID,account');
+ $accountIDPairs = $this->loadModel('pipeline')->getUserBindedPairs((int)$repo->serviceHost, $scm, 'openID,account');
- foreach($userList as $user) $accountPairs[$user->realname] = zget($acountIDPairs, $user->id, '');
+ foreach($userList as $user) $accountPairs[$user->realname] = zget($accountIDPairs, $user->id, '');
}
/* Update code commit history. */
diff --git a/module/gitea/config/form.php b/module/gitea/config/form.php
index a483bae20a..b393ba0682 100644
--- a/module/gitea/config/form.php
+++ b/module/gitea/config/form.php
@@ -1,5 +1,4 @@
gitea->form = new stdclass();
$config->gitea->form->create = array();
$config->gitea->form->create['appType'] = array('type' => 'string', 'required' => true, 'default' => 'gitea');
@@ -7,7 +6,6 @@ $config->gitea->form->create['type'] = array('type' => 'string', 'require
$config->gitea->form->create['name'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
$config->gitea->form->create['url'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
$config->gitea->form->create['token'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
-$config->gitea->form->create['createdBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
$config->gitea->form->create['createdDate'] = array('type' => 'string', 'required' => false, 'default' => helper::now());
$config->gitea->form->create['private'] = array('type' => 'string', 'required' => false, 'default' => uniqid());
@@ -15,5 +13,4 @@ $config->gitea->form->edit = array();
$config->gitea->form->edit['name'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
$config->gitea->form->edit['url'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
$config->gitea->form->edit['token'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
-$config->gitea->form->edit['editedBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
$config->gitea->form->edit['editedDate'] = array('type' => 'string', 'required' => false, 'default' => helper::now());
diff --git a/module/gitea/control.php b/module/gitea/control.php
index 3f776c306a..db855f70a3 100644
--- a/module/gitea/control.php
+++ b/module/gitea/control.php
@@ -71,7 +71,9 @@ class gitea extends control
{
if($_POST)
{
- $gitea = form::data($this->config->gitea->form->create)->get();
+ $gitea = form::data($this->config->gitea->form->create)
+ ->add('createdBy', $this->app->user->account)
+ ->get();
$result = $this->checkToken($gitea);
if(is_array($result)) return $this->send($result);
@@ -118,7 +120,9 @@ class gitea extends control
if($_POST)
{
- $gitea = form::data($this->config->gitea->form->edit)->get();
+ $gitea = form::data($this->config->gitea->form->edit)
+ ->add('editedBy', $this->app->user->account)
+ ->get();
$result = $this->checkToken($gitea);
if(is_array($result)) return $this->send($result);
diff --git a/module/gitfox/config/form.php b/module/gitfox/config/form.php
index 111cbd4f88..3509d2d3ba 100644
--- a/module/gitfox/config/form.php
+++ b/module/gitfox/config/form.php
@@ -1,5 +1,4 @@
gitfox->form = new stdclass();
$config->gitfox->form->create = array();
$config->gitfox->form->create['appType'] = array('type' => 'string', 'required' => true, 'default' => 'gitfox');
@@ -7,7 +6,6 @@ $config->gitfox->form->create['type'] = array('type' => 'string', 'requ
$config->gitfox->form->create['name'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
$config->gitfox->form->create['url'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
$config->gitfox->form->create['token'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
-$config->gitfox->form->create['createdBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
$config->gitfox->form->create['createdDate'] = array('type' => 'string', 'required' => false, 'default' => helper::now());
$config->gitfox->form->create['private'] = array('type' => 'string', 'required' => false, 'default' => uniqid());
@@ -15,5 +13,4 @@ $config->gitfox->form->edit = array();
$config->gitfox->form->edit['name'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
$config->gitfox->form->edit['url'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
$config->gitfox->form->edit['token'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
-$config->gitfox->form->edit['editedBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
$config->gitfox->form->edit['editedDate'] = array('type' => 'string', 'required' => false, 'default' => helper::now());
diff --git a/module/gitfox/control.php b/module/gitfox/control.php
index f0e4efc6da..c1c17bd39c 100644
--- a/module/gitfox/control.php
+++ b/module/gitfox/control.php
@@ -22,7 +22,9 @@ class gitfox extends control
{
if($_POST)
{
- $gitfox = form::data($this->config->gitfox->form->create)->get();
+ $gitfox = form::data($this->config->gitfox->form->create)
+ ->add('createdBy', $this->app->user->account)
+ ->get();
$this->checkToken($gitfox);
$gitfoxID = $this->loadModel('pipeline')->create($gitfox);
@@ -51,7 +53,9 @@ class gitfox extends control
if($_POST)
{
- $gitfox = form::data($this->config->gitfox->form->edit)->get();
+ $gitfox = form::data($this->config->gitfox->form->edit)
+ ->add('editedBy', $this->app->user->account)
+ ->get();
$this->checkToken($gitfox, $gitfoxID);
$this->loadModel('pipeline')->update($gitfoxID, $gitfox);
$gitFox = $this->gitfox->fetchByID($gitfoxID);
diff --git a/module/gitlab/config/form.php b/module/gitlab/config/form.php
index 5a1069e123..7066b3415c 100644
--- a/module/gitlab/config/form.php
+++ b/module/gitlab/config/form.php
@@ -1,5 +1,4 @@
gitlab->form = new stdclass();
$config->gitlab->form->create = array();
$config->gitlab->form->create['appType'] = array('type' => 'string', 'required' => true, 'default' => 'gitlab');
@@ -7,7 +6,6 @@ $config->gitlab->form->create['type'] = array('type' => 'string', 'requ
$config->gitlab->form->create['name'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
$config->gitlab->form->create['url'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
$config->gitlab->form->create['token'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
-$config->gitlab->form->create['createdBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
$config->gitlab->form->create['createdDate'] = array('type' => 'string', 'required' => false, 'default' => helper::now());
$config->gitlab->form->create['private'] = array('type' => 'string', 'required' => false, 'default' => uniqid());
@@ -15,7 +13,6 @@ $config->gitlab->form->edit = array();
$config->gitlab->form->edit['name'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
$config->gitlab->form->edit['url'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
$config->gitlab->form->edit['token'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
-$config->gitlab->form->edit['editedBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
$config->gitlab->form->edit['editedDate'] = array('type' => 'string', 'required' => false, 'default' => helper::now());
$config->gitlab->form->user = new stdclass();
diff --git a/module/gitlab/control.php b/module/gitlab/control.php
index c8fd774cfb..38c7470b6b 100644
--- a/module/gitlab/control.php
+++ b/module/gitlab/control.php
@@ -75,7 +75,9 @@ class gitlab extends control
{
if($_POST)
{
- $gitlab = form::data($this->config->gitlab->form->create)->get();
+ $gitlab = form::data($this->config->gitlab->form->create)
+ ->add('createdBy', $this->app->user->account)
+ ->get();
$this->checkToken($gitlab);
$gitlabID = $this->loadModel('pipeline')->create($gitlab);
@@ -123,7 +125,9 @@ class gitlab extends control
if($_POST)
{
- $gitlab = form::data($this->config->gitlab->form->edit)->get();
+ $gitlab = form::data($this->config->gitlab->form->edit)
+ ->add('editedBy', $this->app->user->account)
+ ->get();
$this->checkToken($gitlab, $gitlabID);
$this->loadModel('pipeline')->update($gitlabID, $gitlab);
$gitLab = $this->gitlab->getByID($gitlabID);
diff --git a/module/gitlab/model.php b/module/gitlab/model.php
index 9ce1d89118..9f3abe8f17 100644
--- a/module/gitlab/model.php
+++ b/module/gitlab/model.php
@@ -2332,18 +2332,18 @@ class gitlabModel extends model
* @param int $projectID
* @param int $repoID
* @access public
- * @return bool
+ * @return string
*/
- public function updateCodePath(int $gitlabID, int $projectID, int $repoID): bool
+ public function updateCodePath(int $gitlabID, int $projectID, int $repoID): string
{
$project = $this->apiGetSingleProject($gitlabID, $projectID);
if(is_object($project) and !empty($project->web_url))
{
$this->dao->update(TABLE_REPO)->set('path')->eq($project->web_url)->where('id')->eq($repoID)->exec();
- return true;
+ return $project->web_url;
}
- return false;
+ return '';
}
/**
@@ -2417,6 +2417,7 @@ class gitlabModel extends model
if(!$gitlab) return array();
/* Compatible with HTTP and HTTPS domain. */
+ if(strpos($repo->codePath, '/api/v4/projects')) $repo->codePath = $this->updateCodePath((int)$repo->serviceHost, (int)$repo->serviceProject, $repo->id);
$repo->client = str_replace('https://', 'http://', $repo->client);
$repo->codePath = str_replace('https://', 'http://', $repo->codePath);
diff --git a/module/gogs/config/form.php b/module/gogs/config/form.php
index 25e8916ee0..d5fad89867 100644
--- a/module/gogs/config/form.php
+++ b/module/gogs/config/form.php
@@ -1,5 +1,4 @@
gogs->form = new stdclass();
$config->gogs->form->create = array();
$config->gogs->form->create['appType'] = array('type' => 'string', 'required' => true, 'default' => 'gogs');
@@ -7,7 +6,6 @@ $config->gogs->form->create['type'] = array('type' => 'string', 'requir
$config->gogs->form->create['name'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
$config->gogs->form->create['url'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
$config->gogs->form->create['token'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
-$config->gogs->form->create['createdBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
$config->gogs->form->create['createdDate'] = array('type' => 'string', 'required' => false, 'default' => helper::now());
$config->gogs->form->create['private'] = array('type' => 'string', 'required' => false, 'default' => uniqid());
@@ -15,5 +13,4 @@ $config->gogs->form->edit = array();
$config->gogs->form->edit['name'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
$config->gogs->form->edit['url'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
$config->gogs->form->edit['token'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
-$config->gogs->form->edit['editedBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
$config->gogs->form->edit['editedDate'] = array('type' => 'string', 'required' => false, 'default' => helper::now());
diff --git a/module/gogs/control.php b/module/gogs/control.php
index e06622011b..6c5e95c437 100644
--- a/module/gogs/control.php
+++ b/module/gogs/control.php
@@ -70,7 +70,9 @@ class gogs extends control
{
if($_POST)
{
- $gogs = form::data($this->config->gogs->form->create)->get();
+ $gogs = form::data($this->config->gogs->form->create)
+ ->add('createdBy', $this->app->user->account)
+ ->get();
$priv = $this->checkToken($gogs);
if(is_array($priv)) return $this->send($priv);
@@ -118,7 +120,9 @@ class gogs extends control
if($_POST)
{
- $gogs = form::data($this->config->gogs->form->edit)->get();
+ $gogs = form::data($this->config->gogs->form->edit)
+ ->add('editedBy', $this->app->user->account)
+ ->get();
$this->checkToken($gogs);
$this->loadModel('pipeline')->update($gogsID, $gogs);
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
diff --git a/module/group/lang/de.php b/module/group/lang/de.php
index f32d2683ad..491c62d393 100644
--- a/module/group/lang/de.php
+++ b/module/group/lang/de.php
@@ -315,6 +315,7 @@ $lang->group->package->lieu = 'Lieu';
$lang->group->package->holiday = 'Holiday';
$lang->group->package->exportOffice = 'Export Office';
$lang->group->package->browseFeedback = 'Browse Feedback';
+$lang->group->package->browseLiteFeedback = $lang->group->package->browseFeedback;
$lang->group->package->manageFeedback = 'Manage Feedback';
$lang->group->package->importFeedback = 'Import Feedback';
$lang->group->package->handleFeedback = 'Handle Feedback';
diff --git a/module/group/lang/en.php b/module/group/lang/en.php
index ea357ed1a1..7878db6f51 100644
--- a/module/group/lang/en.php
+++ b/module/group/lang/en.php
@@ -315,6 +315,7 @@ $lang->group->package->lieu = 'Lieu';
$lang->group->package->holiday = 'Holiday';
$lang->group->package->exportOffice = 'Export Office';
$lang->group->package->browseFeedback = 'Browse Feedback';
+$lang->group->package->browseLiteFeedback = $lang->group->package->browseFeedback;
$lang->group->package->manageFeedback = 'Manage Feedback';
$lang->group->package->importFeedback = 'Import Feedback';
$lang->group->package->handleFeedback = 'Handle Feedback';
diff --git a/module/group/lang/fr.php b/module/group/lang/fr.php
index 6678bd154e..70fcd36088 100644
--- a/module/group/lang/fr.php
+++ b/module/group/lang/fr.php
@@ -315,6 +315,7 @@ $lang->group->package->lieu = 'Lieu';
$lang->group->package->holiday = 'Holiday';
$lang->group->package->exportOffice = 'Export Office';
$lang->group->package->browseFeedback = 'Browse Feedback';
+$lang->group->package->browseLiteFeedback = $lang->group->package->browseFeedback;
$lang->group->package->manageFeedback = 'Manage Feedback';
$lang->group->package->importFeedback = 'Import Feedback';
$lang->group->package->handleFeedback = 'Handle Feedback';
diff --git a/module/group/lang/zh-cn.php b/module/group/lang/zh-cn.php
index 0532aea15e..b3a37b3f3e 100644
--- a/module/group/lang/zh-cn.php
+++ b/module/group/lang/zh-cn.php
@@ -315,6 +315,7 @@ $lang->group->package->lieu = '个人调休';
$lang->group->package->holiday = '节假日';
$lang->group->package->exportOffice = '办公导出';
$lang->group->package->browseFeedback = '浏览反馈';
+$lang->group->package->browseLiteFeedback = $lang->group->package->browseFeedback;
$lang->group->package->manageFeedback = '创建维护反馈';
$lang->group->package->importFeedback = '导入导出反馈';
$lang->group->package->handleFeedback = '处理反馈';
diff --git a/module/group/model.php b/module/group/model.php
index e1ea4f5a4d..0678ecdd45 100644
--- a/module/group/model.php
+++ b/module/group/model.php
@@ -867,7 +867,7 @@ class groupModel extends model
if(isset($privs[$dependPriv]) || in_array($dependPriv, $excludes)) continue;
$privs[$dependPriv] = $dependPriv;
- $dependPrivs = $this->processDepends($depends, $depends[$dependPriv], $excludes, $processedPrivs);
+ $dependPrivs = $this->processDepends($depends, zget($depends, $dependPriv, array()), $excludes, $processedPrivs);
foreach($dependPrivs as $depend)
{
diff --git a/module/group/packagemanager.php b/module/group/packagemanager.php
index fe4929082c..4c090e8c80 100644
--- a/module/group/packagemanager.php
+++ b/module/group/packagemanager.php
@@ -493,6 +493,20 @@ $config->group->subset->artifactrepo = new stdclass();
$config->group->subset->artifactrepo->order = 2760;
$config->group->subset->artifactrepo->nav = 'devops';
+$config->group->subset->market = new stdclass();
+$config->group->subset->market->nav = 'market';
+
+$config->group->subset->marketreport = new stdclass();
+$config->group->subset->marketreport->nav = 'market';
+
+$config->group->subset->marketresearch = new stdclass();
+$config->group->subset->marketresearch->nav = 'market';
+
+$config->group->subset->researchstage = new stdclass();
+$config->group->subset->researchstage->nav = 'market';
+
+$config->group->subset->researchtask = new stdclass();
+$config->group->subset->researchtask->nav = 'market';
$config->group->subset->other = new stdclass();
$config->group->subset->other->order = 100000;
@@ -1499,6 +1513,13 @@ $config->group->package->browseFeedback->privs = array();
$config->group->package->browseFeedback->privs['feedback-adminView'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd,or', 'order' => 25, 'depend' => array('feedback-admin'), 'recommend' => array('feedback-create', 'feedback-edit'));
$config->group->package->browseFeedback->privs['feedback-admin'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd,or', 'order' => 30, 'depend' => array(), 'recommend' => array('feedback-adminView'));
+$config->group->package->browseLiteFeedback = new stdclass();
+$config->group->package->browseLiteFeedback->order = 5;
+$config->group->package->browseLiteFeedback->subset = 'feedback';
+$config->group->package->browseLiteFeedback->privs = array();
+$config->group->package->browseLiteFeedback->privs['feedback-view'] = array('edition' => 'biz,max,ipd', 'vision' => 'lite', 'order' => 25, 'depend' => array('feedback-browse'), 'recommend' => array('feedback-create', 'feedback-edit'));
+$config->group->package->browseLiteFeedback->privs['feedback-browse'] = array('edition' => 'biz,max,ipd', 'vision' => 'lite', 'order' => 30, 'depend' => array(), 'recommend' => array('feedback-view'));
+
$config->group->package->manageFeedback = new stdclass();
$config->group->package->manageFeedback->order = 10;
$config->group->package->manageFeedback->subset = 'feedback';
@@ -1526,18 +1547,18 @@ $config->group->package->handleFeedback = new stdclass();
$config->group->package->handleFeedback->order = 20;
$config->group->package->handleFeedback->subset = 'feedback';
$config->group->package->handleFeedback->privs = array();
-$config->group->package->handleFeedback->privs['feedback-editOthers'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd', 'order' => 10, 'depend' => array('feedback-admin'), 'recommend' => array('feedback-edit'));
+$config->group->package->handleFeedback->privs['feedback-editOthers'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd,or', 'order' => 10, 'depend' => array('feedback-admin'), 'recommend' => array('feedback-edit'));
$config->group->package->handleFeedback->privs['feedback-toTask'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd', 'order' => 5, 'depend' => array('feedback-admin', 'task-create'), 'recommend' => array('feedback-reply', 'feedback-review', 'feedback-toBug', 'feedback-toStory', 'feedback-toTicket', 'feedback-toTodo', 'feedback-toUserStory'));
$config->group->package->handleFeedback->privs['feedback-toTodo'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd,or', 'order' => 7, 'depend' => array('feedback-admin', 'todo-create'), 'recommend' => array('feedback-reply', 'feedback-review', 'feedback-toBug', 'feedback-toStory', 'feedback-toTask', 'feedback-toTicket', 'feedback-toUserStory'));
$config->group->package->handleFeedback->privs['feedback-toBug'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd', 'order' => 6, 'depend' => array('feedback-admin', 'bug-create'), 'recommend' => array('feedback-reply', 'feedback-review', 'feedback-toStory', 'feedback-toTask', 'feedback-toTicket', 'feedback-toTodo', 'feedback-toUserStory'));
$config->group->package->handleFeedback->privs['feedback-toStory'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd', 'order' => 3, 'depend' => array('feedback-admin', 'story-create'), 'recommend' => array('feedback-reply', 'feedback-review', 'feedback-toBug', 'feedback-toTask', 'feedback-toTicket', 'feedback-toTodo', 'feedback-toUserStory'));
$config->group->package->handleFeedback->privs['feedback-toTicket'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd', 'order' => 8, 'depend' => array('feedback-admin', 'ticket-create'), 'recommend' => array('feedback-reply', 'feedback-review', 'feedback-toBug', 'feedback-toStory', 'feedback-toTask', 'feedback-toTodo', 'feedback-toUserStory'));
$config->group->package->handleFeedback->privs['feedback-toUserStory'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd,or', 'order' => 4, 'depend' => array('feedback-admin', 'requirement-create'), 'recommend' => array('feedback-reply', 'feedback-review', 'feedback-toBug', 'feedback-toStory', 'feedback-toTask', 'feedback-toTicket', 'feedback-toTodo'));
-$config->group->package->handleFeedback->privs['feedback-toDemand'] = array('edition' => 'biz,max,ipd', 'vision' => 'or', 'order' => 4, 'depend' => array('feedback-admin', 'demand-create'), 'recommend' => array('feedback-reply', 'feedback-review', 'feedback-toBug', 'feedback-toStory', 'feedback-toTask', 'feedback-toTicket', 'feedback-toTodo'));
+$config->group->package->handleFeedback->privs['feedback-toDemand'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd,or', 'order' => 4, 'depend' => array('feedback-admin', 'demand-create'), 'recommend' => array('feedback-reply', 'feedback-review', 'feedback-toBug', 'feedback-toStory', 'feedback-toTask', 'feedback-toTicket', 'feedback-toTodo'));
$config->group->package->handleFeedback->privs['feedback-review'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd,or', 'order' => 0, 'depend' => array('feedback-admin'), 'recommend' => array('feedback-batchReview', 'feedback-reply', 'feedback-toBug', 'feedback-toStory', 'feedback-toTask', 'feedback-toTicket', 'feedback-toTodo', 'feedback-toUserStory'));
$config->group->package->handleFeedback->privs['feedback-reply'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd,or', 'order' => 2, 'depend' => array('feedback-admin'), 'recommend' => array('feedback-review', 'feedback-toBug', 'feedback-toStory', 'feedback-toTask', 'feedback-toTicket', 'feedback-toTodo', 'feedback-toUserStory'));
$config->group->package->handleFeedback->privs['feedback-batchReview'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd,or', 'order' => 1, 'depend' => array('feedback-admin'), 'recommend' => array('feedback-review'));
-$config->group->package->handleFeedback->privs['feedback-syncProduct'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd', 'order' => 9, 'depend' => array('feedback-admin'), 'recommend' => array());
+$config->group->package->handleFeedback->privs['feedback-syncProduct'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd,or', 'order' => 9, 'depend' => array('feedback-admin'), 'recommend' => array());
$config->group->package->faq = new stdclass();
$config->group->package->faq->order = 5;
@@ -1587,7 +1608,7 @@ $config->group->package->deleteFeedback = new stdclass();
$config->group->package->deleteFeedback->order = 25;
$config->group->package->deleteFeedback->subset = 'feedback';
$config->group->package->deleteFeedback->privs = array();
-$config->group->package->deleteFeedback->privs['feedback-delete'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 95, 'depend' => array('feedback-admin'), 'recommend' => array('feedback-create', 'feedback-edit'));
+$config->group->package->deleteFeedback->privs['feedback-delete'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd,or,lite', 'order' => 95, 'depend' => array('feedback-admin'), 'recommend' => array('feedback-create', 'feedback-edit'));
$config->group->package->deleteTIcket = new stdclass();
$config->group->package->deleteTIcket->order = 25;
@@ -1817,6 +1838,8 @@ $config->group->package->manageCase->privs['testcase-confirmLibcaseChange'] =
$config->group->package->manageCase->privs['testcase-ignoreLibcaseChange'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 15, 'depend' => array('testcase-view'), 'recommend' => array('testcase-confirmChange', 'testcase-confirmLibcaseChange', 'testcase-confirmStoryChange', 'testcase-create', 'testcase-edit'));
$config->group->package->manageCase->privs['testcase-submit'] = array('edition' => 'max,ipd', 'vision' => 'rnd', 'order' => 4, 'depend' => array('testcase-view'), 'recommend' => array('testcase-confirmChange', 'testcase-confirmLibcaseChange', 'testcase-confirmStoryChange', 'testcase-create', 'testcase-edit', 'testcase-ignoreLibcaseChange', 'testcase-linkBugs', 'testcase-linkCases'));
$config->group->package->manageCase->privs['testcase-updateOrder'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 30, 'depend' => array(), 'recommend' => array());
+$config->group->package->manageCase->privs['testcase-confirmdemandretract'] = array('edition' => 'ipd', 'vision' => 'rnd,or', 'order' => 30, 'depend' => array(), 'recommend' => array());
+$config->group->package->manageCase->privs['testcase-confirmdemandunlink'] = array('edition' => 'ipd', 'vision' => 'rnd,or', 'order' => 30, 'depend' => array(), 'recommend' => array());
$config->group->package->importCase = new stdclass();
$config->group->package->importCase->order = 25;
@@ -2007,7 +2030,7 @@ $config->group->package->companyTeam->privs['user-todo'] = array('edit
$config->group->package->companyTeam->privs['user-task'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 5, 'depend' => array('my-team', 'user-todo'), 'recommend' => array('user-bug', 'user-dynamic', 'user-effort', 'user-execution', 'user-issue', 'user-profile', 'user-risk', 'user-story', 'user-testCase', 'user-testTask'));
$config->group->package->companyTeam->privs['user-bug'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 7, 'depend' => array('my-team', 'user-todo'), 'recommend' => array('user-dynamic', 'user-effort', 'user-execution', 'user-issue', 'user-profile', 'user-risk', 'user-story', 'user-task', 'user-testCase', 'user-testTask'));
$config->group->package->companyTeam->privs['user-dynamic'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 13, 'depend' => array('my-team', 'user-todo'), 'recommend' => array('user-bug', 'user-effort', 'user-execution', 'user-issue', 'user-profile', 'user-risk', 'user-story', 'user-task', 'user-testCase', 'user-testTask'));
-$config->group->package->companyTeam->privs['user-profile'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 14, 'depend' => array('my-team', 'user-todo'), 'recommend' => array('user-bug', 'user-dynamic', 'user-effort', 'user-execution', 'user-issue', 'user-risk', 'user-story', 'user-task', 'user-testCase', 'user-testTask'));
+$config->group->package->companyTeam->privs['user-profile'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite,or', 'order' => 14, 'depend' => array('my-team', 'user-todo'), 'recommend' => array('user-bug', 'user-dynamic', 'user-effort', 'user-execution', 'user-issue', 'user-risk', 'user-story', 'user-task', 'user-testCase', 'user-testTask'));
$config->group->package->companyTeam->privs['user-story'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 6, 'depend' => array('my-team', 'user-todo'), 'recommend' => array('user-bug', 'user-dynamic', 'user-effort', 'user-execution', 'user-issue', 'user-profile', 'user-risk', 'user-task', 'user-testCase', 'user-testTask'));
$config->group->package->companyTeam->privs['user-testTask'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 8, 'depend' => array('my-team', 'user-todo'), 'recommend' => array('user-bug', 'user-dynamic', 'user-effort', 'user-execution', 'user-issue', 'user-profile', 'user-risk', 'user-story', 'user-task', 'user-testCase'));
$config->group->package->companyTeam->privs['user-testCase'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 9, 'depend' => array('my-team', 'user-todo'), 'recommend' => array('user-bug', 'user-dynamic', 'user-effort', 'user-execution', 'user-issue', 'user-profile', 'user-risk', 'user-story', 'user-task', 'user-testTask'));
@@ -3597,6 +3620,7 @@ $config->group->package->browseDemandPool->order = 5;
$config->group->package->browseDemandPool->subset = 'demandpool';
$config->group->package->browseDemandPool->privs = array();
$config->group->package->browseDemandPool->privs['demandpool-browse'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 10, 'depend' => array(), 'recommend' => array('demandpool-edit', 'demandpool-view'));
+$config->group->package->browseDemandPool->privs['demandpool-track'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 20, 'depend' => array(), 'recommend' => array());
$config->group->package->browseDemandPool->privs['demandpool-view'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 40, 'depend' => array('demandpool-browse'), 'recommend' => array('demandpool-activate', 'demandpool-close', 'demandpool-delete', 'demandpool-edit'));
$config->group->package->browseCharter = new stdclass();
@@ -3653,6 +3677,7 @@ $config->group->package->manageDemand->privs['demand-manageTree'] = array('edit
$config->group->package->manageDemand->privs['demand-close'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 180, 'depend' => array('demand-browse', 'demand-view'), 'recommend' => array('demand-activate', 'demand-assignTo', 'demand-batchCreate', 'demand-create', 'demand-edit'));
$config->group->package->manageDemand->privs['demand-activate'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 190, 'depend' => array('demand-browse', 'demand-view'), 'recommend' => array('demand-assignTo', 'demand-batchCreate', 'demand-close', 'demand-create', 'demand-edit'));
$config->group->package->manageDemand->privs['demand-distribute'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 200, 'depend' => array('demand-browse', 'demand-view'), 'recommend' => array('demand-assignTo', 'demand-batchCreate', 'demand-create', 'demand-edit'));
+$config->group->package->manageDemand->privs['demand-retract'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 210, 'depend' => array('demandpool-browse', 'demand-browse', 'demand-view'), 'recommend' => array('demand-distribute'));
$config->group->package->reviewDemand = new stdclass();
$config->group->package->reviewDemand->order = 5;
@@ -3968,3 +3993,122 @@ $config->group->package->trainPracticeLib->privs['traincourse-practice'] =
$config->group->package->trainPracticeLib->privs['traincourse-practiceBrowse'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd', 'order' => 10, 'depend' => array('traincourse-practice'), 'recommend' => array('traincourse-practiceView'));
$config->group->package->trainPracticeLib->privs['traincourse-practiceView'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd', 'order' => 15, 'depend' => array('traincourse-practice', 'traincourse-practiceBrowse'), 'recommend' => array());
$config->group->package->trainPracticeLib->privs['traincourse-updatePractice'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd', 'order' => 20, 'depend' => array('traincourse-practice', 'traincourse-practiceBrowse'), 'recommend' => array('traincourse-practiceView'));
+
+$config->group->package->browseMarket = new stdclass();
+$config->group->package->browseMarket->subset = 'market';
+$config->group->package->browseMarket->privs = array();
+$config->group->package->browseMarket->privs['market-browse'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 5, 'depend' => array(), 'recommend' => array('market-view'));
+$config->group->package->browseMarket->privs['market-view'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 10, 'depend' => array('market-browse'), 'recommend' => array());
+
+$config->group->package->manageMarket = new stdclass();
+$config->group->package->manageMarket->subset = 'market';
+$config->group->package->manageMarket->privs = array();
+$config->group->package->manageMarket->privs['market-create'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 5, 'depend' => array('market-browse'), 'recommend' => array('market-view'));
+$config->group->package->manageMarket->privs['market-edit'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 10, 'depend' => array('market-browse', 'market-view'), 'recommend' => array());
+
+$config->group->package->deleteMarket = new stdclass();
+$config->group->package->deleteMarket->subset = 'market';
+$config->group->package->deleteMarket->privs = array();
+$config->group->package->deleteMarket->privs['market-delete'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 5, 'depend' => array('market-browse', 'market-view'), 'recommend' => array('market-create', 'market-edit'));
+
+$config->group->package->deleteMarket = new stdclass();
+$config->group->package->deleteMarket->subset = 'market';
+$config->group->package->deleteMarket->privs = array();
+$config->group->package->deleteMarket->privs['market-delete'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 5, 'depend' => array('market-browse', 'market-view'), 'recommend' => array('market-create', 'market-edit'));
+
+$config->group->package->browseReport = new stdclass();
+$config->group->package->browseReport->subset = 'marketreport';
+$config->group->package->browseReport->privs = array();
+$config->group->package->browseReport->privs['marketreport-all'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 5, 'depend' => array(), 'recommend' => array('market-view'));
+$config->group->package->browseReport->privs['marketreport-browse'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 10, 'depend' => array(), 'recommend' => array('market-view'));
+$config->group->package->browseReport->privs['marketreport-view'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 15, 'depend' => array('marketreport-browse'), 'recommend' => array());
+
+$config->group->package->manageReport = new stdclass();
+$config->group->package->manageReport->subset = 'marketreport';
+$config->group->package->manageReport->privs = array();
+$config->group->package->manageReport->privs['marketreport-create'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 5, 'depend' => array('marketreport-all', 'marketreport-browse', 'marketreport-publish'), 'recommend' => array('marketreport-view'));
+$config->group->package->manageReport->privs['marketreport-edit'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 10, 'depend' => array('marketreport-all', 'marketreport-browse', 'marketreport-publish'), 'recommend' => array('marketreport-view'));
+$config->group->package->manageReport->privs['marketreport-publish'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 15, 'depend' => array('marketreport-all', 'marketreport-browse'), 'recommend' => array('marketreport-view'));
+
+$config->group->package->deleteReport = new stdclass();
+$config->group->package->deleteReport->subset = 'marketreport';
+$config->group->package->deleteReport->privs = array();
+$config->group->package->deleteReport->privs['marketreport-delete'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 5, 'depend' => array('marketreport-all', 'marketreport-browse', 'marketreport-publish'), 'recommend' => array('marketreport-create', 'marketreport-edit'));
+
+$config->group->package->browseResearch = new stdclass();
+$config->group->package->browseResearch->subset = 'marketresearch';
+$config->group->package->browseResearch->privs = array();
+$config->group->package->browseResearch->privs['marketresearch-all'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 5, 'depend' => array(), 'recommend' => array('marketresearch-view'));
+$config->group->package->browseResearch->privs['marketresearch-browse'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 10, 'depend' => array(), 'recommend' => array('marketresearch-view'));
+$config->group->package->browseResearch->privs['marketresearch-view'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 15, 'depend' => array(), 'recommend' => array('marketresearch-all', 'marketresearch-browse'));
+
+$config->group->package->manageResearch = new stdclass();
+$config->group->package->manageResearch->subset = 'marketresearch';
+$config->group->package->manageResearch->privs = array();
+$config->group->package->manageResearch->privs['marketresearch-create'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 5, 'depend' => array('marketresearch-all', 'marketresearch-browse'), 'recommend' => array());
+$config->group->package->manageResearch->privs['marketresearch-edit'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 10, 'depend' => array('marketresearch-all', 'marketresearch-browse', 'marketresearch-view'), 'recommend' => array());
+$config->group->package->manageResearch->privs['marketresearch-activate'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 15, 'depend' => array('marketresearch-all', 'marketresearch-browse', 'marketresearch-view'), 'recommend' => array());
+$config->group->package->manageResearch->privs['marketresearch-start'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 20, 'depend' => array('marketresearch-all', 'marketresearch-browse', 'marketresearch-view'), 'recommend' => array());
+$config->group->package->manageResearch->privs['marketresearch-close'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 25, 'depend' => array('marketresearch-all', 'marketresearch-browse', 'marketresearch-view'), 'recommend' => array());
+
+$config->group->package->researchTeam = new stdclass();
+$config->group->package->researchTeam->subset = 'marketresearch';
+$config->group->package->researchTeam->privs = array();
+$config->group->package->researchTeam->privs['marketresearch-manageMembers'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 5, 'depend' => array('marketresearch-all', 'marketresearch-browse', 'marketresearch-view'), 'recommend' => array());
+$config->group->package->researchTeam->privs['marketresearch-unlinkMember'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 10, 'depend' => array('marketresearch-all', 'marketresearch-browse', 'marketresearch-view', 'marketresearch-manageMembers'), 'recommend' => array());
+$config->group->package->researchTeam->privs['marketresearch-team'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 15, 'depend' => array('marketresearch-all', 'marketresearch-browse'), 'recommend' => array('marketresearch-view'));
+
+$config->group->package->marketResearchReport = new stdclass();
+$config->group->package->marketResearchReport->subset = 'marketresearch';
+$config->group->package->marketResearchReport->privs = array();
+$config->group->package->marketResearchReport->privs['marketresearch-reports'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 5, 'depend' => array('marketreport-browse', 'marketreport-create', 'marketreport-all', 'marketresearch-browse', 'marketreport-view'), 'recommend' => array());
+
+$config->group->package->deleteResearch = new stdclass();
+$config->group->package->deleteResearch->subset = 'marketresearch';
+$config->group->package->deleteResearch->privs = array();
+$config->group->package->deleteResearch->privs['marketresearch-delete'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 5, 'depend' => array('marketresearch-all', 'marketresearch-browse', 'marketresearch-view'), 'recommend' => array('marketresearch-create', 'marketresearch-edit'));
+
+$config->group->package->browseResearchStage = new stdclass();
+$config->group->package->browseResearchStage->subset = 'researchstage';
+$config->group->package->browseResearchStage->privs = array();
+$config->group->package->browseResearchStage->privs['marketresearch-stage'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 5, 'depend' => array('marketresearch-all', 'marketresearch-browse'), 'recommend' => array('marketresearch-view'));
+
+$config->group->package->manageResearchStage = new stdclass();
+$config->group->package->manageResearchStage->subset = 'researchstage';
+$config->group->package->manageResearchStage->privs = array();
+$config->group->package->manageResearchStage->privs['marketresearch-createStage'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 5, 'depend' => array('marketresearch-stage', 'marketresearch-all', 'marketresearch-browse'), 'recommend' => array('marketresearch-view'));
+$config->group->package->manageResearchStage->privs['marketresearch-editStage'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 10, 'depend' => array('marketresearch-stage', 'marketresearch-all', 'marketresearch-browse'), 'recommend' => array());
+$config->group->package->manageResearchStage->privs['marketresearch-batchStage'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 15, 'depend' => array('marketresearch-stage', 'marketresearch-all', 'marketresearch-browse'), 'recommend' => array());
+$config->group->package->manageResearchStage->privs['marketresearch-startStage'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 20, 'depend' => array('marketresearch-stage', 'marketresearch-all', 'marketresearch-browse'), 'recommend' => array());
+$config->group->package->manageResearchStage->privs['marketresearch-closeStage'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 25, 'depend' => array('marketresearch-stage', 'marketresearch-all', 'marketresearch-browse'), 'recommend' => array());
+$config->group->package->manageResearchStage->privs['marketresearch-activateStage'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 30, 'depend' => array('marketresearch-stage', 'marketresearch-all', 'marketresearch-browse'), 'recommend' => array());
+
+$config->group->package->deleteResearchStage = new stdclass();
+$config->group->package->deleteResearchStage->subset = 'researchstage';
+$config->group->package->deleteResearchStage->privs = array();
+$config->group->package->deleteResearchStage->privs['marketresearch-deleteStage'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 5, 'depend' => array('marketresearch-stage', 'marketresearch-all', 'marketresearch-browse'), 'recommend' => array());
+
+$config->group->package->browseResearchTask = new stdclass();
+$config->group->package->browseResearchTask->subset = 'researchtask';
+$config->group->package->browseResearchTask->privs = array();
+$config->group->package->browseResearchTask->privs['marketresearch-stage'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 5, 'depend' => array('marketresearch-all', 'marketresearch-browse'), 'recommend' => array('marketresearch-viewTask'));
+$config->group->package->browseResearchTask->privs['marketresearch-viewTask'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 10, 'depend' => array('marketresearch-stage', 'marketresearch-all', 'marketresearch-browse'), 'recommend' => array());
+
+$config->group->package->manageResearchTask = new stdclass();
+$config->group->package->manageResearchTask->subset = 'researchtask';
+$config->group->package->manageResearchTask->privs = array();
+$config->group->package->manageResearchTask->privs['marketresearch-createTask'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 5, 'depend' => array('marketresearch-stage', 'marketresearch-all', 'marketresearch-browse', 'marketresearch-viewTask'), 'recommend' => array('marketresearch-batchCreateTask', 'marketresearch-taskAssignTo', 'marketresearch-editTask', 'marketresearch-startTask', 'marketresearch-finishTask', 'marketresearch-activateTask', 'marketresearch-closeTask', 'marketresearch-cancelTask', 'marketresearch-recordTaskEstimate'));
+$config->group->package->manageResearchTask->privs['marketresearch-batchCreateTask'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 10, 'depend' => array('marketresearch-stage', 'marketresearch-all', 'marketresearch-browse', 'marketresearch-viewTask'), 'recommend' => array('marketresearch-createTask', 'marketresearch-taskAssignTo', 'marketresearch-editTask', 'marketresearch-startTask', 'marketresearch-finishTask', 'marketresearch-activateTask', 'marketresearch-closeTask', 'marketresearch-cancelTask', 'marketresearch-recordTaskEstimate'));
+$config->group->package->manageResearchTask->privs['marketresearch-editTask'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 15, 'depend' => array('marketresearch-stage', 'marketresearch-all', 'marketresearch-browse', 'marketresearch-viewTask'), 'recommend' => array('marketresearch-createTask', 'marketresearch-batchCreateTask', 'marketresearch-taskAssignTo', 'marketresearch-startTask', 'marketresearch-finishTask', 'marketresearch-activateTask', 'marketresearch-closeTask', 'marketresearch-cancelTask', 'marketresearch-recordTaskEstimate'));
+$config->group->package->manageResearchTask->privs['marketresearch-taskAssignTo'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 20, 'depend' => array('marketresearch-stage', 'marketresearch-all', 'marketresearch-browse', 'marketresearch-viewTask'), 'recommend' => array('marketresearch-createTask', 'marketresearch-batchCreateTask', 'marketresearch-editTask', 'marketresearch-startTask', 'marketresearch-finishTask', 'marketresearch-activateTask', 'marketresearch-closeTask', 'marketresearch-cancelTask', 'marketresearch-recordTaskEstimate'));
+$config->group->package->manageResearchTask->privs['marketresearch-startTask'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 25, 'depend' => array('marketresearch-stage', 'marketresearch-all', 'marketresearch-browse', 'marketresearch-viewTask'), 'recommend' => array('marketresearch-createTask', 'marketresearch-batchCreateTask', 'marketresearch-taskAssignTo', 'marketresearch-editTask', 'marketresearch-finishTask', 'marketresearch-activateTask', 'marketresearch-closeTask', 'marketresearch-cancelTask', 'marketresearch-recordTaskEstimate'));
+$config->group->package->manageResearchTask->privs['marketresearch-recordTaskEstimate'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 30, 'depend' => array('marketresearch-stage', 'marketresearch-all', 'marketresearch-browse', 'marketresearch-viewTask'), 'recommend' => array('marketresearch-createTask', 'marketresearch-batchCreateTask', 'marketresearch-taskAssignTo', 'marketresearch-editTask', 'marketresearch-startTask', 'marketresearch-finishTask', 'marketresearch-activateTask', 'marketresearch-closeTask', 'marketresearch-cancelTask'));
+$config->group->package->manageResearchTask->privs['marketresearch-finishTask'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 35, 'depend' => array('marketresearch-stage', 'marketresearch-all', 'marketresearch-browse', 'marketresearch-viewTask'), 'recommend' => array('marketresearch-createTask', 'marketresearch-batchCreateTask', 'marketresearch-taskAssignTo', 'marketresearch-editTask', 'marketresearch-startTask', 'marketresearch-activateTask', 'marketresearch-closeTask', 'marketresearch-cancelTask', 'marketresearch-recordTaskEstimate'));
+$config->group->package->manageResearchTask->privs['marketresearch-activateTask'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 40, 'depend' => array('marketresearch-stage', 'marketresearch-all', 'marketresearch-browse', 'marketresearch-viewTask'), 'recommend' => array('marketresearch-createTask', 'marketresearch-batchCreateTask', 'marketresearch-taskAssignTo', 'marketresearch-editTask', 'marketresearch-startTask', 'marketresearch-finishTask', 'marketresearch-closeTask', 'marketresearch-cancelTask', 'marketresearch-recordTaskEstimate'));
+$config->group->package->manageResearchTask->privs['marketresearch-closeTask'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 45, 'depend' => array('marketresearch-stage', 'marketresearch-all', 'marketresearch-browse', 'marketresearch-viewTask'), 'recommend' => array('marketresearch-createTask', 'marketresearch-batchCreateTask', 'marketresearch-taskAssignTo', 'marketresearch-editTask', 'marketresearch-startTask', 'marketresearch-finishTask', 'marketresearch-activateTask', 'marketresearch-cancelTask', 'marketresearch-recordTaskEstimate'));
+$config->group->package->manageResearchTask->privs['marketresearch-cancelTask'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 50, 'depend' => array('marketresearch-stage', 'marketresearch-all', 'marketresearch-browse', 'marketresearch-viewTask'), 'recommend' => array('marketresearch-createTask', 'marketresearch-batchCreateTask', 'marketresearch-taskAssignTo', 'marketresearch-editTask', 'marketresearch-startTask', 'marketresearch-finishTask', 'marketresearch-closeTask', 'marketresearch-activateTask', 'marketresearch-recordTaskEstimate'));
+
+$config->group->package->deleteResearchTask = new stdclass();
+$config->group->package->deleteResearchTask->subset = 'researchtask';
+$config->group->package->deleteResearchTask->privs = array();
+$config->group->package->deleteResearchTask->privs['marketresearch-deleteTask'] = array('edition' => 'ipd', 'vision' => 'or', 'order' => 5, 'depend' => array('marketresearch-stage', 'marketresearch-all', 'marketresearch-browse', 'marketresearch-viewTask'), 'recommend' => array('marketresearch-createTask', 'marketresearch-batchCreateTask', 'marketresearch-taskAssignTo', 'marketresearch-editTask', 'marketresearch-startTask', 'marketresearch-finishTask', 'marketresearch-closeTask', 'marketresearch-activateTask', 'marketresearch-cancelTask', 'marketresearch-recordTaskEstimate'));
diff --git a/module/index/js/index.ui.js b/module/index/js/index.ui.js
index b067671e37..bf7664d88e 100644
--- a/module/index/js/index.ui.js
+++ b/module/index/js/index.ui.js
@@ -667,8 +667,8 @@ function initAppsMenu(items)
icon: 'icon-search',
methodName: 'index',
moduleName: 'search',
- text: lang.search,
- title: ' ' + lang.search,
+ text: langData.search,
+ title: ' ' + langData.search,
url: '/index.php?m=search&f=index',
vars: ''
};
@@ -766,11 +766,11 @@ $(document).on('click', '.open-in-app,.show-in-app', function(e)
if(!code) return;
const app = apps.openedMap[code];
- const items = [{text: lang.open, disabled: app && getLastAppCode() === code, onClick: function(){showApp(code)}}];
+ const items = [{text: langData.open, disabled: app && getLastAppCode() === code, onClick: function(){showApp(code)}}];
if(app)
{
- items.push({text: lang.reload, onClick: function(){reloadApp(code)}});
- if(code !== 'my') items.push({text: lang.close, onClick: function(){closeApp(code)}});
+ items.push({text: langData.reload, onClick: function(){reloadApp(code)}});
+ if(code !== 'my') items.push({text: langData.close, onClick: function(){closeApp(code)}});
}
zui.ContextMenu.show({hideOthers: true, element: $btn[0], placement: $btn.closest('#appTabs').length ? 'top-start' : 'right-start', items: items, event: event, onClickItem: function(info){info.event.preventDefault();}});
diff --git a/module/index/ui/index.html.php b/module/index/ui/index.html.php
index f579b421e3..15ecc7c0a9 100644
--- a/module/index/ui/index.html.php
+++ b/module/index/ui/index.html.php
@@ -28,7 +28,7 @@ jsVar('appsItems', $appsItems);
jsVar('defaultOpen', !empty($open) ? $open : '');
jsVar('manualText', $lang->manual);
jsVar('manualUrl', ((!empty($config->isINT)) ? $config->manualUrl['int'] : $config->manualUrl['home']) . '&theme=' . $_COOKIE['theme']);
-jsVar('lang', array_merge(array('search' => $lang->index->search, 'searchAB' => $lang->searchAB), (array)$lang->index->dock));
+jsVar('langData', array_merge(array('search' => $lang->index->search, 'searchAB' => $lang->searchAB), (array)$lang->index->dock));
jsVar('browserMessage', $browserMessage);
jsVar('pollTime', (!empty($config->message->browser->turnon) && isset($config->message->browser->pollTime)) ? $config->message->browser->pollTime : 600);
jsVar('turnon', empty($config->message->browser->turnon) ? 0 : 1);
diff --git a/module/install/css/showtableprogress.ui.css b/module/install/css/showtableprogress.ui.css
deleted file mode 100644
index dbf15d50bf..0000000000
--- a/module/install/css/showtableprogress.ui.css
+++ /dev/null
@@ -1 +0,0 @@
-.progress{overflow:hidden; height:400px; display: block; white-space: normal;}
diff --git a/module/install/css/step1.ui.css b/module/install/css/step1.ui.css
deleted file mode 100644
index 71fe0d6df6..0000000000
--- a/module/install/css/step1.ui.css
+++ /dev/null
@@ -1 +0,0 @@
-.panel .panel-heading {justify-content: flex-start; gap: 0.125rem;}
diff --git a/module/install/css/step2.ui.css b/module/install/css/step2.ui.css
deleted file mode 100644
index 97151af510..0000000000
--- a/module/install/css/step2.ui.css
+++ /dev/null
@@ -1 +0,0 @@
-.table.bordered > * > tr > th:first-child {text-align: right;}
diff --git a/module/install/css/step4.ui.css b/module/install/css/step4.ui.css
index 33285e5ae3..6e73cf040b 100644
--- a/module/install/css/step4.ui.css
+++ b/module/install/css/step4.ui.css
@@ -1,6 +1 @@
-.panel {width: 1000px; margin: auto; padding-bottom: 32px;}
-.panel .panel-heading {justify-content: flex-start; padding: 24px 16px; gap: 0.125rem;}
-.panel .panel-body {padding: 0px 16px;}
-.panel .panel-body .table.bordered > thead {background-color: var(--color-gray-100); color: var(--color-gray-900);}
-.table.bordered > * > tr > td {text-align: center;}
-.table.bordered > * > tr > td:first-child {text-align: left;}
+.panel .panel-body {padding-top: 0px;}
diff --git a/module/install/css/step5.ui.css b/module/install/css/step5.ui.css
deleted file mode 100644
index 6437ac8538..0000000000
--- a/module/install/css/step5.ui.css
+++ /dev/null
@@ -1,2 +0,0 @@
-#mainContent .panel {padding: 1rem; margin-top: 10%;}
-#mainContent .panel-heading {width: 24rem; margin: auto; padding: 0.75rem;}
diff --git a/module/install/ui/app.html.php b/module/install/ui/app.html.php
index 12ceca941f..b6ce20c8b8 100644
--- a/module/install/ui/app.html.php
+++ b/module/install/ui/app.html.php
@@ -28,10 +28,12 @@ foreach($components->category as $item)
jsVar('category', $category);
div
(
- set::id('main'),
+ setID('main'),
+ setClass('flex justify-center'),
div
(
- set::id('mainContent'),
+ setID('mainContent'),
+ setClass('px-1 mt-2 w-full max-w-7xl'),
formPanel
(
set::formID('solutionForm'),
diff --git a/module/install/ui/index.html.php b/module/install/ui/index.html.php
index 84478fb43c..b30f1236c5 100644
--- a/module/install/ui/index.html.php
+++ b/module/install/ui/index.html.php
@@ -17,11 +17,12 @@ foreach($app->config->langs as $key => $value) $langItems[] = array('text' => $v
div
(
- set::id('main'),
+ setID('main'),
+ setClass('flex justify-center'),
div
(
- set::id('mainContent'),
- setClass('px-1 mt-2'),
+ setID('mainContent'),
+ setClass('px-1 mt-2 w-full max-w-7xl'),
panel
(
setClass('p-8'),
diff --git a/module/install/ui/license.html.php b/module/install/ui/license.html.php
index a1210ad669..13baa73a55 100644
--- a/module/install/ui/license.html.php
+++ b/module/install/ui/license.html.php
@@ -16,11 +16,12 @@ jsVar('nextLink', $config->inQuickon ? inlink('step5') : inlink('step1'));
div
(
- set::id('main'),
+ setID('main'),
+ setClass('flex justify-center'),
div
(
- set::id('mainContent'),
- setClass('px-1 mt-2'),
+ setID('mainContent'),
+ setClass('px-1 mt-2 w-full max-w-7xl'),
panel
(
setClass('p-8'),
diff --git a/module/install/ui/progress.html.php b/module/install/ui/progress.html.php
index 862445a0a9..865b59b68d 100644
--- a/module/install/ui/progress.html.php
+++ b/module/install/ui/progress.html.php
@@ -74,10 +74,12 @@ if(!helper::isAjaxRequest('modal'))
div
(
- set::id('main'),
+ setID('main'),
+ setClass('flex justify-center'),
div
(
- set::id('mainContent'),
+ setID('mainContent'),
+ setClass('px-1 mt-2 w-full max-w-7xl'),
h::importCss($app->getWebRoot() . 'js/xterm/xterm.css'),
set('data-loading', $lang->solution->notices->uninstallingSolution),
formPanel
diff --git a/module/install/ui/showtableprogress.html.php b/module/install/ui/showtableprogress.html.php
index d037a68560..21279e9a76 100644
--- a/module/install/ui/showtableprogress.html.php
+++ b/module/install/ui/showtableprogress.html.php
@@ -15,17 +15,19 @@ set::zui(true);
jsVar('dbFinish', $lang->install->dbFinish);
div
(
- set::id('main'),
+ setID('main'),
+ setClass('flex justify-center'),
div
(
- set::id('mainContent'),
+ setID('mainContent'),
+ setClass('px-1 mt-2 w-full max-w-7xl'),
panel
(
setClass('py-2'),
set::title($lang->install->dbProgress),
form
(
- h::pre(setID('progress'), setClass('progress')),
+ h::pre(setID('progress'), setClass('progress block overflow-hidden h-96')),
set::actions(array(array('disabled' => true, 'text' => $lang->install->next, 'class' => 'primary next')))
)
)
diff --git a/module/install/ui/step1.html.php b/module/install/ui/step1.html.php
index 39ed11150c..3d5389fb56 100644
--- a/module/install/ui/step1.html.php
+++ b/module/install/ui/step1.html.php
@@ -63,10 +63,12 @@ foreach($dirItems as $dirItem)
div
(
- set::id('main'),
+ setID('main'),
+ setClass('flex justify-center'),
div
(
- set::id('mainContent'),
+ setID('mainContent'),
+ setClass('px-1 mt-2 w-full max-w-7xl'),
panel
(
setClass('py-2'),
diff --git a/module/install/ui/step2.html.php b/module/install/ui/step2.html.php
index 26326950f5..58025f047f 100644
--- a/module/install/ui/step2.html.php
+++ b/module/install/ui/step2.html.php
@@ -16,10 +16,12 @@ set::zui(true);
div
(
- set::id('main'),
+ setID('main'),
+ setClass('flex justify-center'),
div
(
- set::id('mainContent'),
+ setID('mainContent'),
+ setClass('px-1 mt-2 w-full max-w-7xl'),
panel
(
setClass('py-2'),
@@ -33,17 +35,13 @@ div
setClass('table bordered'),
h::tr
(
- h::th
- (
- width('1/5'),
- $lang->install->key
- ),
+ h::th(setClass('text-right w-1/5'), $lang->install->key),
h::th($lang->install->value),
h::th()
),
h::tr
(
- h::th($lang->install->timezone),
+ h::th(setClass('text-right'), $lang->install->timezone),
h::td
(
picker
@@ -58,7 +56,7 @@ div
),
h::tr
(
- h::th($lang->install->defaultLang),
+ h::th(setClass('text-right'), $lang->install->defaultLang),
h::td
(
picker
@@ -74,7 +72,7 @@ div
$config->edition != 'open' ? h::tr
(
$config->inQuickon ? setClass('hidden') : null,
- h::th($lang->install->dbDriver),
+ h::th(setClass('text-right'), $lang->install->dbDriver),
h::td
(
picker
@@ -95,7 +93,7 @@ div
h::tr
(
$config->inQuickon ? setClass('hidden') : null,
- h::th($lang->install->dbHost),
+ h::th(setClass('text-right'), $lang->install->dbHost),
h::td
(
formGroup
@@ -112,7 +110,7 @@ div
h::tr
(
$config->inQuickon ? setClass('hidden') : null,
- h::th($lang->install->dbPort),
+ h::th(setClass('text-right'), $lang->install->dbPort),
h::td
(
formGroup
@@ -128,7 +126,7 @@ div
h::tr
(
$config->inQuickon ? setClass('hidden') : null,
- h::th($lang->install->dbEncoding),
+ h::th(setClass('text-right'), $lang->install->dbEncoding),
h::td
(
formGroup
@@ -145,7 +143,7 @@ div
h::tr
(
$config->inQuickon ? setClass('hidden') : null,
- h::th($lang->install->dbUser),
+ h::th(setClass('text-right'), $lang->install->dbUser),
h::td
(
formGroup
@@ -162,7 +160,7 @@ div
h::tr
(
$config->inQuickon ? setClass('hidden') : null,
- h::th($lang->install->dbPassword),
+ h::th(setClass('text-right'), $lang->install->dbPassword),
h::td
(
formGroup
@@ -178,7 +176,7 @@ div
),
h::tr
(
- h::th($lang->install->dbName),
+ h::th(setClass('text-right'), $lang->install->dbName),
h::td
(
formGroup
@@ -194,7 +192,7 @@ div
),
h::tr
(
- h::th($lang->install->dbPrefix),
+ h::th(setClass('text-right'), $lang->install->dbPrefix),
h::td
(
formGroup
diff --git a/module/install/ui/step3.html.php b/module/install/ui/step3.html.php
index bf1b90d394..ada579747e 100644
--- a/module/install/ui/step3.html.php
+++ b/module/install/ui/step3.html.php
@@ -45,11 +45,12 @@ if(is_writable($configRoot) && @file_put_contents($myConfigFile, $configContent)
div
(
- set::id('main'),
+ setID('main'),
+ setClass('flex justify-center'),
div
(
- set::id('mainContent'),
- setClass('px-1 mt-2'),
+ setID('mainContent'),
+ setClass('px-1 mt-2 w-full max-w-7xl'),
panel
(
set::title($lang->install->saveConfig),
diff --git a/module/install/ui/step4.html.php b/module/install/ui/step4.html.php
index 0a31dbe200..28853ff02b 100644
--- a/module/install/ui/step4.html.php
+++ b/module/install/ui/step4.html.php
@@ -25,7 +25,11 @@ foreach($disabledFeatures as $feature)
if(is_array($feature) && empty($disabledScrumFeatures)) continue;
$trs[] = h::tr
(
- h::td(is_array($feature) && !empty($disabledScrumFeatures) ? sprintf($this->lang->custom->scrum->common, implode($lang->comma, $disabledScrumFeatures)) : $this->lang->custom->features[$feature]),
+ h::td
+ (
+ setClass('text-left'),
+ is_array($feature) && !empty($disabledScrumFeatures) ? sprintf($lang->custom->scrum->common, implode($lang->comma, $disabledScrumFeatures)) : $lang->custom->features[$feature]
+ ),
h::td
(
icon
@@ -51,7 +55,11 @@ foreach($config->custom->allFeatures as $feature)
$trs[] = h::tr
(
- h::td(($feature == 'scrumDetail' && !empty($enabledScrumFeatures)) ? sprintf($this->lang->custom->scrum->common, implode($lang->comma, $enabledScrumFeatures)) : $this->lang->custom->features[$feature]),
+ h::td
+ (
+ setClass('text-left'),
+ ($feature == 'scrumDetail' && !empty($enabledScrumFeatures)) ? sprintf($lang->custom->scrum->common, implode($lang->comma, $enabledScrumFeatures)) : $lang->custom->features[$feature]
+ ),
h::td
(
icon
@@ -73,18 +81,21 @@ foreach($config->custom->allFeatures as $feature)
div
(
- set::id('main'),
+ setID('main'),
+ setClass('flex justify-center'),
div
(
- set::id('mainContent'),
+ setID('mainContent'),
+ setClass('px-1 mt-2 w-full max-w-7xl'),
formPanel
(
- setClass('bg-canvas'),
+ setClass('bg-canvas m-auto pb-8'),
set::title($lang->install->selectMode),
set::titleClass('text-xl'),
set::actions(array()),
to::heading
(
+ setClass('justify-start gap-1'),
span
(
setClass('text-gray'),
@@ -93,12 +104,12 @@ div
setClass('text-warning px-1'),
'help'
),
- $this->lang->upgrade->remarkDesc
+ $lang->upgrade->remarkDesc
)
),
h::table
(
- setClass('table bordered'),
+ setClass('table bordered text-center'),
h::thead
(
h::tr
@@ -111,12 +122,12 @@ div
h::td
(
width('1/3'),
- $this->lang->custom->modeList['light']
+ $lang->custom->modeList['light']
),
h::td
(
width('1/3'),
- $this->lang->custom->modeList['ALM']
+ $lang->custom->modeList['ALM']
)
)
),
@@ -124,9 +135,9 @@ div
(
h::tr
(
- h::td($lang->custom->usage),
- h::td($this->lang->custom->modeIntroductionList['light']),
- h::td($this->lang->custom->modeIntroductionList['ALM']),
+ h::td(setClass('text-left'), $lang->custom->usage),
+ h::td($lang->custom->modeIntroductionList['light']),
+ h::td($lang->custom->modeIntroductionList['ALM']),
),
$trs,
h::tr
diff --git a/module/install/ui/step5.html.php b/module/install/ui/step5.html.php
index 0d63777e04..3ca46e6300 100644
--- a/module/install/ui/step5.html.php
+++ b/module/install/ui/step5.html.php
@@ -21,10 +21,12 @@ if(isset($error))
div
(
- set::id('main'),
+ setID('main'),
+ setClass('flex justify-center'),
div
(
- set::id('mainContent'),
+ setID('mainContent'),
+ setClass('px-1 mt-2 w-full max-w-7xl'),
isset($success) ? panel
(
set::title($lang->install->success),
@@ -37,6 +39,7 @@ div
(
setClass('bg-canvas m-auto mw-auto'),
set::title($lang->install->getPriv),
+ set::headingClass('w-96 m-auto'),
set::formClass('w-96 m-auto'),
set::submitBtnText(!empty($config->inQuickon) ? $lang->install->next : $lang->save),
formRow
diff --git a/module/install/ui/step6.html.php b/module/install/ui/step6.html.php
index fb2576e7d6..8f403d8f1e 100644
--- a/module/install/ui/step6.html.php
+++ b/module/install/ui/step6.html.php
@@ -16,10 +16,12 @@ $joinZentao = ($installFileDeleted ? $lang->install->successLabel : $lang->insta
div
(
- set::id('main'),
+ setID('main'),
+ setClass('flex justify-center'),
div
(
- set::id('mainContent'),
+ setID('mainContent'),
+ setClass('px-1 mt-2 w-full max-w-7xl'),
panel
(
setClass('p-2'),
diff --git a/module/instance/config/form.php b/module/instance/config/form.php
index c25da1481f..041a8abda8 100644
--- a/module/instance/config/form.php
+++ b/module/instance/config/form.php
@@ -1,5 +1,4 @@
instance->form = new stdclass();
$config->instance->form->create = array();
$config->instance->form->create['appType'] = array('type' => 'string', 'required' => true, 'default' => '');
@@ -7,7 +6,6 @@ $config->instance->form->create['name'] = array('type' => 'string', 'requ
$config->instance->form->create['url'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
$config->instance->form->create['account'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
$config->instance->form->create['password'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
-$config->instance->form->create['createdBy'] = array('type' => 'string', 'required' => false, 'default' => isset($app->user->account) ? $app->user->account : '');
$config->instance->form->create['createdDate'] = array('type' => 'string', 'required' => false, 'default' => helper::now());
$config->instance->form->create['private'] = array('type' => 'string', 'required' => false, 'default' => uniqid());
@@ -16,7 +14,6 @@ $config->instance->form->edit['name'] = array('type' => 'string', 'require
$config->instance->form->edit['url'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
$config->instance->form->edit['account'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
$config->instance->form->edit['password'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
-$config->instance->form->edit['editedBy'] = array('type' => 'string', 'required' => false, 'default' => isset($app->user->account) ? $app->user->account : '');
$config->instance->form->edit['editedDate'] = array('type' => 'string', 'required' => false, 'default' => helper::now());
$config->instance->form->install = array();
diff --git a/module/instance/control.php b/module/instance/control.php
index 1228c49bf1..9b42eb9b8f 100644
--- a/module/instance/control.php
+++ b/module/instance/control.php
@@ -203,7 +203,9 @@ class instance extends control
$this->loadModel('sonarqube');
$this->app->loadLang('pipeline');
- $externalApp = form::data($this->config->instance->form->create)->get();
+ $externalApp = form::data($this->config->instance->form->create)
+ ->add('createdBy', isset($this->app->user->account) ? $this->app->user->account : '')
+ ->get();
$externalApp->type = $type;
$externalApp->url = rtrim($externalApp->url, '/');
if(!$this->instance->checkAppNameUnique($externalApp->name)) return $this->send(array('result' => false, 'message' => array('name' => sprintf($this->lang->error->repeat, $this->lang->pipeline->name, $externalApp->name))));
@@ -231,7 +233,9 @@ class instance extends control
if($_POST)
{
- $instance = form::data($this->config->instance->form->edit)->get();
+ $instance = form::data($this->config->instance->form->edit)
+ ->add('editedBy', isset($this->app->user->account) ? $this->app->user->account : '')
+ ->get();
$this->pipeline->update($externalID, $instance);
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
diff --git a/module/jenkins/config/form.php b/module/jenkins/config/form.php
index a14c156a54..f34be8761f 100644
--- a/module/jenkins/config/form.php
+++ b/module/jenkins/config/form.php
@@ -1,5 +1,4 @@
jenkins->form = new stdclass();
$config->jenkins->form->create = array();
@@ -10,7 +9,6 @@ $config->jenkins->form->create['url'] = array('type' => 'string', 'req
$config->jenkins->form->create['account'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
$config->jenkins->form->create['token'] = array('type' => 'string', 'required' => false, 'default' => '', 'filter' => 'trim');
$config->jenkins->form->create['password'] = array('type' => 'string', 'required' => false, 'default' => '', 'filter' => 'trim');
-$config->jenkins->form->create['createdBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
$config->jenkins->form->create['createdDate'] = array('type' => 'datetime', 'required' => false, 'default' => helper::now());
$config->jenkins->form->create['private'] = array('type' => 'string', 'required' => false, 'default' => uniqid());
@@ -20,5 +18,4 @@ $config->jenkins->form->edit['url'] = array('type' => 'string', 'requir
$config->jenkins->form->edit['account'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
$config->jenkins->form->edit['token'] = array('type' => 'string', 'required' => false, 'default' => '', 'filter' => 'trim');
$config->jenkins->form->edit['password'] = array('type' => 'string', 'required' => false, 'default' => '', 'filter' => 'trim');
-$config->jenkins->form->edit['editedBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
$config->jenkins->form->edit['editedDate'] = array('type' => 'datetime', 'required' => false, 'default' => helper::now());
diff --git a/module/jenkins/control.php b/module/jenkins/control.php
index 70c7154c37..06a0a99e62 100644
--- a/module/jenkins/control.php
+++ b/module/jenkins/control.php
@@ -38,7 +38,9 @@ class jenkins extends control
{
if($_POST)
{
- $jenkins = form::data($this->config->jenkins->form->create)->get();
+ $jenkins = form::data($this->config->jenkins->form->create)
+ ->add('createdBy', $this->app->user->account)
+ ->get();
$this->jenkinsZen->checkTokenAccess($jenkins->url, $jenkins->account, $jenkins->password, $jenkins->token);
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
@@ -63,7 +65,9 @@ class jenkins extends control
$jenkins = $this->loadModel('pipeline')->getByID($jenkinsID);
if($_POST)
{
- $jenkins = form::data($this->config->jenkins->form->edit)->get();
+ $jenkins = form::data($this->config->jenkins->form->edit)
+ ->add('editedBy', $this->app->user->account)
+ ->get();
$this->jenkinsZen->checkTokenAccess($jenkins->url, $jenkins->account, $jenkins->password, $jenkins->token);
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
diff --git a/module/job/config/form.php b/module/job/config/form.php
index e0eb0bfc54..b5d85e03b7 100644
--- a/module/job/config/form.php
+++ b/module/job/config/form.php
@@ -1,7 +1,6 @@
job->form = new stdclass();
$config->job->form->create = array();
@@ -23,7 +22,6 @@ $config->job->form->create['jkServer'] = array('type' => 'int', 'requi
$config->job->form->create['jkTask'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->job->form->create['paramName'] = array('type' => 'array', 'required' => false, 'default' => array());
$config->job->form->create['paramValue'] = array('type' => 'array', 'required' => false, 'default' => array());
-$config->job->form->create['createdBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
$config->job->form->create['createdDate'] = array('type' => 'string', 'required' => false, 'default' => $now);
$config->job->form->edit = array();
@@ -45,5 +43,4 @@ $config->job->form->edit['jkServer'] = array('type' => 'int', 'require
$config->job->form->edit['jkTask'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->job->form->edit['paramName'] = array('type' => 'array', 'required' => false, 'default' => array());
$config->job->form->edit['paramValue'] = array('type' => 'array', 'required' => false, 'default' => array());
-$config->job->form->edit['editedBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
$config->job->form->edit['editedDate'] = array('type' => 'string', 'required' => false, 'default' => $now);
diff --git a/module/job/control.php b/module/job/control.php
index c3d518f6be..bc188b37a1 100644
--- a/module/job/control.php
+++ b/module/job/control.php
@@ -100,6 +100,7 @@ class job extends control
->setIF($this->post->useZentao != '1' || $this->post->triggerType != 'tag', 'lastTag', '')
->setIF($this->post->frame != 'sonarqube', 'sonarqubeServer', 0)
->setIF($this->post->frame != 'sonarqube', 'projectKey', '')
+ ->add('createdBy', $this->app->user->account)
->get();
$jobID = $this->job->create($job);
@@ -142,6 +143,7 @@ class job extends control
->setIF($this->post->useZentao != '1' || $this->post->triggerType != 'tag', 'lastTag', '')
->setIF($this->post->frame != 'sonarqube', 'sonarqubeServer', 0)
->setIF($this->post->frame != 'sonarqube', 'projectKey', '')
+ ->add('editedBy', $this->app->user->account)
->get();
$this->job->update($jobID, $job);
diff --git a/module/kanban/config/form.php b/module/kanban/config/form.php
index c9e1a9ad8d..833d9ca9ba 100644
--- a/module/kanban/config/form.php
+++ b/module/kanban/config/form.php
@@ -14,15 +14,15 @@ $config->kanban->form->createSpace['desc'] = array('type' => 'string', 're
$config->kanban->form->editSpace = $config->kanban->form->createSpace;
$config->kanban->form->activateSpace['status'] = array('type' => 'string', 'required' => true, 'default' => 'active');
-$config->kanban->form->activateSpace['activatedBy'] = array('type' => 'string', 'required' => true, 'default' => $app->user->account);
+$config->kanban->form->activateSpace['activatedBy'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->kanban->form->activateSpace['activatedDate'] = array('type' => 'datetime', 'required' => true, 'default' => $now);
-$config->kanban->form->activateSpace['lastEditedBy'] = array('type' => 'string', 'required' => true, 'default' => $app->user->account);
+$config->kanban->form->activateSpace['lastEditedBy'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->kanban->form->activateSpace['lastEditedDate'] = array('type' => 'datetime', 'required' => true, 'default' => $now);
$config->kanban->form->closeSpace['status'] = array('type' => 'string', 'required' => true, 'default' => 'closed');
-$config->kanban->form->closeSpace['closedBy'] = array('type' => 'string', 'required' => true, 'default' => $app->user->account);
+$config->kanban->form->closeSpace['closedBy'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->kanban->form->closeSpace['closedDate'] = array('type' => 'datetime', 'required' => true, 'default' => $now);
-$config->kanban->form->closeSpace['lastEditedBy'] = array('type' => 'string', 'required' => true, 'default' => $app->user->account);
+$config->kanban->form->closeSpace['lastEditedBy'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->kanban->form->closeSpace['lastEditedDate'] = array('type' => 'datetime', 'required' => true, 'default' => $now);
$config->kanban->form->create['name'] = array('type' => 'string', 'required' => true, 'default' => '');
@@ -39,7 +39,7 @@ $config->kanban->form->create['performable'] = array('type' => 'string', 'req
$config->kanban->form->create['alignment'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->kanban->form->create['desc'] = array('type' => 'string', 'required' => false, 'default' => '', 'control' => 'editor');
$config->kanban->form->create['whitelist'] = array('type' => 'array', 'required' => false, 'default' => '', 'filter' => 'join');
-$config->kanban->form->create['createdBy'] = array('type' => 'string', 'required' => true, 'default' => $app->user->account);
+$config->kanban->form->create['createdBy'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->kanban->form->create['createdDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
$config->kanban->form->create['copyKanbanID'] = array('type' => 'int', 'required' => false, 'default' => 0);
$config->kanban->form->create['copyRegion'] = array('type' => 'string', 'required' => false, 'default' => '0');
@@ -49,7 +49,7 @@ $config->kanban->form->edit['space'] = array('type' => 'int', 'req
$config->kanban->form->edit['owner'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->kanban->form->edit['team'] = array('type' => 'array', 'required' => false, 'default' => '', 'filter' => 'join');
$config->kanban->form->edit['desc'] = array('type' => 'string', 'required' => false, 'default' => '', 'control' => 'editor');
-$config->kanban->form->edit['lastEditedBy'] = array('type' => 'string', 'required' => true, 'default' => $app->user->account);
+$config->kanban->form->edit['lastEditedBy'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->kanban->form->edit['lastEditedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
$config->kanban->form->setting['showWIP'] = array('type' => 'string', 'required' => false, 'default' => '');
@@ -62,15 +62,15 @@ $config->kanban->form->setting['performable'] = array('type' => 'string', 'req
$config->kanban->form->setting['alignment'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->kanban->form->activate['status'] = array('type' => 'string', 'required' => true, 'default' => 'active');
-$config->kanban->form->activate['activatedBy'] = array('type' => 'string', 'required' => true, 'default' => $app->user->account);
+$config->kanban->form->activate['activatedBy'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->kanban->form->activate['activatedDate'] = array('type' => 'datetime', 'required' => true, 'default' => $now);
-$config->kanban->form->activate['lastEditedBy'] = array('type' => 'string', 'required' => true, 'default' => $app->user->account);
+$config->kanban->form->activate['lastEditedBy'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->kanban->form->activate['lastEditedDate'] = array('type' => 'datetime', 'required' => true, 'default' => $now);
$config->kanban->form->close['status'] = array('type' => 'string', 'required' => true, 'default' => 'closed');
-$config->kanban->form->close['closedBy'] = array('type' => 'string', 'required' => true, 'default' => $app->user->account);
+$config->kanban->form->close['closedBy'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->kanban->form->close['closedDate'] = array('type' => 'datetime', 'required' => true, 'default' => $now);
-$config->kanban->form->close['lastEditedBy'] = array('type' => 'string', 'required' => true, 'default' => $app->user->account);
+$config->kanban->form->close['lastEditedBy'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->kanban->form->close['lastEditedDate'] = array('type' => 'datetime', 'required' => true, 'default' => $now);
$config->kanban->form->createLane['name'] = array('type' => 'string', 'required' => true, 'default' => '');
@@ -98,7 +98,7 @@ $config->kanban->form->createCard['assignedTo'] = array('type' => 'array',
$config->kanban->form->createCard['begin'] = array('type' => 'date', 'required' => false, 'default' => '');
$config->kanban->form->createCard['end'] = array('type' => 'date', 'required' => false, 'default' => '');
$config->kanban->form->createCard['desc'] = array('type' => 'string', 'required' => false, 'default' => '', 'control' => 'editor');
-$config->kanban->form->createCard['createdBy'] = array('type' => 'string', 'required' => true, 'default' => $app->user->account);
+$config->kanban->form->createCard['createdBy'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->kanban->form->createCard['createdDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
$config->kanban->form->createCard['assignedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
$config->kanban->form->createCard['color'] = array('type' => 'string', 'required' => false, 'default' => '#fff');
@@ -112,7 +112,7 @@ $config->kanban->form->editCard['assignedTo'] = array('type' => 'array',
$config->kanban->form->editCard['begin'] = array('type' => 'date', 'required' => false, 'default' => '');
$config->kanban->form->editCard['end'] = array('type' => 'date', 'required' => false, 'default' => '');
$config->kanban->form->editCard['desc'] = array('type' => 'string', 'required' => false, 'default' => '', 'control' => 'editor');
-$config->kanban->form->editCard['lastEditedBy'] = array('type' => 'string', 'required' => true, 'default' => $app->user->account);
+$config->kanban->form->editCard['lastEditedBy'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->kanban->form->editCard['lastEditedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
$config->kanban->form->batchCreateCard['name'] = array('type' => 'string', 'required' => true, 'default' => '', 'base' => 'true');
diff --git a/module/kanban/control.php b/module/kanban/control.php
index 67ddff6975..22051bd2a9 100644
--- a/module/kanban/control.php
+++ b/module/kanban/control.php
@@ -129,6 +129,8 @@ class kanban extends control
$space = form::data($this->config->kanban->form->activateSpace)
->add('closedBy', '')
->add('closedDate', null)
+ ->add('activatedBy', $this->app->user->account)
+ ->add('lastEditedBy', $this->app->user->account)
->get();
$this->kanban->activateSpace($spaceID, $space);
@@ -160,6 +162,8 @@ class kanban extends control
$space = form::data($this->config->kanban->form->closeSpace)
->add('activatedBy', '')
->add('activatedDate', null)
+ ->add('closedBy', $this->app->user->account)
+ ->add('lastEditedBy', $this->app->user->account)
->get();
$this->kanban->closeSpace($spaceID, $space);
@@ -205,7 +209,9 @@ class kanban extends control
{
if(!empty($_POST))
{
- $kanban = form::data($this->config->kanban->form->create)->get();
+ $kanban = form::data($this->config->kanban->form->create)
+ ->setDefault('createdBy', $this->app->user->account)
+ ->get();
$this->kanban->create($kanban);
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
@@ -227,7 +233,9 @@ class kanban extends control
{
if(!empty($_POST))
{
- $kanban = form::data($this->config->kanban->form->edit)->get();
+ $kanban = form::data($this->config->kanban->form->edit)
+ ->setDefault('lastEditedBy', $this->app->user->account)
+ ->get();
$this->kanban->update($kanbanID, $kanban);
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
@@ -297,6 +305,8 @@ class kanban extends control
$kanban = form::data($this->config->kanban->form->activate)
->setDefault('closedBy', '')
->setDefault('closedDate', null)
+ ->setDefault('activatedBy', $this->app->user->account)
+ ->setDefault('lastEditedBy', $this->app->user->account)
->get();
$this->kanban->activate($kanbanID, $kanban);
@@ -327,6 +337,8 @@ class kanban extends control
$kanban = form::data($this->config->kanban->form->close)
->setDefault('activatedBy', '')
->setDefault('activatedDate', null)
+ ->setDefault('closedBy', $this->app->user->account)
+ ->setDefault('lastEditedBy', $this->app->user->account)
->get();
$this->kanban->close($kanbanID, $kanban);
@@ -745,6 +757,7 @@ class kanban extends control
->add('kanban', $kanbanID)
->add('region', $regionID)
->add('group', $groupID)
+ ->setDefault('createdBy', $this->app->user->account)
->get();
$this->kanban->createCard($columnID, $card);
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
@@ -810,7 +823,9 @@ class kanban extends control
{
if(!empty($_POST))
{
- $card = form::data($this->config->kanban->form->editCard)->get();
+ $card = form::data($this->config->kanban->form->editCard)
+ ->setDefault('lastEditedBy', $this->app->user->account)
+ ->get();
$this->kanban->updateCard($cardID, $card);
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
diff --git a/module/kanban/tao.php b/module/kanban/tao.php
index acadced9b5..66eaefa2fd 100644
--- a/module/kanban/tao.php
+++ b/module/kanban/tao.php
@@ -910,6 +910,8 @@ class kanbanTao extends kanbanModel
*/
protected function getStoryCardMenu(int $executionID, array $objects): array
{
+ $execution = $this->loadModel('execution')->getByID($executionID);
+
$menus = array();
$objects = $this->loadModel('story')->mergeReviewer($objects);
foreach($objects as $story)
@@ -923,7 +925,7 @@ class kanbanTao extends kanbanModel
if(common::hasPriv('task', 'create') and $toTaskPriv) $menu[] = array('label' => $this->lang->execution->wbs, 'icon' => 'plus', 'url' => helper::createLink('task', 'create', "executionID=$executionID&storyID=$story->id&moduleID=$story->module"), 'modal' => true, 'size' => 'lg');
if(common::hasPriv('task', 'batchCreate') and $toTaskPriv) $menu[] = array('label' => $this->lang->execution->batchWBS, 'icon' => 'pluses', 'url' => helper::createLink('task', 'batchCreate', "executionID=$executionID&storyID=$story->id&moduleID=0&taskID=0&iframe=true"), 'modal' => true, 'size' => 'lg');
if(common::hasPriv('story', 'activate') and $this->story->isClickable($story, 'activate')) $menu[] = array('label' => $this->lang->story->activate, 'icon' => 'magic', 'url' => helper::createLink('story', 'activate', "storyID=$story->id"), 'modal' => true, 'size' => 'lg');
- if(common::hasPriv('execution', 'unlinkStory')) $menu[] = array('label' => $this->lang->execution->unlinkStory, 'icon' => 'unlink', 'url' => helper::createLink('execution', 'unlinkStory', "executionID=$executionID&storyID=$story->story&confirm=no&from=taskkanban"));
+ if(common::hasPriv('execution', 'unlinkStory') && $execution->hasProduct) $menu[] = array('label' => $this->lang->execution->unlinkStory, 'icon' => 'unlink', 'url' => helper::createLink('execution', 'unlinkStory', "executionID=$executionID&storyID=$story->story&confirm=no&from=taskkanban"));
if(common::hasPriv('story', 'delete')) $menu[] = array('label' => $this->lang->story->delete, 'icon' => 'trash', 'url' => helper::createLink('story', 'delete', "storyID=$story->id&confirm=no&from=taskkanban"));
$menus[$story->id] = $menu;
diff --git a/module/metric/calc/product/scale/count_of_annual_created_requirement_in_product.php b/module/metric/calc/product/scale/count_of_annual_created_requirement_in_product.php
index 897cadb690..73776f5898 100755
--- a/module/metric/calc/product/scale/count_of_annual_created_requirement_in_product.php
+++ b/module/metric/calc/product/scale/count_of_annual_created_requirement_in_product.php
@@ -32,7 +32,7 @@ class count_of_annual_created_requirement_in_product extends baseCalc
$type = $data->type;
$openedDate = $data->openedDate;
- if(empty($openedDate)) return false;
+ if(empty($openedDate) || $type != 'requirement') return false;
$year = substr($openedDate, 0, 4);
if($year == '0000') return false;
diff --git a/module/metric/control.php b/module/metric/control.php
index 2fe03a5da6..d46dedaf24 100755
--- a/module/metric/control.php
+++ b/module/metric/control.php
@@ -158,126 +158,6 @@ class metric extends control
$this->display();
}
- /**
- * 计算一个度量项的历史数据。
- * Update history metric lib of single metric.
- *
- * @param string $code
- * @param string $date
- * @param string $calcType
- * @access public
- * @return void
- */
- public function ajaxUpdateSingleMetricLib($code, $date, $calcType)
- {
- $date = str_replace('_', '-', $date);
- $dateType = $this->metric->getDateTypeByCode($code);
-
- if($calcType == 'inference') $isCalcByCron = $this->metric->isCalcByCron($code, $date, $dateType);
-
- if($calcType == 'all' || !$isCalcByCron)
- {
- $calc = $this->metric->calculateMetricByCode($code);
- $record = $this->metricZen->getRecordByCodeAndDate($code, $calc, $date);
-
- $records = array();
- $records[$code] = $record;
- $this->metric->insertMetricLib($records, 'inference');
- }
- }
-
- /**
- * 计算历史数据。
- * Update metric lib of history.
- *
- * @param string $date
- * @param string $calcType
- * @access public
- * @return void
- */
- public function ajaxUpdateHistoryMetricLib($date, $calcType)
- {
- $date = str_replace('_', '-', $date);
- $calcList = $this->metric->getCalcInstanceList();
-
- $classifiedCalcGroup = json_decode(file_get_contents($this->app->getTmpRoot() . 'calc'));
-
- $records = array();
- foreach($classifiedCalcGroup as $calcGroup)
- {
- foreach($calcGroup->calcList as $code => $calc)
- {
- if($calcType == 'inference')
- {
- $dateType = $this->metric->getDateTypeByCode($code);
- if($dateType == 'nodate') continue;
-
- $isCalcByCron = $this->metric->isCalcByCron($code, $date, $dateType);
- if($isCalcByCron) continue;
- }
-
- $calcObj = $calcList[$code];
- $calcObj->result = json_decode(json_encode($calc->result), true);
- $inferenceRecord = $this->metricZen->getRecordByCodeAndDate($code, $calcObj, $date);
- if(!empty($inferenceRecord)) $records[$code] = $inferenceRecord;
- }
- }
- $this->metric->insertMetricLib($records, 'inference');
- }
-
- /**
- * 保存计算后的度量项对象。
- * Save calculated metric to file.
- *
- * @access public
- * @return void
- */
- public function ajaxSaveCalculatedMetrics()
- {
- $calcList = $this->metric->getCalcInstanceList();
- $classifiedCalcGroup = $this->metric->classifyCalc($calcList);
-
- foreach($classifiedCalcGroup as $calcGroup)
- {
- if($this->config->edition == 'open' and in_array($calcGroup->dataset, array('getFeedbacks', 'getIssues', 'getRisks'))) continue;
- if($this->config->edition == 'biz' and in_array($calcGroup->dataset, array('getIssues', 'getRisks'))) continue;
-
- try
- {
- $statement = $this->metricZen->prepareDataset($calcGroup);
- if(empty($statement)) continue;
-
- $rows = $statement->fetchAll();
- $this->metricZen->calcMetric($rows, $calcGroup->calcList);
-
- foreach($calcGroup->calcList as $calc) $calc->setDAO(null);
- }
- catch(Exception $e)
- {
- a($this->metricZen->formatException($e));
- }
- catch(Error $e)
- {
- a($this->metricZen->formatException($e));
- }
- }
-
- file_put_contents($this->app->getTmpRoot() . 'calc', json_encode($classifiedCalcGroup));
- }
-
- /**
- * 删除重复度量库数据。
- * Delete duplication record in metric data.
- *
- * @access public
- * @return void
- */
- public function ajaxDeduplicateRecord()
- {
- $metrics = $this->metric->getExecutableMetric();
- foreach($metrics as $code) $this->metric->deduplication($code);
- }
-
/**
* 计算度量项。
* Execute metric.
@@ -324,6 +204,7 @@ class metric extends control
$metrics = $this->metric->getExecutableMetric();
foreach($metrics as $code) $this->metric->deduplication($code);
+ $this->metric->rebuildPrimaryKey();
// 恢复之前的调试状态
$this->config->debug = $originalDebug;
@@ -483,50 +364,6 @@ class metric extends control
$this->display();
}
- /**
- * 重算度量项历史数据。
- * Recalculate metric history data.
- *
- * @param string $calcRange all|single
- * @param string $code
- * @access public
- * @return string
- */
- public function recalculateSetting($calcRange= 'all', $code = '')
- {
- $this->view->calcRange = $calcRange;
- $this->view->code = $code;
- $this->display();
- }
-
- /**
- * 重算度量项进度。
- * Show recalculate progress.
- *
- * @param string $calcType all|inference
- * @param string $calcRange all|single
- * @param string $code
- * @access public
- * @return string
- */
- public function recalculate($calcType, $calcRange = 'all', $code = '')
- {
- $metric = !empty($code) ? $this->metric->getByCode($code) : '';
- $dateType = !empty($code) ? $this->metric->getDateTypeByCode($code) : '';
-
- $startDate = $this->metric->getInstallDate();
- $endDate = helper::now();
-
- $this->view->code = $code;
- $this->view->metric = $metric;
- $this->view->dateType = $dateType;
- $this->view->calcType = $calcType;
- $this->view->calcRange = $calcRange;
- $this->view->startDate = substr($startDate, 0, 10);
- $this->view->endDate = substr($endDate, 0, 10);
- $this->display();
- }
-
/**
* 获取数据表格的数据。
* Get data of datatable.
diff --git a/module/metric/css/preview.ui.css b/module/metric/css/preview.ui.css
index df9de03cba..d6e3e207bc 100644
--- a/module/metric/css/preview.ui.css
+++ b/module/metric/css/preview.ui.css
@@ -4,8 +4,8 @@
#mainContent .side {overflow-x: hidden; padding-right: 4px;}
#mainContent .main {overflow-x: hidden;}
-#featureBar .nav-feature li:last-child {padding-left: 4px;}
-#featureBar .nav-feature li:nth-last-child(2):before {content: ""; position: absolute; left: 2px; top: 5px; right: 0; bottom: 5px; width: 1px; background-color: var(--color-gray-300);}
+#featureBar .nav-feature li.divider-before {padding-left: 4px;}
+#featureBar .nav-feature li.divider-before:before {content: ""; position: absolute; left: -1px; top: 5px; bottom: 5px; width: 1px; background-color: var(--color-gray-300);}
.filter-btn {padding-left: 0.625rem !important; padding-right: 0.625rem !important;}
diff --git a/module/metric/js/preview.ui.js b/module/metric/js/preview.ui.js
index 3bf9e03dfc..adc01b2cd8 100644
--- a/module/metric/js/preview.ui.js
+++ b/module/metric/js/preview.ui.js
@@ -21,6 +21,7 @@ window.afterPageUpdate = function($target, info, options)
}
window.addTitle2Star();
+ window.addDivider();
window.initFilterPanel();
}
@@ -41,6 +42,13 @@ window.addTitle2Star = function()
$('.metric-collect').attr('title', collectStar);
}
+window.addDivider = function()
+{
+ let features = $('#featureBar .nav-feature').find('li.nav-item');
+ let lastItem = features[features.length - 1];
+ $(lastItem).addClass('divider-before');
+}
+
/* 事件处理函数。 */
window.handleCheckboxChange = function($el)
{
@@ -83,7 +91,7 @@ window.handleFilterCheck = function()
window.handleFilterToggle = function($el)
{
- $el.toggleClass('primary-600');
+ $el.toggleClass('ring-primary');
$('.filter-panel').toggleClass('hidden');
}
@@ -274,10 +282,10 @@ window.initFilterPanel = function()
$('#mainMenu').after($('.filter-panel'));
- $('.filter-btn').removeClass('primary-600');
+ $('.filter-btn').removeClass('ring-primary');
if(scope == 'filter')
{
- $('.filter-btn').addClass('primary-600');
+ $('.filter-btn').addClass('ring-primary');
$('.filter-panel').removeClass('hidden');
window.updateFilterCheck();
}
@@ -697,7 +705,7 @@ window.genDataZoom = function(dataLength, initZoom = 10, axis = 'x')
window.hideFilterPanel = function()
{
- $('.filter-btn').removeClass('primary-600');
+ $('.filter-btn').removeClass('ring-primary');
$('.filter-panel').addClass('hidden');
}
diff --git a/module/metric/model.php b/module/metric/model.php
index 382e3c3124..a54f10e3bb 100755
--- a/module/metric/model.php
+++ b/module/metric/model.php
@@ -833,6 +833,18 @@ class metricModel extends model
return dao::isError();
}
+ /**
+ * 重建主键顺序。
+ * Rebuild primary key order.
+ *
+ * @access public
+ * @return void
+ */
+ public function rebuildPrimaryKey()
+ {
+ $this->metricTao->rebuildIdColumn();
+ }
+
/**
* 根据度量项收集周期来清理过期的度量库数据。
* Clear outdated metric records by cycle.
@@ -1230,6 +1242,7 @@ class metricModel extends model
->where('deleted')->eq(0)
->andWhere('shadow')->eq(0)
->andWhere('createdDate')->le($date)
+ ->andWhere("if(closedDate IS NOT NULL and YEAR(closedDate)!='0000', closedDate>='$date', true)")
->andWhere("vision LIKE '%{$vision}%'", true)
->orWhere("vision IS NULL")->markRight(1)
->fetchPairs();
@@ -1239,6 +1252,7 @@ class metricModel extends model
->where('deleted')->eq(0)
->andWhere('type')->eq('project')
->andWhere('openedDate')->le($date)
+ ->andWhere("if(closedDate IS NOT NULL and YEAR(closedDate)!='0000', closedDate>='$date', true)")
->andWhere("vision LIKE '%{$vision}%'", true)
->orWhere("vision IS NULL")->markRight(1)
->fetchPairs();
@@ -1248,6 +1262,7 @@ class metricModel extends model
->where('deleted')->eq(0)
->andWhere('type')->in('sprint,stage,kanban')
->andWhere('openedDate')->le($date)
+ ->andWhere("if(closedDate IS NOT NULL and YEAR(closedDate)!='0000', closedDate>='$date', true)")
->andWhere("vision LIKE '%{$vision}%'", true)
->orWhere("vision IS NULL")->markRight(1)
->fetchPairs();
@@ -2611,6 +2626,14 @@ class metricModel extends model
*/
public function getInstallDate()
{
+ $installedDate = $this->dao->select('value')->from(TABLE_CONFIG)
+ ->where('section')->eq('global')
+ ->andWhere('key')->eq('installedDate')
+ ->limit(1)
+ ->fetch('value');
+
+ if(!empty($installedDate) && substr($installedDate, 0 ,4) == '0000') return $installedDate;
+
return $this->dao->select('date')->from(TABLE_ACTION)
->orderBy('date_asc')
->limit(1)
diff --git a/module/metric/tao.php b/module/metric/tao.php
index 87c7d9a226..123818c5a9 100644
--- a/module/metric/tao.php
+++ b/module/metric/tao.php
@@ -474,10 +474,11 @@ class metricTao extends metricModel
$intersect = array_intersect($fields, array('year', 'month', 'week', 'day'));
foreach($fields as $key => $field) $fields[$key] = "`$field`";
if(empty($intersect)) $fields[] = 'left(date, 10)';
+ $table = TABLE_METRICLIB;
$sql = "INSERT INTO `metriclib_distinct` (id) ";
$sql .= "SELECT MAX(id) AS id ";
- $sql .= "FROM zt_metriclib WHERE metricCode = '{$code}' ";
+ $sql .= "FROM $table WHERE metricCode = '{$code}' ";
$sql .= "GROUP BY " . implode(',', $fields);
$this->dao->exec($sql);
@@ -493,7 +494,8 @@ class metricTao extends metricModel
*/
protected function deleteDuplicationRecord(string $code): void
{
- $sql = "DELETE FROM zt_metriclib ";
+ $table = TABLE_METRICLIB;
+ $sql = "DELETE FROM $table ";
$sql .= "WHERE id NOT IN (SELECT id FROM metriclib_distinct) ";
$sql .= "AND metricCode = '{$code}'";
@@ -511,4 +513,20 @@ class metricTao extends metricModel
{
$this->dao->exec("DROP TABLE IF EXISTS `metriclib_distinct`");
}
+
+ /**
+ * 重建id列顺序。
+ * Rebuild id column order.
+ *
+ * @access protected
+ * @return void
+ */
+ protected function rebuildIdColumn(): void
+ {
+ $table = TABLE_METRICLIB;
+ $tableRowCount = $this->dao->select('COUNT(id) as rowcount')->from(TABLE_METRICLIB)->fetch('rowcount');
+ $autoIncrement = $tableRowCount + 1;
+ $this->dao->exec("SET @count = 0;UPDATE $table SET `id` = @count:= @count + 1;");
+ $this->dao->exec("ALTER TABLE $table AUTO_INCREMENT = $autoIncrement");
+ }
}
diff --git a/module/metric/ui/component/filterpanel.html.php b/module/metric/ui/component/filterpanel.html.php
index 08f435844f..872ede2348 100644
--- a/module/metric/ui/component/filterpanel.html.php
+++ b/module/metric/ui/component/filterpanel.html.php
@@ -44,7 +44,7 @@ $fnGenerateFilterContent = function($filterItems) use($lang, $fnGenerateFilterBl
(
btn
(
- setClass('btn ghost filter-btn'),
+ setClass('search-form-toggle rounded-full gray-300-outline size-sm btn filter-btn'),
set::icon('search'),
bind::click('window.handleFilterToggle($element)'),
span
diff --git a/module/metric/ui/previewsingle.html.php b/module/metric/ui/previewsingle.html.php
index 149764e23e..22720c0a76 100644
--- a/module/metric/ui/previewsingle.html.php
+++ b/module/metric/ui/previewsingle.html.php
@@ -37,7 +37,8 @@ $fnGenerateSide = function() use($groupMetrics, $current, $viewType, $scope, $la
$metricList[] = li
(
set::className($class . ' metric-item font-medium'),
- a(
+ a
+ (
$metric->name,
set::href(helper::createLink('metric', 'preview', $params))
)
diff --git a/module/metric/zen.php b/module/metric/zen.php
index 718dc6b579..bee105e654 100644
--- a/module/metric/zen.php
+++ b/module/metric/zen.php
@@ -291,14 +291,9 @@ class metricZen extends metric
}
else
{
- if($date == 'now')
- {
- $scopeList = $this->metric->getPairsByScope($scope);
- }
- else
- {
- $scopeList = $this->metric->getPairsByScopeAndDate($scope, $date);
- }
+ if($date == 'now') $date = helper::today();
+
+ $scopeList = $this->metric->getPairsByScopeAndDate($scope, $date);
foreach($scopeList as $key => $value)
{
diff --git a/module/misc/lang/de.php b/module/misc/lang/de.php
index 1f77cb073a..36e7ad8bd9 100644
--- a/module/misc/lang/de.php
+++ b/module/misc/lang/de.php
@@ -113,7 +113,7 @@ $lang->misc->feature->promptExecImage = 'theme/default/images/main/prompt_exec
$lang->misc->feature->promptLearnMore = 'https://www.zentao.net/book/zentaopms/1097.html';
/* Release Date. */
-$lang->misc->releaseDate['20.0'] = '2024-04-15';
+$lang->misc->releaseDate['20.0'] = '2024-04-23';
$lang->misc->releaseDate['18.12'] = '2024-04-12';
$lang->misc->releaseDate['20.0.beta2'] = '2024-03-15';
$lang->misc->releaseDate['18.11'] = '2024-02-28';
@@ -226,7 +226,7 @@ $lang->misc->releaseDate['7.1.stable'] = '2015-03-07';
$lang->misc->releaseDate['6.3.stable'] = '2014-11-07';
/* Release Detail. */
-$lang->misc->feature->all['20.0'][] = array('title' => "", 'desc' => '');
+$lang->misc->feature->all['20.0'][] = array('title' => 'In this upgrade, we have reconstructed the underlying PHP and UI frameworks, revamped the core forms and dashboards, resulting in a completely elevated user experience.', 'desc' => '');
$lang->misc->feature->all['18.12'][] = array('title' => "To better streamline our services, we have discontinued information and associated evaluations for non-R&D users, while implementing timely reminders for impending technical service deadlines. Our latest update includes a comprehensive approach to metric management, offering customizable metrics, a robust library of foundational metrics, and the convenience of recalculating historical metric data at one click. Additionally, we are excited to introduce the demand pool matrix, enabling the removal of approved demands from roadmaps. Furthermore, our Operations Management Interface has been enhanced with the addition of feedback settings. In addition, we have introduced the 'Associated Demand Pool' search criterion, making it easier for users to search for requirements within the demand pool.", 'desc' => '');
$lang->misc->feature->all['20.0.beta2'][] = array('title' => 'Enhance the functionality and fine-tune the details, while addressing any known bugs.', 'desc' => '');
$lang->misc->feature->all['18.11'][] = array('title' => "We have successfully implemented AI mini-program functionality, integrating measurement metrics and global filtering capabilities into the large-screen display. Additionally, we have added feedback functionality to the OR interface. Furthermore, we have enabled the inclusion of keywords in the Requirement Management Hub, allowing for the redistribution of requirements in the Requirement Management Hub once a user's requirement has been withdrawn.", 'desc' => '');
diff --git a/module/misc/lang/en.php b/module/misc/lang/en.php
index 64d9948d88..94ac3174e4 100644
--- a/module/misc/lang/en.php
+++ b/module/misc/lang/en.php
@@ -113,7 +113,7 @@ $lang->misc->feature->promptExecImage = 'theme/default/images/main/prompt_exec
$lang->misc->feature->promptLearnMore = 'https://www.zentao.net/book/zentaopms/1097.html';
/* Release Date. */
-$lang->misc->releaseDate['20.0'] = '2024-04-15';
+$lang->misc->releaseDate['20.0'] = '2024-04-23';
$lang->misc->releaseDate['18.12'] = '2024-04-12';
$lang->misc->releaseDate['20.0.beta2'] = '2024-03-15';
$lang->misc->releaseDate['18.11'] = '2024-02-28';
@@ -226,7 +226,7 @@ $lang->misc->releaseDate['7.1.stable'] = '2015-03-07';
$lang->misc->releaseDate['6.3.stable'] = '2014-11-07';
/* Release Detail. */
-$lang->misc->feature->all['20.0'][] = array('title' => "", 'desc' => '');
+$lang->misc->feature->all['20.0'][] = array('title' => 'In this upgrade, we have reconstructed the underlying PHP and UI frameworks, revamped the core forms and dashboards, resulting in a completely elevated user experience.', 'desc' => '');
$lang->misc->feature->all['18.12'][] = array('title' => "To better streamline our services, we have discontinued information and associated evaluations for non-R&D users, while implementing timely reminders for impending technical service deadlines. Our latest update includes a comprehensive approach to metric management, offering customizable metrics, a robust library of foundational metrics, and the convenience of recalculating historical metric data at one click. Additionally, we are excited to introduce the demand pool matrix, enabling the removal of approved demands from roadmaps. Furthermore, our Operations Management Interface has been enhanced with the addition of feedback settings. In addition, we have introduced the 'Associated Demand Pool' search criterion, making it easier for users to search for requirements within the demand pool.", 'desc' => '');
$lang->misc->feature->all['20.0.beta2'][] = array('title' => 'Enhance the functionality and fine-tune the details, while addressing any known bugs.', 'desc' => '');
$lang->misc->feature->all['18.11'][] = array('title' => "We have successfully implemented AI mini-program functionality, integrating measurement metrics and global filtering capabilities into the large-screen display. Additionally, we have added feedback functionality to the OR interface. Furthermore, we have enabled the inclusion of keywords in the Requirement Management Hub, allowing for the redistribution of requirements in the Requirement Management Hub once a user's requirement has been withdrawn.", 'desc' => '');
diff --git a/module/misc/lang/fr.php b/module/misc/lang/fr.php
index dd4f22df07..e234b89f6a 100644
--- a/module/misc/lang/fr.php
+++ b/module/misc/lang/fr.php
@@ -113,7 +113,7 @@ $lang->misc->feature->promptExecImage = 'theme/default/images/main/prompt_exec
$lang->misc->feature->promptLearnMore = 'https://www.zentao.net/book/zentaopms/1097.html';
/* Release Date. */
-$lang->misc->releaseDate['20.0'] = '2024-04-15';
+$lang->misc->releaseDate['20.0'] = '2024-04-23';
$lang->misc->releaseDate['18.12'] = '2024-04-12';
$lang->misc->releaseDate['20.0.beta2'] = '2024-03-15';
$lang->misc->releaseDate['18.11'] = '2024-02-28';
@@ -226,7 +226,7 @@ $lang->misc->releaseDate['7.1.stable'] = '2015-03-07';
$lang->misc->releaseDate['6.3.stable'] = '2014-11-07';
/* Release Detail. */
-$lang->misc->feature->all['20.0'][] = array('title' => "", 'desc' => '');
+$lang->misc->feature->all['20.0'][] = array('title' => 'In this upgrade, we have reconstructed the underlying PHP and UI frameworks, revamped the core forms and dashboards, resulting in a completely elevated user experience.', 'desc' => '');
$lang->misc->feature->all['18.12'][] = array('title' => "To better streamline our services, we have discontinued information and associated evaluations for non-R&D users, while implementing timely reminders for impending technical service deadlines. Our latest update includes a comprehensive approach to metric management, offering customizable metrics, a robust library of foundational metrics, and the convenience of recalculating historical metric data at one click. Additionally, we are excited to introduce the demand pool matrix, enabling the removal of approved demands from roadmaps. Furthermore, our Operations Management Interface has been enhanced with the addition of feedback settings. In addition, we have introduced the 'Associated Demand Pool' search criterion, making it easier for users to search for requirements within the demand pool.", 'desc' => '');
$lang->misc->feature->all['20.0.beta2'][] = array('title' => 'Enhance the functionality and fine-tune the details, while addressing any known bugs.', 'desc' => '');
$lang->misc->feature->all['18.11'][] = array('title' => "We have successfully implemented AI mini-program functionality, integrating measurement metrics and global filtering capabilities into the large-screen display. Additionally, we have added feedback functionality to the OR interface. Furthermore, we have enabled the inclusion of keywords in the Requirement Management Hub, allowing for the redistribution of requirements in the Requirement Management Hub once a user's requirement has been withdrawn.", 'desc' => '');
diff --git a/module/misc/lang/zh-cn.php b/module/misc/lang/zh-cn.php
index 9fa8678b0f..51a7e09801 100644
--- a/module/misc/lang/zh-cn.php
+++ b/module/misc/lang/zh-cn.php
@@ -113,7 +113,7 @@ $lang->misc->feature->promptExecImage = 'theme/default/images/main/prompt_exec
$lang->misc->feature->promptLearnMore = 'https://www.zentao.net/book/zentaopms/1097.html';
/* Release Date. */
-$lang->misc->releaseDate['20.0'] = '2024-04-15';
+$lang->misc->releaseDate['20.0'] = '2024-04-23';
$lang->misc->releaseDate['18.12'] = '2024-04-12';
$lang->misc->releaseDate['20.0.beta2'] = '2024-03-15';
$lang->misc->releaseDate['18.11'] = '2024-02-28';
@@ -226,7 +226,7 @@ $lang->misc->releaseDate['7.1.stable'] = '2015-03-07';
$lang->misc->releaseDate['6.3.stable'] = '2014-11-07';
/* Release Detail. */
-$lang->misc->feature->all['20.0'][] = array('title' => "", 'desc' => '');
+$lang->misc->feature->all['20.0'][] = array('title' => '重构底层PHP和UI框架,重构核心表单和仪表盘,用户体验全新升级。', 'desc' => '');
$lang->misc->feature->all['18.12'][] = array('title' => '禅道新版本中取消非研发用户的信息和相关判断,技术服务临期增加提醒。实现度量项条目化管理、自定义度量项、基础度量库、一键重算历史度量数据。需求池需求矩阵,路标支持移除已立项需求,运营管理界面增加反馈设置功能,需求池需求搜索条件中增加所属需求池搜索条件。', 'desc' => '');
$lang->misc->feature->all['20.0.beta2'][] = array('title' => '完善细节功能,解已知Bug。', 'desc' => '');
$lang->misc->feature->all['18.11'][] = array('title' => '实现AI小程序功能,实现大屏引用度量项、全局筛选器功能,OR界面实现反馈功能,需求池需求增加关键词,撤回用户需求后需求池需求可以再次分发。', 'desc' => '');
diff --git a/module/mr/config/dtable.php b/module/mr/config/dtable.php
index 6015120b54..15a7169375 100644
--- a/module/mr/config/dtable.php
+++ b/module/mr/config/dtable.php
@@ -80,7 +80,7 @@ $config->mr->taskDtable->fieldList['pri']['show'] = true;
$config->mr->taskDtable->fieldList['assignedTo']['type'] = 'desc';
$config->mr->taskDtable->fieldList['assignedTo']['title'] = $lang->task->assignedTo;
-$config->mr->taskDtable->fieldList['assignedTo']['currentUser'] = $app->user->account;
+$config->mr->taskDtable->fieldList['assignedTo']['currentUser'] = '';
$config->mr->taskDtable->fieldList['assignedTo']['sortType'] = true;
$config->mr->taskDtable->fieldList['assignedTo']['show'] = true;
diff --git a/module/mr/config/form.php b/module/mr/config/form.php
index 78c38476b0..46eb0f0870 100644
--- a/module/mr/config/form.php
+++ b/module/mr/config/form.php
@@ -1,5 +1,4 @@
mr->form = new stdclass();
$config->mr->form->create = array();
$config->mr->form->create['hostID'] = array('type' => 'int', 'required' => true);
@@ -16,7 +15,6 @@ $config->mr->form->create['removeSourceBranch'] = array('type' => 'int', 'req
$config->mr->form->create['squash'] = array('type' => 'int', 'required' => false, 'default' => 0);
$config->mr->form->create['jobID'] = array('type' => 'int', 'required' => false, 'default' => 0);
$config->mr->form->create['description'] = array('type' => 'string', 'required' => false, 'default' => '');
-$config->mr->form->create['createdBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
$config->mr->form->create['createdDate'] = array('type' => 'string', 'required' => false, 'default' => helper::now());
$config->mr->form->edit = array();
@@ -29,5 +27,4 @@ $config->mr->form->edit['removeSourceBranch'] = array('type' => 'int', 'requi
$config->mr->form->edit['squash'] = array('type' => 'int', 'required' => false, 'default' => 0);
$config->mr->form->edit['jobID'] = array('type' => 'int', 'required' => false, 'default' => 0);
$config->mr->form->edit['description'] = array('type' => 'string', 'required' => false, 'default' => '');
-$config->mr->form->edit['editedBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
$config->mr->form->edit['editedDate'] = array('type' => 'string', 'required' => false, 'default' => helper::now());
diff --git a/module/mr/control.php b/module/mr/control.php
index 56518cf143..436952fee3 100644
--- a/module/mr/control.php
+++ b/module/mr/control.php
@@ -196,6 +196,7 @@ class mr extends control
{
$MR = form::data($this->config->mr->form->create)
->setIF($this->post->needCI == 0, 'jobID', 0)
+ ->add('createdBy', $this->app->user->account)
->get();
$result = $this->mr->create($MR);
return $this->send($result);
@@ -260,6 +261,7 @@ class mr extends control
{
$MR = form::data($this->config->mr->form->edit)
->setIF($this->post->needCI == 0, 'jobID', 0)
+ ->add('editedBy', $this->app->user->account)
->get();
$result = $this->mr->update($MRID, $MR);
return $this->send($result);
diff --git a/module/mr/ui/link.html.php b/module/mr/ui/link.html.php
index e333af24c1..fbfa0b4a73 100644
--- a/module/mr/ui/link.html.php
+++ b/module/mr/ui/link.html.php
@@ -59,7 +59,9 @@ $bugCols['title']['link'] = array('module' => 'bug', 'method' => 'view',
$bugs = initTableData($bugs, $bugCols);
$taskCols = $config->mr->taskDtable->fieldList;
-$taskCols['actions'] = $actionMenu;
+$taskCols['assignedTo']['currentUser'] = $app->user->account;
+
+$taskCols['actions'] = $actionMenu;
$taskCols['actions']['list']['unlink']['data-confirm'] = $lang->mr->confirmUnlinkTask;
$taskCols['actions']['list']['unlink']['url'] = $this->createLink('mr', 'unlink', "MRID=$MR->id&productID=$product->id&type=task&linkID={id}&confirm=yes");
diff --git a/module/mr/ui/linktask.html.php b/module/mr/ui/linktask.html.php
index c013175ad3..eefd2514f5 100644
--- a/module/mr/ui/linktask.html.php
+++ b/module/mr/ui/linktask.html.php
@@ -46,6 +46,7 @@ div
$lang->repo->unlinkedTasks . "({$pager->recTotal})"
)
);
+$config->repo->taskDtable->fieldList['assignedTo']['currentUser'] = $app->user->account;
$allTasks = initTableData($allTasks, $config->repo->taskDtable->fieldList);
$data = array_values($allTasks);
dtable
diff --git a/module/my/config/table.php b/module/my/config/table.php
index 22fbb379a5..0090ac95b6 100644
--- a/module/my/config/table.php
+++ b/module/my/config/table.php
@@ -1132,4 +1132,3 @@ unset($config->my->team->dtable->fieldList['actions']);
$config->my->project = new stdclass();
$config->my->project->dtable = $config->project->dtable;
-
diff --git a/module/my/js/audit.ui.js b/module/my/js/audit.ui.js
index 9c54163578..6bf185dad9 100644
--- a/module/my/js/audit.ui.js
+++ b/module/my/js/audit.ui.js
@@ -17,6 +17,10 @@ window.onRenderCell = function(result, {row, col})
delete result[0].props.items[0]['href'];
}
}
+ if(result && col.name == 'title' && row.data.module == 'review')
+ {
+ result[0].props['data-toggle'] = '';
+ }
return result;
}
diff --git a/module/my/js/common.ui.js b/module/my/js/common.ui.js
index dde83f23b8..13705ac3b1 100644
--- a/module/my/js/common.ui.js
+++ b/module/my/js/common.ui.js
@@ -1,20 +1,31 @@
-$(function()
+window.updateMainNavbarBadges = function(options)
{
- if(typeof mode === 'string')
+ const rawMethod = options.rawMethod;
+ const mode = options.mode;
+ const isIPD = options.isIPD;
+ const isMax = options.isMax;
+ const isBiz = options.isBiz;
+ const isOpenedURAndSR = options.isOpenedURAndSR;
+ const todoCount = options.todoCount;
+
+ if(typeof mode !== 'string') return;
+
+ const $mainNavbar = $('#mainNavbar');
+ $mainNavbar.find('.nav-item > a[data-id=' + mode + ']').addClass('active');
+ if(rawMethod == 'work')
{
- const $mainNavbar = $('#mainNavbar');
- $mainNavbar.find('.nav-item > a[data-id=' + mode + ']').addClass('active');
- if(typeof rawMethod === 'string' && rawMethod == 'work')
+ const countMap = {task: 'task', story: 'story', bug: 'bug', testcase: 'case', testtask: 'testtask'};
+ if(isOpenedURAndSR !== 0) $.extend(countMap, {requirement: 'requirement'});
+ if(isBiz !== 0 || isMax !== 0 || isIPD !== 0) $.extend(countMap, {feedback: 'feedback', ticket: 'ticket'});
+ if(isMax !== 0 || isIPD !== 0) $.extend(countMap, {issue: 'issue', risk: 'risk', nc: 'qa', myMeeting: 'meeting'});
+ if(isIPD !== 0) $.extend(countMap, {demand: 'demand'});
+
+ $.each(countMap, (name, key) =>
{
- if($mainNavbar.find('.nav-item > a[data-id=task] .label').length) return false;
-
- const countMap = {task: 'task', story: 'story', bug: 'bug', testcase: 'case', testtask: 'testtask'};
- if(isOpenedURAndSR !== 0) $.extend(countMap, {requirement: 'requirement'});
- if(isBiz !== 0 || isMax !== 0 || isIPD !== 0) $.extend(countMap, {feedback: 'feedback', ticket: 'ticket'});
- if(isMax !== 0 || isIPD !== 0) $.extend(countMap, {issue: 'issue', risk: 'risk', nc: 'qa', myMeeting: 'meeting'});
- if(isIPD !== 0) $.extend(countMap, {demand: 'demand'});
-
- $.each(countMap, (name, key) => $mainNavbar.find('.nav-item > a[data-id=' + name + ']').append('' + todoCount[key] + ''));
- }
+ const $item = $mainNavbar.find('.nav-item > a[data-id=' + name + ']');
+ const $label = $item.find('.label');
+ if($label.length) $label.text(todoCount[key]);
+ else $item.append('' + todoCount[key] + '');
+ });
}
-});
+};
diff --git a/module/my/ui/audit.html.php b/module/my/ui/audit.html.php
index b753a01daf..284f0a9bbb 100644
--- a/module/my/ui/audit.html.php
+++ b/module/my/ui/audit.html.php
@@ -35,10 +35,10 @@ if($rawMethod != 'contribute' || $browseType != 'reviewedbyme') unset($config->m
foreach($reviewList as $review)
{
- $type = $review->type == 'prejectreview' ? 'review' : $review->type;
+ $type = $review->type == 'projectreview' ? 'review' : $review->type;
$isOAObject = strpos(",{$config->my->oaObjectType},", ",$type,") !== false ? true : false;
- $review->module = $review->type;
+ $review->module = $type;
if(isset($lang->{$review->type}->common)) $typeName = $lang->{$review->type}->common;
if($type == 'story') $typeName = $review->storyType == 'story' ? $lang->SRCommon : $lang->URCommon;
@@ -71,23 +71,6 @@ foreach($reviewList as $review)
$review->result = zget($reviewResultList, $review->result);
}
-
- $module = $type;
- $method = 'review';
- $params = "id=$review->id";
-
- if($isOAObject) $method = 'view';
- if(!in_array($module, array('demand', 'story', 'testcase', 'feedback'))) $method = 'approvalreview';
-
- if($module == 'review')
- {
- $method = 'assess';
- $params .= "&from={$rawMethod}";
-
- unset($config->my->audit->actionList['review']['data-toggle']);
- }
-
- $config->my->audit->actionList['review']['url'] = createLink($module, 'view', "id={$review->id}");
}
$reviewList = initTableData($reviewList, $config->my->audit->dtable->fieldList, $this->my);
diff --git a/module/my/ui/header.html.php b/module/my/ui/header.html.php
index 8bce147579..b5f197d2f6 100644
--- a/module/my/ui/header.html.php
+++ b/module/my/ui/header.html.php
@@ -10,10 +10,13 @@ declare(strict_types=1);
*/
namespace zin;
-jsVar('mode', $mode);
-jsVar('todoCount', $todoCount);
-jsVar('isIPD', $isIPD);
-jsVar('isMax', $isMax);
-jsVar('isBiz', $isBiz);
-jsVar('isOpenedURAndSR', $isOpenedURAndSR);
-jsVar('rawMethod', $app->rawMethod);
+$badgesOptions = array();
+$badgesOptions['mode'] = $mode;
+$badgesOptions['todoCount'] = $todoCount;
+$badgesOptions['isIPD'] = $isIPD;
+$badgesOptions['isMax'] = $isMax;
+$badgesOptions['isBiz'] = $isBiz;
+$badgesOptions['isOpenedURAndSR'] = $isOpenedURAndSR;
+$badgesOptions['rawMethod'] = $app->rawMethod;
+
+query('#featureBar')->append(on::init()->call('updateMainNavbarBadges', $badgesOptions));
diff --git a/module/my/ui/task.html.php b/module/my/ui/task.html.php
index 02377dcb63..157bac5005 100644
--- a/module/my/ui/task.html.php
+++ b/module/my/ui/task.html.php
@@ -32,7 +32,6 @@ $footToolbar = array('items' => array
$canBatchClose ? array('text' => $lang->close, 'className' => 'batch-btn ajax-btn', 'data-url' => helper::createLink('task', 'batchClose')) : null
), 'btnProps' => array('size' => 'sm', 'btnType' => 'secondary'));
-if($type == 'bySearch') $type = $this->session->myTaskType;
if($type == 'assignedTo') unset($config->my->task->dtable->fieldList['assignedTo']);
if($type == 'openedBy') unset($config->my->task->dtable->fieldList['openedBy']);
if($type == 'finishedBy') unset($config->my->task->dtable->fieldList['finishedBy']);
diff --git a/module/my/ui/todo.html.php b/module/my/ui/todo.html.php
index 0f6306a26b..46d5a1cee7 100644
--- a/module/my/ui/todo.html.php
+++ b/module/my/ui/todo.html.php
@@ -70,6 +70,9 @@ toolbar
setClass('btn primary'),
set::icon('plus'),
set::url(helper::createLink('todo', 'batchCreate')),
+ setData('toggle', 'modal'),
+ setData('size', 'lg'),
+ setData('class-name', 'batchCreateTodoModal'),
$lang->todo->batchCreate
),
$canCreate && $canBatchCreate ? dropdown
@@ -78,7 +81,7 @@ toolbar
set::items(array
(
array('text' => $lang->todo->create, 'url' => helper::createLink('todo', 'create'), 'data-toggle' => 'modal'),
- array('text' => $lang->todo->batchCreate, 'url' => helper::createLink('todo', 'batchCreate'), 'data-toggle' => 'modal', 'data-size' => 'lg')
+ array('text' => $lang->todo->batchCreate, 'url' => helper::createLink('todo', 'batchCreate'), 'data-toggle' => 'modal', 'data-size' => 'lg', 'data-class-name' => 'batchCreateTodoModal')
)),
set::placement('bottom-end')
) : null
diff --git a/module/personnel/css/addwhitelist.ui.css b/module/personnel/css/addwhitelist.ui.css
index 30a26251fd..f43fb1b66a 100644
--- a/module/personnel/css/addwhitelist.ui.css
+++ b/module/personnel/css/addwhitelist.ui.css
@@ -1,5 +1,6 @@
.add-whitelist-panel .panel-heading .select-dept-box, .add-whitelist-panel .select-object-box {display: inline-flex;}
.add-whitelist-panel .panel-heading .select-dept-box .picker, .add-whitelist-panel .select-object-box .picker {width: 248px;}
-.add-whitelist-panel form {width: 280px; min-width: unset;}
.add-whitelist-panel .panel-body .toolbar.form-actions {width: 280px; margin-top: 1.5rem;}
.add-whitelist-panel .form-batch-ditto-control .form-control {padding-right: 0.5rem;}
+.add-whitelist-panel .form-batch-table {width: 300px; min-width: unset;}
+.add-whitelist-panel .form-batch-container {max-height: calc(100vh - 280px)!important;}
diff --git a/module/product/js/browse.ui.js b/module/product/js/browse.ui.js
index 748ef8138b..b21a019315 100644
--- a/module/product/js/browse.ui.js
+++ b/module/product/js/browse.ui.js
@@ -37,6 +37,14 @@ $(document).off('click', '.batchUnlinkStory').on('click', '.batchUnlinkStory', f
const checkedList = dtable.$.getChecks();
if(!checkedList.length) return;
+ /* 处理选中的子需求的ID,截取-后的子需求ID。*/
+ /* Process selected child story ID. */
+ for(i in checkedList)
+ {
+ const storyID = checkedList[i];
+ if(storyID.includes('-')) checkedList[i] = storyID.slice(storyID.indexOf('-') + 1);
+ }
+
let batchUnlinkStoryURL = $.createLink('projectstory', 'batchUnlinkStory', 'projectID=' + projectID + '&stories=' + encodeURIComponent(checkedList.join(',')));
$.get(batchUnlinkStoryURL, function(data)
{
diff --git a/module/product/ui/browse.html.php b/module/product/ui/browse.html.php
index c6149aa899..5e99174ec8 100644
--- a/module/product/ui/browse.html.php
+++ b/module/product/ui/browse.html.php
@@ -327,8 +327,8 @@ featureBar
toolbar
(
- (!hasPriv('story', 'report') || !$productID) ? null : item(set(array('id' => 'reportBtn', 'text' => $lang->story->report->common, 'icon' => 'bar-chart', 'class' => 'ghost', 'url' => helper::createLink('story', 'report', "productID=$productID&branchID=$branch&storyType=$storyType&browseType=$browseType&moduleID=$moduleID&chartType=pie&projectID=$projectID") . ($app->tab == 'project' ? '#app=project' : '')))),
- !hasPriv('story', 'export') ? null : item(set(array('id' => 'exportBtn', 'text' => $lang->export, 'icon' => 'export', 'class' => 'ghost', 'url' => helper::createLink('story', 'export', "productID=$productID&orderBy=$orderBy&executionID=$projectID&browseType=$browseType&storyType=$storyType"), 'data-toggle' => 'modal'))),
+ (!hasPriv('story', 'report') || !$productID) ? null : item(set(array('id' => 'reportBtn', 'icon' => 'bar-chart', 'class' => 'ghost', 'url' => helper::createLink('story', 'report', "productID=$productID&branchID=$branch&storyType=$storyType&browseType=$browseType&moduleID=$moduleID&chartType=pie&projectID=$projectID") . ($app->tab == 'project' ? '#app=project' : '')))),
+ !hasPriv('story', 'export') ? null : item(set(array('id' => 'exportBtn', 'icon' => 'export', 'class' => 'ghost', 'url' => helper::createLink('story', 'export', "productID=$productID&orderBy=$orderBy&executionID=$projectID&browseType=$browseType&storyType=$storyType"), 'data-toggle' => 'modal'))),
$fnBuildCreateStoryButton(),
$fnBuildLinkStoryButton()
);
diff --git a/module/productplan/config/form.php b/module/productplan/config/form.php
index 5a702f7bf9..081af7a5fd 100644
--- a/module/productplan/config/form.php
+++ b/module/productplan/config/form.php
@@ -1,5 +1,5 @@
productplan->form = new stdclass();
$config->productplan->form->batchEdit = array();
$config->productplan->form->batchEdit['id'] = array('type' => 'int', 'control' => 'text', 'width' => '60px', 'name' => 'id', 'label' => $lang->idAB, 'required' => false, 'default' => 0, 'base' => true);
@@ -9,23 +9,20 @@ $config->productplan->form->batchEdit['status'] = array('type' => 'string', 'con
$config->productplan->form->batchEdit['begin'] = array('type' => 'date', 'control' => 'date', 'width' => '128px', 'name' => 'begin', 'label' => $lang->productplan->begin, 'required' => false, 'default' => '');
$config->productplan->form->batchEdit['end'] = array('type' => 'date', 'control' => 'date', 'width' => '128px', 'name' => 'end', 'label' => $lang->productplan->end, 'required' => false, 'default' => '');
-$now = helper::now();
-$config->productplan->form->create['parent'] = array('type' => 'int', 'required' => false, 'default' => 0);
-$config->productplan->form->create['branch'] = array('type' => 'array', 'required' => false, 'default' => '0', 'filter' => 'join');
-$config->productplan->form->create['title'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
-$config->productplan->form->create['begin'] = array('type' => 'date', 'required' => false, 'default' => null);
-$config->productplan->form->create['end'] = array('type' => 'date', 'required' => false, 'default' => null);
-$config->productplan->form->create['desc'] = array('type' => 'string', 'required' => false, 'default' => '', 'control' => 'editor');
-$config->productplan->form->create['product'] = array('type' => 'int', 'required' => false, 'default' => 0);
-$config->productplan->form->create['createdBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
-$config->productplan->form->create['createdDate'] = array('type' => 'datetime ', 'required' => false, 'default' => $now);
-$config->productplan->form->create['order'] = array('type' => 'string', 'required' => false, 'default' => 0);
+$config->productplan->form->create['parent'] = array('type' => 'int', 'required' => false, 'default' => 0);
+$config->productplan->form->create['branch'] = array('type' => 'array', 'required' => false, 'default' => '0', 'filter' => 'join');
+$config->productplan->form->create['title'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
+$config->productplan->form->create['begin'] = array('type' => 'date', 'required' => false, 'default' => null);
+$config->productplan->form->create['end'] = array('type' => 'date', 'required' => false, 'default' => null);
+$config->productplan->form->create['desc'] = array('type' => 'string', 'required' => false, 'default' => '', 'control' => 'editor');
+$config->productplan->form->create['product'] = array('type' => 'int', 'required' => false, 'default' => 0);
+$config->productplan->form->create['order'] = array('type' => 'string', 'required' => false, 'default' => 0);
-$config->productplan->form->edit['parent'] = array('type' => 'int', 'required' => false, 'default' => 0);
-$config->productplan->form->edit['branch'] = array('type' => 'array', 'required' => false, 'default' => '0', 'filter' => 'join');
-$config->productplan->form->edit['title'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
-$config->productplan->form->edit['begin'] = array('type' => 'date', 'required' => false, 'default' => null);
-$config->productplan->form->edit['end'] = array('type' => 'date', 'required' => false, 'default' => null);
-$config->productplan->form->edit['desc'] = array('type' => 'string', 'required' => false, 'default' => '', 'control' => 'editor');
-$config->productplan->form->edit['product'] = array('type' => 'int', 'required' => false, 'default' => 0);
-$config->productplan->form->edit['status'] = array('type' => 'string', 'required' => false, 'default' => '');
+$config->productplan->form->edit['parent'] = array('type' => 'int', 'required' => false, 'default' => 0);
+$config->productplan->form->edit['branch'] = array('type' => 'array', 'required' => false, 'default' => '0', 'filter' => 'join');
+$config->productplan->form->edit['title'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
+$config->productplan->form->edit['begin'] = array('type' => 'date', 'required' => false, 'default' => null);
+$config->productplan->form->edit['end'] = array('type' => 'date', 'required' => false, 'default' => null);
+$config->productplan->form->edit['desc'] = array('type' => 'string', 'required' => false, 'default' => '', 'control' => 'editor');
+$config->productplan->form->edit['product'] = array('type' => 'int', 'required' => false, 'default' => 0);
+$config->productplan->form->edit['status'] = array('type' => 'string', 'required' => false, 'default' => '');
diff --git a/module/productplan/control.php b/module/productplan/control.php
index d22ffcfe05..c87d8b756e 100644
--- a/module/productplan/control.php
+++ b/module/productplan/control.php
@@ -69,7 +69,10 @@ class productplan extends control
{
if(!empty($_POST))
{
- $planData = form::data()->get();
+ $planData = form::data()
+ ->add('createdBy', $this->app->user->account)
+ ->add('createdDate', helper::now())
+ ->get();
$planID = $this->productplan->create($planData, (int)$this->post->future);
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
$this->loadModel('action')->create('productplan', $planID, 'opened');
diff --git a/module/program/js/kanban.ui.js b/module/program/js/kanban.ui.js
index 7c7bc9fa3b..be375d039f 100644
--- a/module/program/js/kanban.ui.js
+++ b/module/program/js/kanban.ui.js
@@ -20,7 +20,7 @@ window.getItem = function(info)
{
info.item.titleUrl = $.createLink('execution', 'task', `id=${info.item.id}`);
}
- else if(info.item.type == 'doingProjects' && privs.canViewProject)
+ else if(['waitingProjects', 'doingProjects'].includes(info.item.type) && privs.canViewProject)
{
info.item.titleUrl = $.createLink('project', 'index', `id=${info.item.id}`);
}
diff --git a/module/programplan/zen.php b/module/programplan/zen.php
index 0c44f09e6e..d6faad3713 100644
--- a/module/programplan/zen.php
+++ b/module/programplan/zen.php
@@ -89,6 +89,8 @@ class programplanZen extends programplan
if(!empty($this->config->setCode) && empty($plan->code) && strpos(",{$this->config->execution->create->requiredFields},", ',code,') !== false) dao::$errors["code[{$rowID}]"] = sprintf($this->lang->error->notempty, $plan->type == 'stage' ? $this->lang->execution->code : $this->lang->code);
}
+ if(strpos(",{$this->config->programplan->list->customCreateFields},", ',percent,') === false) $plan->percent = 0;
+
$totalPercent += $plan->percent;
$names[] = $plan->name;
if(!empty($plan->code)) $codes[] = $plan->code;
diff --git a/module/project/js/execution.ui.js b/module/project/js/execution.ui.js
index 5396805670..65bb82f909 100644
--- a/module/project/js/execution.ui.js
+++ b/module/project/js/execution.ui.js
@@ -45,7 +45,7 @@ window.onRenderCell = function(result, {col, row})
if(typeof executionType != 'undefined') executionName += `${executionType} `;
executionName += '';
- executionName += (!row.data.isParent) ? `
${row.data.name}` : row.data.name;
+ executionName += (executionType !== undefined && !row.data.isParent) ? `
${row.data.name}` : row.data.name;
executionName += '
';
executionName += (row.data.end != '' && today > row.data.end) ? `${delayed}` : '';
diff --git a/module/project/ui/build.html.php b/module/project/ui/build.html.php
index 2f4d0e1893..83a3cca85a 100644
--- a/module/project/ui/build.html.php
+++ b/module/project/ui/build.html.php
@@ -49,8 +49,12 @@ jsVar('integratedTip', $lang->build->integrated);
jsVar('deletedTip', $lang->build->deleted);
$fieldList = $config->build->dtable->fieldList;
-if($project->model == 'kanban' && $this->app->rawModule == 'projectbuild') unset($fieldList['actions']['actionsMap']['createTest']['data-app']);
-$builds = initTableData($builds, $fieldList, $app->control->build);
+if($project->model == 'kanban' && $app->rawModule == 'projectbuild')
+{
+ unset($fieldList['actions']['list']['createTest']['data-app']);
+ $fieldList['actions']['list']['viewBug']['url'] = $config->build->actionList['projectBugList']['url'];
+}
+$builds = initTableData($builds, $fieldList, $this->build);
dtable
(
diff --git a/module/repo/config/dtable.php b/module/repo/config/dtable.php
index 9c158e3d0e..fb6e76a32e 100644
--- a/module/repo/config/dtable.php
+++ b/module/repo/config/dtable.php
@@ -213,7 +213,7 @@ $config->repo->taskDtable->fieldList['assignedTo']['type'] = 'user';
$config->repo->taskDtable->fieldList['assignedTo']['sortType'] = true;
$config->repo->taskDtable->fieldList['assignedTo']['show'] = true;
$config->repo->taskDtable->fieldList['assignedTo']['group'] = 3;
-$config->repo->taskDtable->fieldList['assignedTo']['currentUser'] = $app->user->account;
+$config->repo->taskDtable->fieldList['assignedTo']['currentUser'] = '';
$config->repo->taskDtable->fieldList['assignedTo']['title'] = $lang->task->assignedTo;
$config->repo->taskDtable->fieldList['assignedTo']['assignLink'] = array('module' => 'task', 'method' => 'assignTo', 'params' => 'executionID={execution}&taskID={id}');
diff --git a/module/repo/model.php b/module/repo/model.php
index f8b869a32f..5a536c25b3 100644
--- a/module/repo/model.php
+++ b/module/repo/model.php
@@ -1855,8 +1855,8 @@ class repoModel extends model
$accountPairs = array();
$userList = $this->loadModel($repo->SCM)->apiGetUsers($repo->gitService);
- $acountIDPairs = $this->loadModel('pipeline')->getUserBindedPairs($repo->gitService, strtolower($repo->SCM), 'openID,account');
- foreach($userList as $gitlabUser) $accountPairs[$gitlabUser->realname] = zget($acountIDPairs, $gitlabUser->id, '');
+ $accountIDPairs = $this->loadModel('pipeline')->getUserBindedPairs($repo->gitService, strtolower($repo->SCM), 'openID,account');
+ foreach($userList as $gitlabUser) $accountPairs[$gitlabUser->realname] = zget($accountIDPairs, $gitlabUser->id, '');
foreach($data->commits as $commit)
{
diff --git a/module/repo/ui/linktask.html.php b/module/repo/ui/linktask.html.php
index 6edb8a0837..3dcede34dc 100644
--- a/module/repo/ui/linktask.html.php
+++ b/module/repo/ui/linktask.html.php
@@ -44,6 +44,7 @@ div
$lang->repo->unlinkedTasks . "({$pager->recTotal})"
)
);
+$config->repo->taskDtable->fieldList['assignedTo']['currentUser'] = $app->user->account;
$allTasks = initTableData($allTasks, $config->repo->taskDtable->fieldList);
$data = array_values($allTasks);
dtable
diff --git a/module/screen/css/browse.ui.css b/module/screen/css/browse.ui.css
index 9a42948bd6..5f205ecacc 100644
--- a/module/screen/css/browse.ui.css
+++ b/module/screen/css/browse.ui.css
@@ -1 +1,2 @@
#firstGuide .py-6 {padding: 24px !important;}
+#pick-pop-dropmenu-menu{background-color: rgba(255, 255, 255, 1)!important}
diff --git a/module/serverroom/config/form.php b/module/serverroom/config/form.php
index 856236fc00..468f98599c 100644
--- a/module/serverroom/config/form.php
+++ b/module/serverroom/config/form.php
@@ -1,5 +1,4 @@
serverroom->form = new stdclass();
$config->serverroom->form->create['name'] = array('type' => 'string', 'required' => true, 'default' => '');
$config->serverroom->form->create['bandwidth'] = array('type' => 'string', 'required' => false, 'default' => '');
@@ -7,7 +6,6 @@ $config->serverroom->form->create['city'] = array('type' => 'string', 're
$config->serverroom->form->create['line'] = array('type' => 'string', 'required' => true, 'default' => '');
$config->serverroom->form->create['provider'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->serverroom->form->create['owner'] = array('type' => 'string', 'required' => false, 'default' => '');
-$config->serverroom->form->create['createdBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
$config->serverroom->form->create['createdDate'] = array('type' => 'string', 'required' => false, 'default' => helper::now());
$config->serverroom->form->edit['name'] = array('type' => 'string', 'required' => true, 'default' => '');
@@ -16,5 +14,4 @@ $config->serverroom->form->edit['city'] = array('type' => 'string', 'requi
$config->serverroom->form->edit['line'] = array('type' => 'string', 'required' => true, 'default' => '');
$config->serverroom->form->edit['provider'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->serverroom->form->edit['owner'] = array('type' => 'string', 'required' => false, 'default' => '');
-$config->serverroom->form->edit['editedBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
$config->serverroom->form->edit['editedDate'] = array('type' => 'string', 'required' => false, 'default' => helper::now());
diff --git a/module/serverroom/control.php b/module/serverroom/control.php
index ec989872f0..6e6043d4d3 100644
--- a/module/serverroom/control.php
+++ b/module/serverroom/control.php
@@ -62,7 +62,9 @@ class serverroom extends control
{
if($_POST)
{
- $room = form::data($this->config->serverroom->form->create)->get();
+ $room = form::data($this->config->serverroom->form->create)
+ ->add('createdBy', $this->app->user->account)
+ ->get();
$createID = $this->serverroom->create($room);
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
@@ -87,7 +89,9 @@ class serverroom extends control
{
if($_POST)
{
- $room = form::data($this->config->serverroom->form->edit)->get();
+ $room = form::data($this->config->serverroom->form->edit)
+ ->add('editedBy', $this->app->user->account)
+ ->get();
$changes = $this->serverroom->update($roomID, $room);
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
diff --git a/module/sonarqube/config/form.php b/module/sonarqube/config/form.php
index 72df3c8284..98b208cbe9 100644
--- a/module/sonarqube/config/form.php
+++ b/module/sonarqube/config/form.php
@@ -1,5 +1,4 @@
sonarqube->form = new stdclass();
$config->sonarqube->form->create = array();
$config->sonarqube->form->create['appType'] = array('type' => 'string', 'required' => true, 'default' => 'sonarqube');
@@ -8,7 +7,6 @@ $config->sonarqube->form->create['name'] = array('type' => 'string', 'req
$config->sonarqube->form->create['url'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
$config->sonarqube->form->create['account'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
$config->sonarqube->form->create['password'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
-$config->sonarqube->form->create['createdBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
$config->sonarqube->form->create['createdDate'] = array('type' => 'string', 'required' => false, 'default' => helper::now());
$config->sonarqube->form->create['private'] = array('type' => 'string', 'required' => false, 'default' => uniqid());
@@ -17,7 +15,6 @@ $config->sonarqube->form->edit['name'] = array('type' => 'string', 'requir
$config->sonarqube->form->edit['url'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
$config->sonarqube->form->edit['account'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
$config->sonarqube->form->edit['password'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim');
-$config->sonarqube->form->edit['editedBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
$config->sonarqube->form->edit['editedDate'] = array('type' => 'string', 'required' => false, 'default' => helper::now());
$config->sonarqube->form->createProject['projectName'] = array('type' => 'string', 'required' => true);
diff --git a/module/sonarqube/control.php b/module/sonarqube/control.php
index 96077f6779..91ed11686b 100644
--- a/module/sonarqube/control.php
+++ b/module/sonarqube/control.php
@@ -137,7 +137,9 @@ class sonarqube extends control
{
if($_POST)
{
- $sonarqube = form::data($this->config->sonarqube->form->create)->get();
+ $sonarqube = form::data($this->config->sonarqube->form->create)
+ ->add('createdBy', $this->app->user->account)
+ ->get();
$this->checkToken($sonarqube, 0);
$sonarqubeID = $this->loadModel('pipeline')->create($sonarqube);
@@ -199,7 +201,9 @@ class sonarqube extends control
$oldSonarQube->password = $this->post->password;
$this->checkToken($oldSonarQube, $sonarqubeID);
- $sonarqube = form::data($this->config->sonarqube->form->edit)->get();
+ $sonarqube = form::data($this->config->sonarqube->form->edit)
+ ->add('editedBy', $this->app->user->account)
+ ->get();
$sonarqube->token = $oldSonarQube->token;
$this->pipeline->update($sonarqubeID, $sonarqube);
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
diff --git a/module/story/config/form.php b/module/story/config/form.php
index 0c5ebadb4d..f0f40c56b2 100644
--- a/module/story/config/form.php
+++ b/module/story/config/form.php
@@ -73,26 +73,26 @@ $config->story->form->edit['duplicateStory'] = array('type' => 'int', 'contr
$config->story->form->edit['childStories'] = array('type' => 'array', 'control' => 'select', 'required' => false, 'default' => '', 'options' => array(), 'filter' => 'join');
$config->story->form->batchCreate = array();
-$config->story->form->batchCreate['branch'] = array('ditto' => true, 'type' => 'int', 'control' => 'select', 'required' => false, 'width' => '200px', 'default' => 0, 'options' => array());
-$config->story->form->batchCreate['module'] = array('ditto' => true, 'type' => 'int', 'control' => 'select', 'required' => false, 'width' => '200px', 'default' => 0, 'options' => array());
-$config->story->form->batchCreate['plan'] = array('ditto' => true, 'type' => 'int', 'control' => 'select', 'required' => false, 'width' => '200px', 'default' => 0, 'options' => array());
-$config->story->form->batchCreate['assignedTo'] = array('ditto' => false, 'type' => 'string', 'control' => 'select', 'required' => false, 'width' => '136px', 'default' => '', 'options' => 'users');
-$config->story->form->batchCreate['region'] = array('ditto' => false, 'type' => 'int', 'control' => 'select', 'required' => false, 'width' => '136px', 'default' => 0, 'options' => array());
-$config->story->form->batchCreate['lane'] = array('ditto' => false, 'type' => 'int', 'control' => 'select', 'required' => false, 'width' => '136px', 'default' => 0, 'options' => array());
-$config->story->form->batchCreate['title'] = array('ditto' => false, 'type' => 'string', 'control' => 'text', 'required' => true, 'width' => '240px', 'default' => '', 'filter' => 'trim', 'base' => true);
-$config->story->form->batchCreate['color'] = array('ditto' => false, 'type' => 'string', 'control' => 'text', 'required' => false, 'default' => '', 'filter' => 'trim');
-$config->story->form->batchCreate['spec'] = array('ditto' => false, 'type' => 'string', 'control' => 'text', 'required' => false, 'width' => '240px', 'default' => '');
-$config->story->form->batchCreate['source'] = array('ditto' => true, 'type' => 'string', 'control' => 'select', 'required' => false, 'width' => '200px', 'default' => '', 'options' => $lang->story->sourceList);
-$config->story->form->batchCreate['sourceNote'] = array('ditto' => false, 'type' => 'string', 'control' => 'text', 'required' => false, 'width' => '200px', 'default' => '', 'filter' => 'trim');
-$config->story->form->batchCreate['verify'] = array('ditto' => false, 'type' => 'string', 'control' => 'text', 'required' => false, 'width' => '200px', 'default' => '');
-$config->story->form->batchCreate['category'] = array('ditto' => true, 'type' => 'string', 'control' => 'select', 'required' => false, 'width' => '160px', 'default' => 'feature', 'options' => $lang->story->categoryList);
-$config->story->form->batchCreate['pri'] = array('ditto' => false, 'type' => 'int', 'control' => 'select', 'required' => false, 'width' => '92px', 'default' => $config->story->defaultPriority, 'options' => $lang->story->priList);
-$config->story->form->batchCreate['estimate'] = array('ditto' => false, 'type' => 'float', 'control' => 'text', 'required' => false, 'width' => '76px', 'default' => 0);
-$config->story->form->batchCreate['reviewer'] = array('ditto' => true, 'type' => 'array', 'control' => 'select', 'required' => false, 'width' => '136px', 'default' => '', 'multiple' => true, 'options' => array());
-$config->story->form->batchCreate['URS'] = array('ditto' => false, 'type' => 'array', 'control' => 'select', 'required' => false, 'width' => '200px', 'default' => '', 'multiple' => true);
-$config->story->form->batchCreate['parent'] = array('ditto' => false, 'type' => 'int', 'control' => 'select', 'required' => false, 'width' => '200px', 'default' => '');
-$config->story->form->batchCreate['keywords'] = array('ditto' => false, 'type' => 'string', 'control' => 'text', 'required' => false, 'width' => '200px', 'default' => '');
-$config->story->form->batchCreate['mailto'] = array('ditto' => false, 'type' => 'array', 'control' => 'select', 'required' => false, 'width' => '200px', 'default' => array(''), 'multiple' => true, 'options' => 'users', 'filter' => 'join');
+$config->story->form->batchCreate['branch'] = array('ditto' => true, 'type' => 'int', 'control' => 'select', 'required' => false, 'width' => '200px', 'default' => 0, 'options' => array());
+$config->story->form->batchCreate['module'] = array('ditto' => true, 'type' => 'int', 'control' => 'select', 'required' => false, 'width' => '200px', 'default' => 0, 'options' => array());
+$config->story->form->batchCreate['plan'] = array('ditto' => true, 'type' => 'int', 'control' => 'select', 'required' => false, 'width' => '200px', 'default' => 0, 'options' => array());
+$config->story->form->batchCreate['assignedTo'] = array('ditto' => false, 'type' => 'string', 'control' => 'select', 'required' => false, 'width' => '136px', 'default' => '', 'options' => 'users');
+$config->story->form->batchCreate['region'] = array('ditto' => false, 'type' => 'int', 'control' => 'select', 'required' => false, 'width' => '136px', 'default' => 0, 'options' => array());
+$config->story->form->batchCreate['lane'] = array('ditto' => false, 'type' => 'int', 'control' => 'select', 'required' => false, 'width' => '136px', 'default' => 0, 'options' => array());
+$config->story->form->batchCreate['title'] = array('ditto' => false, 'type' => 'string', 'control' => 'text', 'required' => true, 'width' => '240px', 'default' => '', 'filter' => 'trim', 'base' => true);
+$config->story->form->batchCreate['color'] = array('ditto' => false, 'type' => 'string', 'control' => 'text', 'required' => false, 'default' => '', 'filter' => 'trim');
+$config->story->form->batchCreate['spec'] = array('ditto' => false, 'type' => 'string', 'control' => 'text', 'required' => false, 'width' => '240px', 'default' => '');
+$config->story->form->batchCreate['source'] = array('ditto' => true, 'type' => 'string', 'control' => 'select', 'required' => false, 'width' => '200px', 'default' => '', 'options' => $lang->story->sourceList);
+$config->story->form->batchCreate['sourceNote'] = array('ditto' => false, 'type' => 'string', 'control' => 'text', 'required' => false, 'width' => '200px', 'default' => '', 'filter' => 'trim');
+$config->story->form->batchCreate['verify'] = array('ditto' => false, 'type' => 'string', 'control' => 'text', 'required' => false, 'width' => '200px', 'default' => '');
+$config->story->form->batchCreate['category'] = array('ditto' => true, 'type' => 'string', 'control' => 'select', 'required' => false, 'width' => '160px', 'default' => 'feature', 'options' => $lang->story->categoryList);
+$config->story->form->batchCreate['pri'] = array('ditto' => false, 'type' => 'int', 'control' => 'priPicker', 'required' => false, 'width' => '92px', 'default' => $config->story->defaultPriority, 'options' => $lang->story->priList);
+$config->story->form->batchCreate['estimate'] = array('ditto' => false, 'type' => 'float', 'control' => 'text', 'required' => false, 'width' => '76px', 'default' => 0);
+$config->story->form->batchCreate['reviewer'] = array('ditto' => true, 'type' => 'array', 'control' => 'select', 'required' => false, 'width' => '136px', 'default' => '', 'multiple' => true, 'options' => array());
+$config->story->form->batchCreate['URS'] = array('ditto' => false, 'type' => 'array', 'control' => 'select', 'required' => false, 'width' => '200px', 'default' => '', 'multiple' => true);
+$config->story->form->batchCreate['parent'] = array('ditto' => false, 'type' => 'int', 'control' => 'select', 'required' => false, 'width' => '200px', 'default' => '');
+$config->story->form->batchCreate['keywords'] = array('ditto' => false, 'type' => 'string', 'control' => 'text', 'required' => false, 'width' => '200px', 'default' => '');
+$config->story->form->batchCreate['mailto'] = array('ditto' => false, 'type' => 'array', 'control' => 'select', 'required' => false, 'width' => '200px', 'default' => array(''), 'multiple' => true, 'options' => 'users', 'filter' => 'join');
$config->story->form->batchEdit = array();
$config->story->form->batchEdit['branch'] = array('type' => 'int', 'width' => '200px', 'control' => 'picker', 'required' => false, 'default' => 0, 'options' => array());
diff --git a/module/story/ui/edit.html.php b/module/story/ui/edit.html.php
index 6bcc6c00c4..01758319ab 100644
--- a/module/story/ui/edit.html.php
+++ b/module/story/ui/edit.html.php
@@ -394,13 +394,13 @@ detailBody
item
(
set::name(' '),
- !empty($story->linkStoryTitles) ? h::ul
+ !empty($story->linkStoryTitles) ? div
(
setID('linkedStories'),
array_values(array_map(function($linkStoryID, $linkStoryTitle) use($story)
{
$linkStoryField = $story->type == 'story' ? 'linkStories' : 'linkRequirements';
- return h::li
+ return div
(
set::title($linkStoryTitle),
checkbox(set::name($linkStoryField . '[]'), set::rootClass('inline'), set::value($linkStoryID), set::checked(true)),
diff --git a/module/story/ui/view.html.php b/module/story/ui/view.html.php
index 333663caca..b817b84583 100644
--- a/module/story/ui/view.html.php
+++ b/module/story/ui/view.html.php
@@ -195,7 +195,7 @@ foreach($actions as $key => $action)
continue;
}
- if(isset($action['url'])) $actions[$key]['url'] = str_replace(array('{id}', '{type}', '{product}', '{branch}', '{module}', '{execution}'), array($story->id, $story->type, $story->product, $story->branch, $story->module, $executionID), $action['url']);
+ if(isset($action['url'])) $actions[$key]['url'] = str_replace(array('{id}', '{type}', '{product}', '{branch}', '{module}', '{execution}'), array($story->id, $story->type, $story->product, $story->branch, $story->module, isset($projectID) ? $projectID : 0), $action['url']);
if(isset($action['items']))
{
foreach($action['items'] as $itemKey => $itemAction)
diff --git a/module/story/zen.php b/module/story/zen.php
index 32b912990d..7ed163e463 100644
--- a/module/story/zen.php
+++ b/module/story/zen.php
@@ -1696,6 +1696,11 @@ class storyZen extends story
return $this->session->storyList;
}
+ if($this->app->tab == 'product')
+ {
+ return $this->createLink('product', 'browse', "productID=$productID&branch=$branch&browseType=unclosed&queryID=0&storyType=$storyType");
+ }
+
helper::setcookie('storyModule', '0', 0);
if($this->session->storyList) return $this->session->storyList;
return $this->createLink('product', 'browse', "productID=$productID&branch=$branch&browseType=unclosed&queryID=0&storyType=$storyType");
diff --git a/module/task/config/form.php b/module/task/config/form.php
index 79fde6f843..d3d589f6ca 100644
--- a/module/task/config/form.php
+++ b/module/task/config/form.php
@@ -6,6 +6,8 @@ $config->task->form->team = new stdclass();
$config->task->form->testTask = new stdclass();
global $app;
+$account = isset($app->user->account) ? $app->user->account : '';
+
$config->task->form->create = array();
$config->task->form->create['execution'] = array('type' => 'int', 'required' => true, 'default' => 0);
$config->task->form->create['type'] = array('type' => 'string', 'required' => true, 'default' => '');
@@ -22,7 +24,7 @@ $config->task->form->create['estStarted'] = array('type' => 'date', 'requi
$config->task->form->create['deadline'] = array('type' => 'date', 'required' => false, 'default' => null);
$config->task->form->create['vision'] = array('type' => 'string', 'required' => false, 'default' => $config->vision);
$config->task->form->create['status'] = array('type' => 'string', 'required' => false, 'default' => 'wait');
-$config->task->form->create['openedBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
+$config->task->form->create['openedBy'] = array('type' => 'string', 'required' => false, 'default' => $account);
$config->task->form->create['openedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
$config->task->form->create['version'] = array('type' => 'int', 'required' => false, 'default' => 1);
$config->task->form->create['storyVersion'] = array('type' => 'int', 'required' => false, 'default' => 1);
@@ -34,7 +36,7 @@ $config->task->form->assign = array();
$config->task->form->assign['assignedTo'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->task->form->assign['assignedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
$config->task->form->assign['left'] = array('type' => 'float', 'required' => true);
-$config->task->form->assign['lastEditedBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
+$config->task->form->assign['lastEditedBy'] = array('type' => 'string', 'required' => false, 'default' => $account);
$config->task->form->assign['lastEditedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
$config->task->form->cancel = array();
@@ -76,7 +78,7 @@ $config->task->form->edit['canceledDate'] = array('type' => 'datetime', 'requi
$config->task->form->edit['closedBy'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->task->form->edit['closedReason'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->task->form->edit['closedDate'] = array('type' => 'datetime', 'required' => false, 'default' => null);
-$config->task->form->edit['lastEditedBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
+$config->task->form->edit['lastEditedBy'] = array('type' => 'string', 'required' => false, 'default' => $account);
$config->task->form->edit['lastEditedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
$config->task->form->edit['deleteFiles'] = array('type' => 'array', 'required' => false, 'default' => array());
@@ -103,7 +105,7 @@ $config->task->form->batchedit['consumed'] = array('type' => 'float', '
$config->task->form->batchedit['left'] = array('type' => 'float', 'required' => false, 'default' => 0);
$config->task->form->batchedit['estStarted'] = array('type' => 'date', 'required' => false, 'default' => null);
$config->task->form->batchedit['deadline'] = array('type' => 'date', 'required' => false, 'default' => null);
-$config->task->form->batchedit['lastEditedBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
+$config->task->form->batchedit['lastEditedBy'] = array('type' => 'string', 'required' => false, 'default' => $account);
$config->task->form->batchedit['lastEditedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
$config->task->form->batchcreate = array();
@@ -122,12 +124,12 @@ $config->task->form->batchcreate['deadline'] = array('type' => 'date',
$config->task->form->batchcreate['desc'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->task->form->batchcreate['pri'] = array('type' => 'int', 'required' => false, 'default' => 0);
$config->task->form->batchcreate['lane'] = array('type' => 'int', 'required' => false, 'default' => 0);
-$config->task->form->batchcreate['openedBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
+$config->task->form->batchcreate['openedBy'] = array('type' => 'string', 'required' => false, 'default' => $account);
$config->task->form->batchcreate['openedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
$config->task->form->batchcreate['vision'] = array('type' => 'string', 'required' => false, 'default' => $config->vision);
$config->task->form->pause = array();
-$config->task->form->pause['lastEditedBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
+$config->task->form->pause['lastEditedBy'] = array('type' => 'string', 'required' => false, 'default' => $account);
$config->task->form->pause['lastEditedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
$config->task->form->pause['status'] = array('type' => 'string', 'required' => false, 'default' => 'pause');
@@ -139,7 +141,7 @@ $config->task->form->activate['comment'] = array('type' => 'string', 'r
$config->task->form->activate['status'] = array('type' => 'string', 'required' => false, 'default' => 'doing');
$config->task->form->activate['activatedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
$config->task->form->activate['assignedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
-$config->task->form->activate['lastEditedBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
+$config->task->form->activate['lastEditedBy'] = array('type' => 'string', 'required' => false, 'default' => $account);
$config->task->form->activate['lastEditedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
$config->task->form->activate['finishedBy'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->task->form->activate['canceledBy'] = array('type' => 'string', 'required' => false, 'default' => '');
@@ -155,7 +157,7 @@ $config->task->form->start['consumed'] = array('type' => 'float', 'requ
$config->task->form->start['left'] = array('type' => 'float', 'required' => false, 'default' => 0);
$config->task->form->start['assignedTo'] = array('type' => 'string', 'required' => false, 'default' => '');
$config->task->form->start['realStarted'] = array('type' => 'datetime', 'required' => false, 'default' => null);
-$config->task->form->start['lastEditedBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
+$config->task->form->start['lastEditedBy'] = array('type' => 'string', 'required' => false, 'default' => $account);
$config->task->form->start['lastEditedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
$config->task->form->finish = array();
@@ -167,17 +169,17 @@ $config->task->form->finish['status'] = array('type' => 'string', 're
$config->task->form->finish['finishedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
$config->task->form->finish['lastEditedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
$config->task->form->finish['assignedDate'] = array('type' => 'string', 'required' => false, 'default' => $now);
-$config->task->form->finish['finishedBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
-$config->task->form->finish['lastEditedBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
+$config->task->form->finish['finishedBy'] = array('type' => 'string', 'required' => false, 'default' => $account);
+$config->task->form->finish['lastEditedBy'] = array('type' => 'string', 'required' => false, 'default' => $account);
$config->task->form->finish['lastEditedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
$config->task->form->close = array();
$config->task->form->close['status'] = array('type' => 'string', 'required' => false, 'default' => 'closed');
$config->task->form->close['assignedTo'] = array('type' => 'string', 'required' => false, 'default' => 'closed');
$config->task->form->close['assignedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
-$config->task->form->close['closedBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
+$config->task->form->close['closedBy'] = array('type' => 'string', 'required' => false, 'default' => $account);
$config->task->form->close['closedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
-$config->task->form->close['lastEditedBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
+$config->task->form->close['lastEditedBy'] = array('type' => 'string', 'required' => false, 'default' => $account);
$config->task->form->close['lastEditedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
$config->task->form->testTask->create = array();
diff --git a/module/task/control.php b/module/task/control.php
index 28f7e5d406..9b1888cf3f 100755
--- a/module/task/control.php
+++ b/module/task/control.php
@@ -333,7 +333,7 @@ class task extends control
if(!$task)
{
if(defined('RUN_MODE') && RUN_MODE == 'api') return $this->send(array('status' => 'fail', 'code' => 404, 'message' => '404 Not found'));
- return $this->send(array('result' => 'success', 'load' => array('alert' => $this->lang->notFound, 'locate' => $this->config->vision == 'lite' ? $this->createLink('project', 'index') : $this->createLink('execution', 'all'))));
+ return $this->sendError($this->lang->notFound, $this->config->vision == 'lite' ? $this->createLink('project', 'index') : $this->createLink('execution', 'all'));
}
if(!$this->loadModel('common')->checkPrivByObject('execution', $task->execution)) return print(js::error($this->lang->execution->accessDenied) . js::locate($this->createLink('execution', 'all')));
diff --git a/module/testcase/js/batchcreate.js b/module/testcase/js/batchcreate.js
index d5c6f32f92..8e0e217daf 100644
--- a/module/testcase/js/batchcreate.js
+++ b/module/testcase/js/batchcreate.js
@@ -76,10 +76,10 @@ function canSceneDitto(num)
var trList = $("#tableBody").find("tbody").find("tr");
- var rowModule = $(trList[rIndex]).find("td:eq(2)").find("select").val();
+ var rawModule = $(trList[rIndex]).find("td:eq(2)").find("select").val();
var preModule = $(trList[rIndex-1]).find("td:eq(2)").find("select").val();
- return rowModule == "ditto" || rowModule == preModule;
+ return rawModule == "ditto" || rawModule == preModule;
}
function onModuleChanged(productID, moduleID, num)
diff --git a/module/testcase/js/browse.ui.js b/module/testcase/js/browse.ui.js
index 39ea934b37..eba0a8dc16 100644
--- a/module/testcase/js/browse.ui.js
+++ b/module/testcase/js/browse.ui.js
@@ -208,7 +208,7 @@ window.setStatistics = function(element, checks)
});
}
- return element.options.customData.pageSummary;
+ return element.options.customData ? element.options.customData.pageSummary : '';
}
/**
diff --git a/module/testcase/lang/zh-cn.php b/module/testcase/lang/zh-cn.php
index ba9ac75ba6..7cb17501a7 100644
--- a/module/testcase/lang/zh-cn.php
+++ b/module/testcase/lang/zh-cn.php
@@ -352,7 +352,7 @@ $lang->testcase->onlyAutomated = '仅自动化';
$lang->testcase->onlyScene = '仅场景';
$lang->testcase->iScene = '所属场景';
$lang->testcase->generalTitle = '标题';
-$lang->testcase->noScene = '暂时没有场景';
+$lang->testcase->noScene = '暂时没有场景。';
$lang->testcase->rowIndex = '行索引';
$lang->testcase->nestTotal = '嵌套总数';
$lang->testcase->normal = '正常';
diff --git a/module/testcase/model.php b/module/testcase/model.php
index 74dfe7671f..8a451c96dd 100755
--- a/module/testcase/model.php
+++ b/module/testcase/model.php
@@ -1446,7 +1446,7 @@ class testcaseModel extends model
$projects = array($this->session->execution);
}
if(!empty($case->project)) $projects[] = $case->project;
- if(!empty($case->execution)) $projects[] = $case->project;
+ if(!empty($case->execution)) $projects[] = $case->execution;
if(empty($projects)) return false;
$this->loadModel('action');
diff --git a/module/testcase/ui/browse.html.php b/module/testcase/ui/browse.html.php
index 80e894351b..5cf058087d 100644
--- a/module/testcase/ui/browse.html.php
+++ b/module/testcase/ui/browse.html.php
@@ -150,9 +150,9 @@ div(
set::nested(true),
set::footToolbar($footToolbar),
set::footPager(usePager()),
- set::emptyTip($lang->testcase->noCase),
- set::createTip($lang->testcase->create),
- set::createLink($canModify && hasPriv('testcase', 'create') ? createLink('testcase', 'create', 'productID=' . zget($product, 'id', 0) . "&branch={$branch}&moduleID={$moduleID}" . ($app->tab == 'project' ? "&from=project¶m={$projectID}" : '')) : ''),
+ set::emptyTip($browseType == 'onlyscene' ? $lang->testcase->noScene : $lang->testcase->noCase),
+ set::createTip($browseType == 'onlyscene' ? $lang->testcase->createScene : $lang->testcase->create),
+ set::createLink($browseType == 'onlyscene' ? ($canCreateScene ? $createSceneLink : '') : ($canCreateCase ? $createCaseLink : '')),
set::customData(array('isOnlyScene' => $isOnlyScene, 'pageSummary' => $summary, 'modules' => $modulePairs))
)
);
diff --git a/module/testcase/ui/header.html.php b/module/testcase/ui/header.html.php
index e9a048552e..635a91bd37 100644
--- a/module/testcase/ui/header.html.php
+++ b/module/testcase/ui/header.html.php
@@ -227,21 +227,20 @@ if(!empty($productID))
$createItems = array();
if($canCreateCase)
{
- $params = "productID={$productID}&branch={$branch}&moduleID={$moduleID}";
- if($app->tab == 'project') $params .= "&from=project¶m={$projectID}";
- $createItems[] = array('text' => $lang->testcase->create, 'url' => createLink('testcase', 'create', $params), 'data-app' => $app->tab);
+ $createCaseLink = createLink('testcase', 'create', "productID={$productID}&branch={$branch}&moduleID={$moduleID}" . ($app->tab == 'project' ? "&from=project¶m={$projectID}" : ''));
+ $createItems[] = array('text' => $lang->testcase->create, 'url' => $createCaseLink, 'data-app' => $app->tab);
}
if($canBatchCreateCase)
{
- $link = createLink('testcase', 'batchCreate', "productID=$productID&branch=$branch&moduleID=$moduleID");
- $createItems[] = array('text' => $lang->testcase->batchCreate, 'url' => $link, 'data-app' => $app->tab);
+ $batchCreateCaseLink = createLink('testcase', 'batchCreate', "productID=$productID&branch=$branch&moduleID=$moduleID");
+ $createItems[] = array('text' => $lang->testcase->batchCreate, 'url' => $batchCreateCaseLink, 'data-app' => $app->tab);
}
if($canCreateScene)
{
- $link = createLink('testcase', 'createScene', "productID=$productID&branch=$branch&moduleID=$moduleID");
- $createItems[] = array('text' => $lang->testcase->newScene, 'url' => $link, 'data-app' => $app->tab);
+ $createSceneLink = createLink('testcase', 'createScene', "productID=$productID&branch=$branch&moduleID=$moduleID");
+ $createItems[] = array('text' => $lang->testcase->newScene, 'url' => $createSceneLink, 'data-app' => $app->tab);
}
$currentCreateItem = current($createItems);
diff --git a/module/testcase/ui/view.html.php b/module/testcase/ui/view.html.php
index 1652a58254..fcb31957ee 100644
--- a/module/testcase/ui/view.html.php
+++ b/module/testcase/ui/view.html.php
@@ -61,7 +61,7 @@ if(!empty($case->steps) && $stepsType == 'table')
width('1/2'),
span
(
- setClass('pr-2 pl-' . (($step->grade - 1) * 2)),
+ setClass('nowrap pr-2 pl-' . (($step->grade - 1) * 2)),
$step->name
),
html(nl2br(str_replace(' ', ' ', $step->desc)))
diff --git a/module/testcase/zen.php b/module/testcase/zen.php
index 41436de99d..868063c451 100755
--- a/module/testcase/zen.php
+++ b/module/testcase/zen.php
@@ -147,7 +147,7 @@ class testcaseZen extends testcase
*/
protected function buildBrowseSearchForm(int $productID, string $branch, int $queryID, int $projectID): void
{
- $this->config->testcase->search['onMenuBar'] = 'yes';
+ if($this->app->rawModule == 'testcase') $this->config->testcase->search['onMenuBar'] = 'yes';
$currentModule = $this->app->tab == 'project' ? 'project' : 'testcase';
$currentMethod = $this->app->tab == 'project' ? 'testcase' : 'browse';
@@ -393,7 +393,6 @@ class testcaseZen extends testcase
$storyModuleID = array_key_exists($currentModuleID, $productModules) ? $currentModuleID : 0;
$modules = $this->tree->getStoryModule($storyModuleID);
$modules = $this->tree->getAllChildID($modules);
- $currentModuleID = $storyModuleID;
}
/* 获取未关闭的需求。 */
@@ -2105,6 +2104,19 @@ class testcaseZen extends testcase
foreach($reverseSteps as $step)
{
if(empty($step->id)) continue;
+
+ if($step->type != 'group')
+ {
+ $descItem = array();
+ $descItem['id'] = 'desc_' . $step->id;
+ $descItem['text'] = $step->expect;
+ $descItem['type'] = 'node';
+ $descItem['parent'] = $step->id;
+ $descItem['subSide'] = 'right';
+
+ $parentSteps[$step->id][] = $descItem;
+ }
+
$stepItem = array();
$stepItem['id'] = $step->id;
$stepItem['text'] = $step->step;
diff --git a/module/testtask/js/runcase.ui.js b/module/testtask/js/runcase.ui.js
index 8b86337fb0..72ffb1c5e2 100644
--- a/module/testtask/js/runcase.ui.js
+++ b/module/testtask/js/runcase.ui.js
@@ -4,9 +4,9 @@ $(function()
loadResult();
});
-$('#runCaseModal').closest('.modal').on('hide.zui.modal', function()
+$('#runCaseModal').closest('.modal').off('hide.zui.modal').on('hide.zui.modal', function()
{
- if($('#casesResults').length == 0) loadCurrentPage();
+ loadCurrentPage();
});
/**
diff --git a/module/testtask/zen.php b/module/testtask/zen.php
index ee1f4cb17b..0eec51a72f 100644
--- a/module/testtask/zen.php
+++ b/module/testtask/zen.php
@@ -657,26 +657,17 @@ class testtaskZen extends testtask
$automation = $this->loadModel('zanode')->getAutomationByProduct($run->case->product);
if($run->case->auto == 'auto' && $confirm == '')
{
- if(!$automation)
- {
- if(helper::isAjaxRequest()) return $this->send(array('load' => $cancelURL));
- $this->locate($cancelURL);
- }
+ if(!$automation) return $this->send(array('load' => $cancelURL));
$confirmURL = inlink('runCase', "runID=$runID&caseID=$caseID&version=$version&confirm=yes");
- if(helper::isAjaxRequest()) return $this->send(array('result' => 'fail', 'load' => array('confirm' => $this->lang->zanode->runCaseConfirm, 'confirmed' => $confirmURL, 'canceled' => $cancelURL)));
- return print(js::start() . "zui.Modal.hide($(document).find('.modal')); zui.Modal.confirm('{$this->lang->zanode->runCaseConfirm}').then((res) => {if(res){ openUrl({url: '{$confirmURL}', load: 'modal', size: 'lg'});}else{ openUrl({url: '{$cancelURL}', load: 'modal', size: 'lg'});}});" . js::end());
+ return $this->send(array('result' => 'fail', 'load' => array('confirm' => $this->lang->zanode->runCaseConfirm, 'confirmed' => $confirmURL, 'canceled' => $cancelURL)));
}
/* 用户确认后执行自动化测试的相关操作。*/
/* Perform automated testing related operations after user confirmation. */
if($confirm == 'yes')
{
- if(!$automation)
- {
- if(helper::isAjaxRequest()) return $this->send(array('load' => $cancelURL));
- $this->locate($cancelURL);
- }
+ if(!$automation) return $this->send(array('load' => $cancelURL));
$resultID = $this->testtask->initResultForAutomatedTest($runID, $caseID, $run->case->version, $automation->node);
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError(), 'load' => $this->createLink('zanode', 'browse')));
diff --git a/module/todo/css/batchcreate.ui.css b/module/todo/css/batchcreate.ui.css
index f675b2e011..8369d1cefd 100644
--- a/module/todo/css/batchcreate.ui.css
+++ b/module/todo/css/batchcreate.ui.css
@@ -1 +1,2 @@
+.batchCreateTodoModal .modal-body {overflow-y: hidden;}
#batchCreateTodoForm .panel-actions {margin-right: 18px; margin-top: -18px;}
diff --git a/module/todo/js/batchcreate.ui.js b/module/todo/js/batchcreate.ui.js
index b5b9da176e..75b28f6a48 100644
--- a/module/todo/js/batchcreate.ui.js
+++ b/module/todo/js/batchcreate.ui.js
@@ -34,7 +34,7 @@ window.changeType = function(e)
}
}
-window.changFuture = function()
+window.changeFuture = function()
{
const isChecked = $('#futureDate[type="checkbox"]').prop('checked');
const $todoDate = $('#todoDate').zui('datePicker');
@@ -66,27 +66,20 @@ window.initTime = function(e)
const options = $picker.options;
const items = options.items;
const isBegin = options.name.indexOf('begin') === 0;
+ const index = parseInt($tr.data('index'));
- const index = parseInt($tr.data('index'));
if(isBegin)
{
let endValue = '';
- if(!value)
+ items.forEach(function(item, timeIndex)
{
- endValue = items[0].value;
- }
- else
- {
- items.forEach(function(item, timeIndex)
+ if(item.value == value)
{
- if(item.value == value)
- {
- endIndex = timeIndex + 3;
- endValue = items.length <= endIndex ? '' : items[endIndex].value;
- return;
- }
- });
- }
+ endIndex = timeIndex + 3;
+ endValue = items.length <= endIndex ? items[items.length - 1].value : items[endIndex].value;
+ return;
+ }
+ });
$end.zui('picker').$.setValue(endValue);
if(typeof endIndex != 'undefined') value = endIndex;
}
@@ -106,6 +99,7 @@ window.initTime = function(e)
return;
}
});
+ if(value == '2350') value='6000';
$(this).find('[data-name="beginAndEnd"] [data-name="begin"]').zui('picker').$.setValue(value);
$(this).find('[data-name="beginAndEnd"] [data-name="end"]').zui('picker').$.setValue(endValue);
if(typeof endIndex != 'undefined') value = endIndex;
diff --git a/module/todo/ui/batchcreate.html.php b/module/todo/ui/batchcreate.html.php
index bee084d187..93aeb040bb 100644
--- a/module/todo/ui/batchcreate.html.php
+++ b/module/todo/ui/batchcreate.html.php
@@ -72,7 +72,7 @@ formBatchPanel
setID('futureDate'),
set::name('futureDate'),
$lang->todo->periods['future'],
- on::click('window.changFuture')
+ on::click('window.changeFuture')
)
)
)
diff --git a/module/tree/model.php b/module/tree/model.php
index d42f66fff8..c0325815b3 100644
--- a/module/tree/model.php
+++ b/module/tree/model.php
@@ -1020,15 +1020,15 @@ class treeModel extends model
$table2 = TABLE_CASE;
}
- $paths = $this->dao->select("t3.{$field}")->from($table1)->alias('t1')
- ->leftJoin($table2)->alias('t2')->on('t1.' . $linkObject . ' = t2.id')
- ->leftJoin(TABLE_MODULE)->alias('t3')->on('t2.module = t3.id')
- ->leftJoin(TABLE_PROJECT)->alias('t4')->on('t1.project = t4.id')
+ $paths = $this->dao->select("t4.{$field}")->from(TABLE_PROJECT)->alias('t1')
+ ->leftJoin($table1)->alias('t2')->on('t1.id=t2.project')
+ ->leftJoin($table2)->alias('t3')->on("t2.{$linkObject}=t3.id")
+ ->leftJoin(TABLE_MODULE)->alias('t4')->on('t3.module=t4.id')
->where('t3.deleted')->eq(0)
- ->andWhere('t2.deleted')->eq(0)
- ->andWhere("(t1.project = '{$executionID}' OR t4.project = '{$executionID}')")
- ->beginIF(isset($extra['branchID']) && $branch !== 'all')->andWhere('t2.branch')->eq($branch)->fi()
- ->fetchPairs($field, $field);
+ ->andWhere('t4.deleted')->eq(0)
+ ->andWhere('t1.project', true)->eq($executionID)->orWhere('t2.project')->eq($executionID)->markRight(1)
+ ->beginIF(isset($extra['branchID']) && $branch !== 'all')->andWhere('t3.branch')->eq($branch)->fi()
+ ->fetchPairs();
}
elseif($linkObject == 'bug' && str_contains(',project,execution,', ",{$this->app->tab},"))
{
@@ -1038,7 +1038,7 @@ class treeModel extends model
->andWhere('t2.deleted')->eq(0)
->beginIF(isset($extra['branchID']) && $branch !== 'all')->andWhere('t1.branch')->eq($branch)->fi()
->andWhere("t1.{$this->app->tab}")->eq($executionID)
- ->fetchPairs($field, $field);
+ ->fetchPairs();
}
else
{
diff --git a/module/upgrade/config.php b/module/upgrade/config.php
index 765606e927..da1027671c 100644
--- a/module/upgrade/config.php
+++ b/module/upgrade/config.php
@@ -46,8 +46,7 @@ $config->upgrade->maxVersion['max4_9'] = '18_9';
$config->upgrade->maxVersion['max4_10'] = '18_10';
$config->upgrade->maxVersion['max4_10_1'] = '18_10_1';
$config->upgrade->maxVersion['max4_11'] = '18_11';
-$config->upgrade->maxVersion['max4_12'] = '18_12';
-$config->upgrade->maxVersion['max5_0_beta1'] = '20_0'; // max insert position.
+$config->upgrade->maxVersion['max4_12'] = '18_12'; // max insert position.
$config->upgrade->bizVersion = array();
$config->upgrade->bizVersion['biz1_0'] = '9_5_1';
@@ -132,8 +131,7 @@ $config->upgrade->bizVersion['biz8_9'] = '18_9';
$config->upgrade->bizVersion['biz8_10'] = '18_10';
$config->upgrade->bizVersion['biz8_10_1'] = '18_10_1';
$config->upgrade->bizVersion['biz8_11'] = '18_11';
-$config->upgrade->bizVersion['biz8_12'] = '18_12';
-$config->upgrade->bizVersion['biz10_0_beta1'] = '20_0'; // biz insert position.
+$config->upgrade->bizVersion['biz8_12'] = '18_12'; // biz insert position.
$config->upgrade->proVersion = array();
$config->upgrade->proVersion['pro1_0'] = '3_1';
@@ -255,8 +253,7 @@ $config->upgrade->ipdVersion['ipd1_1_1'] = '18_9';
$config->upgrade->ipdVersion['ipd1_1_2'] = '18_10';
$config->upgrade->ipdVersion['ipd1_2'] = '18_10_1';
$config->upgrade->ipdVersion['ipd1_3'] = '18_11';
-$config->upgrade->ipdVersion['ipd1_4'] = '18_12';
-$config->upgrade->ipdVersion['ipd1_5_beta1'] = '20_0'; // ipd insert position.
+$config->upgrade->ipdVersion['ipd1_4'] = '18_12'; // ipd insert position.
$config->upgrade->lowerTables = array();
$config->upgrade->lowerTables[$config->db->prefix . 'caseStep'] = $config->db->prefix . 'casestep';
@@ -1185,6 +1182,11 @@ $config->delete['20_0_beta1'][] = 'module/metric/ui/view.html.php';
$config->delete['20_0_beta1'][] = 'module/metric/ui/viewphpmetric.html.php';
$config->delete['20_0_beta1'][] = 'module/metric/ui/viewsqlmetric.html.php';
+$config->delete['20_0_beta2'][] = 'module/install/css/showtableprogress.ui.css';
+$config->delete['20_0_beta2'][] = 'module/install/css/step1.ui.css';
+$config->delete['20_0_beta2'][] = 'module/install/css/step2.ui.css';
+$config->delete['20_0_beta2'][] = 'module/install/css/step5.ui.css';
+
$config->upgrade->openModules = array('action', 'admin', 'ai', 'bi', 'aiapp', 'api', 'automation', 'backup', 'block', 'branch', 'budget', 'bug', 'build', 'caselib', 'chart', 'ci', 'client', 'common', 'company', 'compile', 'convert', 'cron', 'custom', 'datatable', 'dataview', 'dept', 'design', 'dev', 'dimension', 'doc', 'durationestimation', 'entry', 'execution', 'extension', 'file', 'git', 'gitlab', 'group', 'holiday', 'im', 'index', 'index.html', 'install', 'issue', 'jenkins', 'job', 'kanban', 'license', 'mail', 'message', 'metric', 'misc', 'mr', 'my', 'personnel', 'pipeline', 'product', 'productplan', 'productset', 'program', 'programplan', 'project', 'projectbuild', 'projectplan', 'projectrelease', 'projectstory', 'pivot', 'qa', 'release', 'repo', 'report', 'risk', 'score', 'screen', 'search', 'setting', 'sonarqube', 'sso', 'stage', 'stakeholder', 'story', 'subject', 'svn', 'task', 'testcase', 'testreport', 'testsuite', 'testtask', 'todo', 'tree', 'tutorial', 'upgrade', 'user', 'webhook', 'weekly', 'workestimation', 'gitea', 'gogs', 'transfer', 'zahost', 'zanode', 'editor', 'charter', 'roadmap', 'account', 'artifactrepo', 'cne', 'host', 'instance', 'ops', 'serverroom', 'space', 'store', 'system', 'solution', 'demand', 'gitfox');
$config->upgrade->unsetModules = array('design', 'program', 'programplan', 'projectbuild', 'projectrelease', 'stage', 'stakeholder', 'product', 'branch', 'productplan', 'release', 'build', 'qa', 'bug', 'testcase', 'testtask', 'testreport', 'testsuite', 'caselib', 'automation', 'repo', 'ci', 'compile', 'jenkins', 'job', 'svn', 'gitlab', 'sonarqube', 'mr', 'git', 'report', 'sqlbuilder', 'feedback', 'faq', 'attend', 'holiday', 'leave', 'makeup', 'overtime', 'lieu', 'ops', 'host', 'serverroom', 'account', 'domain', 'service', 'deploy', 'conference', 'traincourse', 'pssp', 'baseline', 'classify', 'cm', 'cmcl', 'auditcl', 'reviewcl', 'process', 'activity', 'zoutput', 'auditplan', 'nc', 'subject', 'weekly', 'workestimation', 'issue', 'durationestimation', 'risk', 'opportunity', 'trainplan', 'gapanalysis', 'researchplan', 'researchreport', 'meeting', 'meetingroom', 'budget', 'reviewissue', 'reviewsetting', 'review', 'milestone', 'measurement', 'measrecord', 'assetlib', 'setting', 'im', 'client', 'ldap', 'dev', 'api', 'gitea', 'gogs', 'zanode', 'zahost');
diff --git a/module/upgrade/config/upgradeflow.php b/module/upgrade/config/upgradeflow.php
index fb47e8c760..b6ebde2b30 100644
--- a/module/upgrade/config/upgradeflow.php
+++ b/module/upgrade/config/upgradeflow.php
@@ -95,7 +95,7 @@ $config->upgrade->execFlow['18_9'] = array('functions' => 'addDefaultTrai
$config->upgrade->execFlow['18_10_1'] = array('functions' => 'migrateAIModelConfig');
$config->upgrade->execFlow['20_0_alpha1'] = array('functions' => 'revertStoryCustomFields');
$config->upgrade->execFlow['20_0_beta1'] = array('functions' => 'hideOA,updateMetricDateType,update18101,migrateAIModelConfig');
-$config->upgrade->execFlow['20_0_beta2'] = array('functions' => 'updateWorkflowFieldDefaultValue,update1811');
+$config->upgrade->execFlow['20_0_beta2'] = array('functions' => 'updateWorkflowFieldDefaultValue,update1811,updateZeroDateToNull');
if(!empty($config->isINT))
{
diff --git a/module/upgrade/lang/version.php b/module/upgrade/lang/version.php
index cb828f14b1..f0dad702f6 100644
--- a/module/upgrade/lang/version.php
+++ b/module/upgrade/lang/version.php
@@ -383,8 +383,7 @@ $lang->upgrade->fromVersions['biz8_9'] = 'Biz8.9';
$lang->upgrade->fromVersions['biz8_10'] = 'Biz8.10';
$lang->upgrade->fromVersions['biz8_10_1'] = 'Biz8.10.1';
$lang->upgrade->fromVersions['biz8_11'] = 'Biz8.11';
-$lang->upgrade->fromVersions['biz8_12'] = 'Biz8.12';
-$lang->upgrade->fromVersions['biz10_0_beta1'] = 'Biz10.0.beta1'; // biz insert position.
+$lang->upgrade->fromVersions['biz8_12'] = 'Biz8.12'; // biz insert position.
/* Max. */
$lang->upgrade->fromVersions['max2_0_beta4'] = 'Max2.0.beta4';
@@ -434,8 +433,7 @@ $lang->upgrade->fromVersions['max4_9'] = 'Max4.9';
$lang->upgrade->fromVersions['max4_10'] = 'Max4.10';
$lang->upgrade->fromVersions['max4_10_1'] = 'Max4.10.1';
$lang->upgrade->fromVersions['max4_11'] = 'Max4.11';
-$lang->upgrade->fromVersions['max4_12'] = 'Max4.11';
-$lang->upgrade->fromVersions['max5_0_beta1'] = 'Max5.0.beta1'; // max insert position.
+$lang->upgrade->fromVersions['max4_12'] = 'Max4.11'; // max insert position.
/* Ipd */
$lang->upgrade->fromVersions['ipd1_0_beta1'] = 'Ipd1.0.beta1';
@@ -447,5 +445,4 @@ $lang->upgrade->fromVersions['ipd1_1_1'] = 'Ipd1.1.1';
$lang->upgrade->fromVersions['ipd1_1_2'] = 'Ipd1.1.2';
$lang->upgrade->fromVersions['ipd1_2'] = 'Ipd1.2';
$lang->upgrade->fromVersions['ipd1_3'] = 'Ipd1.3';
-$lang->upgrade->fromVersions['ipd1_4'] = 'Ipd1.4';
-$lang->upgrade->fromVersions['ipd1_5_beta1'] = 'Ipd1.5.beta1'; // ipd insert position.
+$lang->upgrade->fromVersions['ipd1_4'] = 'Ipd1.4'; // ipd insert position.
diff --git a/module/upgrade/model.php b/module/upgrade/model.php
index 78447f871b..faf1d69c05 100644
--- a/module/upgrade/model.php
+++ b/module/upgrade/model.php
@@ -8680,4 +8680,82 @@ class upgradeModel extends model
}
return true;
}
+
+ /**
+ * 将值为'0000-00-00'的日期类型字段值更新为NULL。
+ * Update the default value of the fields.
+ *
+ * @access public
+ * @return true
+ */
+ public function updateZeroDateToNull()
+ {
+ set_time_limit(0);
+
+ if($this->config->db->driver == 'mysql')
+ {
+ try
+ {
+ $this->dao->exec("SET @@sql_mode=''");
+ $tables = $this->dao->select("c.TABLE_NAME, c.COLUMN_NAME, c.DATA_TYPE")->from('information_schema.COLUMNS')->alias('c')
+ ->leftJoin('information_schema.TABLES')->alias('t')
+ ->on('c.TABLE_SCHEMA = t.TABLE_SCHEMA AND c.TABLE_NAME = t.TABLE_NAME')
+ ->where("c.TABLE_SCHEMA")->eq($this->config->db->name)
+ ->andWhere("c.TABLE_NAME")->like($this->config->db->prefix . '%')
+ ->andWhere("t.TABLE_TYPE")->eq('BASE TABLE')
+ ->andWhere("c.DATA_TYPE")->in('date,datetime')
+ ->fetchAll();
+
+ foreach($tables as $table)
+ {
+ $tableName = $table->TABLE_NAME;
+ $columnName = $table->COLUMN_NAME;
+ $columnType = $table->DATA_TYPE;
+
+ if($columnType == 'date')
+ {
+ $this->dbh->exec("UPDATE `$tableName` SET `$columnName` = NULL WHERE `$columnName` = '0000-00-00'");
+ }
+ elseif($columnType == 'datetime')
+ {
+ $this->dbh->exec("UPDATE `$tableName` SET `$columnName` = NULL WHERE `$columnName` = '0000-00-00 00:00:00'");
+ }
+ }
+ }
+ catch(PDOException $e)
+ {
+ $this->saveLogs($e->getMessage());
+ }
+ }
+ elseif($this->config->db->driver == 'dm')
+ {
+ try
+ {
+ $tables = $this->dao->select('TABLE_NAME, COLUMN_NAME, DATA_TYPE')->from('ALL_TAB_COLUMNS')
+ ->where('OWNER')->eq($this->config->db->name)
+ ->andWhere('DATA_TYPE')->in('DATE,DATETIME')
+ ->fetchAll();
+
+ foreach($tables as $table)
+ {
+ $tableName = $table->TABLE_NAME;
+ $columnName = $table->COLUMN_NAME;
+ $columnType = $table->DATA_TYPE;
+
+ if($columnType == 'DATE')
+ {
+ $this->dbh->exec("UPDATE $tableName SET $columnName = NULL WHERE $columnName = '0000-00-00'");
+ }
+ elseif($columnType == 'DATETIME')
+ {
+ $this->dbh->exec("UPDATE $tableName SET $columnName = NULL WHERE $columnName = '0000-00-00 00:00:00'");
+ }
+ }
+ }
+ catch(PDOException $e)
+ {
+ $this->saveLogs($e->getMessage());
+ }
+ }
+ }
}
diff --git a/module/user/config/form.php b/module/user/config/form.php
index 142bbfeaa8..749e110be2 100644
--- a/module/user/config/form.php
+++ b/module/user/config/form.php
@@ -81,12 +81,12 @@ $config->user->form->edit['passwordLength'] = array('required' => false, 'type
$config->user->form->edit['passwordStrength'] = array('required' => false, 'type' => 'int', 'default' => 0);
$config->user->form->batchEdit = array();
-$config->user->form->batchEdit['dept'] = array('required' => false, 'type' => 'int', 'width' => '200px', 'name' => 'dept', 'label' => $lang->user->dept, 'control' => array('control' => 'picker', 'required' => true), 'default' => 0, 'ditto' => true);
+$config->user->form->batchEdit['dept'] = array('required' => false, 'type' => 'int', 'width' => '200px', 'name' => 'dept', 'label' => $lang->user->dept, 'control' => array('control' => 'picker', 'required' => true), 'default' => 0, 'ditto' => true, 'defaultDitto' => 'off');
$config->user->form->batchEdit['company'] = array('required' => false, 'type' => 'int', 'width' => '200px', 'name' => 'company', 'label' => $lang->user->company, 'control' => 'picker', 'default' => 0);
$config->user->form->batchEdit['account'] = array('required' => true, 'type' => 'string', 'width' => '140px', 'name' => 'account', 'label' => $lang->user->account, 'control' => 'text', 'default' => '', 'readonly' => true, 'base' => true);
$config->user->form->batchEdit['realname'] = array('required' => true, 'type' => 'string', 'width' => '96px', 'name' => 'realname', 'label' => $lang->user->realname, 'control' => 'text', 'default' => '');
$config->user->form->batchEdit['visions'] = array('required' => true, 'type' => 'array', 'width' => '240px', 'name' => 'visions', 'label' => $lang->user->visions, 'control' => 'picker', 'default' => [], 'multiple' => true, 'filter' => 'join');
-$config->user->form->batchEdit['role'] = array('required' => false, 'type' => 'string', 'width' => '160px', 'name' => 'role', 'label' => $lang->user->role, 'control' => 'picker', 'default' => '', 'ditto' => true, 'items' => $lang->user->roleList);
+$config->user->form->batchEdit['role'] = array('required' => false, 'type' => 'string', 'width' => '160px', 'name' => 'role', 'label' => $lang->user->role, 'control' => 'picker', 'default' => '', 'ditto' => true, 'defaultDitto' => 'off', 'items' => $lang->user->roleList);
$config->user->form->batchEdit['email'] = array('required' => false, 'type' => 'string', 'width' => '160px', 'name' => 'email', 'label' => $lang->user->email, 'control' => 'text', 'default' => '');
$config->user->form->batchEdit['gender'] = array('required' => false, 'type' => 'string', 'width' => '100px', 'name' => 'gender', 'label' => $lang->user->gender, 'control' => array('control' => 'radioList', 'inline' => true), 'default' => 'm', 'items' => $lang->user->genderList);
$config->user->form->batchEdit['commiter'] = array('required' => false, 'type' => 'string', 'width' => '120px', 'name' => 'commiter', 'label' => $lang->user->commiter, 'control' => 'text', 'default' => '');
diff --git a/module/zahost/config/form.php b/module/zahost/config/form.php
index 6b119439da..bbd2805cd3 100644
--- a/module/zahost/config/form.php
+++ b/module/zahost/config/form.php
@@ -1,6 +1,6 @@
zahost->form = new stdclass();
@@ -14,7 +14,6 @@ $config->zahost->form->create['memory'] = array('required' => true, 'type'
$config->zahost->form->create['diskSize'] = array('required' => true, 'type' => 'float', 'default' => 0);
$config->zahost->form->create['type'] = array('required' => false, 'type' => 'string', 'default' => 'zahost');
$config->zahost->form->create['status'] = array('required' => false, 'type' => 'string', 'default' => 'wait');
-$config->zahost->form->create['createdBy'] = array('required' => false, 'type' => 'string', 'default' => isset($app->user->account) ? $app->user->account : '');
$config->zahost->form->create['createdDate'] = array('required' => false, 'type' => 'date', 'default' => helper::now());
$config->zahost->form->create['desc'] = array('required' => false, 'type' => 'string', 'default' => '', 'control' => 'editor');
$config->zahost->form->create['zap'] = array('required' => false, 'type' => 'string', 'default' => $config->zahost->defaultPort);
@@ -27,6 +26,5 @@ $config->zahost->form->edit['extranet'] = array('required' => true, 'type' =>
$config->zahost->form->edit['cpuCores'] = array('required' => true, 'type' => 'int', 'default' => 0);
$config->zahost->form->edit['memory'] = array('required' => true, 'type' => 'float', 'default' => 0);
$config->zahost->form->edit['diskSize'] = array('required' => true, 'type' => 'float', 'default' => 0);
-$config->zahost->form->edit['editedBy'] = array('required' => false, 'type' => 'string', 'default' => isset($app->user->account) ? $app->user->account : '');
$config->zahost->form->edit['editedDate'] = array('required' => false, 'type' => 'date', 'default' => helper::now());
$config->zahost->form->edit['desc'] = array('required' => false, 'type' => 'string', 'default' => '', 'control' => 'editor');
diff --git a/module/zahost/control.php b/module/zahost/control.php
index f72b3a46be..aac5430617 100644
--- a/module/zahost/control.php
+++ b/module/zahost/control.php
@@ -97,7 +97,9 @@ class zahost extends control
{
if($_POST)
{
- $hostInfo = form::data($this->config->zahost->form->create)->get();
+ $hostInfo = form::data($this->config->zahost->form->create)
+ ->add('createdBy', isset($this->app->user->account) ? $this->app->user->account : '')
+ ->get();
$hostInfo->secret = md5($hostInfo->name . time());
$hostID = $this->zahost->create($hostInfo);
@@ -124,7 +126,10 @@ class zahost extends control
{
if($_POST)
{
- $hostInfo = form::data($this->config->zahost->form->edit)->add('id', $hostID)->get();
+ $hostInfo = form::data($this->config->zahost->form->edit)
+ ->add('id', $hostID)
+ ->add('editedBy', isset($this->app->user->account) ? $this->app->user->account : '')
+ ->get();
$changes = $this->zahost->update($hostInfo);
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
diff --git a/www/js/zui3/zin.js b/www/js/zui3/zin.js
index a0c97e2aaa..360c282763 100644
--- a/www/js/zui3/zin.js
+++ b/www/js/zui3/zin.js
@@ -139,6 +139,7 @@
timers.interval = [];
timers.timeout = [];
+ zui.Modal.getAll().forEach(m => !m.options.modal && m.hide());
$('script.zin-page-js').replaceWith(data);
}
@@ -657,7 +658,7 @@
function getLoadSelector(selector)
{
- if(!selector) return $('#main').length ? '#main>*,pageCSS/.zin-page-css>*,pageJS/.zin-page-js,hookCode(),#configJS,title>*,#heading>*,#navbar>*,#pageToolbar>*' : 'body>*,title>*,#configJS';
+ if(!selector) return $('#main').length ? 'pageCSS/.zin-page-css>*,pageJS/.zin-page-js,#main>*,hookCode(),#configJS,title>*,#heading>*,#navbar>*,#pageToolbar>*' : 'body>*,title>*,#configJS';
if(selector[0] === '+') return getLoadSelector() + ',' + selector.substring(1);
return selector;
}
@@ -766,7 +767,7 @@
const isInModal = $(target).closest('.modal').length;
if(!isInModal && !options.selector)
{
- selector += ',#mainMenu>*,pageJS/.zin-page-js,hookCode()';
+ selector = 'pageJS/.zin-page-js,' + selector + ',#mainMenu>*,hookCode()';
if($('#moduleMenu').length) selector += ',#moduleMenu,.module-menu-header';
if($('#docDropmenu').length) selector += ',#docDropmenu,.module-menu';
}
@@ -1454,6 +1455,14 @@
else $(document).trigger('locate.zt', data.cancelled);
});
}
+ if(data.alert)
+ {
+ return zui.Modal.alert(data.alert).then(function()
+ {
+ if(data.modal) loadModal(data.modal);
+ if(data.locate) openUrl(data.locate);
+ });
+ }
if(data.load) return openUrl(data);
if(data.app) return openPage(data.url + (data.selector ? (' ' + data.selector) : ''), data.app);
loadPage(data);
diff --git a/www/js/zui3/zui.zentao.css b/www/js/zui3/zui.zentao.css
index 7df4bf4e4c..0e3411a3cb 100644
--- a/www/js/zui3/zui.zentao.css
+++ b/www/js/zui3/zui.zentao.css
@@ -1,2 +1,2 @@
-/*! tailwindcss v3.3.6 | MIT License | https://tailwindcss.com*/*,:after,:before{border-color:rgb(var(--color-gray-200-rgb));border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--tw-content:""}html{-webkit-text-size-adjust:100%;font-feature-settings:normal;font-family:-apple-system,Noto Sans,Helvetica Neue,Helvetica,Nimbus Sans L,Arial,Liberation Sans,PingFang SC,Hiragino Sans GB,Noto Sans CJK SC,Source Han Sans SC,Source Han Sans CN,Microsoft YaHei,Wenquanyi Micro Hei,WenQuanYi Zen Hei,ST Heiti,SimHei,WenQuanYi Zen Hei Sharp,sans-serif;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:rgb(var(--color-gray-400-rgb));opacity:1}input::placeholder,textarea::placeholder{color:rgb(var(--color-gray-400-rgb));opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}:root{--screen-2xl:1720px;--color-gray-50:#fcfdfe;--color-gray-100:#eff1f3;--color-gray-200:#ebedf3;--color-gray-300:#d2d6e5;--color-gray-400:#b2b9c5;--color-gray-500:#64758b;--color-gray-600:#4a577f;--color-gray-700:#3d4667;--color-gray-800:#353d57;--color-gray-900:#30394a;--color-gray-950:#0b0f18;--color-gray-50-rgb:252,253,254;--color-gray-100-rgb:239,241,243;--color-gray-200-rgb:235,237,243;--color-gray-300-rgb:210,214,229;--color-gray-400-rgb:178,185,197;--color-gray-500-rgb:100,117,139;--color-gray-600-rgb:74,87,127;--color-gray-700-rgb:61,70,103;--color-gray-800-rgb:53,61,87;--color-gray-900-rgb:48,57,74;--color-gray-950-rgb:11,15,24;--color-primary-50:#eef6ff;--color-primary-100:#d9eaff;--color-primary-200:#bcdcff;--color-primary-300:#8ec6ff;--color-primary-400:#59a5ff;--color-primary-500:#3883fa;--color-primary-600:#2b67e5;--color-primary-700:#144ce1;--color-primary-800:#173db6;--color-primary-900:#19388f;--color-primary-950:#142457;--color-primary-50-rgb:238,246,255;--color-primary-100-rgb:217,234,255;--color-primary-200-rgb:188,220,255;--color-primary-300-rgb:142,198,255;--color-primary-400-rgb:89,165,255;--color-primary-500-rgb:56,131,250;--color-primary-600-rgb:43,103,229;--color-primary-700-rgb:20,76,225;--color-primary-800-rgb:23,61,182;--color-primary-900-rgb:25,56,143;--color-primary-950-rgb:20,36,87;--color-secondary-50:#e7f6ff;--color-secondary-100:#cdecff;--color-secondary-200:#9bd9ff;--color-secondary-300:#77cbff;--color-secondary-400:#60c2ff;--color-secondary-500:#37b2fe;--color-secondary-600:#18a6fd;--color-secondary-700:#1099ed;--color-secondary-800:#078ada;--color-secondary-900:#046bab;--color-secondary-950:#062a4b;--color-secondary-50-rgb:231,246,255;--color-secondary-100-rgb:205,236,255;--color-secondary-200-rgb:155,217,255;--color-secondary-300-rgb:119,203,255;--color-secondary-400-rgb:96,194,255;--color-secondary-500-rgb:55,178,254;--color-secondary-600-rgb:24,166,253;--color-secondary-700-rgb:16,153,237;--color-secondary-800-rgb:7,138,218;--color-secondary-900-rgb:4,107,171;--color-secondary-950-rgb:6,42,75;--color-success-50:#ecfff8;--color-success-100:#d0f6e8;--color-success-200:#b1ecd6;--color-success-300:#7adfba;--color-success-400:#48d1a0;--color-success-500:#22c98d;--color-success-600:#0dbb7d;--color-success-700:#0ca76f;--color-success-800:#0e8d60;--color-success-900:#186c4e;--color-success-50-rgb:236,255,248;--color-success-100-rgb:208,246,232;--color-success-200-rgb:177,236,214;--color-success-300-rgb:122,223,186;--color-success-400-rgb:72,209,160;--color-success-500-rgb:34,201,141;--color-success-600-rgb:13,187,125;--color-success-700-rgb:12,167,111;--color-success-800-rgb:14,141,96;--color-success-900-rgb:24,108,78;--color-warning-50:#fff4ea;--color-warning-100:#ffecdb;--color-warning-200:#ffd2a9;--color-warning-300:#ffbc7e;--color-warning-400:#ffaf65;--color-warning-500:#ff9f46;--color-warning-600:#f38f19;--color-warning-700:#ed8307;--color-warning-800:#d17100;--color-warning-900:#af5f01;--color-warning-50-rgb:255,244,234;--color-warning-100-rgb:255,236,219;--color-warning-200-rgb:255,210,169;--color-warning-300-rgb:255,188,126;--color-warning-400-rgb:255,175,101;--color-warning-500-rgb:255,159,70;--color-warning-600-rgb:243,143,25;--color-warning-700-rgb:237,131,7;--color-warning-800-rgb:209,113,0;--color-warning-900-rgb:175,95,1;--color-danger-50:#ffebeb;--color-danger-100:#ffd5d5;--color-danger-200:#ffb1b1;--color-danger-300:#ff9292;--color-danger-400:#ff7c7c;--color-danger-500:#fc5959;--color-danger-600:#fb2b2b;--color-danger-700:#d91b1b;--color-danger-800:#ba1313;--color-danger-900:#a20606;--color-danger-50-rgb:255,235,235;--color-danger-100-rgb:255,213,213;--color-danger-200-rgb:255,177,177;--color-danger-300-rgb:255,146,146;--color-danger-400-rgb:255,124,124;--color-danger-500-rgb:252,89,89;--color-danger-600-rgb:251,43,43;--color-danger-700-rgb:217,27,27;--color-danger-800-rgb:186,19,19;--color-danger-900-rgb:162,6,6;--color-important-50:#fff8f5;--color-important-100:#ffe2d9;--color-important-200:#ffcebf;--color-important-300:#ffb29b;--color-important-400:#ff8c68;--color-important-500:#ff8058;--color-important-600:#ff6f42;--color-important-700:#ff4912;--color-important-800:#c83509;--color-important-900:#611700;--color-important-50-rgb:255,248,245;--color-important-100-rgb:255,226,217;--color-important-200-rgb:255,206,191;--color-important-300-rgb:255,178,155;--color-important-400-rgb:255,140,104;--color-important-500-rgb:255,128,88;--color-important-600-rgb:255,111,66;--color-important-700-rgb:255,73,18;--color-important-800-rgb:200,53,9;--color-important-900-rgb:97,23,0;--color-special-50:#efecfa;--color-special-100:#e4dff7;--color-special-200:#c4b6ff;--color-special-300:#a38cff;--color-special-400:#8a6ff5;--color-special-500:#8166ee;--color-special-600:#7055df;--color-special-700:#513baa;--color-special-800:#452da5;--color-special-900:#30216e;--color-special-50-rgb:239,236,250;--color-special-100-rgb:228,223,247;--color-special-200-rgb:196,182,255;--color-special-300-rgb:163,140,255;--color-special-400-rgb:138,111,245;--color-special-500-rgb:129,102,238;--color-special-600-rgb:112,85,223;--color-special-700-rgb:81,59,170;--color-special-800-rgb:69,45,165;--color-special-900-rgb:48,33,110;--color-inherit:inherit;--color-transparent:transparent;--color-current:currentColor;--color-black:#000;--color-white:#fff;--color-canvas:#fff;--color-canvas-light:#fff;--color-canvas-dark:#fcfdfe;--color-inverse:#000;--color-surface:#eff1f3;--color-surface-light:#fcfdfe;--color-surface-strong:#ebedf3;--color-fore:#30394a;--color-fore-in-light:#30394a;--color-fore-in-dark:#fff;--color-focus:#bcdcff;--color-link:#2b47a2;--color-link-hover:#144ce1;--color-link-visited:#6328a4;--color-link-active:#144ce1;--color-placeholder:#b2b9c5;--color-border:#ebedf3;--color-border-strong:#d2d6e5;--color-border-light:#eff1f3;--color-black-rgb:0,0,0;--color-white-rgb:255,255,255;--color-canvas-rgb:255,255,255;--color-canvas-light-rgb:255,255,255;--color-canvas-dark-rgb:252,253,254;--color-inverse-rgb:0,0,0;--color-surface-rgb:239,241,243;--color-surface-light-rgb:252,253,254;--color-surface-strong-rgb:235,237,243;--color-fore-rgb:48,57,74;--color-fore-in-light-rgb:48,57,74;--color-fore-in-dark-rgb:255,255,255;--color-focus-rgb:188,220,255;--color-link-rgb:43,71,162;--color-link-hover-rgb:20,76,225;--color-link-visited-rgb:99,40,164;--color-link-active-rgb:20,76,225;--color-placeholder-rgb:178,185,197;--color-border-rgb:235,237,243;--color-border-strong-rgb:210,214,229;--color-border-light-rgb:239,241,243;--radius-none:0px;--radius-sm:0.0625rem;--radius:0.125rem;--radius-md:0.25rem;--radius-lg:0.375rem;--radius-xl:0.5rem;--radius-2xl:0.75rem;--radius-3xl:1rem;--radius-full:9999px;--shadow-sm:0 1px 2px 0 rgba(0,0,0,.04),0 0 2px -1px rgba(0,0,0,.01);--shadow:0 3px 8px 0 rgba(0,0,0,.04),0 1px 2px -1px rgba(0,0,0,.01);--shadow-md:0 2px 6px -1px rgba(0,0,0,.2),0 1px 4px -2px rgba(0,0,0,.15);--shadow-lg:0 5px 15px -3px rgba(0,0,0,.2),0 2px 6px -4px rgba(0,0,0,.15);--shadow-xl:0 10px 25px -5px rgba(0,0,0,.2),0 4px 10px -6px rgba(0,0,0,.15);--shadow-2xl:0 10px 50px -10px rgba(0,0,0,.4),0 8px 20px -10px rgba(0,0,0,.3);--shadow-inner:inset 0 2px 4px 0 rgba(0,0,0,.05);--shadow-none:none;--space:0.25rem;--font-size-article:0.875rem;--font-size-root:16px;--font-size-page-lineHeight:1.5384615385}.dark{--color-gray-50:#0b0f18;--color-gray-100:#30394a;--color-gray-200:#353d57;--color-gray-300:#3d4667;--color-gray-400:#4a577f;--color-gray-500:#64758b;--color-gray-600:#b2b9c5;--color-gray-700:#d2d6e5;--color-gray-800:#ebedf3;--color-gray-900:#eff1f3;--color-gray-950:#fcfdfe;--color-gray-50-rgb:11,15,24;--color-gray-100-rgb:48,57,74;--color-gray-200-rgb:53,61,87;--color-gray-300-rgb:61,70,103;--color-gray-400-rgb:74,87,127;--color-gray-500-rgb:100,117,139;--color-gray-600-rgb:178,185,197;--color-gray-700-rgb:210,214,229;--color-gray-800-rgb:235,237,243;--color-gray-900-rgb:239,241,243;--color-gray-950-rgb:252,253,254;--color-primary-50:#142457;--color-primary-100:#19388f;--color-primary-200:#173db6;--color-primary-300:#144ce1;--color-primary-400:#2b67e5;--color-primary-500:#3883fa;--color-primary-600:#59a5ff;--color-primary-700:#8ec6ff;--color-primary-800:#bcdcff;--color-primary-900:#d9eaff;--color-primary-950:#eef6ff;--color-primary-50-rgb:20,36,87;--color-primary-100-rgb:25,56,143;--color-primary-200-rgb:23,61,182;--color-primary-300-rgb:20,76,225;--color-primary-400-rgb:43,103,229;--color-primary-500-rgb:56,131,250;--color-primary-600-rgb:89,165,255;--color-primary-700-rgb:142,198,255;--color-primary-800-rgb:188,220,255;--color-primary-900-rgb:217,234,255;--color-primary-950-rgb:238,246,255;--color-secondary-50:#062a4b;--color-secondary-100:#046bab;--color-secondary-200:#078ada;--color-secondary-300:#1099ed;--color-secondary-400:#18a6fd;--color-secondary-500:#37b2fe;--color-secondary-600:#60c2ff;--color-secondary-700:#77cbff;--color-secondary-800:#9bd9ff;--color-secondary-900:#cdecff;--color-secondary-950:#e7f6ff;--color-secondary-50-rgb:6,42,75;--color-secondary-100-rgb:4,107,171;--color-secondary-200-rgb:7,138,218;--color-secondary-300-rgb:16,153,237;--color-secondary-400-rgb:24,166,253;--color-secondary-500-rgb:55,178,254;--color-secondary-600-rgb:96,194,255;--color-secondary-700-rgb:119,203,255;--color-secondary-800-rgb:155,217,255;--color-secondary-900-rgb:205,236,255;--color-secondary-950-rgb:231,246,255;--color-success-50:#186c4e;--color-success-100:#0e8d60;--color-success-200:#0ca76f;--color-success-300:#0dbb7d;--color-success-400:#22c98d;--color-success-500:#48d1a0;--color-success-600:#7adfba;--color-success-700:#b1ecd6;--color-success-800:#d0f6e8;--color-success-900:#ecfff8;--color-success-50-rgb:24,108,78;--color-success-100-rgb:14,141,96;--color-success-200-rgb:12,167,111;--color-success-300-rgb:13,187,125;--color-success-400-rgb:34,201,141;--color-success-500-rgb:72,209,160;--color-success-600-rgb:122,223,186;--color-success-700-rgb:177,236,214;--color-success-800-rgb:208,246,232;--color-success-900-rgb:236,255,248;--color-warning-50:#af5f01;--color-warning-100:#d17100;--color-warning-200:#ed8307;--color-warning-300:#f38f19;--color-warning-400:#ff9f46;--color-warning-500:#ffaf65;--color-warning-600:#ffbc7e;--color-warning-700:#ffd2a9;--color-warning-800:#ffecdb;--color-warning-900:#fff4ea;--color-warning-50-rgb:175,95,1;--color-warning-100-rgb:209,113,0;--color-warning-200-rgb:237,131,7;--color-warning-300-rgb:243,143,25;--color-warning-400-rgb:255,159,70;--color-warning-500-rgb:255,175,101;--color-warning-600-rgb:255,188,126;--color-warning-700-rgb:255,210,169;--color-warning-800-rgb:255,236,219;--color-warning-900-rgb:255,244,234;--color-danger-50:#a20606;--color-danger-100:#ba1313;--color-danger-200:#d91b1b;--color-danger-300:#fb2b2b;--color-danger-400:#fc5959;--color-danger-500:#ff7c7c;--color-danger-600:#ff9292;--color-danger-700:#ffb1b1;--color-danger-800:#ffd5d5;--color-danger-900:#ffebeb;--color-danger-50-rgb:162,6,6;--color-danger-100-rgb:186,19,19;--color-danger-200-rgb:217,27,27;--color-danger-300-rgb:251,43,43;--color-danger-400-rgb:252,89,89;--color-danger-500-rgb:255,124,124;--color-danger-600-rgb:255,146,146;--color-danger-700-rgb:255,177,177;--color-danger-800-rgb:255,213,213;--color-danger-900-rgb:255,235,235;--color-important-50:#611700;--color-important-100:#c83509;--color-important-200:#ff4912;--color-important-300:#ff6f42;--color-important-400:#ff8058;--color-important-500:#ff8c68;--color-important-600:#ffb29b;--color-important-700:#ffcebf;--color-important-800:#ffe2d9;--color-important-900:#fff8f5;--color-important-50-rgb:97,23,0;--color-important-100-rgb:200,53,9;--color-important-200-rgb:255,73,18;--color-important-300-rgb:255,111,66;--color-important-400-rgb:255,128,88;--color-important-500-rgb:255,140,104;--color-important-600-rgb:255,178,155;--color-important-700-rgb:255,206,191;--color-important-800-rgb:255,226,217;--color-important-900-rgb:255,248,245;--color-special-50:#30216e;--color-special-100:#452da5;--color-special-200:#513baa;--color-special-300:#7055df;--color-special-400:#8166ee;--color-special-500:#8a6ff5;--color-special-600:#a38cff;--color-special-700:#c4b6ff;--color-special-800:#e4dff7;--color-special-900:#efecfa;--color-special-50-rgb:48,33,110;--color-special-100-rgb:69,45,165;--color-special-200-rgb:81,59,170;--color-special-300-rgb:112,85,223;--color-special-400-rgb:129,102,238;--color-special-500-rgb:138,111,245;--color-special-600-rgb:163,140,255;--color-special-700-rgb:196,182,255;--color-special-800-rgb:228,223,247;--color-special-900-rgb:239,236,250;--color-canvas:#0b0f18;--color-inverse:#fff;--color-surface:#353d57;--color-surface-light:#30394a;--color-surface-strong:#3d4667;--color-fore:#ebedf3;--color-focus:#173db6;--color-link:#59a5ff;--color-link-hover:#3883fa;--color-link-visited:#bcdcff;--color-link-active:#bcdcff;--color-placeholder:#4a577f;--color-border:#353d57;--color-border-strong:#3d4667;--color-border-light:#30394a;--color-canvas-rgb:11,15,24;--color-inverse-rgb:255,255,255;--color-surface-rgb:53,61,87;--color-surface-light-rgb:48,57,74;--color-surface-strong-rgb:61,70,103;--color-fore-rgb:235,237,243;--color-focus-rgb:23,61,182;--color-link-rgb:89,165,255;--color-link-hover-rgb:56,131,250;--color-link-visited-rgb:188,220,255;--color-link-active-rgb:188,220,255;--color-placeholder-rgb:74,87,127;--color-border-rgb:53,61,87;--color-border-strong-rgb:61,70,103;--color-border-light-rgb:48,57,74}.light-in-dark{--color-gray-50:#fcfdfe;--color-gray-100:#eff1f3;--color-gray-200:#ebedf3;--color-gray-300:#d2d6e5;--color-gray-400:#b2b9c5;--color-gray-500:#64758b;--color-gray-600:#4a577f;--color-gray-700:#3d4667;--color-gray-800:#353d57;--color-gray-900:#30394a;--color-gray-950:#0b0f18;--color-gray-50-rgb:252,253,254;--color-gray-100-rgb:239,241,243;--color-gray-200-rgb:235,237,243;--color-gray-300-rgb:210,214,229;--color-gray-400-rgb:178,185,197;--color-gray-500-rgb:100,117,139;--color-gray-600-rgb:74,87,127;--color-gray-700-rgb:61,70,103;--color-gray-800-rgb:53,61,87;--color-gray-900-rgb:48,57,74;--color-gray-950-rgb:11,15,24;--color-primary-50:#eef6ff;--color-primary-100:#d9eaff;--color-primary-200:#bcdcff;--color-primary-300:#8ec6ff;--color-primary-400:#59a5ff;--color-primary-500:#3883fa;--color-primary-600:#2b67e5;--color-primary-700:#144ce1;--color-primary-800:#173db6;--color-primary-900:#19388f;--color-primary-950:#142457;--color-primary-50-rgb:238,246,255;--color-primary-100-rgb:217,234,255;--color-primary-200-rgb:188,220,255;--color-primary-300-rgb:142,198,255;--color-primary-400-rgb:89,165,255;--color-primary-500-rgb:56,131,250;--color-primary-600-rgb:43,103,229;--color-primary-700-rgb:20,76,225;--color-primary-800-rgb:23,61,182;--color-primary-900-rgb:25,56,143;--color-primary-950-rgb:20,36,87;--color-secondary-50:#e7f6ff;--color-secondary-100:#cdecff;--color-secondary-200:#9bd9ff;--color-secondary-300:#77cbff;--color-secondary-400:#60c2ff;--color-secondary-500:#37b2fe;--color-secondary-600:#18a6fd;--color-secondary-700:#1099ed;--color-secondary-800:#078ada;--color-secondary-900:#046bab;--color-secondary-950:#062a4b;--color-secondary-50-rgb:231,246,255;--color-secondary-100-rgb:205,236,255;--color-secondary-200-rgb:155,217,255;--color-secondary-300-rgb:119,203,255;--color-secondary-400-rgb:96,194,255;--color-secondary-500-rgb:55,178,254;--color-secondary-600-rgb:24,166,253;--color-secondary-700-rgb:16,153,237;--color-secondary-800-rgb:7,138,218;--color-secondary-900-rgb:4,107,171;--color-secondary-950-rgb:6,42,75;--color-success-50:#ecfff8;--color-success-100:#d0f6e8;--color-success-200:#b1ecd6;--color-success-300:#7adfba;--color-success-400:#48d1a0;--color-success-500:#22c98d;--color-success-600:#0dbb7d;--color-success-700:#0ca76f;--color-success-800:#0e8d60;--color-success-900:#186c4e;--color-success-50-rgb:236,255,248;--color-success-100-rgb:208,246,232;--color-success-200-rgb:177,236,214;--color-success-300-rgb:122,223,186;--color-success-400-rgb:72,209,160;--color-success-500-rgb:34,201,141;--color-success-600-rgb:13,187,125;--color-success-700-rgb:12,167,111;--color-success-800-rgb:14,141,96;--color-success-900-rgb:24,108,78;--color-warning-50:#fff4ea;--color-warning-100:#ffecdb;--color-warning-200:#ffd2a9;--color-warning-300:#ffbc7e;--color-warning-400:#ffaf65;--color-warning-500:#ff9f46;--color-warning-600:#f38f19;--color-warning-700:#ed8307;--color-warning-800:#d17100;--color-warning-900:#af5f01;--color-warning-50-rgb:255,244,234;--color-warning-100-rgb:255,236,219;--color-warning-200-rgb:255,210,169;--color-warning-300-rgb:255,188,126;--color-warning-400-rgb:255,175,101;--color-warning-500-rgb:255,159,70;--color-warning-600-rgb:243,143,25;--color-warning-700-rgb:237,131,7;--color-warning-800-rgb:209,113,0;--color-warning-900-rgb:175,95,1;--color-danger-50:#ffebeb;--color-danger-100:#ffd5d5;--color-danger-200:#ffb1b1;--color-danger-300:#ff9292;--color-danger-400:#ff7c7c;--color-danger-500:#fc5959;--color-danger-600:#fb2b2b;--color-danger-700:#d91b1b;--color-danger-800:#ba1313;--color-danger-900:#a20606;--color-danger-50-rgb:255,235,235;--color-danger-100-rgb:255,213,213;--color-danger-200-rgb:255,177,177;--color-danger-300-rgb:255,146,146;--color-danger-400-rgb:255,124,124;--color-danger-500-rgb:252,89,89;--color-danger-600-rgb:251,43,43;--color-danger-700-rgb:217,27,27;--color-danger-800-rgb:186,19,19;--color-danger-900-rgb:162,6,6;--color-important-50:#fff8f5;--color-important-100:#ffe2d9;--color-important-200:#ffcebf;--color-important-300:#ffb29b;--color-important-400:#ff8c68;--color-important-500:#ff8058;--color-important-600:#ff6f42;--color-important-700:#ff4912;--color-important-800:#c83509;--color-important-900:#611700;--color-important-50-rgb:255,248,245;--color-important-100-rgb:255,226,217;--color-important-200-rgb:255,206,191;--color-important-300-rgb:255,178,155;--color-important-400-rgb:255,140,104;--color-important-500-rgb:255,128,88;--color-important-600-rgb:255,111,66;--color-important-700-rgb:255,73,18;--color-important-800-rgb:200,53,9;--color-important-900-rgb:97,23,0;--color-special-50:#efecfa;--color-special-100:#e4dff7;--color-special-200:#c4b6ff;--color-special-300:#a38cff;--color-special-400:#8a6ff5;--color-special-500:#8166ee;--color-special-600:#7055df;--color-special-700:#513baa;--color-special-800:#452da5;--color-special-900:#30216e;--color-special-50-rgb:239,236,250;--color-special-100-rgb:228,223,247;--color-special-200-rgb:196,182,255;--color-special-300-rgb:163,140,255;--color-special-400-rgb:138,111,245;--color-special-500-rgb:129,102,238;--color-special-600-rgb:112,85,223;--color-special-700-rgb:81,59,170;--color-special-800-rgb:69,45,165;--color-special-900-rgb:48,33,110;--color-inherit:inherit;--color-transparent:transparent;--color-current:currentColor;--color-black:#000;--color-white:#fff;--color-canvas:#fff;--color-canvas-light:#fff;--color-canvas-dark:#fcfdfe;--color-inverse:#000;--color-surface:#eff1f3;--color-surface-light:#fcfdfe;--color-surface-strong:#ebedf3;--color-fore:#30394a;--color-fore-in-light:#30394a;--color-fore-in-dark:#fff;--color-focus:#bcdcff;--color-link:#2b47a2;--color-link-hover:#144ce1;--color-link-visited:#6328a4;--color-link-active:#144ce1;--color-placeholder:#b2b9c5;--color-border:#ebedf3;--color-border-strong:#d2d6e5;--color-border-light:#eff1f3;--color-black-rgb:0,0,0;--color-white-rgb:255,255,255;--color-canvas-rgb:255,255,255;--color-canvas-light-rgb:255,255,255;--color-canvas-dark-rgb:252,253,254;--color-inverse-rgb:0,0,0;--color-surface-rgb:239,241,243;--color-surface-light-rgb:252,253,254;--color-surface-strong-rgb:235,237,243;--color-fore-rgb:48,57,74;--color-fore-in-light-rgb:48,57,74;--color-fore-in-dark-rgb:255,255,255;--color-focus-rgb:188,220,255;--color-link-rgb:43,71,162;--color-link-hover-rgb:20,76,225;--color-link-visited-rgb:99,40,164;--color-link-active-rgb:20,76,225;--color-placeholder-rgb:178,185,197;--color-border-rgb:235,237,243;--color-border-strong-rgb:210,214,229;--color-border-light-rgb:239,241,243}body{--btn-bg:var(--color-gray-50)}@media (prefers-color-scheme:dark){.dark-auto{--color-gray-50:#0b0f18;--color-gray-100:#30394a;--color-gray-200:#353d57;--color-gray-300:#3d4667;--color-gray-400:#4a577f;--color-gray-500:#64758b;--color-gray-600:#b2b9c5;--color-gray-700:#d2d6e5;--color-gray-800:#ebedf3;--color-gray-900:#eff1f3;--color-gray-950:#fcfdfe;--color-gray-50-rgb:11,15,24;--color-gray-100-rgb:48,57,74;--color-gray-200-rgb:53,61,87;--color-gray-300-rgb:61,70,103;--color-gray-400-rgb:74,87,127;--color-gray-500-rgb:100,117,139;--color-gray-600-rgb:178,185,197;--color-gray-700-rgb:210,214,229;--color-gray-800-rgb:235,237,243;--color-gray-900-rgb:239,241,243;--color-gray-950-rgb:252,253,254;--color-primary-50:#142457;--color-primary-100:#19388f;--color-primary-200:#173db6;--color-primary-300:#144ce1;--color-primary-400:#2b67e5;--color-primary-500:#3883fa;--color-primary-600:#59a5ff;--color-primary-700:#8ec6ff;--color-primary-800:#bcdcff;--color-primary-900:#d9eaff;--color-primary-950:#eef6ff;--color-primary-50-rgb:20,36,87;--color-primary-100-rgb:25,56,143;--color-primary-200-rgb:23,61,182;--color-primary-300-rgb:20,76,225;--color-primary-400-rgb:43,103,229;--color-primary-500-rgb:56,131,250;--color-primary-600-rgb:89,165,255;--color-primary-700-rgb:142,198,255;--color-primary-800-rgb:188,220,255;--color-primary-900-rgb:217,234,255;--color-primary-950-rgb:238,246,255;--color-secondary-50:#062a4b;--color-secondary-100:#046bab;--color-secondary-200:#078ada;--color-secondary-300:#1099ed;--color-secondary-400:#18a6fd;--color-secondary-500:#37b2fe;--color-secondary-600:#60c2ff;--color-secondary-700:#77cbff;--color-secondary-800:#9bd9ff;--color-secondary-900:#cdecff;--color-secondary-950:#e7f6ff;--color-secondary-50-rgb:6,42,75;--color-secondary-100-rgb:4,107,171;--color-secondary-200-rgb:7,138,218;--color-secondary-300-rgb:16,153,237;--color-secondary-400-rgb:24,166,253;--color-secondary-500-rgb:55,178,254;--color-secondary-600-rgb:96,194,255;--color-secondary-700-rgb:119,203,255;--color-secondary-800-rgb:155,217,255;--color-secondary-900-rgb:205,236,255;--color-secondary-950-rgb:231,246,255;--color-success-50:#186c4e;--color-success-100:#0e8d60;--color-success-200:#0ca76f;--color-success-300:#0dbb7d;--color-success-400:#22c98d;--color-success-500:#48d1a0;--color-success-600:#7adfba;--color-success-700:#b1ecd6;--color-success-800:#d0f6e8;--color-success-900:#ecfff8;--color-success-50-rgb:24,108,78;--color-success-100-rgb:14,141,96;--color-success-200-rgb:12,167,111;--color-success-300-rgb:13,187,125;--color-success-400-rgb:34,201,141;--color-success-500-rgb:72,209,160;--color-success-600-rgb:122,223,186;--color-success-700-rgb:177,236,214;--color-success-800-rgb:208,246,232;--color-success-900-rgb:236,255,248;--color-warning-50:#af5f01;--color-warning-100:#d17100;--color-warning-200:#ed8307;--color-warning-300:#f38f19;--color-warning-400:#ff9f46;--color-warning-500:#ffaf65;--color-warning-600:#ffbc7e;--color-warning-700:#ffd2a9;--color-warning-800:#ffecdb;--color-warning-900:#fff4ea;--color-warning-50-rgb:175,95,1;--color-warning-100-rgb:209,113,0;--color-warning-200-rgb:237,131,7;--color-warning-300-rgb:243,143,25;--color-warning-400-rgb:255,159,70;--color-warning-500-rgb:255,175,101;--color-warning-600-rgb:255,188,126;--color-warning-700-rgb:255,210,169;--color-warning-800-rgb:255,236,219;--color-warning-900-rgb:255,244,234;--color-danger-50:#a20606;--color-danger-100:#ba1313;--color-danger-200:#d91b1b;--color-danger-300:#fb2b2b;--color-danger-400:#fc5959;--color-danger-500:#ff7c7c;--color-danger-600:#ff9292;--color-danger-700:#ffb1b1;--color-danger-800:#ffd5d5;--color-danger-900:#ffebeb;--color-danger-50-rgb:162,6,6;--color-danger-100-rgb:186,19,19;--color-danger-200-rgb:217,27,27;--color-danger-300-rgb:251,43,43;--color-danger-400-rgb:252,89,89;--color-danger-500-rgb:255,124,124;--color-danger-600-rgb:255,146,146;--color-danger-700-rgb:255,177,177;--color-danger-800-rgb:255,213,213;--color-danger-900-rgb:255,235,235;--color-important-50:#611700;--color-important-100:#c83509;--color-important-200:#ff4912;--color-important-300:#ff6f42;--color-important-400:#ff8058;--color-important-500:#ff8c68;--color-important-600:#ffb29b;--color-important-700:#ffcebf;--color-important-800:#ffe2d9;--color-important-900:#fff8f5;--color-important-50-rgb:97,23,0;--color-important-100-rgb:200,53,9;--color-important-200-rgb:255,73,18;--color-important-300-rgb:255,111,66;--color-important-400-rgb:255,128,88;--color-important-500-rgb:255,140,104;--color-important-600-rgb:255,178,155;--color-important-700-rgb:255,206,191;--color-important-800-rgb:255,226,217;--color-important-900-rgb:255,248,245;--color-special-50:#30216e;--color-special-100:#452da5;--color-special-200:#513baa;--color-special-300:#7055df;--color-special-400:#8166ee;--color-special-500:#8a6ff5;--color-special-600:#a38cff;--color-special-700:#c4b6ff;--color-special-800:#e4dff7;--color-special-900:#efecfa;--color-special-50-rgb:48,33,110;--color-special-100-rgb:69,45,165;--color-special-200-rgb:81,59,170;--color-special-300-rgb:112,85,223;--color-special-400-rgb:129,102,238;--color-special-500-rgb:138,111,245;--color-special-600-rgb:163,140,255;--color-special-700-rgb:196,182,255;--color-special-800-rgb:228,223,247;--color-special-900-rgb:239,236,250;--color-canvas:#0b0f18;--color-inverse:#fff;--color-surface:#353d57;--color-surface-light:#30394a;--color-surface-strong:#3d4667;--color-fore:#ebedf3;--color-focus:#173db6;--color-link:#59a5ff;--color-link-hover:#3883fa;--color-link-visited:#bcdcff;--color-link-active:#bcdcff;--color-placeholder:#4a577f;--color-border:#353d57;--color-border-strong:#3d4667;--color-border-light:#30394a;--color-canvas-rgb:11,15,24;--color-inverse-rgb:255,255,255;--color-surface-rgb:53,61,87;--color-surface-light-rgb:48,57,74;--color-surface-strong-rgb:61,70,103;--color-fore-rgb:235,237,243;--color-focus-rgb:23,61,182;--color-link-rgb:89,165,255;--color-link-hover-rgb:56,131,250;--color-link-visited-rgb:188,220,255;--color-link-active-rgb:188,220,255;--color-placeholder-rgb:74,87,127;--color-border-rgb:53,61,87;--color-border-strong-rgb:61,70,103;--color-border-light-rgb:48,57,74}}*,:after,:before{--tw-border-opacity:1;--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;border-color:rgba(var(--color-border-rgb),var(--tw-border-opacity))}::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }html{font-size:var(--font-size-root)}body{--tw-bg-opacity:1;background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));font-size:.8125rem;line-height:1.5384615385}.dark,body{--tw-text-opacity:1;color:rgba(var(--color-fore-rgb),var(--tw-text-opacity))}:root{--font-h1-size:2.25rem;--article-p-space:0.5em;--article-heading-space:0.5em;--article-hr-space:1.5em;--article-cell-padding:0.25rem 0.75rem}a,a.disabled:hover{--tw-text-opacity:1;color:rgba(var(--color-link-rgb),var(--tw-text-opacity))}a:hover{--tw-text-opacity:1;color:rgba(var(--color-link-hover-rgb),var(--tw-text-opacity))}a:focus-visible{outline-color:rgb(var(--color-focus-rgb));outline-offset:2px;outline-width:2px}.code,code{--tw-text-opacity:1;background-color:rgba(var(--color-important-500-rgb),.1);border-radius:var(--radius);color:rgba(var(--color-important-500-rgb),var(--tw-text-opacity));padding-left:.25rem;padding-right:.25rem}pre{font-size:.75rem;line-height:1rem;overflow:auto;padding:.5rem}pre code{background-color:transparent;color:inherit;padding:0}samp,var{font-weight:700}.blockquote,blockquote{text-wrap:balance;border-left-width:4px;font-size:.875rem;line-height:1.3rem;padding-left:.75rem}.blockquote figcaption,blockquote figcaption{--tw-text-opacity:1;color:rgba(var(--color-gray-500-rgb),var(--tw-text-opacity));font-size:.75rem;line-height:1rem}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{text-wrap:balance;font-weight:700;line-height:1.5}.h1,h1{font-size:1.75rem}.h2,h2{font-size:1.5rem}.h3,h3{font-size:1.25rem}.h4,h4{font-size:1rem}.h5,h5{font-size:.875rem}.h6,h6{font-size:.75rem}ul{list-style-type:disc}ol,ul{padding-left:1.5em}ol{list-style-type:decimal}dt{font-weight:700}dd{padding-left:2em}.article{color:var(--font-size-article)}.article h1,.article h2,.article h3,.article h4{margin-bottom:var(--article-heading-space);margin-top:var(--article-heading-space)}.article audio,.article blockquote,.article figure,.article img,.article ol,.article p,.article table,.article ul,.article video{margin-bottom:var(--article-p-space);margin-top:var(--article-p-space)}.article hr{margin-bottom:var(--article-hr-space);margin-top:var(--article-hr-space)}.article table{border-width:1px}.article td,.article th{border-bottom-width:1px;padding:var(--article-cell-padding)}.article thead{background-color:var(--table-head-bg,var(--color-gray-100))}.article ol *,.article table *,.article ul *{margin-bottom:0;margin-top:0}.article pre{--tw-bg-opacity:1;background-color:rgba(var(--color-gray-50-rgb),var(--tw-bg-opacity));border-radius:var(--radius);border-width:1px}:root{--alert-bg:var(--color-surface)}.alert{align-items:center;background-color:var(--alert-bg);border-radius:var(--radius);display:flex;gap:.75rem;padding:.5rem .75rem}.alert-content{display:flex;flex:1 1 auto;flex-direction:column;gap:1rem}.alert-close{margin-bottom:-.375rem;margin-right:-.5rem;margin-top:-.375rem}.alert-link{color:inherit;font-weight:700}.alert-link:hover{color:inherit;text-decoration-line:underline}.alert-heading{font-weight:700;margin:0}.alert-text{flex:1 1 auto;white-space:pre-line}.alert-actions{align-items:center;display:flex;gap:.5rem}:root{--breadcrumb-divider:"/";--breadcrumb-divider-color:var(--color-gray-500);--breadcrumb-color-active:var(--color-gray-500)}.breadcrumb{display:flex;gap:1.25rem;list-style-type:none;padding-left:0}.breadcrumb>li{position:relative}.breadcrumb>li+li:before{color:var(--breadcrumb-divider-color);content:var(--breadcrumb-divider);display:block;left:-1.25rem;position:absolute;text-align:center;width:1.25rem}.breadcrumb>.active{color:var(--breadcrumb-color-active)}:root{--btn-radius:var(--radius);--btn-bg:var(--color-surface);--btn-border-color:var(--color-gray-300)}.btn{--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);--tw-ring-color:var(--btn-border-color);--state-active-opacity:1;align-items:center;background-color:var(--btn-bg);border-radius:var(--btn-radius);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);display:inline-flex;gap:.375rem;height:2rem;justify-content:center;padding-left:.75rem;padding-right:.75rem;white-space:nowrap}.btn,.btn-default:hover{color:inherit}.btn-link{--tw-text-opacity:1;--tw-ring-color:transparent;color:rgba(var(--color-link-rgb),var(--tw-text-opacity));text-decoration-line:underline;text-underline-offset:2px}.btn-link:visited{color:rgba(var(--color-link-visited-rgb),var(--tw-text-opacity))}.btn-link:hover{--tw-text-opacity:1;color:rgba(var(--color-link-hover-rgb),var(--tw-text-opacity))}.btn-link{--btn-bg:transparent}.btn.size-xs,.size-xs>.btn{font-size:.75rem;height:1.25rem;line-height:1rem;padding-left:.25rem;padding-right:.25rem}.btn.size-sm,.size-sm>.btn{font-size:.75rem;height:1.5rem;line-height:1rem}.btn.size-md,.btn.size-sm,.size-md>.btn,.size-sm>.btn{padding-left:.5rem;padding-right:.5rem}.btn.size-md,.size-md>.btn{height:1.75rem}.btn.size-lg,.size-lg>.btn{font-size:1rem;height:2.5rem;line-height:1.5rem;padding-left:1rem;padding-right:1rem}.btn.size-xl,.size-xl>.btn{font-size:1.125rem;height:3rem;line-height:1.75rem;padding-left:1.25rem;padding-right:1.25rem}.btn.square{aspect-ratio:1/1;gap:.125rem;padding-left:0;padding-right:0}.btn.btn-caret{padding-left:.25rem;padding-right:.25rem}.btn.btn-wide{min-width:80px}:root{--checkbox-size:12px;--checkbox-color:var(--color-primary-500)}.checkbox,.radio{align-items:center;cursor:pointer;display:flex;gap:.375rem;min-height:20px}.checkbox>input[type=checkbox],.radio>input[type=radio]{accent-color:rgb(var(--color-primary-500-rgb));border-radius:var(--radius-lg)}.checkbox-primary,.radio-primary{display:flex;gap:.375rem;min-height:20px;position:relative}.checkbox-primary>input[type=checkbox],.radio-primary>input[type=radio]{inset:0;opacity:0;position:absolute}.checkbox-primary>label,.radio-primary>label{cursor:pointer;padding-left:calc(var(--checkbox-size) + 8px);position:relative}.checkbox-primary>label:after,.checkbox-primary>label:before,.radio-primary>label:after,.radio-primary>label:before{--tw-content:"";content:var(--tw-content);display:block;height:var(--checkbox-size);left:0;position:absolute;top:calc((20px - var(--checkbox-size))/2);transition-duration:.15s;transition-property:transform,background-color,color,opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);width:var(--checkbox-size)}.checkbox-primary>label:before{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));border-color:rgba(var(--color-gray-400-rgb),var(--tw-border-opacity));border-radius:var(--radius-sm);border-width:1px}.checkbox-primary>label:after{--tw-scale-x:.9;--tw-scale-y:.9;background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZmlsbD0iI2ZmZiIgZD0ibTkgMjAuNDItNi4yMS02LjIxIDIuODMtMi44M0w5IDE0Ljc3bDkuODgtOS44OSAyLjgzIDIuODN6Ii8+PC9zdmc+");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))}.radio-primary>label:before{--tw-border-opacity:1;border-color:rgba(var(--color-gray-400-rgb),var(--tw-border-opacity));border-radius:var(--radius-full);border-width:1px}.radio-primary>label:after{--checkbox-radio-size:calc(var(--checkbox-size)*2/3);background-color:var(--checkbox-color);border-radius:var(--radius-full);height:var(--checkbox-radio-size);left:calc((var(--checkbox-size) - var(--checkbox-radio-size))/2);opacity:0;top:calc((20px - var(--checkbox-radio-size))/2);width:var(--checkbox-radio-size)}.checkbox-primary>label:hover:before,.radio-primary>label:hover:before{border-color:var(--checkbox-color)}.checkbox-primary.focus>label:before,.checkbox-primary>input[type=checkbox]:focus+label:before,.radio-primary.focus>label:before,.radio-primary>input[type=radio]:focus+label:before{border-color:var(--checkbox-color);outline-color:rgb(var(--color-focus-rgb));outline-style:solid;outline-width:2px}.checkbox-primary.checked>label:before,.checkbox-primary>input[type=checkbox]:checked+label:before{background-color:var(--checkbox-color);border-color:var(--checkbox-color)}.radio-primary.checked>label:before,.radio-primary>input[type=radio]:checked+label:before{border-color:var(--checkbox-color)}.checkbox-primary.checked>label:after,.checkbox-primary>input[type=checkbox]:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input[type=radio]:checked+label:after{opacity:1}.checkbox-primary.disabled>label,.checkbox-primary>input[type=checkbox]:disabled+label,.radio-primary.disabled>label,.radio-primary>input[type=radio]:disabled+label{--tw-grayscale:grayscale(100%);cursor:not-allowed;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);opacity:.7;pointer-events:none}.checkbox-primary.indeterminate>label:after,.checkbox-primary>input[type=checkbox]:indeterminate+label:after{--tw-border-opacity:1;background-color:var(--checkbox-color);background-image:none;border-color:rgba(var(--color-canvas-rgb),var(--tw-border-opacity));border-width:calc((var(--checkbox-size) - 2px)/2) 2px;opacity:1}.check-list{align-items:flex-start;flex-direction:column;gap:.5rem}.check-list,.check-list-inline{display:flex;padding-bottom:.375rem;padding-top:.375rem}.check-list-inline{align-items:center;-moz-column-gap:1rem;column-gap:1rem;flex-direction:row;flex-wrap:wrap;row-gap:.5rem}.switch{display:flex;gap:.375rem;min-height:20px;padding-left:2.5rem;position:relative}.switch>input{inset:0;opacity:0;position:absolute}.switch>label:after,.switch>label:before{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-content:"";background-color:rgba(var(--color-surface-rgb),var(--tw-bg-opacity));border-color:rgba(var(--color-border-strong-rgb),var(--tw-border-opacity));border-radius:var(--radius-full);border-width:1px;content:var(--tw-content);height:1rem;left:0;position:absolute;top:.125rem;transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);width:2rem}.switch>label:before{--tw-shadow:inset 0 2px 4px 0 rgba(0,0,0,.05);--tw-shadow-colored:inset 0 2px 4px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);cursor:pointer}.switch>label:hover:before{--tw-border-opacity:1;border-color:rgba(var(--color-border-rgb),var(--tw-border-opacity))}.switch>label:after{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-shadow:0 3px 8px 0 rgba(0,0,0,.04),0 1px 2px -1px rgba(0,0,0,.01);--tw-shadow-colored:0 3px 8px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));border-color:rgba(var(--color-canvas-rgb),var(--tw-border-opacity));box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);height:.75rem;left:.125rem;top:.25rem;width:.75rem}.switch>input:checked+label:before{background-color:var(--checkbox-color);border-color:rgba(var(--color-inverse-rgb),.2)}.switch>input:checked+label:after{color:var(--checkbox-color);left:18px}.switch.focus>label:before,.switch>input:focus+label:before{border-color:var(--checkbox-color);outline-color:rgb(var(--color-focus-rgb));outline-style:solid;outline-width:2px}.switch.disabled>label:before,.switch>input:disabled+label:before{--tw-grayscale:grayscale(100%);cursor:not-allowed;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);opacity:.7;pointer-events:none}:root{--form-control-radius:var(--radius);--form-control-border:var(--color-border);--form-control-focus:var(--color-primary-500);--form-control-disabled:var(--color-surface);--form-control-readonly:var(--color-surface)}.dark{--form-control-border:var(--color-border-strong)}input::-moz-placeholder,textarea::-moz-placeholder{--tw-placeholder-opacity:1;color:rgba(var(--color-placeholder-rgb),var(--tw-placeholder-opacity))}input::placeholder,textarea::placeholder{--tw-placeholder-opacity:1;color:rgba(var(--color-placeholder-rgb),var(--tw-placeholder-opacity))}.form-control{--tw-bg-opacity: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);--tw-ring-color:var(--form-control-border);background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));border-radius:var(--form-control-radius);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);display:block;height:2rem;outline-color:transparent;outline-style:solid;outline-width:1px;padding:.25rem .5rem;transition-duration:.15s;transition-property:outline,box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);width:100%}.form-control.focus,.form-control: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(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgba(var(--color-focus-rgb),var(--tw-ring-opacity));--tw-ring-opacity:0.3;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline-color:var(--form-control-focus)}.form-control.disabled,.form-control[disabled]{background-color:var(--form-control-disabled);opacity:1}.form-control.readonly,.form-control[readonly]{background-color:var(--form-control-readonly)}select{-webkit-appearance:none;background-image:url("data:image/gif;base64,R0lGODlhBwAEAIAAAMvQ2////yH5BAEAAAEALAAAAAAHAAQAAAIIhA+BGWoNWSgAOw==");background-position:right 8px top 50%;background-repeat:no-repeat;background-size:8px auto;padding-right:1rem}select.form-control[multiple]{background-image:none}textarea.form-control{height:auto;min-height:32px}input[type=file].form-control{padding:.125rem}input[type=file].form-control::-webkit-file-upload-button{-webkit-appearance:none;appearance:none;border-radius:inherit;border-style:none;cursor:pointer;height:1.75rem;padding-left:.5rem;padding-right:.5rem}input[type=file].form-control::-webkit-file-upload-button:hover{background-color:rgba(var(--color-black-rgb),.1)}.has-error .form-control,.has-error.form-control{--tw-ring-color:rgba(var(--color-danger-500-rgb),0.6)}.has-error .form-control.focus,.has-error .form-control:focus,.has-error.form-control.focus,.has-error.form-control:focus{--tw-ring-color:rgba(var(--color-danger-500-rgb),0.1);outline-color:rgb(var(--color-danger-500-rgb))}.has-warning .form-control,.has-warning.form-control{--tw-ring-color:rgba(var(--color-warning-500-rgb),0.6)}.has-warning .form-control.focus,.has-warning .form-control:focus,.has-warning.form-control.focus,.has-warning.form-control:focus{--tw-ring-color:rgba(var(--color-warning-500-rgb),0.2);outline-color:rgb(var(--color-warning-500-rgb))}.has-success .form-control,.has-success.form-control{--tw-ring-color:rgba(var(--color-success-500-rgb),0.6)}.has-success .form-control.focus,.has-success .form-control:focus,.has-success.form-control.focus,.has-success.form-control:focus{--tw-ring-color:rgba(var(--color-success-500-rgb),0.2);outline-color:rgb(var(--color-success-500-rgb))}.form-control.size-sm,.size-sm>.form-control{font-size:.75rem;height:1.5rem;line-height:1rem;padding-left:.5rem;padding-right:.5rem}.form-control.size-md,.size-md>.form-control{height:1.75rem;padding-left:.5rem;padding-right:.5rem}.form-control.size-lg,.size-lg>.form-control{font-size:1rem;height:2.5rem;line-height:1.5rem;padding-left:.75rem;padding-right:.75rem}:root{--input-group-addon-bg:var(--color-gray-50)}.input-group{align-items:stretch;display:flex}.input-group>.form-control,.input-group>.input-control{flex:1 1 auto;z-index:1}.input-group-addon{--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);--tw-ring-color:var(--form-control-border);align-items:center;background-color:var(--input-group-addon-bg);border-radius:var(--form-control-radius);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);display:flex;flex:none;height:2rem;padding-left:.5rem;padding-right:.5rem;z-index:0}.size-sm>.input-group-addon{font-size:.75rem;height:1.5rem;line-height:1rem;padding-left:.5rem;padding-right:.5rem}.size-lg>.input-group-addon{font-size:1rem;height:2.5rem;line-height:1.5rem;padding-left:.75rem;padding-right:.75rem}.input-group-control{flex:1 1 auto}.input-group>*+*,.input-group>*+* .form-control{border-bottom-left-radius:var(--radius-none);border-top-left-radius:var(--radius-none)}.input-group>:not(:last-child),.input-group>:not(:last-child) .form-control{border-bottom-right-radius:var(--radius-none);border-top-right-radius:var(--radius-none)}.input-group .btn:focus-visible,.input-group .form-control:focus{z-index:2}:root{--form-tip-color:var(--color-gray-400);--form-label-color:var(--color-gray-700);--form-horz-label-width:6rem;--form-grid-gap-x:1.25rem;--form-grid-gap-y:.75rem}.form{flex-direction:column;gap:1rem}.form,.form-label{display:flex}.form-label{align-items:center;color:var(--form-label-color);flex-direction:row;gap:.25rem;height:2rem;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap}.form-label.required:after{--tw-translate-y:0.125rem;--tw-scale-x:1.25;--tw-scale-y:1.25;--tw-text-opacity:1;color:rgba(var(--color-danger-500-rgb),var(--tw-text-opacity));content:"*";display:inline-block;margin-left:.25rem;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))}.no-required .form-label.required:after{display:none}.form-label-actions{flex:1 1 auto;justify-content:flex-end}.form-label>.checkbox-primary{margin-left:.75rem}.form-tip{color:var(--form-tip-color);display:block;margin-top:.25rem}.has-error .form-tip{--tw-text-opacity:1;color:rgba(var(--color-danger-500-rgb),var(--tw-text-opacity))}.has-warning .form-tip{--tw-text-opacity:1;color:rgba(var(--color-warning-500-rgb),var(--tw-text-opacity))}.has-success .form-tip{--tw-text-opacity:1;color:rgba(var(--color-success-500-rgb),var(--tw-text-opacity))}.form-actions{display:flex;flex-direction:row;gap:1rem;justify-content:center}.form-grid{--form-grid-gap-x-half:calc(var(--form-grid-gap-x)/2);--form-grid-gap-y-half:calc(var(--form-grid-gap-y)/2);align-items:flex-start;flex-direction:row;flex-wrap:wrap;gap:0}.form-grid .form-group{padding:var(--form-grid-gap-y-half) var(--form-grid-gap-x-half)}.form-grid .form-label.required:after{margin-left:.25rem;order:-9999}.form-grid .form-label .checkbox{margin-left:.75rem;margin-right:.75rem}.form-grid .has-wrap-after:after{--tw-content:"";content:var(--tw-content);display:block;width:100%}.form-grid-wrap{width:100%}.form-grid-row{display:flex;flex-direction:row;padding-bottom:var(--form-grid-gap-y-half);padding-top:var(--form-grid-gap-y-half);position:relative;width:100%}.form-grid-col{padding-left:var(--form-grid-gap-x-half);padding-right:var(--form-grid-gap-x-half)}.form-grid .form-actions{gap:1.5rem;justify-content:center;padding:var(--form-grid-gap-y) var(--form-grid-gap-x-half);width:100%}.form-grid .form-actions.is-pinned{border-top-width:1px}.form-horz .form-group,.form-horz .form-row{align-items:flex-start;display:flex;flex-direction:row}.form-horz .form-group{flex-grow:1;flex-wrap:wrap;min-height:32px;min-width:0;padding-left:var(--form-horz-label-width);position:relative}.form-horz .form-group[class*=" w-"],.form-horz .form-group[class^=w-]{flex:none}.form-horz .form-group>*{min-width:0}.form-horz .form-group.no-label{padding-left:0}.form-horz .form-group.no-label>.check-list-inline{padding-left:1rem;padding-right:1rem}.form-horz .form-label{justify-content:flex-end;left:0;padding-left:1rem;padding-right:.5rem;position:absolute;top:0;width:var(--form-horz-label-width)}.form-horz .form-label.required:after{margin-left:0;order:-9999}.form-horz .form-tip{width:100%}.form-horz .form-tip,.form-horz .input-control,.form-horz .input-group{flex:1 1 auto}.form .form-group-wrapper,.form-horz .form-group-wrapper{flex:1 1 auto;min-width:0;width:100%;z-index:1}.form .form-group-wrapper.flex-none,.form-horz .form-group-wrapper.flex-none{flex:none}.form fieldset>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.form fieldset{padding-bottom:1rem;padding-left:1rem}.form-grid fieldset>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.form legend{--tw-border-opacity:1;border-bottom-color:rgba(var(--color-primary-100-rgb),var(--tw-border-opacity));border-bottom-width:1px;display:flex;justify-content:flex-start;margin-left:-1rem;width:100%;width:calc(100% + 1rem)}.form-title{align-items:center;background-color:rgba(var(--color-primary-50-rgb),.5);display:flex;font-weight:700;height:1.75rem;padding-left:.75rem;padding-right:.75rem}:root{--input-control-fix-width-sm:2rem;--input-control-fix-width:4.375rem;--input-control-fix-width-lg:6.75rem}.input-control{--input-control-prefix:8px;--input-control-suffix:8px;position:relative}.input-control-prefix,.input-control-suffix{align-items:center;display:flex;height:100%;left:0;opacity:.5;padding-left:.5rem;padding-right:.5rem;position:absolute;top:0;white-space:nowrap;width:var(--input-control-prefix);z-index:1}.input-control-suffix{justify-content:flex-end;left:auto;right:0;width:var(--input-control-suffix)}.form-control:focus+.input-control-prefix,.form-control:focus+.input-control-suffix{opacity:1}.input-control>.form-control{padding-left:var(--input-control-prefix);padding-right:var(--input-control-suffix)}.input-control>select.form-control{background-position-x:calc(100% - var(--input-control-suffix) - 8px);padding-right:calc(var(--input-control-suffix) + 20px)}.has-prefix{--input-control-prefix:var(--input-control-fix-width)}.has-suffix{--input-control-suffix:var(--input-control-fix-width)}.has-prefix-sm{--input-control-prefix:var(--input-control-fix-width-sm)}.has-suffix-sm{--input-control-suffix:var(--input-control-fix-width-sm)}.has-prefix-lg{--input-control-prefix:var(--input-control-fix-width-lg)}.has-suffix-lg{--input-control-suffix:var(--input-control-fix-width-lg)}.has-prefix-icon{--input-control-prefix:32px}.has-suffix-icon{--input-control-suffix:32px}.input-control.has-prefix-icon{--input-control-prefix:32px}.input-control.has-suffix-icon{--input-control-suffix:32px}.input-control.has-prefix-icon>.input-control-prefix,.input-control.has-suffix-icon>.input-control-suffix{justify-content:center;padding:0}.input-control.size-sm>.form-control,.input-control.size-sm>.input-control-prefix,.input-control.size-sm>.input-control-suffix{font-size:.75rem;line-height:1rem}.input-control.size-lg>.form-control,.input-control.size-lg>.input-control-prefix,.input-control.size-lg>.input-control-suffix{font-size:1rem;line-height:1.5rem}:root{--label-bg:rgba(var(--color-canvas-rgb),.1);--label-border-color:var(--color-gray-300);--label-color:var(--color-gray-500);--label-radius:var(--radius)}.label{--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);--tw-ring-color:var(--label-border-color);align-items:center;background-color:var(--label-bg);border-radius:var(--label-radius);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:var(--label-color);display:inline-flex;font-size:.75rem;height:1.25rem;justify-content:center;line-height:1rem;min-width:1.25rem;padding-left:.25rem;padding-right:.25rem;white-space:pre-line}.label.size-lg{font-size:.8125rem;height:1.5rem;line-height:1.25rem;min-width:1.5rem;padding-left:.5rem;padding-right:.5rem}.label.size-sm{height:1rem;min-width:1rem}.label-dot{aspect-ratio:1/1;border-radius:var(--radius-full);height:.5rem;padding-left:0;padding-right:0}.caret,.caret-down,.caret-left,.caret-right,.caret-up{align-items:center;display:inline-flex;height:.75rem;justify-content:center;position:relative;width:.75rem}.caret-down:before,.caret-left:before,.caret-right:before,.caret-up:before,.caret:before{--tw-translate-y:-1px;--tw-rotate:45deg;--tw-content:"";border-color:currentColor;border-width:0 1px 1px 0;content:var(--tw-content);display:block;height:.35rem;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));transform-origin:center;width:.35rem}.caret-left:before{--tw-translate-x:0.125rem;--tw-translate-y:0px;--tw-rotate:135deg}.caret-left:before,.caret-right:before{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))}.caret-right:before{--tw-translate-x:-0.125rem;--tw-translate-y:0px;--tw-rotate:-45deg}.caret-up:before{--tw-translate-y:0.125rem;--tw-rotate:225deg;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))}:focus>.caret,:hover>.caret{opacity:inherit}.disabled .caret,.readonly .caret{opacity:var(--caret-opacity,.5)}.listitem{align-items:center;border-radius:var(--radius);display:flex;flex-direction:row;flex-wrap:nowrap;gap:.5rem;padding:.25rem}.listitem.selected{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-50-rgb),var(--tw-bg-opacity))}.listitem.active{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgba(var(--color-primary-500-rgb),var(--tw-bg-opacity));color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity))}.item-actions,.item-avatar,.item-icon,.item-trailing,.item-trailing-icon{flex:none}.item-icon.icon-EMPTY{display:none}.item-subtitle{font-size:.75rem;line-height:1rem;opacity:.8}.item-content,.item-text{flex:1 1 auto;min-width:0}.item-leading,.item-trailing{align-items:center;display:flex;flex:none;gap:.5rem}.item-checkbox{margin-right:-.5rem}.item-content{align-items:center;display:flex;gap:.5rem}.multiline>.item-content{align-items:flex-start;flex-direction:column;gap:.25rem}.list{list-style-type:none;padding-left:0}.list-heading-inner .item-title{--tw-text-opacity:1;color:rgba(var(--color-gray-500-rgb),var(--tw-text-opacity));font-weight:700}.list.is-nested-sub{padding-left:var(--list-indent)}.is-nested-collapsed{display:none}.nested-toggle-icon{align-items:center;border-radius:var(--radius);display:flex;height:1rem;justify-content:center;margin-right:-.25rem;width:1rem}.magnifier{display:inline-block;height:1em;position:relative;width:1em}.magnifier:after,.magnifier:before{border-radius:var(--radius-full);content:"";display:block;position:absolute}.magnifier:before{border:1px solid;height:.75em;width:.75em}.magnifier:after{--tw-rotate:45deg;background-color:currentColor;height:1px;left:.55em;top:.7em;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));width:.5em}.close{aspect-ratio:1/1;display:block;position:relative;width:1em}.close:after,.close:before{--tw-rotate:45deg;background-color:currentColor;border-radius:var(--radius-full);content:"";display:block;height:1px;left:0;position:absolute;top:calc(50% - .5px);width:100%}.close:after,.close:before{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))}.close:after{--tw-rotate:-45deg}.search-box.compact.has-prefix-icon{--input-control-prefix:24px}.search-box.compact.has-suffix-icon{--input-control-suffix:24px}:root{--menu-bg:var(--color-canvas);--menu-active-bg:var(--color-primary-500);--menu-active-color:var(--color-canvas);--menu-selected-bg:var(--color-primary-50);--menu-selected-color:var(--color-primary-500);--menu-icon-opacity:.5;--menu-icon-margin:1.75rem;--menu-min-width:3rem;--menu-heading-color:var(--color-gray-500)}.menu{background:var(--menu-bg);max-width:var(--menu-max-width);min-width:var(--menu-min-width);padding:.5rem}.menu-wrapper{display:flex;flex-direction:column;min-height:0}.menu-wrapper>.menu{flex:1 1 auto;min-height:0;overflow:auto}.menu-item>.item-inner,.menu-item>a{align-items:center;border-radius:var(--radius);color:inherit;cursor:pointer;display:flex;gap:.5rem;justify-content:space-between;overflow:hidden;padding:.25rem .5rem;position:relative;text-overflow:ellipsis;transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);white-space:nowrap}.menu-item>.selected{background:var(--menu-selected-bg);color:var(--menu-selected-color)}.menu-item>.active,.menu-item>a.hover,.menu-item>a:hover{background:var(--menu-active-bg);color:var(--menu-active-color)}.menu-item.disabled>a:hover,.menu-item>a.disabled:hover{background-color:inherit;color:inherit}.menu-item>a>.item-title{flex:1 1 auto}.menu>.divider{margin:.5rem .25rem}.menu-heading{align-items:center;color:var(--menu-heading-color);display:flex;font-size:.75rem;font-weight:700;height:2rem;line-height:1rem;padding-left:.25rem;padding-right:.25rem}.has-icons>.menu-item>a>.item-icon{align-items:center;display:flex;height:1rem;justify-content:center;opacity:var(--menu-icon-opacity);width:1rem}.menu-nested{--menu-indent:10px}.menu-nested .menu{background-color:transparent;margin-bottom:-.5rem;margin-left:var(--menu-indent);margin-top:-.5rem;padding-right:0}.menu-nested .menu-item>.item-inner{padding-left:0}.menu.compact .menu-item>a{padding-bottom:.125rem;padding-top:.125rem}.menu.compact .menu-heading{height:1.75rem}.search-menu-header{padding:.5rem .5rem .125rem}.search-menu-footer{padding:.125rem .5rem .5rem}.search-menu .item.is-not-match{display:none}.search-menu .item.is-not-match.has-match-child{display:list-item}.search-menu .item.is-not-match.has-match-child>.item-inner{opacity:.5;pointer-events:none}.search-menu.no-toggle-on-search .nested-toggle-icon{pointer-events:none}.search-menu .is-match-keys{font-weight:700;text-decoration-line:underline}.search-menu-no-match-hint{--tw-text-opacity:1;color:rgba(var(--color-gray-500-rgb),var(--tw-text-opacity));display:none;font-size:.75rem;line-height:1rem;padding:.5rem}.no-match-child .search-menu-no-match-hint{display:block}.no-match-child>.menu{display:none}:root{--alert-bg:var(--color-surface)}.alert{align-items:center;background-color:var(--alert-bg);border-radius:var(--radius);display:flex;gap:.75rem;padding:.5rem .75rem}.alert-content{display:flex;flex:1 1 auto;flex-direction:column;gap:1rem}.alert-close{margin-bottom:-.375rem;margin-right:-.5rem;margin-top:-.375rem}.alert-link{color:inherit;font-weight:700}.alert-link:hover{color:inherit;text-decoration-line:underline}.alert-heading{font-weight:700;margin:0}.alert-text{flex:1 1 auto;white-space:pre-line}.alert-actions{align-items:center;display:flex;gap:.5rem}.close{aspect-ratio:1/1;display:block;position:relative;width:1em}.close:after,.close:before{--tw-rotate:45deg;background-color:currentColor;border-radius:var(--radius-full);content:"";display:block;height:1px;left:0;position:absolute;top:calc(50% - .5px);width:100%}.close:after,.close:before{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))}.close:after{--tw-rotate:-45deg}.messagers{align-items:flex-end;display:flex;flex-direction:column;gap:.5rem;inset:0;justify-content:flex-end;padding:1rem;pointer-events:none;position:fixed;z-index:1900}.messagers-top-left,.messagers-top-right{justify-content:flex-start}.messagers-bottom-left,.messagers-top-left{align-items:flex-start}.messagers-bottom,.messagers-center,.messagers-top{align-items:center}.messagers-top,.messagers-top-left,.messagers-top-right{justify-content:flex-start}.messagers-center{justify-content:center}.messager{--tw-text-opacity:1;--tw-shadow:0 10px 25px -5px rgba(0,0,0,.2),0 4px 10px -6px rgba(0,0,0,.15);--tw-shadow-colored:0 10px 25px -5px var(--tw-shadow-color),0 4px 10px -6px var(--tw-shadow-color);--tw-backdrop-blur:blur(8px);-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);background-color:rgba(var(--color-inverse-rgb),.8);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity));pointer-events:auto;transition-duration:.3s}:root{--progress-radius:var(--radius);--progress-striped-size:40px;--progress-bg:var(--color-surface);--progress-bar-color:var(--color-primary-500)}.progress{background:var(--progress-bg);border-radius:var(--progress-radius);display:flex;height:1.25rem}.progress-bar{background:var(--progress-bar-color);height:100%}.progress-striped>.progress-bar{background-image:linear-gradient(45deg,rgba(var(--color-canvas-rgb),.15) 25%,transparent 25%,transparent 50%,rgba(var(--color-canvas-rgb),.15) 50%,rgba(var(--color-canvas-rgb),.15) 75%,transparent 75%,transparent);background-size:var(--progress-striped-size) var(--progress-striped-size)}.progress>.progress-bar:first-child{border-bottom-left-radius:inherit;border-top-left-radius:inherit}.progress>.progress-bar:last-child{border-bottom-right-radius:inherit;border-top-right-radius:inherit}.progress.active .progress-bar{animation:progress-bar-stripes 2s linear infinite}@keyframes progress-bar-stripes{0%{background-position:40px 0}to{background-position:0 0}}:root{--scrollbar-size:10px;--scrollbar-opacity:.6;--scrollbar-bg:rgba(var(--color-inverse-rgb),.15);--scrollbar-inset:inset 0 0 0 1px rgba(var(--color-inverse-rgb),.05);--scrollbar-bar-bg:rgba(var(--color-inverse-rgb),.3);--scrollbar-hover-bg:rgba(var(--color-inverse-rgb),.4);--scrollbar-drag-bg:rgba(var(--color-inverse-rgb),.5);--scrollbar-radius:var(--radius-sm);--scrollbar-duration:.7s}::-webkit-scrollbar{height:var(--scrollbar-size);width:var(--scrollbar-size)}::-webkit-scrollbar-track{box-shadow:var(--scrollbar-shadow);-webkit-transition:background-color var(--scrollbar-duration);transition:background-color var(--scrollbar-duration)}::-webkit-scrollbar-track:hover,:hover::-webkit-scrollbar-track{background:var(--scrollbar-bg)}::-webkit-scrollbar-thumb{background:var(--scrollbar-bar-bg);border-radius:var(--scrollbar-radius);min-height:var(--scrollbar-size);-webkit-transition:var(--scrollbar-duration);transition:var(--scrollbar-duration);-webkit-transition-property:background-color;transition-property:background-color}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-hover-bg)}::-webkit-scrollbar-thumb:active{background:var(--scrollbar-drag-bg)}.scrollbar-thin::-webkit-scrollbar{height:calc(var(--scrollbar-size)/2);width:calc(var(--scrollbar-size)/2)}.scrollbar-hover::-webkit-scrollbar,.scrollbar-hover::-webkit-scrollbar-thumb,.scrollbar-hover::-webkit-scrollbar-track{visibility:hidden}.scrollbar-hover:hover::-webkit-scrollbar,.scrollbar-hover:hover::-webkit-scrollbar-thumb,.scrollbar-hover:hover::-webkit-scrollbar-track{visibility:visible}@font-face{font-family:ZentaoIcon;font-style:normal;font-weight:400;src:url(./icons/ZentaoIcon.eot?v=1.65);src:url(./icons/ZentaoIcon.woff?v=1.65) format("woff"),url(./icons/ZentaoIcon.ttf?v=1.65) format("truetype"),url(./icons/ZentaoIcon.svg?v=1.65#regular) format("svg")}.icon,[class*=" icon-"],[class^=icon-]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-display:block;font-family:ZentaoIcon;font-size:14px;font-style:normal;font-variant:normal;font-weight:400;line-height:1;text-transform:none}.icon:before{display:inline-block;min-width:14px;text-align:center}.icon-xs:before{font-size:.7em}.icon-sm:before{font-size:.8em}.icon-lg:before{font-size:1.25em;vertical-align:-10%}.icon-2x{font-size:28px}.icon-3x{font-size:42px}.icon-4x{font-size:56px}.icon-5x{font-size:70px}.icon-run{position:relative}.icon-run:before{opacity:.5}.icon-run:after{bottom:0;content:"\ea07";display:block;left:0;position:absolute;right:0;text-align:center;top:0}.icon-guihua:before{content:"\ea02"}.icon-memory:before{content:"\e9fd"}.icon-cpu:before{content:"\e9fe"}.icon-pause-pure:before{content:"\e9ff"}.icon-exclamation-pure:before{content:"\ea00"}.icon-zentao:before{content:"\e901"}.icon-zentao-alt:before{content:"\e900"}.icon-safe:before{content:"\ea06"}.icon-ai:before{content:"\e983"}.icon-kanban:before{content:"\e997"}.icon-college:before{content:"\e9c8"}.icon-home:before,.icon-menu-my:before{content:"\e97a"}.icon-program:before{content:"\e9aa"}.icon-lightbulb-alt:before,.icon-product:before{content:"\e98f"}.icon-project:before,.icon-rocket:before{content:"\e99c"}.icon-run:before{content:"\e9a9"}.icon-run-alt:before{content:"\ea07"}.icon-test:before{content:"\e956"}.icon-devops:before,.icon-infinite:before{content:"\e9a3"}.icon-doc:before,.icon-menu-doc:before{content:"\e99b"}.icon-statistic:before{content:"\e999"}.icon-group:before,.icon-menu-users:before,.icon-persons:before,.icon-team:before{content:"\e97e"}.icon-assets:before,.icon-diamond:before{content:"\e9ae"}.icon-flow:before{content:"\e994"}.icon-backend:before,.icon-cog-outline:before{content:"\ea05"}.icon-help:before{content:"\e968"}.icon-download:before,.icon-import:before{content:"\e904"}.icon-export:before{content:"\e905"}.icon-lightbulb:before{content:"\e91c"}.icon-close:before{content:"\e936"}.icon-check:before{content:"\e5ca"}.icon-minus:before{content:"\e926"}.icon-expand-alt:before{content:"\e6f1"}.icon-collapse-alt:before{content:"\e6f2"}.icon-fullscreen:before{content:"\e96b"}.icon-star-empty:before{content:"\e94a"}.icon-star:before{content:"\e94b"}.icon-exclamation-sign:before{content:"\e930"}.icon-info-sign:before{content:"\e9d5"}.icon-flag:before{content:"\e937"}.icon-check-circle:before{content:"\e92f"}.icon-check-sign:before{content:"\e938"}.icon-chart-pie:before{content:"\e95b"}.icon-history:before{content:"\e95f"}.icon-pencil:before{content:"\e254"}.icon-search:before{content:"\e928"}.icon-restart:before{content:"\e95e"}.icon-cog:before{content:"\e93b"}.icon-chart-line:before{content:"\e95c"}.icon-bar-chart:before,.icon-chart-bar:before{content:"\e95d"}.icon-exchange:before{content:"\e927"}.icon-severity:before{content:"\e973"}.icon-book:before{content:"\f02d"}.icon-treemap-alt:before{content:"\e971"}.icon-severity-solid:before{content:"\e902"}.icon-chat-line:before{content:"\e998"}.icon-stack:before{content:"\e943"}.icon-cube:before{content:"\e967"}.icon-minus-sign:before{content:"\e939"}.icon-bars-sign:before{content:"\e93a"}.icon-chat:before,.icon-message:before{content:"\e940"}.icon-more:before{content:"\e744"}.icon-certificate:before{content:"\f0a3"}.icon-bell:before{content:"\e7f5"}.icon-columns:before{content:"\f0db"}.icon-envelope-o:before{content:"\e92a"}.icon-unfold-all:before{content:"\e931"}.icon-fold-all:before{content:"\e932"}.icon-bars:before{content:"\e948"}.icon-cards-view:before{content:"\e949"}.icon-ellipsis-v:before{content:"\e5d4"}.icon-spinner-indicator:before{content:"\e982"}.icon-up-circle:before{content:"\e92b"}.icon-right-circle:before{content:"\e92c"}.icon-down-circle:before{content:"\e92d"}.icon-left-circle:before{content:"\e92e"}.icon-angle-double-right:before{content:"\f101"}.icon-angle-down:before{content:"\e313"}.icon-angle-left:before{content:"\e314"}.icon-angle-right:before{content:"\e315"}.icon-angle-top:before{content:"\e316"}.icon-first-page:before{content:"\e5dc"}.icon-last-page:before{content:"\e5dd"}.icon-caret-down:before{content:"\f0d7"}.icon-caret-up:before{content:"\f0d8"}.icon-caret-left:before{content:"\f0d9"}.icon-caret-right:before{content:"\f0da"}.icon-sort:before{content:"\f0dc"}.icon-sort-down:before{content:"\f0dd"}.icon-sort-up:before{content:"\f0de"}.icon-arrow-up:before{content:"\e923"}.icon-arrow-down:before{content:"\e924"}.icon-arrow-left:before{content:"\e952"}.icon-arrow-right:before{content:"\e93e"}.icon-chevron-left:before{content:"\e934"}.icon-chevron-right:before{content:"\e935"}.icon-chevron-double-up:before{content:"\e959"}.icon-chevron-double-down:before{content:"\e95a"}.icon-folder-account:before{content:"\e942"}.icon-folder-move:before{content:"\e960"}.icon-folder-plus:before{content:"\e961"}.icon-folder-upload:before{content:"\e962"}.icon-folder-star:before{content:"\e963"}.icon-folder-edit:before{content:"\e964"}.icon-folder-download:before{content:"\e965"}.icon-folder-outline:before{content:"\e966"}.icon-folder:before{content:"\e944"}.icon-folder-o:before{content:"\e945"}.icon-folder-open-o:before{content:"\e946"}.icon-folder-open:before{content:"\e947"}.icon-color:before{content:"\e93c"}.icon-paper-clip:before{content:"\e93d"}.icon-text:before{content:"\e929"}.icon-share:before{content:"\f064"}.icon-format-list-bulleted:before{content:"\e9a8"}.icon-format-bold:before{content:"\e953"}.icon-format-header-pound:before{content:"\e954"}.icon-format-italic:before{content:"\e955"}.icon-format-list-numbers:before{content:"\e969"}.icon-format-quote-close:before{content:"\e96a"}.icon-image:before{content:"\e96c"}.icon-table-large:before{content:"\e96d"}.icon-productplan:before{content:"\e9fc"}.icon-aiux:before{content:"\e99e"}.icon-qc:before{content:"\e986"}.icon-qc-q:before{content:"\e985"}.icon-qc-c:before{content:"\e987"}.icon-sonarqube:before{content:"\e9ba"}.icon-board:before{content:"\ea15"}.icon-market:before{content:"\ea01"}.icon-ztool:before{content:"\e9c1"}.icon-contacts:before{content:"\e9c3"}.icon-chats:before{content:"\e9c4"}.icon-ops:before{content:"\e903"}.icon-menu-backend:before{content:"\e993"}.icon-feedback:before{content:"\e991"}.icon-oa:before{content:"\e9a1"}.icon-more-circle:before{content:"\e988"}.icon-controls:before{content:"\e995"}.icon-account:before{content:"\e992"}.icon-about:before,.icon-info:before{content:"\e996"}.icon-exclamation:before{content:"\e9fa"}.icon-exit:before{content:"\e99a"}.icon-theme:before{content:"\e9a0"}.icon-globe:before,.icon-lang:before{content:"\f0ac"}.icon-template:before{content:"\e9fb"}.icon-seal:before{content:"\e9f8"}.icon-menu-arrow-left:before{content:"\e9f0"}.icon-menu-arrow-right:before{content:"\e9f1"}.icon-add-directory:before{content:"\e9ef"}.icon-design:before{content:"\e9ec"}.icon-download-alt:before{content:"\e9ea"}.icon-blame:before{content:"\e9e0"}.icon-draft-edit:before{content:"\e9dc"}.icon-sub-review-user:before{content:"\e9db"}.icon-sub-review:before{content:"\e9df"}.icon-ztf:before{content:"\e9dd"}.icon-save:before{content:"\e9d8"}.icon-list-box:before{content:"\e9b4"}.icon-usecase:before{content:"\e99d"}.icon-code:before{content:"\e990"}.icon-summary:before{content:"\e9ad"}.icon-more-alt:before{content:"\e9a7"}.icon-customer:before{content:"\e9d9"}.icon-treeview:before{content:"\ea0d"}.icon-or:before{content:"\ea0b"}.icon-manager:before{content:"\ea0c"}.icon-target:before{content:"\ea0a"}.icon-ipd:before{content:"\e9f9"}.icon-wiki-lib:before{content:"\e9f5"}.icon-annex-lib:before{content:"\e9f6"}.icon-interface-lib:before{content:"\e9f7"}.icon-has-authority-pack:before{content:"\e9f3"}.icon-without-authority-pack:before{content:"\e9f4"}.icon-data-structure:before{content:"\e9f2"}.icon-waterfallplus:before{content:"\e9ed"}.icon-agileplus:before{content:"\e9ee"}.icon-horn:before{content:"\e9eb"}.icon-resume:before{content:"\e9e9"}.icon-mirror:before{content:"\e9e6"}.icon-remote:before{content:"\e9e7"}.icon-moon:before{content:"\e9e8"}.icon-ticket:before{content:"\e9e1"}.icon-gantt-alt:before{content:"\e9e2"}.icon-tree:before{content:"\e9c9"}.icon-list:before{content:"\e9cb"}.icon-gantt:before{content:"\e9cc"}.icon-group-view:before{content:"\e9cd"}.icon-inherit-space:before{content:"\e9c2"}.icon-card-archive:before{content:"\e9b8"}.icon-col-archive:before{content:"\e9b9"}.icon-col-add-right:before{content:"\e9bb"}.icon-col-add-left:before{content:"\e9bc"}.icon-col-split:before{content:"\e9bd"}.icon-waterfall:before{content:"\e9a4"}.icon-manual:before{content:"\e98d"}.icon-lane:before{content:"\e9b1"}.icon-unpinned:before{content:"\ea08"}.icon-pinned:before{content:"\ea09"}.icon-support-ticket:before{content:"\ea04"}.icon-snap-house:before{content:"\e9e3"}.icon-wrench:before{content:"\e9e4"}.icon-desktop:before{content:"\e9e5"}.icon-back-circle:before{content:"\e9da"}.icon-back:before{content:"\e9d3"}.icon-shield:before{content:"\e9ca"}.icon-meh:before{content:"\e9ce"}.icon-frown:before{content:"\e9cf"}.icon-smile:before{content:"\e9d0"}.icon-unlock-solid:before{content:"\e9d1"}.icon-lock-solid:before{content:"\e9d2"}.icon-ver:before{content:"\e9c6"}.icon-publish:before,.icon-send:before{content:"\e9c7"}.icon-tag:before{content:"\e9be"}.icon-tag-lock:before{content:"\e9bf"}.icon-code-fork:before{content:"\f126"}.icon-branch-lock:before{content:"\e9c0"}.icon-groups:before{content:"\e9af"}.icon-thumbs-up:before{content:"\f087"}.icon-thumbs-down:before{content:"\f088"}.icon-thumbs-up-solid:before{content:"\e9d6"}.icon-thumbs-down-solid:before{content:"\e9d7"}.icon-hash:before,.icon-version:before{content:"\e9ab"}.icon-p-square:before{content:"\e97b"}.icon-video-play:before{content:"\e97f"}.icon-plus-solid-circle:before{content:"\e974"}.icon-minuse-solid-circle:before{content:"\e9b6"}.icon-s:before{content:"\e975"}.icon-c:before{content:"\e976"}.icon-t:before{content:"\e977"}.icon-guide:before{content:"\e978"}.icon-todo:before{content:"\e979"}.icon-plus:before{content:"\e925"}.icon-side-left:before{content:"\e9b3"}.icon-side-right:before{content:"\e9b2"}.icon-fullscreen-exit:before{content:"\e972"}.icon-alert:before{content:"\e99f"}.icon-undo:before{content:"\e93f"}.icon-redo:before{content:"\e9d4"}.icon-swap:before{content:"\e9b0"}.icon-chat-solid:before{content:"\e9b5"}.icon-clock:before{content:"\e97c"}.icon-cost:before{content:"\e97d"}.icon-pencil-alt:before{content:"\e984"}.icon-size-height:before{content:"\e9c5"}.icon-upload-file:before{content:"\ea03"}.icon-file-log:before{content:"\e9de"}.icon-rich-text:before{content:"\e913"}.icon-markdown:before{content:"\e916"}.icon-excel:before{content:"\e933"}.icon-text-link:before{content:"\e94d"}.icon-ppt:before{content:"\e957"}.icon-word:before{content:"\e958"}.icon-doc-lib:before{content:"\e96f"}.icon-file-empty:before,.icon-file:before{content:"\f016"}.icon-file-text:before{content:"\f0f6"}.icon-file-alt:before{content:"\f15b"}.icon-file-text-alt:before{content:"\f15c"}.icon-file-pdf:before{content:"\f1c1"}.icon-file-word:before{content:"\f1c2"}.icon-file-excel:before{content:"\f1c3"}.icon-file-powerpoint:before{content:"\f1c4"}.icon-file-image:before{content:"\f1c5"}.icon-file-archive:before{content:"\f1c6"}.icon-file-audio:before{content:"\f1c7"}.icon-file-video:before{content:"\f1c8"}.icon-file-code:before{content:"\f1c9"}.icon-cell-input:before{content:"\ea0e"}.icon-input:before{content:"\ea0f"}.icon-checkbox:before{content:"\ea10"}.icon-radio:before{content:"\ea11"}.icon-transition:before{content:"\ea12"}.icon-add-sub-chapter:before{content:"\ea13"}.icon-add-chapter:before{content:"\ea14"}.icon-menu-collapse:before{content:"\e980"}.icon-menu-expand:before{content:"\e981"}.icon-estimate:before{content:"\e9ac"}.icon-sprint:before{content:"\e9a2"}.icon-shield-check:before{content:"\e9a5"}.icon-ok:before{content:"\e9a6"}.icon-printer:before{content:"\e906"}.icon-bullhorn:before{content:"\e910"}.icon-person:before{content:"\e941"}.icon-fields:before{content:"\e989"}.icon-trigger:before{content:"\e98a"}.icon-layout:before{content:"\e98b"}.icon-audit:before{content:"\e98c"}.icon-ban-circle:before,.icon-cancel:before{content:"\e951"}.icon-eye:before{content:"\e94e"}.icon-eye-off:before{content:"\e96e"}.icon-unlock:before{content:"\e94f"}.icon-lock:before,.icon-private:before{content:"\e950"}.icon-move:before{content:"\e94c"}.icon-hand-right:before{content:"\e907"}.icon-checked:before{content:"\e908"}.icon-off:before{content:"\e909"}.icon-play:before,.icon-start:before{content:"\e90a"}.icon-time:before{content:"\e90b"}.icon-edit:before{content:"\e90c"}.icon-trash:before{content:"\e90d"}.icon-link:before{content:"\e90e"}.icon-unlink:before{content:"\e90f"}.icon-bug:before{content:"\e911"}.icon-list-alt:before{content:"\e912"}.icon-alter:before,.icon-change:before{content:"\e970"}.icon-glasses:before,.icon-review:before{content:"\e914"}.icon-sitemap:before,.icon-testcase:before{content:"\e915"}.icon-pluses:before{content:"\e917"}.icon-report-list:before{content:"\e918"}.icon-active:before,.icon-magic:before{content:"\e919"}.icon-treemap:before{content:"\e91a"}.icon-confirm:before{content:"\e91b"}.icon-split:before{content:"\e98e"}.icon-calendar:before,.icon-delay:before{content:"\e91d"}.icon-pause:before{content:"\e91e"}.icon-ban:before{content:"\e91f"}.icon-plus-bold:before{content:"\e920"}.icon-copy:before{content:"\e921"}.icon-refresh:before{content:"\e922"}.icon-diff:before{content:"\e9b7"}.status-active,.status-asked,.status-normal,.status-unconfirmed,.status-wait{color:#313c52}.status-active.status-issue,.status-checking,.status-commenting,.status-confirmed,.status-doing{color:#ff6f42}.status-blocked,.status-hangup,.status-pause,.status-suspended{color:#b89664}.status-clarify,.status-draft{color:#8166ee}.status-noreview,.status-reviewing,.status-wait.status-testcase{color:#18a6fd}.status-active.status-risk,.status-changed,.status-changing,.status-fail{color:#fb2b2b}.status-checked,.status-done,.status-pass,.status-replied,.status-resolved,.status-success{color:#0dbb7d}.status-cancel,.status-canceled,.status-investigate{color:#838a9d}.status-canceled,.status-closed,.status-testtask.status-done{color:#9ea3b0}.pri,[class*=" pri-"],[class^=pri-]{--tw-text-opacity:1;border-color:currentColor;border-radius:var(--radius-full);border-width:1px;color:rgba(var(--color-gray-400-rgb),var(--tw-text-opacity));display:inline-block;font-size:.75rem;height:1rem;line-height:1rem;line-height:14px;max-width:54px;min-width:16px;overflow:hidden;padding-left:.125rem;padding-right:.125rem;text-align:center;white-space:nowrap}.pri-1{color:rgb(255 73 18/var(--tw-text-opacity))}.pri-1,.pri-2{--tw-text-opacity:1}.pri-2{color:rgba(var(--color-warning-600-rgb),var(--tw-text-opacity))}.pri-3{color:rgb(59 130 246/var(--tw-text-opacity))}.pri-3,.pri-4{--tw-text-opacity:1}.pri-4{color:rgb(149 211 224/var(--tw-text-opacity))}.severity{--tw-text-opacity:1;color:rgba(var(--color-gray-400-rgb),var(--tw-text-opacity));display:inline-block;font-size:.75rem;height:1rem;line-height:1rem;line-height:14px;max-width:54px;min-width:16px;overflow:hidden;padding-left:.125rem;padding-right:.125rem;position:relative;text-align:center;white-space:nowrap}.severity:before{--tw-content:attr(data-severity);background-color:currentColor;background-repeat:no-repeat;content:var(--tw-content);height:100%;left:0;-webkit-mask:url('data:image/svg+xml;charset=utf-8,');mask:url('data:image/svg+xml;charset=utf-8,');-webkit-mask-size:100% 100%;mask-size:100% 100%;position:absolute;top:0;width:100%;z-index:0}.severity:after,.severity:before{display:inline-block}.severity:after{--tw-scale-x:.75;--tw-scale-y:.75;content:attr(data-severity);line-height:20px;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))}.severity[data-severity="1"]{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}.severity[data-severity="2"]{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity))}.severity[data-severity="3"]{--tw-text-opacity:1;color:rgb(250 174 26/var(--tw-text-opacity))}.severity[data-severity="4"]{--tw-text-opacity:1;color:rgb(184 150 100/var(--tw-text-opacity))}.severity[data-severity="5"]{--tw-text-opacity:1;color:rgb(158 163 176/var(--tw-text-opacity))}.severity-label{background-color:transparent}.severity-label:after,.severity-label:before{--tw-content:none;content:var(--tw-content)}.risk-high{color:rgb(220 38 38/var(--tw-text-opacity))}.risk-high,.risk-middle{--tw-text-opacity:1}.risk-middle{color:rgb(234 179 8/var(--tw-text-opacity))}.nav-feature{--nav-active-bg:var(--color-primary-100);--nav-active-color:var(--color-fore)}.nav-feature .nav-checkbox>.checkbox,.nav-feature .nav-checkbox>.checkbox-primary,.nav-feature .nav-item>a{align-items:center;border-radius:var(--radius);height:2rem;padding-left:.625rem;padding-right:.625rem}.nav-feature .nav-item>a>.icon{--tw-text-opacity:1;color:rgba(var(--color-primary-500-rgb),var(--tw-text-opacity))}.sortable-list .listitem{--tw-bg-opacity:1;background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));cursor:move;padding-left:.5rem;padding-right:.5rem}.sortable-list .sortable-ghost>.listitem{--tw-bg-opacity:1;background-color:rgba(var(--color-warning-50-rgb),var(--tw-bg-opacity))}:root{--avatar-radius:12.5%;--avatar-bg:var(--color-surface)}.avatar{align-items:center;aspect-ratio:1/1;background:var(--avatar-bg);border-radius:var(--avatar-radius);display:inline-flex;justify-content:center;overflow:hidden;width:2rem}.avatar>img{height:100%;margin:0;-o-object-fit:cover;object-fit:cover;width:100%}.avatar.size-xs{width:1.25rem}.avatar.size-sm,.avatar.size-xs{font-size:.75rem;line-height:1rem}.avatar.size-sm{width:1.5rem}.avatar.size-lg{font-size:1.5rem;line-height:2rem;width:3rem}.avatar.size-xl{font-size:2.25rem;line-height:2.5rem;width:5rem}.avatar-group{display:flex;gap:.625rem}.avatar-group>.avatar{box-shadow:0 0 0 1px var(--color-canvas)}.avatar-group>*+*{margin-left:-1rem}.avatar-group.size-xs>*+*{margin-left:-.75rem}.avatar-group.size-sm>*+*{margin-left:-.875rem}.avatar-group.size-lg>*+*{margin-left:-1.25rem}.avatar-group.size-xl>*+*{margin-left:-1.5rem}.btn-group{display:flex;gap:1px}.btn-group>.btn.active{z-index:1}.btn-group>.btn:focus-within,.btn-group>.btn:hover{z-index:2}.btn-group>.btn.disabled,.btn-group>.btn:disabled{z-index:-1}.btn-group>.btn:not(:first-child){border-bottom-left-radius:var(--radius-none);border-left-color:rgba(var(--color-canvas-rgb),.2);border-left-width:1px;border-top-left-radius:var(--radius-none)}.btn-group>.btn:not(:first-child):before{left:-1px}.btn-group>.btn:not(:last-child){border-bottom-right-radius:var(--radius-none);border-top-right-radius:var(--radius-none)}.color-picker-heading{align-items:center;font-weight:700;justify-content:space-between;margin-bottom:-.25rem;padding:.5rem}.color-picker-heading,.color-picker-row{display:flex;flex-direction:row}.color-picker-row{flex-wrap:wrap;gap:.5rem;padding:.75rem}.color-picker-item{--tw-text-opacity: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(var(--tw-ring-offset-width)) var(--tw-ring-color);align-items:center;border-radius:var(--radius-full);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity));display:flex;height:1.25rem;justify-content:center;padding-left:.125rem;padding-right:.125rem;width:1.25rem}.pick-container{left:0;pointer-events:none;position:absolute;top:0;z-index:1600}.pick-pop{display:flex;flex-direction:column;opacity:0;pointer-events:auto;position:absolute;transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);z-index:1200}.pick-pop.in{opacity:1}.date-picker-menu{--menu-bg:none}.date-picker-menu .mini-calendar{margin-top:-.75rem}.date-pick-menu-month,.date-pick-menu-years{display:flex;flex-direction:row;flex-wrap:wrap;gap:1px;max-height:237px;padding-bottom:.5rem;padding-left:.5rem;padding-right:.5rem}.date-pick-menu-years>.btn{width:2.5rem}.date-pick-menu-years>.btn.is-current{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgba(var(--color-primary-100-rgb),var(--tw-bg-opacity));color:rgba(var(--color-primary-500-rgb),var(--tw-text-opacity))}.date-pick-menu-month>.btn.active,.date-pick-menu-years>.btn.active{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgba(var(--color-primary-500-rgb),var(--tw-bg-opacity));color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity))}.date-pick-menu-month>.btn{width:3rem}.date-picker-menu-footer{border-top-width:1px;display:flex;flex-direction:row;padding:.25rem}.date-picker-menu-footer>.toolbar{flex:1 1 auto;justify-content:center}.date-picker-menu>.menu{border-right-width:1px}.date-picker-menu .menu-item{--tw-text-opacity:1;color:rgba(var(--color-primary-500-rgb),var(--tw-text-opacity))}.time-picker-menu{max-height:inherit}.time-picker-menu .menu-item>a{justify-content:center}.datetime-picker-menu{max-height:inherit}.mini-calendar{padding:.5rem}.mini-calendar>.row>.col{align-items:center;justify-content:center;width:14.2857%}.mini-calendar-day{height:2rem}.mini-calendar-day.disabled{--tw-bg-opacity:1;background-color:rgba(var(--color-gray-200-rgb),var(--tw-bg-opacity));opacity:.5;pointer-events:none}.mini-calendar-day>.btn{width:2rem}.mini-calendar-day.is-weekend>.btn{--tw-text-opacity:1;color:rgba(var(--color-gray-500-rgb),var(--tw-text-opacity))}.mini-calendar-day.active>.btn,.mini-calendar-day.is-today>.btn{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgba(var(--color-primary-100-rgb),var(--tw-bg-opacity));color:rgba(var(--color-primary-500-rgb),var(--tw-text-opacity))}.mini-calendar-day.selected>.btn{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgba(var(--color-primary-500-rgb),var(--tw-bg-opacity));color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity))}.mini-calendar-day.is-out-month{opacity:.5}.i-time{border-color:currentColor;border-radius:50%;border-width:.08em;display:inline-block;height:1em;position:relative;width:1em}.i-time:after{--tw-content:"";border-color:currentColor;border-width:0 0 .08em .08em;content:var(--tw-content);height:.385em;left:.3846em;position:absolute;top:.08em;width:.385em}.chevron-down,.chevron-left,.chevron-right,.chevron-up{align-items:center;display:inline-flex;height:1em;justify-content:center;position:relative;width:1em}.chevron-down:before,.chevron-left:before,.chevron-right:before,.chevron-up:before{--tw-translate-y:-0.125rem;--tw-rotate:45deg;--tw-content:"";border-color:currentColor;border-width:0 1px 1px 0;content:var(--tw-content);display:block;height:.6923077em;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));transform-origin:center;width:.6923077em}.chevron-left:before{--tw-translate-y:0px;--tw-translate-x:0.125rem;--tw-rotate:135deg}.chevron-left:before,.chevron-right:before{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))}.chevron-right:before{--tw-translate-y:0px;--tw-translate-x:-0.125rem;--tw-rotate:-45deg}.chevron-up:before{--tw-translate-y:0.125rem;--tw-rotate:225deg;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))}.i-calendar{border-radius:2px;display:inline-block;height:.79em;margin-top:.16em;position:relative;width:1em}.i-calendar,.i-calendar:after,.i-calendar:before{border-color:currentColor;border-width:.08em}.i-calendar:after,.i-calendar:before{--tw-content:"";content:var(--tw-content);position:absolute}.i-calendar:before{border-bottom-width:0;left:.15em;top:.307em;width:.6em}.i-calendar:after{border-bottom-width:0;border-top-width:0;height:.3077em;left:.17em;top:-.154em;width:.538em}:root{--modal-radius:var(--radius-lg);--modal-bg:rgba(var(--color-inverse-rgb),.4);--modal-sm:37.5rem;--modal-base:50rem;--modal-lg:75rem;--modal-xl:90rem}.modal{align-items:center;background-color:var(--modal-bg);display:none;inset:0;justify-content:center;overflow:hidden;position:fixed;z-index:1500}.modal.load-indicator:before{background-color:transparent;transition-property:none}.modal.loading:after{--tw-text-opacity:1;color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity))}.modal.loading .modal-dialog{opacity:0!important}.modal.show{display:flex}.modal-no-backdrop{background-color:transparent;pointer-events:none}.modal-hide{opacity:0!important}.modal-dialog{--tw-bg-opacity:0.9;--tw-shadow:0 10px 50px -10px rgba(0,0,0,.4),0 8px 20px -10px rgba(0,0,0,.3);--tw-shadow-colored:0 10px 50px -10px var(--tw-shadow-color),0 8px 20px -10px var(--tw-shadow-color);--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);--tw-ring-color:rgba(var(--color-inverse-rgb),var(--tw-ring-opacity));--tw-ring-opacity:0.05;--tw-backdrop-blur:blur(8px);-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);background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));border-radius:var(--modal-radius);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);pointer-events:auto;position:relative;width:var(--modal-base)}.modal-content,.modal-dialog{max-height:100vh}.modal-content{display:flex;flex-direction:column;height:100%}.loading>.modal-dialog>.modal-content{opacity:0;visibility:hidden}.close{aspect-ratio:1/1;display:block;position:relative;width:1em}.close:after,.close:before{--tw-rotate:45deg;background-color:currentColor;border-radius:var(--radius-full);content:"";display:block;height:1px;left:0;position:absolute;top:calc(50% - .5px);width:100%}.close:after,.close:before{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))}.close:after{--tw-rotate:-45deg}.modal-header{align-items:center;display:flex;flex:none;flex-wrap:nowrap;gap:1rem;padding:1rem 1.25rem;position:relative}.modal-title{flex:1 1 auto;font-size:1rem;font-weight:700;line-height:1.5rem}.modal-actions{position:absolute;right:.75rem;top:.75rem;z-index:10}.modal-body{flex:1 1 auto;overflow:auto;padding:1rem 1.25rem}.modal-footer{align-items:center;display:flex;flex:none;gap:.75rem;padding:1.25rem}.modal-dialog.size-full,.modal-dialog[data-size=full]{height:100vh;width:100vw}.modal-dialog.size-sm,.modal-dialog[data-size=sm]{width:var(--modal-sm)}.modal-dialog.size-lg,.modal-dialog[data-size=lg]{width:var(--modal-lg)}.modal-dialog.size-xl,.modal-dialog[data-size=xl]{width:var(--modal-xl)}.modal-iframe{flex:1 1 auto;width:100%}.modal-trans{opacity:0;transition-duration:.2s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.modal-trans.in{opacity:1}.modal-trans>.modal-dialog{--tw-scale-x:.95;--tw-scale-y:.95;opacity:0;transition-duration:.3s;transition-property:transform,opacity}.modal-trans.in>.modal-dialog,.modal-trans>.modal-dialog{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))}.modal-trans.in>.modal-dialog{--tw-scale-x:1;--tw-scale-y:1;opacity:1}.modal-alert .modal-footer{justify-content:flex-end}.modal-alert .modal-header{margin-bottom:-1rem}.modal-alert .modal-body{white-space:pre-line}.modal-alert .modal-actions+.modal-body{padding-right:3rem}.modal-alert .modal-header+.modal-actions+.modal-body{padding-right:1.25rem}.file-selector{gap:.5rem;width:100%}.file-selector,.file-selector-box{display:flex;flex-direction:column}.file-selector-box{--tw-border-opacity:1;--tw-ring-color:transparent;--state-color:rgba(var(--color-primary-500-rgb),.05);background-color:rgba(var(--color-primary-50-rgb),.3);border-color:rgba(var(--color-primary-400-rgb),var(--tw-border-opacity));border-style:dashed;border-width:1px;gap:0;height:auto;justify-content:center;padding:.5rem .75rem;position:relative}.file-selector-box .text{--tw-text-opacity:1;color:rgba(var(--color-primary-500-rgb),var(--tw-text-opacity))}.is-dragging .file-selector-box{border-style:solid}.file-selector-btn{align-items:center;display:flex;gap:.5rem;position:relative}.is-dragging .file-selector-btn{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-50-rgb),var(--tw-bg-opacity))}.file-selector-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;inset:0;opacity:.1;position:absolute}.file-selector-tip{--tw-text-opacity:1;color:rgba(var(--color-gray-400-rgb),var(--tw-text-opacity))}.file-selector.is-mode-button{flex-direction:column-reverse}.file-selector-list.is-empty{display:none}.file-selector-item .item-avatar{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgba(var(--color-gray-50-rgb),var(--tw-bg-opacity));color:rgba(var(--color-gray-500-rgb),var(--tw-text-opacity))}.file-selector-item .item-subtitle{--tw-text-opacity:1;color:rgba(var(--color-gray-400-rgb),var(--tw-text-opacity))}.file-selector-item .item-content{flex:none;margin-right:.25rem;max-width:100%}.file-selector-item>.listitem:hover{background-color:rgba(var(--color-gray-500-rgb),.05)}.file-selector-item.is-renaming .item-avatar+.item-content{max-width:calc(100% - 32px)}.file-selector-rename-text{max-width:100%;min-width:100px;position:relative}.file-selector-rename-text>div{overflow:hidden;pointer-events:none;visibility:hidden;white-space:nowrap}.file-selector-rename-input{inset:0;position:absolute}.file-selector-grid{--tw-bg-opacity:1;align-items:flex-start;background-color:rgba(var(--color-surface-light-rgb),var(--tw-bg-opacity));border-color:transparent;border-radius:var(--radius);border-width:1px;display:flex;flex-direction:row;flex-wrap:wrap;gap:var(--file-selector-grid-gap);padding:.5rem}.file-selector-grid-item{height:var(--file-selector-grid-height)}.file-selector-grid-btn,.file-selector-grid-item{width:var(--file-selector-grid-width)}.file-selector-grid-btn{--tw-border-opacity:1;--tw-ring-color:transparent;--state-color:rgba(var(--color-primary-500-rgb),.05);aspect-ratio:1/1;background-color:rgba(var(--color-primary-50-rgb),.3);border-color:rgba(var(--color-primary-400-rgb),var(--tw-border-opacity));border-style:dashed;border-width:1px;display:flex;flex-direction:column;gap:0;height:auto;justify-content:center;padding:.5rem}.file-selector-grid-btn .text{--tw-text-opacity:1;color:rgba(var(--color-primary-500-rgb),var(--tw-text-opacity))}.file-selector-grid-item .listitem{flex-direction:column;height:100%;padding:0;position:relative;width:100%}.file-selector-grid-item .item-avatar{--tw-text-opacity:1;border-radius:var(--radius);border-width:1px;color:rgba(var(--color-gray-500-rgb),var(--tw-text-opacity));width:100%}.file-selector-grid-item .item-avatar.has-icon>.icon{font-size:calc(var(--file-selector-grid-width)/2)}.file-selector-grid-item .item-content,.file-selector-grid-item .toolbar{aspect-ratio:1/1;left:0;position:absolute;right:0;top:0;width:100%}.file-selector-grid-item .item-title{bottom:-1.25rem;font-size:.75rem;left:0;line-height:1rem;overflow:hidden;position:absolute;right:1.5rem;white-space:nowrap}.file-selector-grid-item .item-subtitle{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgba(var(--color-fore-rgb),var(--tw-bg-opacity));border-radius:var(--radius-full);bottom:.25rem;color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity));font-size:.75rem;left:.25rem;line-height:1rem;opacity:0;padding-left:.25rem;padding-right:.25rem;position:absolute;transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.file-selector-grid-item:hover .item-subtitle{opacity:1}.file-selector-grid-item .toolbar .btn[data-remove-file]{--tw-text-opacity:1;background-color:rgba(var(--color-inverse-rgb),.5);color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity));padding:.375rem;position:absolute;right:1px;top:1px}.file-selector-grid-item .toolbar .btn[data-rename-file]{bottom:-1.5rem;padding:0;position:absolute;right:0}.file-selector-grid .file-selector-rename{bottom:0;height:1.5rem;position:absolute;top:auto}.file-selector-grid .file-selector-rename-text{width:100%}.is-dragging .file-selector-grid{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgba(var(--color-primary-50-rgb),var(--tw-bg-opacity));border-color:rgba(var(--color-primary-400-rgb),var(--tw-border-opacity));border-width:1px}:root{--nav-radius:var(--radius);--nav-active-color:var(--color-primary-500);--nav-active-bg:var(--color-inherit);--nav-heading-color:var(--color-gray-500)}.nav{list-style-type:none;padding-left:0}.nav,.nav-item{align-items:center;display:flex;position:relative}.nav-item{gap:.75rem}.nav-item>a{align-items:center;color:inherit;cursor:pointer;display:flex;gap:.25rem;height:2rem;justify-content:center;padding-left:1rem;padding-right:1rem}.nav-item>a>.text{white-space:nowrap}.nav-item>.active{background:var(--nav-active-bg);color:var(--nav-active-color);font-weight:700}.nav-item>.disabled{opacity:1}.nav-item>.disabled>*{opacity:var(--opacity-disabled)}.nav-divider,.nav>.divider{margin:.5rem}.nav-heading{align-items:center;color:var(--nav-heading-color);display:flex;font-weight:700;gap:.25rem;height:2rem;justify-content:center;padding-left:1rem;padding-right:1rem}.nav-space{flex:1 1 auto;width:1rem}.nav-compact{gap:.25rem}.nav-compact .nav-item{gap:.5rem}.nav-compact .nav-item>a{height:1.75rem;padding-left:.5rem;padding-right:.5rem}.nav-primary>.nav-item{position:relative}.nav-primary>.nav-item:hover{z-index:10}.nav-primary>.nav-item+.nav-item{margin-left:-1px}.nav-primary>.nav-item>a{border-radius:var(--radius-none);border-width:1px}.nav-primary>.nav-item:first-child>a,.nav-primary>.nav-item:has(.nav-heading)+.nav-item>a{border-bottom-left-radius:var(--nav-radius);border-top-left-radius:var(--nav-radius)}.nav-primary>.nav-item:last-child>a{border-bottom-right-radius:var(--nav-radius);border-top-right-radius:var(--nav-radius)}.nav-primary>.nav-item>.active{--tw-text-opacity:1;background:var(--nav-active-color);border-color:var(--nav-active-color);color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity))}.nav-primary>.nav-divider{display:none}.nav-secondary>.nav-item>a{border-radius:var(--radius-none);position:relative}.nav-secondary>.nav-item>a:after{--tw-bg-opacity:1;--tw-content:"";background-color:rgba(var(--color-border-rgb),var(--tw-bg-opacity));bottom:-2px;content:var(--tw-content);display:block;height:2px;left:0;position:absolute;right:0}.nav-secondary>.nav-item>.active:after{background-color:currentColor}.nav-secondary>.nav-divider{margin:0 0 0 -1px}.nav-tabs>.nav-item>a{border-bottom-left-radius:var(--radius-none);border-bottom-right-radius:var(--radius-none);position:relative}.nav-tabs>.nav-item>a:after{--tw-border-opacity:1;--tw-content:"";border-color:transparent;border-bottom-color:rgba(var(--color-border-rgb),var(--tw-border-opacity));border-top-left-radius:inherit;border-top-right-radius:inherit;border-width:1px;content:var(--tw-content);display:block;inset:-1px;pointer-events:none;position:absolute}.nav-tabs>.nav-item>.active:after{--tw-border-opacity:1;border-color:rgba(var(--color-border-rgb),var(--tw-border-opacity));border-bottom-color:transparent}.nav-tabs>.nav-divider{margin:0 0 0 -1px}.nav-pills>.nav-item>a{border-radius:var(--radius-full)}.nav-pills>.nav-item>.active{--tw-text-opacity:1;background:var(--nav-active-color);border-color:var(--nav-active-color);color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity))}.nav-stacked{flex-direction:column}.nav-stacked>.nav-item{width:100%}.nav-stacked>.nav-heading,.nav-stacked>.nav-item>a{justify-content:flex-start;width:100%}.nav-stacked>.nav-divider{height:1px;margin:.5rem 0;width:100%}.nav-primary.nav-stacked>.nav-item>a{height:2.5rem}.nav-primary.nav-stacked>.nav-item+.nav-item{margin-left:0;margin-top:-1px}.nav-primary.nav-stacked>.nav-item:first-child>a{border-bottom-left-radius:0;border-top-left-radius:var(--nav-radius);border-top-right-radius:var(--nav-radius)}.nav-primary.nav-stacked>.nav-item:last-child>a{border-bottom-left-radius:var(--nav-radius);border-bottom-right-radius:var(--nav-radius);border-top-right-radius:0}.nav-secondary.nav-stacked>.nav-item>a:after{--tw-bg-opacity:1;background-color:rgba(var(--color-border-rgb),var(--tw-bg-opacity));bottom:0;height:100%;left:auto;right:0;top:0;width:2px}.nav-secondary.nav-stacked>.nav-item>.active:after{background-color:currentColor}.nav-secondary.nav-stacked>.nav-divider{margin:0}.nav-tabs.nav-stacked>.nav-item>a{border-bottom-left-radius:var(--nav-radius);border-bottom-right-radius:var(--radius-none);border-top-right-radius:var(--radius-none);position:relative}.nav-tabs.nav-stacked>.nav-item>a:after{--tw-border-opacity:1;border-bottom-color:transparent;border-bottom-left-radius:inherit;border-right-color:rgba(var(--color-border-rgb),var(--tw-border-opacity));border-top-left-radius:inherit}.nav-tabs.nav-stacked>.nav-item>a.active:after{--tw-border-opacity:1;border-color:rgba(var(--color-border-rgb),var(--tw-border-opacity));border-right-color:transparent}.nav-tabs.nav-stacked>.nav-divider{margin:0}.nav-pills.nav-stacked>.nav-item+.nav-item{margin-top:.25rem}.nav-justified>.nav-item:not(.flex-none,.nav-divider){flex:1 1 auto}.nav-justified>.nav-item>a{width:100%}.arrow,.arrow:before{background:inherit;height:calc(var(--arrow-size)*1.4142);position:absolute;width:calc(var(--arrow-size)*1.4142)}.arrow{--arrow-size:5px;visibility:hidden}.arrow:before{--tw-rotate:45deg;border:inherit;content:"";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));visibility:visible}.arrow-top,.arrow-up{border-bottom:inherit;border-right:inherit;border-width:1px 0 0 1px;top:calc(1px - var(--arrow-size))}.white>.arrow-top,.white>.arrow-up{top:calc(0px - var(--arrow-size))}.arrow-bottom,.arrow-down{border-left:inherit;border-top:inherit;border-width:0 1px 1px 0;bottom:calc(1px - var(--arrow-size))}.white>.arrow-bottom,.white>.arrow-down{bottom:calc(0px - var(--arrow-size))}.arrow-left{border-right:inherit;border-top:inherit;border-width:0 0 1px 1px;left:calc(1px - var(--arrow-size))}.white>.arrow-left{left:calc(0px - var(--arrow-size))}.arrow-right{border-bottom:inherit;border-left:inherit;border-width:1px 1px 0 0;right:calc(1px - var(--arrow-size))}.white>.arrow-right{right:calc(0px - var(--arrow-size))}.popover{display:none;position:absolute;width:-moz-max-content;width:max-content}.popover.show{display:block}.popover-heading{--tw-bg-opacity:1;align-items:center;background-color:rgba(var(--color-surface-rgb),var(--tw-bg-opacity));border-top-left-radius:inherit;border-top-right-radius:inherit;display:flex;gap:1rem;height:2.5rem;justify-content:space-between;padding-left:.75rem;padding-right:.5rem;position:relative;z-index:1}.popover-title{flex:1 1 auto;font-weight:700}.popover-content{padding:.75rem;position:relative;z-index:1}.popover-arrow{z-index:0}.has-heading>.popover-arrow.arrow-top,.has-heading>.popover-arrow.arrow-up{--tw-bg-opacity:1;background-color:rgba(var(--color-surface-rgb),var(--tw-bg-opacity))}.popover>.btn-close{position:absolute;right:.5rem;top:.625rem;z-index:2}.btn-close+.popover-content{padding-right:3rem}.btn.with-popover-show{--tw-shadow:inset 0 2px 4px 0 rgba(0,0,0,.05);--tw-shadow-colored:inset 0 2px 4px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.with-popover-show[data-pop-placement=top]>.caret{--tw-rotate:180deg}.with-popover-show[data-pop-placement=left]>.caret,.with-popover-show[data-pop-placement=top]>.caret{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))}.with-popover-show[data-pop-placement=left]>.caret{--tw-rotate:90deg}.with-popover-show[data-pop-placement=right]>.caret{--tw-rotate:-90deg;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))}.pager{align-items:center;display:flex;gap:.25rem;white-space:nowrap}.menu.pager-size-menu{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));text-align:center}.menu.pager-size-menu>.menu-item>a{margin:.125rem}.pager .pager-goto-group>.form-control{width:3rem}.pager .pager-goto-group>.input-group-addon{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));border-color:rgba(var(--color-gray-300-rgb),var(--tw-border-opacity));border-width:1px}.pager>.pager-nav.active{--tw-text-opacity:1;box-shadow:0 0 0 1px var(--color-primary-500);color:rgba(var(--color-primary-500-rgb),var(--tw-text-opacity))}.panel{--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);--tw-ring-color:rgba(var(--color-inverse-rgb),var(--tw-ring-opacity));--tw-ring-opacity:0.05;border-radius:var(--radius);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);overflow:hidden}.panel-heading{background-color:var(--panel-heading-bg);flex-wrap:nowrap;gap:1rem;justify-content:space-between;padding:.5rem 1rem}.panel-heading,.panel-title{align-items:center;display:flex}.panel-title{font-weight:700;gap:.5rem;margin:0}.panel-actions{align-items:center;display:flex;margin-right:-.5rem}.panel-body{padding:.75rem 1rem}.panel-footer{align-items:center;background-color:var(--panel-footer-bg);display:flex;gap:.5rem;padding:.5rem 1rem}.size-sm .panel-body,.size-sm .panel-footer,.size-sm .panel-heading{padding:.375rem .75rem}.size-lg .panel-body,.size-lg .panel-footer,.size-lg .panel-heading{padding:1rem 1.25rem}.picker{position:relative}.picker-select{align-items:center;gap:.25rem;justify-content:space-between}.picker-select,.picker-select.form-control{display:flex}.picker-select-placeholder{--tw-text-opacity:1;color:rgba(var(--color-placeholder-rgb),var(--tw-text-opacity));flex:1 1 auto}.picker-select-multi .picker-select-placeholder{padding-left:.25rem;padding-right:.25rem}.picker-single-selection{flex:1 1 auto;min-width:0;overflow:hidden;white-space:nowrap}.picker-deselect-btn{border-radius:var(--radius-full);padding:.25rem}.picker-deselect-btn:not(:hover){opacity:.7}.picker-select-multi.form-control{height:auto;min-height:32px;padding-left:.25rem}.picker-multi-selections{display:flex;flex-wrap:wrap;gap:.25rem;min-width:0}.picker-multi-selection{--tw-bg-opacity:1;align-items:center;background-color:rgba(var(--color-surface-rgb),var(--tw-bg-opacity));border-radius:var(--radius-full);border-width:1px;display:flex;max-width:100%;padding-left:.5rem}.readonly .picker-multi-selection{padding-right:.5rem}.picker-multi-selection>.text{max-width:180px;overflow:clip;white-space:nowrap}.picker-menu-list{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;border-style:none;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);flex:1 1 auto;min-height:0;overflow-y:auto}.picker-menu-search+.picker-menu-list.menu{margin-top:-.125rem;padding-top:0}.picker-menu-list.tree{padding:.5rem}.picker-menu .search-menu-footer{border-top-width:1px;padding-bottom:.25rem;padding-top:.25rem}.picker-search-input{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)!important;border-color:transparent;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important;height:1.75rem;outline-width:0!important;padding-left:0;padding-right:2rem}.picker-search{flex:none;position:relative;width:100%}.picker-search>.magnifier{opacity:.5;position:absolute;right:0;top:.5rem}.picker-search-clear.btn{cursor:pointer;height:1.25rem;position:absolute;right:0;top:.25rem;width:1.25rem}.picker-search.is-inline{min-width:64px;width:4rem}.is-inline>.picker-search-input{height:1.25rem;min-width:64px;padding-left:.25rem;padding-right:.25rem}.picker-search-measure{height:0;left:0;overflow:hidden;position:absolute;top:0;white-space:nowrap}.split{display:flex;flex-direction:row}.split-vert{flex-direction:column}.split-cell{min-height:0;min-width:0}.has-animation>.split-cell{transition-duration:.15s;transition-property:width,height;transition-timing-function:cubic-bezier(.4,0,.2,1)}.gutter{align-items:stretch;border-radius:var(--radius);cursor:col-resize;display:flex;flex:none;flex-direction:row;justify-content:center;position:relative}.gutter-vert{cursor:row-resize;flex-direction:column}.gutter:before{--tw-bg-opacity:1;--tw-content:"";background-color:rgba(var(--color-border-rgb),var(--tw-bg-opacity));content:var(--tw-content);display:block;transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.gutter-horz:before{width:1px}.gutter-vert:before{height:1px}.gutter-horz:hover:before{width:75%}.gutter-vert:hover:before{height:75%}.gutter-resize-handler,.gutter-toggle{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;align-items:center;background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));border-color:rgba(var(--color-border-rgb),var(--tw-border-opacity));border-radius:var(--radius-lg);border-width:1px;color:rgba(var(--color-fore-rgb),var(--tw-text-opacity));display:flex;height:1.75rem;justify-content:center;margin-top:-.875rem;position:absolute;top:50%;transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);width:.75rem}.gutter-toggle>span{--tw-scale-x:.75;--tw-scale-y:.75;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));transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.gutter:hover .gutter-toggle{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgba(var(--color-gray-100-rgb),var(--tw-bg-opacity));border-color:rgba(var(--color-gray-500-rgb),var(--tw-border-opacity));color:rgba(var(--color-gray-500-rgb),var(--tw-text-opacity))}.gutter .gutter-toggle:hover{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgba(var(--color-primary-500-rgb),var(--tw-bg-opacity));border-color:rgba(var(--color-primary-500-rgb),var(--tw-border-opacity));color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity))}.is-last>.gutter-toggle{--tw-scale-x:-1}.is-first>.gutter-toggle,.is-last>.gutter-toggle{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))}.is-first>.gutter-toggle{--tw-scale-x:1}.gutter-vert .gutter-toggle{--tw-rotate:90deg;left:50%;margin-left:-.375rem;margin-top:0;top:auto}.gutter-vert .gutter-toggle,.gutter.is-next-collapsed>.gutter-toggle{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))}.gutter.is-next-collapsed>.gutter-toggle{--tw-scale-x:1}.gutter.is-prev-collapsed>.gutter-toggle{--tw-scale-x:-1;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))}.gutter-horz.is-first.is-prev-collapsed{transform:translateX(calc(-1px - var(--split-gutter-size)/2))}.gutter-horz.is-last.is-next-collapsed{transform:translateX(calc(1px + var(--split-gutter-size)/2))}.gutter-vert.is-first.is-prev-collapsed{transform:translateY(calc(-1px - var(--split-gutter-size)/2))}.gutter-vert.is-last.is-next-collapsed{transform:translateY(calc(1px + var(--split-gutter-size)/2))}.gutter-resize-handler{background-color:transparent;border-width:0}.gutter-resize-handler:before{--tw-content:"";border-left-width:1px;border-right-width:1px;bottom:0;content:var(--tw-content);left:.25rem;position:absolute;right:.25rem;top:0}.sidebar{--gutter-width:1px;--sidebar-duration:200ms;flex:none!important;position:relative}.has-sidebar-animation .sidebar{transition-duration:.15s;transition-duration:var(--sidebar-duration);transition-property:width,margin;transition-timing-function:cubic-bezier(.4,0,.2,1)}.sidebar-left.is-collapsed{margin-left:calc(var(--gutter-width)*-1)}.sidebar-right.is-collapsed{margin-right:calc(var(--gutter-width)*-1)}.sidebar.is-collapsed>*,.sidebar.is-expanded.is-animating>*{display:none}.sidebar.is-collapsed>.sidebar-gutter{display:flex!important}.sidebar-gutter{bottom:0;left:100%;position:absolute;top:0;width:var(--gutter-width)}.sidebar-right>.sidebar-gutter{left:auto;right:100%}.is-collapsed>.gutter>.gutter-toggle>span{--tw-rotate:-180deg;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))}.sidebar-gutter:before{border-radius:var(--radius-full);opacity:0}.sidebar-gutter:hover:before{opacity:1;width:.5rem}.is-expanded .sidebar-gutter.gutter-border:before{opacity:1}.is-sidebar-resizing{cursor:col-resize}:root{--table-head-bg:var(--color-surface);--table-striped-color:var(--color-gray-50);--table-hover-color:rgba(var(--color-primary-500-rgb),.05);--table-border-color:var(--color-border)}.table{border-color:var(--table-border-color);width:100%}.table>thead{background-color:var(--table-head-bg)}.table>*>tr{border-bottom-width:1px}.table>*>tr>*{padding:.5rem 1rem}.table-striped>tbody>tr:nth-child(2n){background:var(--table-striped-color)}.table-hover>tbody>tr:hover>*{background:var(--table-hover-color)}.table.bordered>*>tr>*{border-width:1px}.table.borderless>*>tr,.table.borderless>*>tr>*{border-style:none}.condensed>*>tr>*{padding:.375rem .75rem}.table-fixed{table-layout:fixed}.table-fixed>*>tr>*{overflow:hidden;white-space:nowrap}.toolbar{align-items:center;display:flex;position:relative}.toolbar>.divider{--tw-bg-opacity:1;background-color:rgba(var(--color-border-rgb),var(--tw-bg-opacity));margin:.5rem;width:1px}.toolbar-space{flex:1 1 auto;height:1px;width:1px}.toolbar>.dropdown.show{align-items:center;display:flex;position:relative}:root{--tooltip-bg:var(--skin-color,var(--color-inverse));--tooltip-text:var(--skin-text,var(--color-canvas));--tooltip-arrow:6px;--tooltip-delay:0.5s}.hint,[class*=" hint-"],[class^=hint-]{position:relative}.hint:before,[class*=" hint-"]:before,[class^=hint-]:before{--tw-content:"";border-color:var(--tooltip-bg) transparent transparent transparent;border-style:solid;border-width:var(--tooltip-arrow) var(--tooltip-arrow) 0 var(--tooltip-arrow);content:var(--tw-content);height:0;margin-bottom:calc(0px - var(--tooltip-arrow));position:absolute;width:0}.hint:after,[class*=" hint-"]:after,[class^=hint-]:after{--tw-shadow:0 3px 8px 0 rgba(0,0,0,.04),0 1px 2px -1px rgba(0,0,0,.01);--tw-shadow-colored:0 3px 8px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);--tw-content:attr(data-hint);background-color:var(--tooltip-bg);border-color:var(--tooltip-color);border-radius:var(--radius);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);color:var(--tooltip-text);content:var(--tw-content);font-size:.75rem;line-height:1rem;max-width:28rem;overflow:hidden;padding:.25rem .5rem;position:absolute;text-shadow:0 1px 0 var(--tooltip-bg);white-space:nowrap}.hint:after,.hint:before,[class*=" hint-"]:after,[class*=" hint-"]:before,[class^=hint-]:after,[class^=hint-]:before{--tw-translate-x:-50%;--tw-translate-y:calc(var(--tooltip-arrow)*-1);bottom:100%;left:50%;opacity:0;pointer-events:none;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));transition-delay:0s;transition-duration:.15s;transition-property:opacity,visibility;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,1,1);visibility:hidden;z-index:1800}.hint:hover:after,.hint:hover:before,[class*=" hint-"]:hover:after,[class*=" hint-"]:hover:before,[class^=hint-]:hover:after,[class^=hint-]:hover:before{opacity:1;transition-delay:var(--tooltip-delay);visibility:visible}.hint-bottom:before{border-color:transparent transparent var(--tooltip-bg) transparent;border-width:0 var(--tooltip-arrow) var(--tooltip-arrow) var(--tooltip-arrow);margin-bottom:auto;margin-top:calc(0px - var(--tooltip-arrow))}.hint-bottom:after,.hint-bottom:before{--tw-translate-y:var(--tooltip-arrow);bottom:auto;top: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))}.hint-left:before{border-color:transparent transparent transparent var(--tooltip-bg);border-width:var(--tooltip-arrow) 0 var(--tooltip-arrow) var(--tooltip-arrow);margin-bottom:auto;margin-right:calc(0px - var(--tooltip-arrow))}.hint-left:after,.hint-left:before{--tw-translate-x:calc(var(--tooltip-arrow)*-1);--tw-translate-y:50%;bottom:50%;left:auto;right: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))}.hint-right:before{border-color:transparent var(--tooltip-bg) transparent;border-width:var(--tooltip-arrow) var(--tooltip-arrow) var(--tooltip-arrow) 0;margin-bottom:auto;margin-left:calc(0px - var(--tooltip-arrow))}.hint-right:after,.hint-right:before{--tw-translate-x:var(--tooltip-arrow);--tw-translate-y:50%;bottom:50%;left: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))}.hint-lg:after,.hint-sm
-.hint-md:after:after,.hint-xl:after{white-space:normal;word-break:break-all}.hint-sm:after{width:4rem}.hint-md:after{width:8rem}.hint-lg:after{width:16rem}.hint-xl:after{width:24rem}.hint-primary{--tooltip-bg:var(--color-primary-500)}.hint-success{--tooltip-bg:var(--color-success-500)}.hint-danger{--tooltip-bg:var(--color-danger-500)}.hint-warning{--tooltip-bg:var(--color-warning-500)}.hint-important{--tooltip-bg:var(--color-important-500)}.hint-special{--tooltip-bg:var(--color-special-500)}.tooltip{background-color:var(--tooltip-bg);border-color:var(--tooltip-color);border-radius:var(--radius);color:var(--tooltip-text);font-size:.75rem;line-height:1rem;max-width:28rem;padding:.25rem .5rem;z-index:1800}.tooltip:not(.white)>.arrow{border-width:0}.tooltip.white>.arrow{border-color:inherit}.tooltip-has-title{--tw-bg-opacity:0.8;--tw-shadow:0 10px 25px -5px rgba(0,0,0,.2),0 4px 10px -6px rgba(0,0,0,.15);--tw-shadow-colored:0 10px 25px -5px var(--tw-shadow-color),0 4px 10px -6px var(--tw-shadow-color);--tw-backdrop-blur:blur(8px);-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);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);padding:.5rem .75rem .75rem}.tooltip-has-title>.arrow{opacity:.75}.tooltip-heading{align-items:center;display:flex;font-size:.8125rem;font-weight:700;gap:1rem;justify-content:space-between;line-height:1.25rem;padding:.25rem}.tooltip-heading>.btn-close{margin-right:-.25rem}.tooltip-content{padding:.25rem}.tree-item-inner{flex-direction:row;min-height:24px;padding-left:var(--list-nested-indent)}.tree-item-inner,.tree-toggle{align-items:center;display:flex}.tree-toggle{--caret-size:5px;--caret-opacity:.3;border-radius:var(--radius);flex:none;height:1rem;justify-content:center;margin-right:-.375rem;width:1rem}.tree-item-inner>.item-icon{opacity:.5;width:1rem}.tree-item-inner:hover>.item-icon{opacity:.8}.tree-item-inner.has-hover{border-radius:var(--radius)}.tree-item-inner .item-title:not(:hover),.tree-item-inner>a.item-title:not(:hover){color:inherit}.tree-item-inner>.toolbar{margin-left:1rem;opacity:.6}.tree-item-inner:hover>.toolbar{opacity:1}.tree-item>.active{background:var(--menu-active-bg);color:var(--menu-active-color)}.tree-item>.selected{background:var(--menu-selected-bg)}.tree-item>.selected .item-content{color:var(--menu-selected-color);font-weight:700}.tree.search-menu-on-top>.search-box{left:0;right:0}.upload .upload-tip{--tw-text-opacity:1;color:rgba(var(--color-gray-400-rgb),var(--tw-text-opacity))}.upload .draggable-area{background-color:rgba(var(--color-primary-50-rgb),.2);border:1px dashed var(--color-primary-300)}.upload .draggable-area.dragover{background-color:rgba(var(--color-primary-500-rgb),.1);border-style:solid}.upload .upload-tip{color:var(--color-slate-500)}.file-item>.img{height:120px;width:120px}.upload .file-item:hover .file-size{display:flex!important}.form-batch-container{overflow-y:auto}.form-batch-table{--table-head-bg:var(--color-canvas);min-width:100%;table-layout:fixed}.form-batch-table>*>tr>*{padding-left:.375rem;padding-right:.375rem;vertical-align:top}.form-batch-table>*>tr>th{text-align:left;vertical-align:middle}.form-batch-head[data-name=ACTIONS]{width:5rem}.form-batch-label{display:inline}.form-batch-control>textarea.form-control{height:2rem}.form-batch-btn+.btn{margin-left:.25rem}.form-batch-table>tbody[data-count="1"] .form-batch-btn[data-type=delete]{display:none}.form-batch-ditto{position:relative}.form-batch-ditto-btn{bottom:0;height:auto;opacity:.5;padding-left:.5rem;padding-right:.5rem;position:absolute!important;right:0;top:0}.form-batch-ditto-btn:after{--tw-bg-opacity:1;--tw-content:"";background-color:rgba(var(--color-border-rgb),var(--tw-bg-opacity));bottom:.5rem;content:var(--tw-content);left:-1px;position:absolute;top:.5rem;width:1px}[data-ditto=on] .form-batch-ditto-btn{--tw-text-opacity:1;color:rgba(var(--color-primary-500-rgb),var(--tw-text-opacity));opacity:1}.form-batch-row-actions{padding-bottom:.75rem!important;padding-top:.75rem!important}.form-batch-ditto-control .form-control{padding-right:calc(var(--form-batch-ditto-width) + 8px)}.form-batch-ditto-control .input-control>.input-control-suffix{right:var(--form-batch-ditto-width)}.form-batch-ditto-control .input-control>.form-control{padding-right:calc(var(--form-batch-ditto-width) + var(--input-control-suffix))}.form-batch-ditto-control .pick-pri{padding-right:calc(var(--form-batch-ditto-width) + 8px)}.dropmenu-btn{gap:.25rem;padding-left:.5rem;padding-right:.5rem}.dropmenu-btn>.text{max-width:180px;overflow:hidden}.dropmenu-btn>.is-leading{left:-.625rem;position:absolute}.dropmenu-btn>.is-caret{align-items:center;background-color:rgba(var(--color-canvas-rgb),.2);border-radius:var(--radius);display:flex;height:1rem;justify-content:center;width:1rem}.dropmenu-nav{border-bottom-width:1px;margin-left:.75rem;margin-right:.75rem;margin-top:.25rem}.has-search .dropmenu-nav{margin-top:-.5rem}.dropmenu-nav>.nav-secondary{gap:.5rem}.dropmenu-nav>.nav-secondary>.nav-item>a{border-radius:var(--radius);padding-left:.5rem;padding-right:.5rem}.dropmenu-nav>.nav-secondary>.nav-item>a:after{bottom:-1px;left:1rem;opacity:0;right:1rem}.dropmenu-nav>.nav-secondary>.nav-item>.active:after{left:.5rem;opacity:1;right:.5rem;transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dropmenu-title{--tw-text-opacity:1;color:rgba(var(--color-gray-500-rgb),var(--tw-text-opacity));font-size:.75rem;font-weight:700;line-height:1rem;margin-bottom:-.5rem;padding:.75rem}.dropmenu-list{min-height:0;overflow-x:hidden;overflow-y:auto;padding:.5rem .75rem}.dropmenu.loading>*{opacity:0}.dropmenu-item .tree-item-inner{border-radius:var(--radius);cursor:pointer;transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dropmenu-item.is-item.active>.tree-item-inner{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgba(var(--color-primary-50-rgb),var(--tw-bg-opacity));color:rgba(var(--color-primary-500-rgb),var(--tw-text-opacity))}.tree-item-inner.is-link:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgba(var(--color-primary-500-rgb),var(--tw-bg-opacity));color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity))}.tree-item-inner.is-link:hover .item-content,.tree-item-inner.is-link:hover .item-trailing-icon,.tree-item-inner.is-link:hover .label{color:inherit}.tree-item-inner.is-toggle:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-gray-100-rgb),var(--tw-bg-opacity))}.dropmenu-item+.tree-item{margin-top:.125rem}.dropmenu-item .is-match{font-weight:700;text-decoration-line:underline}.dropmenu-item .item-title,.dropmenu-item .label{overflow:hidden;white-space:nowrap}.dropmenu-item .item-content{padding-left:.375rem;padding-right:.375rem}.dropmenu-item *+.item-content{padding-left:0}.tree-item-inner.is-toggle .item-title{opacity:.6}.tree-item-inner.is-toggle:hover .item-title{opacity:1}.dropmenu-item-check{align-items:center;display:flex;flex:1 1 auto;justify-content:flex-end;padding-right:.5rem}.dropmenu-item .nested-toggle-icon.is-empty{width:.25rem}.dropmenu-item .item-icon{margin-right:-.25rem}:root{--form-control-border:var(--color-border-strong)}.checkbox-primary.disabled,.checkbox-primary.disabled>label,.checkbox-primary>input[type=checkbox]:disabled,.checkbox-primary>input[type=checkbox]:disabled+label,.radio-primary.disabled,.radio-primary.disabled>label,.radio-primary>input[type=radio],.radio-primary>input[type=radio]:disabled+label{filter:none!important}.checkbox-primary.disabled>label,.radio-primary.disabled>label{opacity:1}.form-actions{gap:1rem;justify-content:center}.form-actions .btn{min-width:96px}.form-control-static{min-height:32px;padding-bottom:.375rem;padding-top:.375rem}:root{--zt-panel-form-max-width:1000px}.size-sm{--zt-panel-form-max-width:800px}.size-lg{--zt-panel-form-max-width:1200px}.panel-body>.container,.panel-heading>.container{max-width:var(--panel-container-width);min-width:0;padding-left:var(--panel-container-padding);padding-right:var(--panel-container-padding)}.panel-heading>.container{align-items:center;display:flex;flex-direction:row;flex-wrap:nowrap;gap:1rem;justify-content:space-between;min-height:48px}.panel-form{--tw-bg-opacity: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(var(--tw-ring-offset-width)) var(--tw-ring-color);background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));border-radius:var(--radius-md);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);margin-bottom:1rem;margin-left:auto;margin-right:auto;max-width:var(--zt-panel-form-max-width);min-width:var(--zt-panel-form-min-width);overflow:visible;padding-bottom:1rem;padding-left:1rem;padding-right:1rem}.panel-form .form-actions{--tw-backdrop-blur:blur(8px);-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);background-color:rgba(var(--color-canvas-rgb),.8);bottom:0;padding-bottom:1rem;padding-top:1rem;position:sticky;z-index:3}.panel-form .form-grid{margin-left:calc(0px - var(--form-grid-gap-y-half));margin-right:calc(0px - var(--form-grid-gap-y-half));padding-bottom:0}.panel-form-toolbar{padding-left:var(--form-grid-gap-x-half);padding-right:var(--form-grid-gap-x-half);width:100%}.panel-form-toolbar>.toolbar{gap:1rem;padding-bottom:.75rem;padding-top:.75rem}.panel-form-divider{margin-bottom:.75rem;margin-top:1rem;padding-left:var(--form-grid-gap-x-half);padding-right:var(--form-grid-gap-x-half);width:100%}.panel-form-divider:before{--tw-content:"";background-color:rgba(var(--color-border-rgb),.7);content:var(--tw-content);display:block;height:1px}.is-full .btn-full-form,.is-lite .btn-lite-form{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-primary-300-rgb),var(--tw-ring-opacity));background-color:rgba(var(--color-primary-50-rgb),var(--tw-bg-opacity));color:rgba(var(--color-primary-500-rgb),var(--tw-text-opacity));z-index:1}.btn-toggle-fold:after{content:attr(data-expand-text)}.show-fold-items .btn-toggle-fold:after{content:attr(data-collapse-text)}.is-foldable,.is-full .full\:hidden,.is-full .lite\:visible,.is-full .panel-form-divider,.is-full .panel-form-toolbar,.is-lite .full\:visible,.is-lite .lite\:hidden,.no-foldable-items .btn-toggle-fold{display:none}.is-foldable.is-pinned,.is-full .full\:visible,.is-full .is-foldable,.is-full .lite\:hidden,.is-lite .full\:hidden,.is-lite .lite\:visible,.show-fold-items .is-foldable{display:block}.is-full .full\:w-1\/2,.is-lite .lite\:w-1\/2{width:50%}.is-full .full\:w-1\/3,.is-lite .lite\:w-1\/3{width:33.333333%}.is-full .full\:w-2\/3,.is-lite .lite\:w-2\/3{width:66.666667%}.is-full .full\:w-1\/4,.is-lite .lite\:w-1\/4{width:25%}.is-full .full\:w-2\/4,.is-lite .lite\:w-2\/4{width:50%}.is-full .full\:w-3\/4,.is-lite .lite\:w-3\/4{width:75%}.is-full .full\:w-1\/5,.is-lite .lite\:w-1\/5{width:20%}.is-full .full\:w-2\/5,.is-lite .lite\:w-2\/5{width:40%}.is-full .full\:w-3\/5,.is-lite .lite\:w-3\/5{width:60%}.is-full .full\:w-4\/5,.is-lite .lite\:w-4\/5{width:80%}.is-full .full\:w-1\/6,.is-lite .lite\:w-1\/6{width:16.666667%}.is-full .full\:w-2\/6,.is-lite .lite\:w-2\/6{width:33.333333%}.is-full .full\:w-3\/6,.is-lite .lite\:w-3\/6{width:50%}.is-full .full\:w-4\/6,.is-lite .lite\:w-4\/6{width:66.666667%}.is-full .full\:w-5\/6,.is-lite .lite\:w-5\/6{width:83.333333%}.is-full .full\:w-full,.is-lite .lite\:w-full{width:100%}.page-form{--panel-container-width:960px;--panel-container-padding:20px;--zt-panel-form-max-width:1200px;--zt-panel-form-min-width:1040px;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.04),0 0 2px -1px rgba(0,0,0,.01);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color),0 0 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);padding-left:0;padding-right:0}.page-form .panel-heading{--tw-border-opacity:0.7;border-bottom-width:1px;padding:0}.page-form .panel-title{font-size:1rem;line-height:1.5rem}@media (max-width:1240px){.page-form{--zt-panel-form-max-width:1100px}}@media (max-width:1110px){.page-form{--zt-panel-form-max-width:1040px}}.modal-body>.page-form{--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);margin:-1.5rem -2rem!important}.modal-body>.page-form>.panel-heading{--tw-bg-opacity:1;background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));border-top-left-radius:var(--radius);border-top-right-radius:var(--radius);padding-bottom:.375rem;padding-top:.375rem;position:sticky;top:-1.25rem;z-index:2}.modal-body>.panel-form .form-actions{bottom:-1.5rem!important;padding-bottom:1.5rem;padding-top:1.5rem}.dropdown.popover{display:flex;flex-direction:column;position:absolute;z-index:1200}.dropdown.show{display:flex}.dropdown-menu{--menu-min-width:7rem;--menu-max-width:20rem;display:none}.dropdown-menu.show,.menu-wrapper>.dropdown-menu,.show>.dropdown-menu{display:block}.dropdown>.dropdown-menu,.menu-wrapper .dropdown-menu{position:relative}.show>.menu-wrapper{display:flex}.dropdown>.menu-wrapper{height:100%}.dropdown>.menu-wrapper .menu-wrapper{position:absolute}.dropdown>.menu-wrapper.is-tree .menu-wrapper{position:relative}.is-contextmenu .is-nested-show>a:not(:hover){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100-rgb),var(--tw-bg-opacity))}.is-contextmenu .menu-item.is-nested>.item-inner>.nested-toggle-icon{position:absolute;right:.25rem;top:.375rem}.is-contextmenu .menu-nested .menu-item>.item-inner{padding-left:.5rem;padding-right:1.25rem}.is-contextmenu .menu-nested .menu-item>.item-inner>.item-content{overflow:hidden}.dropdown>.arrow{--tw-bg-opacity:1;background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity))}.global-search-panel li:not(.order-first):hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgba(var(--color-primary-500-rgb),var(--tw-bg-opacity));color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity))}.global-search-panel li a{width:100%}.global-search-panel li{cursor:pointer}.history-panel>.panel-heading+.panel-body{margin-top:-.75rem}.history-panel-action{position:relative}.history-panel-action:before{--tw-border-opacity:1;--tw-content:"";border-color:rgba(var(--color-border-rgb),var(--tw-border-opacity));border-left-width:1px;bottom:-.375rem;content:var(--tw-content);left:.5rem;position:absolute;top:22px}.col-reverse>.history-panel-action:first-child:before,.col>.history-panel-action:last-child:before{display:none}.history-panel-action>.item-inner{padding-left:1.5rem}.history-panel-action>.item-inner>.avatar{left:0;position:absolute;top:.375rem}.img-cutter{background:var(--color-gray-100);border:1px solid #ddd;margin-bottom:20px;padding:10px}.img-cutter .canvas{margin:0 auto;max-width:100%;min-width:50px;position:relative}.img-cutter .cover{inset:0;position:absolute;z-index:1}.img-cutter .controller{background:none;border:1px dashed hsla(0,0%,100%,.7);cursor:move;position:absolute;z-index:5}.img-cutter .control{background:#000;background:rgba(0,0,0,.6);border:1px solid hsla(0,0%,100%,.6);height:6px;position:absolute;width:6px}.img-cutter .control[data-type=left]{cursor:w-resize;left:-4px;margin-top:-3px;top:50%}.img-cutter .control[data-type=top]{cursor:n-resize;left:50%;margin-left:-3px;top:-4px}.img-cutter .control[data-type=right]{cursor:e-resize;margin-top:-3px;right:-4px;top:50%}.img-cutter .control[data-type=bottom]{bottom:-4px;cursor:s-resize;left:50%;margin-left:-3px}.img-cutter .control[data-type=top-left]{cursor:nw-resize;left:-4px;top:-4px}.img-cutter .control[data-type=top-right]{cursor:ne-resize;right:-4px;top:-4px}.img-cutter .control[data-type=bottom-left]{bottom:-4px;cursor:sw-resize;left:-4px}.img-cutter .control[data-type=bottom-right]{bottom:-4px;cursor:se-resize;right:-4px}.img-cutter .cliper{inset:0;position:absolute;z-index:2}.messager-fail .toolbar,.messager-success .toolbar{padding-left:72px}.modal-reconfirm .modal-body{font-size:14px;font-weight:700;padding:24px 32px}.modal-reconfirm .modal-footer{justify-content:center;padding:24px}.picker-deselect-btn{opacity:.6;transition-duration:.15s;transition-property:opacity,transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.picker-multi-selection{cursor:pointer;padding-right:.5rem;position:relative}.picker-multi-selection .picker-deselect-btn{--tw-scale-x:0;--tw-scale-y:0;background-color:rgba(var(--color-surface-rgb),.8);inset:0;opacity:0;position:absolute}.picker-deselect-btn:hover,.picker-multi-selection .picker-deselect-btn,.picker-multi-selection:hover .picker-deselect-btn{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))}.picker-deselect-btn:hover,.picker-multi-selection:hover .picker-deselect-btn{--tw-scale-x:1;--tw-scale-y:1;--state-color:rgba(var(--color-surface-rgb),.9);opacity:1}.pick-pri{flex-direction:row;justify-content:flex-start;position:relative}.pick-pri,.pick-pri>.text{align-items:center;display:flex}.pick-pri>.text{flex:1 1 auto;min-width:0;overflow:hidden;white-space:nowrap}.pick-pri .placeholder{--tw-text-opacity:1;color:rgba(var(--color-placeholder-rgb),var(--tw-text-opacity))}.pick-pri-list>.btn{justify-content:flex-start}.disabled.pick-pri,.disabled.pick-pri>*{filter:none}.search-form{--gutter-width:12px;padding-bottom:.5rem}.search-form-container{--tw-bg-opacity:1;--tw-shadow:0 3px 8px 0 rgba(0,0,0,.04),0 1px 2px -1px rgba(0,0,0,.01);--tw-shadow-colored:0 3px 8px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);--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);--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-border-rgb),var(--tw-ring-opacity));background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));border-radius:var(--radius);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);min-height:116px;position:relative}.is-simple .search-form-container{min-height:56px}.search-form-field td{padding:.375rem}.search-form .sidebar-right.is-collapsed{margin-right:-.375rem}.is-simple .search-form-wrapper{display:flex}.is-simple .search-form-wrapper>.row{flex:1 1 auto}.is-simple .search-form-wrapper>.toolbar{flex:none;margin-top:0}.zinbar [data-hint]{position:relative}.zinbar [data-hint]:after{--tw-bg-opacity:0.9;--tw-text-opacity:1;--tw-content:attr(data-hint);background-color:rgba(var(--color-inverse-rgb),var(--tw-bg-opacity));border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg);bottom:100%;color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity));content:var(--tw-content);display:block;font-size:.75rem;line-height:1rem;opacity:0;padding:.125rem .25rem;pointer-events:none;position:absolute;right:0;transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);white-space:nowrap;z-index:50}.zinbar [data-hint]:hover:after{opacity:1}.zin-perf-btn-list .text-danger{color:var(--color-danger-400)}.zinbar .state{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.zinbar .state:active{--tw-scale-x:1.05;--tw-scale-y:1.05}.zinbar .state:active,.zinbar.collapse{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))}.zinbar.collapse{--tw-translate-x:100%}.zinbar.collapse>div{pointer-events:none}.zinbar{--tw-translate-x:0px;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));transition-duration:.7s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.card{--tw-bg-opacity:1;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.04),0 0 2px -1px rgba(0,0,0,.01);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color),0 0 2px -1px var(--tw-shadow-color);--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);--tw-ring-color:rgba(var(--color-border-rgb),var(--tw-ring-opacity));--tw-ring-opacity:0.05;background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));border-radius:var(--radius);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);min-height:28px;position:relative;transition-duration:.15s;transition-property:shadow,border,color,background-color;transition-timing-function:cubic-bezier(.4,0,.2,1)}.card:hover{--tw-shadow:0 3px 8px 0 rgba(0,0,0,.04),0 1px 2px -1px rgba(0,0,0,.01);--tw-shadow-colored:0 3px 8px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.card-content,.card-footer,.card-header,.card-heading{padding:.25rem .5rem}.card-heading{align-items:center;display:flex;gap:.5rem}.card-icon{opacity:.5}.card-header{--tw-bg-opacity:1;background-color:rgba(var(--color-surface-rgb),var(--tw-bg-opacity))}.card-content{display:flex;flex-direction:column;gap:.25rem}.card-actions{position:absolute;right:.125rem;top:.125rem}.card-actions+.card-heading{padding-right:1.75rem}.card-subtitle{--tw-text-opacity:1;color:rgba(var(--color-gray-500-rgb),var(--tw-text-opacity));font-size:.75rem;line-height:1rem}.card-list{--list-gap:.625rem;--list-count-per-row:1}.card-list,.card-list-item{padding:calc(var(--list-gap)/2)}.card-list-item{width:calc(100%/var(--list-count-per-row))}.card-grid{display:flex;flex-wrap:wrap}.card-grid .card{height:100%}.contextmenu{display:none}.contextmenu.show{display:block}.contextmenu .popup .popup,.contextmenu.popup{position:absolute}.more,.more-vert{margin:.5rem;position:relative}.more,.more-vert,.more-vert:after,.more-vert:before,.more:after,.more:before{background-color:currentColor;border-radius:var(--radius-full);height:.125rem;width:.125rem}.more-vert:after,.more-vert:before,.more:after,.more:before{--tw-content:"";content:var(--tw-content);display:block;left:-5px;position:absolute;top:0}.more-vert:after,.more:after{left:5px}.more-vert{--tw-rotate:90deg;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))}.dashboard-blocks{position:relative}.dashboard-block-cell{position:absolute;transition-duration:.15s;transition-property:left,top;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dashboard-block{--tw-bg-opacity:1;background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));border-radius:var(--radius);inset:.5rem;position:absolute;transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dashboard-block.is-dragging{opacity:0;z-index:1600}.dashboard-block-header{align-items:center;border-top-left-radius:var(--radius);border-top-right-radius:var(--radius);display:flex;flex-direction:row;justify-content:space-between;left:0;padding:.75rem;pointer-events:none;position:absolute;right:0;top:0;z-index:10}.dashboard-block-header>*{pointer-events:auto}.dashboard-block-title{font-size:.875rem;font-weight:700;line-height:1.3rem}.dashboard-block-body{inset:0;position:absolute}.dashboard-block-body>.panel{--tw-shadow:0px 6px 16px rgba(202,215,235,.25);display:flex;flex-direction:column;height:100%;width:100%}.dashboard-block-body .panel-heading{cursor:move;flex:none}.dashboard-block-body .panel-body{flex:1 1 auto;overflow-y:auto}.has-more-menu>.dashboard-block-body .panel-heading{padding-right:3rem}.dashboard-block-body .panel-title{font-size:.875rem;height:2rem;line-height:1.3rem}.dashboard-block-actions .btn{opacity:.6}.dashboard-block-actions .btn:hover{opacity:1}.dashboard-drop-shadow{position:absolute;transition-duration:.15s;transition-property:left,top;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dashboard-drop-shadow:before{--tw-shadow:inset 0 2px 4px 0 rgba(0,0,0,.05);--tw-shadow-colored:inset 0 2px 4px 0 var(--tw-shadow-color);--tw-content:"";background-color:rgba(var(--color-inverse-rgb),.05);border-radius:var(--radius);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);content:var(--tw-content);inset:.5rem;position:absolute}:root{--scrollbar-size:10px;--scrollbar-opacity:.6;--scrollbar-bg:rgba(var(--color-inverse-rgb),.15);--scrollbar-inset:inset 0 0 0 1px rgba(var(--color-inverse-rgb),.05);--scrollbar-bar-bg:rgba(var(--color-inverse-rgb),.3);--scrollbar-hover-bg:rgba(var(--color-inverse-rgb),.4);--scrollbar-drag-bg:rgba(var(--color-inverse-rgb),.5);--scrollbar-radius:var(--radius-sm);--scrollbar-duration:.7s}.scrollbar{background:var(--scrollbar-bg);box-shadow:var(--scrollbar-shadow);opacity:var(--scrollbar-opacity);position:absolute;transition-duration:.15s;transition-duration:var(--scrollbar-duration);transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.scrollbar-hover .scrollbar{opacity:0}.scrollbar-hover:hover .scrollbar{opacity:var(--scrollbar-opacity)}.scrollbar.is-dragging,.scrollbar:hover{opacity:1!important}.scrollbar-bar{background:var(--scrollbar-bar-bg);border-radius:var(--scrollbar-radius);position:absolute}.scrollbar-bar:hover{background:var(--scrollbar-hover-bg)}.is-dragging>.scrollbar-bar{background:var(--scrollbar-drag-bg)}.is-horz>.scrollbar-bar{height:100%;z-index:20}.is-vert>.scrollbar-bar{width:100%;z-index:20}:root{--dtable-checked-bg:var(--color-warning-50);--dtable-checked-bg-hover:var(--color-warning-100);--dtable-checked-border:var(--color-border-strong)}.dtable-cell.is-checked,.dtable-striped .dtable-cell.is-odd-row.is-checked{background-color:var(--dtable-checked-bg)}.checkbox-primary.dtable-checkbox{margin-right:-.375rem}.dtable-checkbox{order:-5}.dtable-hover-col .dtable-cell.is-hover-col.is-checked,.dtable-hover-row .dtable-cell.is-hover-row.is-checked{background-color:var(--dtable-checked-bg-hover)}.dtable-cell.is-checked{--dtable-border-color:var(--dtable-checked-border)}.dtable-check-info{flex-shrink:1;margin-right:.5rem;overflow:hidden;white-space:nowrap}:root{--toggle-icon-size:calc(var(--font-size-root)*3/4 + 1px)}.toggle-icon,.toggle-icon-collapse,.toggle-icon-expand{border-color:currentColor;border-width:1px;display:block;opacity:.5;position:relative}.toggle-icon-collapse:hover,.toggle-icon-expand:hover,.toggle-icon:hover{opacity:.9}.toggle-icon,.toggle-icon-collapse,.toggle-icon-expand{border-radius:inherit;height:var(--toggle-icon-size);width:var(--toggle-icon-size)}.is-collapsed .toggle-icon:after,.is-collapsed .toggle-icon:before,.is-expanded .toggle-icon:before,.toggle-icon-collapse:after,.toggle-icon-collapse:before,.toggle-icon-expand:before{background-color:currentColor;content:" ";display:block;height:1px;left:2px;position:absolute;right:2px;top:calc((var(--toggle-icon-size) - 3px)/2)}.is-collapsed .toggle-icon:after,.toggle-icon-collapse:after{--tw-rotate:90deg;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))}:root{--dtable-nt-size:calc(var(--font-size-root)*3/4 + 1px)}.dtable-nested-indent{flex:none;margin-right:-.25rem;order:-100}.dtable-nested-toggle{align-items:center;border-radius:var(--radius-sm);display:flex;flex:none;height:1.25rem;justify-content:center;margin-left:-.25rem;order:-6;width:1.25rem}.dtable-nested-toggle.is-no-child{margin-right:-.25rem;opacity:0;pointer-events:none}.dtable-header-group{align-items:center;background:var(--dtable-header-bg);cursor:default;display:flex;justify-content:center;left:0;position:absolute;top:1px;z-index:30}.dtable-bordered .dtable-header-group{border-bottom:1px solid var(--dtable-border-color);border-left:1px solid var(--dtable-border-color)}.dtable-header-as-group{contain:style;content-visibility:visible;overflow:visible!important}.dtable-sorting{cursor:move}.dtable-cell.is-sorting-from{background-color:var(--dtable-bg);z-index:20}.dtable-cell.is-sorting-from:before{border-top-width:1px}.dtable-sorting .dtable-cell.is-sorting-after{--tw-translate-y:-100%}.dtable-sorting .dtable-cell.is-sorting-after,.dtable-sorting .dtable-cell.is-sorting-before{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))}.dtable-sorting .dtable-cell.is-sorting-before{--tw-translate-y:100%}.dtable-cell.is-sorting-before:before,.dtable-cell.is-sorting-from:before{border-bottom-width:1px;border-top-width:1px}:root{--dtable-bg:var(--color-canvas);--dtable-striped-bg:var(--color-gray-50);--dtable-hover-bg:rgba(var(--color-primary-500-rgb),.05);--dtable-header-bg:var(--color-surface);--dtable-footer-bg:var(--color-surface);--dtable-border-color:var(--color-border);--dtable-sorter-size:0.3125rem}.dtable{--tw-bg-opacity:1;background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));position:relative}.dtable.no-animation *{transition-property:none!important}.dtable-block{overflow:hidden;position:absolute;width:100%}.dtable-header{background-color:var(--dtable-header-bg);border-top-left-radius:inherit;border-top-right-radius:inherit}.dtable-body{overflow:hidden}.dtable-cells{background-color:var(--dtable-bg);height:100%;position:absolute;z-index:0}.dtable-cells-container{height:100%;position:absolute;width:100%}.dtable-header .dtable-cells{background-color:var(--dtable-header-bg)}.dtable-cells.dtable-fixed-left,.dtable-cells.dtable-fixed-right{z-index:10}.dtable-cell{position:absolute;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-property:color,background-color,border-color,transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dtable-cell:after,.dtable-cell:before{bottom:0;content:"";left:0;opacity:0;pointer-events:none;position:absolute;right:0;top:-1px;z-index:2}.dtable-cell:before{border-bottom-width:1px;border-color:var(--dtable-border-color);opacity:1}.dtable-header .dtable-cell{align-items:center;display:flex;font-weight:700}.dtable-header .dtable-cell:after,.dtable-header .dtable-cell:before{top:0}.dtable-cell-content{align-items:center;display:flex;gap:.25rem;height:100%;overflow:hidden;padding-left:.75rem;padding-right:.75rem;position:relative;white-space:nowrap;width:100%;z-index:5}.dtable-body .dtable-cell.is-last-row:before{border-bottom-width:0}.dtable-footer{align-items:center;background-color:var(--dtable-footer-bg);border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;border-color:var(--dtable-border-color);border-top-width:1px;display:flex;padding-left:.75rem;padding-right:.75rem;position:absolute;width:100%;z-index:10}.dtable-empty-tip{align-items:center;display:flex;height:100%;justify-content:center}.dtable .scrollbar{z-index:20}.dtable-header{transition-duration:1s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dtable-scrolled-down .dtable-header{border-bottom-color:rgba(var(--color-inverse-rgb),.1);border-bottom-width:1px}.dtable-has-scroll-y:not(.dtable-scrolled-bottom) .dtable-footer{border-top-color:rgba(var(--color-inverse-rgb),.1);border-top-width:1px}.dtable-scroll-shadow{background-image:linear-gradient(90deg,rgba(0,0,0,.03),transparent),linear-gradient(90deg,rgba(0,0,0,.03),transparent 50%);opacity:0;pointer-events:none;position:absolute;top:0;transition-duration:1s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);width:8px;z-index:20}.dtable:hover .dtable-scroll-shadow{opacity:1}.dtable-scroll-shadow.is-right{--tw-rotate:180deg;margin-left:-7px;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))}.dtable-scroll-shadow.is-left,.dtable-scrolled-end .dtable-scroll-shadow.is-right{visibility:hidden}.dtable-scroll-shadow.is-right,.dtable-scrolled-right .dtable-scroll-shadow.is-left{visibility:visible}.dtable-sort{display:inline-flex;height:calc(var(--dtable-sorter-size)*12/5);margin-left:.25rem;opacity:.8;position:relative}.dtable-cell:hover .dtable-sort{opacity:1}.dtable-sort:after,.dtable-sort:before{--tw-content:"";border-color:transparent;border-style:solid;border-width:var(--dtable-sorter-size);content:var(--tw-content);height:0;left:0;opacity:.4;position:absolute;width:0}.dtable-sort:before{border-bottom-color:currentColor;border-top-width:0;top:0}.dtable-sort:after{border-bottom-width:0;border-top-color:currentColor;bottom:0}.dtable-sort.dtable-sort-asc:before,.dtable-sort.dtable-sort-desc:after{opacity:.9}.dtable-sort-link{align-items:center;cursor:pointer;display:inline-flex}.dtable-cells.dtable-fixed-left:before,.dtable-cells.dtable-fixed-right:before{border-color:var(--dtable-border-color);content:"";height:100%;pointer-events:none;position:absolute;width:100%;z-index:5}.dtable-cells.dtable-fixed-left:before{border-right-width:1px;right:-1px}.dtable-cells.dtable-fixed-right:before{border-left-width:1px;left:0}.dtable-bordered:before{border-color:var(--dtable-border-color);border-radius:inherit;border-width:1px;content:"";display:block;inset:0;pointer-events:none;position:absolute;z-index:15}.dtable-bordered .dtable-cell:before{border-width:1px;right:-1px}.dtable-cell.has-border-left:before{border-left-width:1px}.dtable-cell.has-border-right:before{border-right-width:1px;right:-1px}.dtable-striped .dtable-cell.is-odd-row{background-color:var(--dtable-striped-bg)}.dtable-hover-cell .dtable-cell:hover:after,.dtable-hover-col .dtable-cell.is-hover-col:before,.dtable-hover-row .dtable-body .dtable-cell.is-hover-row:before{background-color:var(--dtable-hover-bg)}:root{--kanban-lane-name-width:20px;--kanban-col-width:280px;--kanban-cols-gap:8px;--kanban-lanes-gap:8px;--kanban-header-height:32px;--kanban-lane-height:auto;--kanban-lane-color:var(--color-primary-500);--kanban-link-color:var(--color-secondary-500)}.kanban{align-items:flex-start;display:flex;flex-direction:column;min-width:-moz-fit-content;min-width:fit-content;position:relative}.kanban-header{display:flex;flex-direction:row;height:var(--kanban-header-height)}.kanban.has-sub-cols .kanban-header{height:calc(var(--kanban-header-height)*2)}.kanban-header-lane-name{background-color:rgba(var(--color-fore-rgb),.05);flex:none;width:var(--kanban-lane-name-width)}.kanban-header-cols,.kanban-header-sub-cols{display:flex;flex:1 1 0%;flex-direction:row;gap:var(--kanban-cols-gap)}.kanban-header-sub-cols{--tw-border-opacity:1;border-color:rgba(var(--color-canvas-rgb),var(--tw-border-opacity));border-top-width:2px}.kanban-header-col{align-items:center;border-bottom-width:1px;display:flex;flex:1 1 0%;flex-direction:column;height:100%;width:var(--kanban-col-width)}.kanban-header-col.has-subs{width:auto}.kanban-header-col-wrapper{--tw-bg-opacity:1;align-items:center;background-color:rgba(var(--color-surface-rgb),var(--tw-bg-opacity));display:flex;flex:1 1 0%;flex-direction:row;padding-left:3.5rem;padding-right:3.5rem;position:relative;width:100%}.kanban-header-col-wrapper.is-align-left{justify-content:flex-start;padding-left:.5rem}.kanban-header-col-wrapper.is-align-left>.kanban-header-title{justify-content:flex-start}.kanban-header-title{align-items:center;display:flex;flex:1 1 auto;flex-direction:row;justify-content:center;overflow:hidden}.kanban-header-title>.as-title{color:var(--kanban-col-color);font-weight:700;overflow:hidden;white-space:nowrap}.kanban-header-col-actions{bottom:.25rem;position:absolute;right:.25rem;top:.25rem}.kanban-header-col-actions>.btn{opacity:.6}.kanban-header-col-actions>.btn:hover{opacity:1}.kanban-body{display:flex;flex-direction:column;gap:var(--kanban-lanes-gap)}.kanban-lane{display:flex;flex-direction:row;height:var(--kanban-lane-height);min-height:96px}.kanban-lane-name{--tw-text-opacity:1;align-items:center;background-color:var(--kanban-lane-color);color:rgba(var(--color-white-rgb),var(--tw-text-opacity));display:flex;justify-content:center;width:var(--kanban-lane-name-width);writing-mode:vertical-rl}.kanban-lane-actions,.kanban-lane-name{flex:none;position:relative}.kanban-lane.is-first .kanban-lane-actions{margin-top:calc(4px - var(--kanban-header-height))}.has-sub-cols .kanban-lane.is-first .kanban-lane-actions{margin-top:calc(4px - var(--kanban-header-height)*2)}.kanban-lane-actions>.btn.square{width:var(--kanban-lane-name-width)}.kanban-lane-title{align-items:center;display:flex;flex:1 1 auto;justify-content:center;overflow:hidden;white-space:nowrap}.kanban-lane-cols{display:flex;flex-direction:row;gap:var(--kanban-cols-gap)}.kanban-lane-col{background-color:rgba(var(--color-inverse-rgb),.05);display:flex;flex-direction:column;height:100%;width:var(--kanban-col-width)}.kanban-header-col,.kanban-lane-col{margin-left:calc(var(--kanban-col-gap-left) - var(--kanban-cols-gap));margin-right:calc(var(--kanban-col-gap-right) - var(--kanban-cols-gap))}.kanban-col-content{position:relative;z-index:5}.kanban-lane.is-first>.kanban-lane-name:before{--tw-content:"";background-color:var(--kanban-lane-color);bottom:100%;content:var(--tw-content);display:block;height:var(--kanban-header-height);left:0;position:absolute;right:0}.kanban.has-sub-cols .kanban-lane.is-first>.kanban-lane-name:before{height:calc(var(--kanban-header-height)*2)}.kanban-items{flex:1 1 auto;overflow:auto;scrollbar-gutter:both-edges stable}.kanban-lane.is-auto-height .kanban-items{scrollbar-gutter:auto}.kanban-item .card-actions{z-index:5}.kanban-heading{width:100%}.kanban-heading .listitem{height:2.25rem}.kanban-heading .item-title{font-weight:700}.kanban.has-dragging{cursor:move}.kanban-item.is-dragging{cursor:move;opacity:.1}.kanban-sticky .kanban-header{--tw-bg-opacity:1;background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));position:sticky;top:0;z-index:10}.kanban-sticky .kanban-lane-name{left:0;position:sticky;z-index:10}.kanban-region{--tw-bg-opacity:1;--tw-shadow:0 3px 8px 0 rgba(0,0,0,.04),0 1px 2px -1px rgba(0,0,0,.01);--tw-shadow-colored:0 3px 8px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));border-radius:var(--radius);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);min-width:-moz-fit-content;min-width:fit-content;padding:.75rem}.kanban-region>.kanban+.kanban{margin-top:.75rem}.kanban-region.has-heading{padding-top:0}.kanban-heading>.listitem{left:.75rem;position:sticky;width:calc(var(--kanban-list-width) - 24px)}.kanban-list{display:flex;flex-direction:column;gap:.75rem;height:100vh;overflow:auto;scrollbar-gutter:stable}.kanban-list.is-moving{cursor:grabbing}.kanban-items.is-dropping{position:relative}.kanban-item.is-dropping{position:relative;transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.kanban-item.is-dropping:after,.kanban-items.is-dropping>.card-list:after{--tw-content:"";background-color:rgba(var(--color-warning-500-rgb),.5);border-radius:var(--radius-full);content:var(--tw-content);display:block;height:.25rem}.kanban-item.is-dropping:after{left:.25rem;position:absolute;right:.25rem;top:-.25rem}.kanban-item.is-dropping[z-drop-side=before]{--tw-translate-y:0.25rem}.kanban-item.is-dropping[z-drop-side=after],.kanban-item.is-dropping[z-drop-side=before]{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))}.kanban-item.is-dropping[z-drop-side=after]{--tw-translate-y:-0.25rem}.kanban-item.is-dropping[z-drop-side=after]:after{bottom:-.25rem;top:auto}.kanban-links{inset:0;pointer-events:none;position:absolute;z-index:20}.kanban-link{align-items:center;color:var(--kanban-link-color);display:flex;justify-content:center}.kanban-link,.kanban-link>svg{position:absolute}.kanban-link-text{border-radius:var(--radius);height:1em;line-height:1;padding-left:.125rem;padding-right:.125rem;pointer-events:auto;position:relative;text-align:center;white-space:nowrap}.kanban-link-start-point{--tw-translate-x:-0.25rem;--tw-translate-y:-0.25rem;height:.5rem;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));width:.5rem}.kanban-link-start-point,.kanban-link-start-point:before{background-color:currentColor;border-radius:var(--radius-full);position:absolute}.kanban-link-start-point:before{--tw-content:"";content:var(--tw-content);display:block;inset:-.25rem;opacity:.2}.kanban-link path{pointer-events:auto}.kanban-link path+path{opacity:.6}.kanban-link.is-hover path+path{opacity:1}.kanban-link-delete-btn{--tw-scale-x:.75;--tw-scale-y:.75;opacity:0;pointer-events:auto;transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.is-hover .kanban-link-delete-btn,.kanban-link-delete-btn{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))}.is-hover .kanban-link-delete-btn{--tw-scale-x:1;--tw-scale-y:1;opacity:1}.kanban.is-adding-link{cursor:crosshair}.kanban-link-editor{inset:0;pointer-events:none;position:absolute;z-index:20}.kanban-link-editor-from,.kanban-link-editor-to{--tw-shadow-color:rgb(var(--color-primary-500-rgb));--tw-shadow:var(--tw-shadow-colored);--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);--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-primary-500-rgb),var(--tw-ring-opacity));border-radius:var(--radius)}.kanban-link-editor-from,.kanban-link-editor-point,.kanban-link-editor-to{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);position:absolute}.kanban-link-editor-point{--tw-translate-x:-0.25rem;--tw-translate-y:-0.25rem;--tw-bg-opacity: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(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgba(var(--color-primary-500-rgb),0.1);background-color:rgba(var(--color-primary-500-rgb),var(--tw-bg-opacity));border-radius:var(--radius-full);cursor:move;height:.5rem;opacity:.5;pointer-events:auto;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));transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);width:.5rem}.kanban-link-editor-point.is-left{left:0;top:50%}.kanban-link-editor-point.is-right{--tw-translate-x:0.25rem;right:0;top:50%;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))}.kanban-link-editor-point.is-top{left:50%;top:0}.kanban-link-editor-point.is-bottom{--tw-translate-y:0.25rem;bottom:0;left:50%;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))}.kanban-link-editor-point:hover{--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(8px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgba(var(--color-primary-500-rgb),0.5);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);opacity:1}.tab-pane{display:none}.tab-pane.active{display:block}:root{--dtable-header-bg:var(--color-surface-light);--dtable-footer-bg:var(--color-surface-light);--dtable-border-color:var(--color-border-light);--dtable-checked-border:var(--color-border);--dtable-checked-bg:var(--color-primary-50);--dtable-checked-bg-hover:var(--color-primary-100);--dtable-hover-bg:rgba(var(--color-gray-500-rgb),.05);--dtable-link-color:var(--color-link);--dtable-link-hover-color:var(--color-link-hover);--dtable-link-visited-color:var(--color-link-visited)}.dtable-cell-content[style*="--color-link"]{--dtable-link-hover-color:var(--color-link);--dtable-link-visited-color:var(--color-link)}.dtable-body .dtable-cell a:not(.btn){color:var(--dtable-link-color)}.dtable-body .dtable-cell a:not(.btn):visited{color:var(--dtable-link-visited-color)}.dtable-body .dtable-cell a:not(.btn):hover{color:var(--dtable-link-hover-color)}.dtable .btn-avatar{--tw-bg-opacity:1;--tw-ring-color:transparent;background-color:rgba(var(--color-gray-100-rgb),var(--tw-bg-opacity));border-radius:var(--radius-full);gap:.25rem;height:1.25rem;padding-left:0;padding-right:.5rem}.dtable .btn-avatar:hover{--tw-shadow:0 3px 8px 0 rgba(0,0,0,.04),0 1px 2px -1px rgba(0,0,0,.01);--tw-shadow-colored:0 3px 8px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.dtable-nested-toggle{width:1rem}.dtable .toggle-icon{--toggle-icon-size:11px;--tw-border-opacity:1;border-color:rgba(var(--color-gray-400-rgb),var(--tw-border-opacity));border-radius:var(--radius)}.dtable .toggle-icon:after,.dtable .toggle-icon:before{--tw-bg-opacity:1;background-color:rgba(var(--color-gray-700-rgb),var(--tw-bg-opacity))}.dtable-footer>.toolbar{margin-right:.5rem}.dtable-header .dtable-cell[data-sort]>.dtable-cell-content>a:not(:hover){color:inherit}.dtable-assign-btn{--dtable-link-color:var(--color-fore);align-items:center;border-radius:var(--radius-full);display:flex;flex-direction:row;height:1.25rem;padding-left:.375rem;padding-right:.375rem}.dtable-assign-btn:not(:hover){color:inherit}.dtable-assign-btn.is-me{--dtable-link-color:var(--color-warning-500)}.dtable-assign-btn:hover{--tw-bg-opacity: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);--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-border-strong-rgb),var(--tw-ring-opacity));background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.dtable-assign-btn>span{border-radius:var(--radius-full);line-height:20px;padding-left:.375rem;padding-right:.375rem}.dtable-assign-btn.is-unassigned>span{--tw-text-opacity: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);--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-border-strong-rgb),var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgba(var(--color-gray-500-rgb),var(--tw-text-opacity))}.dtable-assign-btn.is-unassigned:hover>span{--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);background-color:inherit;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:inherit}.dtable-assign-btn>.icon{opacity:0;transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dtable-assign-btn:not(.disabled):hover>.icon{opacity:1}.dtable-header .dtable-cell[data-type=assign]{padding-left:1.5rem}.dtable-cell-icon{order:-5}.dtable-custom-cell[data-type=control]{align-items:center;display:flex;justify-content:center;padding-left:.125rem;padding-right:.125rem;z-index:1}.dtable-empty-tip{min-height:212px}.menu.menu-dtable-actions.has-icons{--menu-icon-opacity:1;align-items:center;display:flex;gap:.25rem;min-width:auto}.menu.menu-dtable-actions.has-icons>.menu-item>a{padding-left:.25rem;padding-right:.25rem}.menu.menu-dtable-actions.has-icons>.menu-item>a>.icon-EMPTY,.menu.menu-dtable-actions.has-icons>.menu-item>a>.item-content{display:none}.menu.menu-dtable-actions.has-icons>.menu-item>a>.icon-EMPTY+.item-content,.menu.menu-dtable-actions.has-icons>.menu-item>a>.item-content:first-child{display:block}:root{--state-color:rgba(0,0,0,.03);--zt-page-bg:#f8f9fa;--zt-header-bg:var(--color-canvas);--zt-header-color:var(--color-fore);--zt-sidebar-width:160px;--zt-navbar-active-color:var(--color-primary-500)}body{background-color:var(--zt-page-bg)}.page-app{overflow:overlay}.container{min-width:1200px}#header{--tw-shadow:0 3px 8px 0 rgba(0,0,0,.04),0 1px 2px -1px rgba(0,0,0,.01);--tw-shadow-colored:0 3px 8px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);background:var(--zt-header-bg);border-bottom:1px solid var(--zt-header-border,rgba(var(--color-inverse-rgb),.05));box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);color:var(--zt-header-color);height:3rem}#header>.container{height:100%;position:relative}#heading{align-items:center;bottom:0;display:flex;gap:.25rem;left:1rem;position:absolute;top:0}#heading>.toolbar{margin-left:-.75rem}#heading .dropmenu-btn>.text{max-width:142px}#heading>[data-zui-dropmenu]+div .dropmenu-btn>.text,#heading>[data-zui-dropmenu]+div+div .dropmenu-btn>.text{max-width:78px}#navbar{align-items:center;display:flex;font-size:.875rem;height:100%;justify-content:center;line-height:1.3rem}#navbar>.nav{--nav-active-color:var(--zt-navbar-active-color,var(--color-current));--nav-item-padding:12px;--nav-divider-margin:8px;margin-left:var(--nav-offset-left)}#navbar>.nav>.nav-item>a{height:3rem;padding-left:var(--nav-item-padding);padding-right:var(--nav-item-padding)}#navbar>.nav>.nav-item>a:after{--tw-scale-x:.5;background-color:currentColor;bottom:.5rem;content:"";height:.125rem;left:.75rem;opacity:0;position:absolute;right:.75rem;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));transition-duration:.15s;transition-property:transform,opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}#navbar>.nav>.nav-item>a:hover:after{opacity:.5}#navbar>.nav>.nav-item>a.active:after,#navbar>.nav>.nav-item>a:hover:after{--tw-scale-x:1;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))}#navbar>.nav>.nav-item>a.active:after{opacity:.9}#navbar>.nav>.divider{align-self:center;height:1.25rem;margin-left:var(--nav-divider-margin);margin-right:var(--nav-divider-margin)}#navbar>.nav.compact{font-size:.8125rem;line-height:1.25rem}#navbar>.nav.compact-extra{font-size:.75rem;line-height:1rem}#toolbar{align-items:center;bottom:0;display:flex;gap:.25rem;position:absolute;right:1rem;top:0}#main{min-height:100vh}#header+#main{min-height:calc(100vh - 3rem)}#main>.container{padding-left:1rem;padding-right:1rem;position:relative}@media (min-width:1400px){#header>.container,#main>.container,#mainNavbar>.container{padding-left:2.5rem;padding-right:2.5rem}#heading{left:2.5rem}#toolbar{right:2.5rem}}#mainNavbar{--tw-bg-opacity:1;background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));height:2.75rem}#mainNavbar>.container{position:relative}#mainNavbar .nav{height:2.75rem;inset:0;justify-content:center;position:absolute}#mainNavbar .nav-item{font-size:.875rem;line-height:1.3rem}#mainNavbar .nav-item>a{border-radius:var(--radius)}#mainMenu{gap:1rem;justify-content:space-between;padding-bottom:.75rem;padding-top:.75rem}#featureBar,#mainMenu{align-items:center;display:flex}#featureBar{flex:1 1 auto;gap:.5rem}#actionBar{gap:.5rem}#actionBar>.nav-divider{margin-left:-.25rem;margin-right:-.25rem}#mainContent{padding-top:.75rem}#mainMenu+#mainContent{padding-top:0}#mainContent.row{align-items:stretch;display:flex;gap:1rem;justify-content:space-between}#mainContent.row>*{flex:1 1 auto;min-width:0}#mainContainer.has-sidebar-left{--gutter-left-size:16px}#mainContainer.is-sidebar-left-collapsed{--gutter-left-size:0}.has-sidebar-animation.has-sidebar-left #mainMenu{transition-duration:.15s;transition-property:padding-left;transition-timing-function:cubic-bezier(.4,0,.2,1)}:root{--modal-radius:var(--radius);--avatar-bg:var(--color-gray-200)}.modal-alert .modal-footer{justify-content:center}.modal-dialog{--tw-bg-opacity:1}.modal-content,.modal-dialog{max-height:calc(100vh - 4rem)}.modal-body,.modal-footer,.modal-header{padding:1.5rem 2rem}.modal-header{padding-right:3rem}.modal-body+.modal-footer,.modal-header+.modal-actions+.modal-body,.modal-header+.modal-body{padding-top:1px}.modal-condensed .modal-body,.modal-condensed .modal-header{padding:1rem 1.25rem}.modal-condensed .modal-actions{top:.75rem}:root{--label-bg:var(--color-gray-100);--label-color:var(--color-gray-800)}.label[class$=-pale],.label[class*="-pale "]{--tw-bg-opacity:0.4;--tw-ring-opacity:0.4}.tree{--tree-indent:14px}.body-modal .panel-form,.modal-body>.panel-form{margin:0;padding:0}.modal-body>.panel-form>.panel-heading{padding-left:1px;padding-right:1px;padding-top:1px}.modal-body>.panel-form>.panel-body{padding:1px}.modal-body>.form{padding-top:1px}.modal .history,.modal .panel-body>.form{padding:0}:root{--article-p-space:0}.arrow,.arrow:before{background:inherit;height:calc(var(--arrow-size)*1.4142);position:absolute;width:calc(var(--arrow-size)*1.4142)}.arrow{--arrow-size:5px;visibility:hidden}.arrow:before{--tw-rotate:45deg;border:inherit;content:"";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));visibility:visible}.arrow-top,.arrow-up{border-bottom:inherit;border-right:inherit;border-width:1px 0 0 1px;top:calc(1px - var(--arrow-size))}.white>.arrow-top,.white>.arrow-up{top:calc(0px - var(--arrow-size))}.arrow-bottom,.arrow-down{border-left:inherit;border-top:inherit;border-width:0 1px 1px 0;bottom:calc(1px - var(--arrow-size))}.white>.arrow-bottom,.white>.arrow-down{bottom:calc(0px - var(--arrow-size))}.arrow-left{border-right:inherit;border-top:inherit;border-width:0 0 1px 1px;left:calc(1px - var(--arrow-size))}.white>.arrow-left{left:calc(0px - var(--arrow-size))}.arrow-right{border-bottom:inherit;border-left:inherit;border-width:1px 1px 0 0;right:calc(1px - var(--arrow-size))}.white>.arrow-right{right:calc(0px - var(--arrow-size))}.caret,.caret-down,.caret-left,.caret-right,.caret-up{align-items:center;display:inline-flex;height:.75rem;justify-content:center;position:relative;width:.75rem}.caret-down:before,.caret-left:before,.caret-right:before,.caret-up:before,.caret:before{--tw-translate-y:-1px;--tw-rotate:45deg;--tw-content:"";border-color:currentColor;border-width:0 1px 1px 0;content:var(--tw-content);display:block;height:.35rem;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));transform-origin:center;width:.35rem}.caret-left:before{--tw-translate-x:0.125rem;--tw-translate-y:0px;--tw-rotate:135deg}.caret-left:before,.caret-right:before{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))}.caret-right:before{--tw-translate-x:-0.125rem;--tw-translate-y:0px;--tw-rotate:-45deg}.caret-up:before{--tw-translate-y:0.125rem;--tw-rotate:225deg;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))}:focus>.caret,:hover>.caret{opacity:inherit}.disabled .caret,.readonly .caret{opacity:var(--caret-opacity,.5)}:root{--toggle-icon-size:calc(var(--font-size-root)*3/4 + 1px)}.toggle-icon,.toggle-icon-collapse,.toggle-icon-expand{border-color:currentColor;border-width:1px;display:block;opacity:.5;position:relative}.toggle-icon-collapse:hover,.toggle-icon-expand:hover,.toggle-icon:hover{opacity:.9}.toggle-icon,.toggle-icon-collapse,.toggle-icon-expand{border-radius:inherit;height:var(--toggle-icon-size);width:var(--toggle-icon-size)}.is-collapsed .toggle-icon:after,.is-collapsed .toggle-icon:before,.is-expanded .toggle-icon:before,.toggle-icon-collapse:after,.toggle-icon-collapse:before,.toggle-icon-expand:before{background-color:currentColor;content:" ";display:block;height:1px;left:2px;position:absolute;right:2px;top:calc((var(--toggle-icon-size) - 3px)/2)}.is-collapsed .toggle-icon:after,.toggle-icon-collapse:after{--tw-rotate:90deg;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))}.close{aspect-ratio:1/1;display:block;position:relative;width:1em}.close:after,.close:before{--tw-rotate:45deg;background-color:currentColor;border-radius:var(--radius-full);content:"";display:block;height:1px;left:0;position:absolute;top:calc(50% - .5px);width:100%}.close:after,.close:before{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))}.close:after{--tw-rotate:-45deg}.spinner,.spinner:after,.spinner:before{display:block;height:1em;position:relative;width:1em}.spinner:after,.spinner:before{border-radius:var(--radius-full);content:" ";position:absolute}.spinner:before{animation:-spin 1s cubic-bezier(.6,0,.4,1) infinite;border:.16667em solid transparent;border-top-color:currentcolor}.spinner:after{border:.16667em solid;opacity:.2}.magnifier{display:inline-block;height:1em;position:relative;width:1em}.magnifier:after,.magnifier:before{border-radius:var(--radius-full);content:"";display:block;position:absolute}.magnifier:before{border:1px solid;height:.75em;width:.75em}.magnifier:after{--tw-rotate:45deg;background-color:currentColor;height:1px;left:.55em;top:.7em;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));width:.5em}.more,.more-vert{margin:.5rem;position:relative}.more,.more-vert,.more-vert:after,.more-vert:before,.more:after,.more:before{background-color:currentColor;border-radius:var(--radius-full);height:.125rem;width:.125rem}.more-vert:after,.more-vert:before,.more:after,.more:before{--tw-content:"";content:var(--tw-content);display:block;left:-5px;position:absolute;top:0}.more-vert:after,.more:after{left:5px}.more-vert{--tw-rotate:90deg;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))}.chevron-down,.chevron-left,.chevron-right,.chevron-up{align-items:center;display:inline-flex;height:1em;justify-content:center;position:relative;width:1em}.chevron-down:before,.chevron-left:before,.chevron-right:before,.chevron-up:before{--tw-translate-y:-0.125rem;--tw-rotate:45deg;--tw-content:"";border-color:currentColor;border-width:0 1px 1px 0;content:var(--tw-content);display:block;height:.6923077em;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));transform-origin:center;width:.6923077em}.chevron-left:before{--tw-translate-y:0px;--tw-translate-x:0.125rem;--tw-rotate:135deg}.chevron-left:before,.chevron-right:before{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))}.chevron-right:before{--tw-translate-y:0px;--tw-translate-x:-0.125rem;--tw-rotate:-45deg}.chevron-up:before{--tw-translate-y:0.125rem;--tw-rotate:225deg;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))}.i-time{border-color:currentColor;border-radius:50%;border-width:.08em;display:inline-block;height:1em;position:relative;width:1em}.i-time:after{--tw-content:"";border-color:currentColor;border-width:0 0 .08em .08em;content:var(--tw-content);height:.385em;left:.3846em;position:absolute;top:.08em;width:.385em}.i-calendar{border-color:currentColor;border-radius:2px;border-width:.08em;display:inline-block;height:.79em;margin-top:.16em;position:relative;width:1em}.i-calendar:after,.i-calendar:before{--tw-content:"";border-color:currentColor;border-width:.08em;content:var(--tw-content);position:absolute}.i-calendar:before{border-bottom-width:0;left:.15em;top:.307em;width:.6em}.i-calendar:after{border-bottom-width:0;border-top-width:0;height:.3077em;left:.17em;top:-.154em;width:.538em}:root{--state-color:rgba(0,0,0,.05);--state-scale:.9;--opacity-disabled:.65;--opacity-muted:.5}.btn,.item>a,.state{cursor:pointer;position:relative}.btn:before,.item>a:before,.state:before{background:var(--state-color);border-radius:inherit;content:" ";display:block;inset:0;opacity:0;pointer-events:none;position:absolute;transform:scale(var(--state-scale));transition-duration:.2s;transition-property:opacity,transform,box-shadow,background-color;transition-timing-function:cubic-bezier(.4,0,.2,1)}.btn.active:not(:hover,:focus-visible,:focus-within,:active):before,.item>a.active:not(:hover,:focus-visible,:focus-within,:active):before,.state.active:not(:hover,:focus-visible,:focus-within,:active):before{--tw-scale-x:1;--tw-scale-y:1;--tw-shadow:inset 0 2px 4px 0 rgba(0,0,0,.05);--tw-shadow-colored:inset 0 2px 4px 0 var(--tw-shadow-color);background:var(--state-active-color,var(--state-color));box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);opacity:var(--state-active-opacity,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));transition-duration:.7s}.btn.selected:not(:hover,:focus-visible,:focus-within,:active):before,.item>a.selected:not(:hover,:focus-visible,:focus-within,:active):before,.state.selected:not(:hover,:focus-visible,:focus-within,:active):before{--tw-scale-x:1;--tw-scale-y:1;background:var(--state-selected-color,var(--state-scale));opacity:var(--state-selected-opacity,.1);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))}.btn:focus-visible,.item>a:focus-visible,.state:focus-visible{outline:2px solid transparent;outline-offset:2px}.btn:active:before,.btn:focus-visible:before,.btn:hover:before,.item>a:active:before,.item>a:focus-visible:before,.item>a:hover:before,.state:active:before,.state:focus-visible:before,.state:hover:before{--tw-scale-x:1;--tw-scale-y:1;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))}.btn:hover:before,.item>a:hover:before,.state:hover:before{opacity:var(--state-hover-opacity,1)}.btn:active:before,.item>a:active:before,.state:active:before{--tw-ring-color:var(--state-ring-color,currentColor);--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);background:var(--state-pressed-color,var(--state-color));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);opacity:var(--state-pressed-opacity,.6);transition-duration:.7s}.btn:focus-visible:before,.item>a:focus-visible:before,.state:focus-visible:before{--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);--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-focus-rgb),var(--tw-ring-opacity));background:var(--state-focus-color,var(--state-color));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);opacity:var(--state-focus-opacity,1)}.btn.disabled:before,.btn[disabled]:before,.item>a.disabled:before,.item>a[disabled]:before,.state.disabled:before,.state[disabled]:before{display:none}.disabled,.disabled *,[disabled],[disabled] *{--tw-grayscale:grayscale(100%);cursor:not-allowed!important;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);opacity:var(--opacity-disabled)}.load-indicator:after,.load-indicator:before{display:block;opacity:0;position:absolute;transition-delay:0s;transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);visibility:hidden}.load-indicator:before{--tw-content:attr(data-loading);align-items:center;background-color:rgba(var(--color-canvas-rgb),.7);border-radius:inherit;content:var(--tw-content);display:flex;font-size:.75rem;inset:0;justify-content:center;line-height:1rem;z-index:99}.load-indicator[data-loading]:before{padding-top:3.5rem}.load-indicator:after{--tw-content:"";border-color:transparent currentcolor currentcolor;border-radius:var(--radius-full);border-style:dotted;border-width:4px 3px 4px 4px;content:var(--tw-content);height:2rem;left:50%;margin-left:-1rem;margin-top:-1rem;top:50%;width:2rem;z-index:100}.load-indicator.loading:after,.load-indicator.loading:before{opacity:1;transition-delay:.5s;visibility:visible}@keyframes -spin{to{transform:rotate(1turn)}}.load-indicator.loading:after{animation:-spin 1s linear infinite;opacity:.5}.events-none,.pointer-events-none{pointer-events:none}.events-auto,.pointer-events-auto{pointer-events:auto}.scroll-auto{scroll-behavior:auto}.scroll-smooth{scroll-behavior:smooth}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-text{-webkit-user-select:text;-moz-user-select:text;user-select:text}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.select-auto{-webkit-user-select:auto;-moz-user-select:auto;user-select:auto}.cursor-auto{cursor:auto}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-wait{cursor:wait}.cursor-text{cursor:text}.cursor-move{cursor:move}.cursor-help{cursor:help}.cursor-not-allowed{cursor:not-allowed}.active\:opacity-100.active,.active\:opacity-100:active,.group.active .group-active\:opacity-100,.group:active .group-active\:opacity-100,.group:hover .group-hover\:opacity-100,.hover\:opacity-100:hover{opacity:1}.active\:text-primary.active,.active\:text-primary:active,.group.active .group-active\:text-primary,.group:active .group-active\:text-primary,.group:hover .group-hover\:text-primary,.hover\:text-primary:hover{--tw-text-opacity:1;color:rgba(var(--color-primary-500-rgb),var(--tw-text-opacity))}.active\:border-primary.active,.active\:border-primary:active,.group.active .group-active\:border-primary,.group:active .group-active\:border-primary,.group:hover .group-hover\:border-primary,.hover\:border-primary:hover{--tw-border-opacity:1;border-color:rgba(var(--color-primary-500-rgb),var(--tw-border-opacity))}.active\:primary-pale.active,.active\:primary-pale:active,.group.active .group-active\:primary-pale,.group:active .group-active\:primary-pale,.group:hover .group-hover\:primary-pale,.hover\:primary-pale:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-50-rgb),var(--tw-bg-opacity))}.active\:primary.active,.active\:primary:active,.group.active .group-active\:primary,.group:active .group-active\:primary,.group:hover .group-hover\:primary,.hover\:primary:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgba(var(--color-primary-500-rgb),var(--tw-bg-opacity));color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity))}.active\:canvas.active,.active\:canvas:active,.group.active .group-active\:canvas,.group:active .group-active\:canvas,.group:hover .group-hover\:canvas,.hover\:canvas:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity))}.active\:font-bold.active,.active\:font-bold:active,.group.active .group-active\:font-bold,.group:active .group-active\:font-bold,.group:hover .group-hover\:font-bold,.hover\:font-bold:hover{font-weight:700}.active\:shadow.active,.active\:shadow:active,.group.active .group-active\:shadow,.group:active .group-active\:shadow,.group:hover .group-hover\:shadow,.hover\:shadow:hover{--tw-shadow:0 3px 8px 0 rgba(0,0,0,.04),0 1px 2px -1px rgba(0,0,0,.01);--tw-shadow-colored:0 3px 8px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.aspect-auto{aspect-ratio:auto}.aspect-square{aspect-ratio:1/1}.aspect-video{aspect-ratio:16/9}.container{width:100%}@media (min-width:1720px){.container{max-width:1720px}}.container{margin-left:auto;margin-right:auto}.popup{--tw-bg-opacity:0.85;--tw-shadow:0 10px 25px -5px rgba(0,0,0,.2),0 4px 10px -6px rgba(0,0,0,.15);--tw-shadow-colored:0 10px 25px -5px var(--tw-shadow-color),0 4px 10px -6px var(--tw-shadow-color);--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);--tw-ring-color:rgba(var(--color-inverse-rgb),var(--tw-ring-opacity));--tw-ring-opacity:0.05;--tw-backdrop-blur:blur(16px);-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);background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));border-radius:var(--radius);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.table-cell{display:table-cell}.table-row{display:table-row}.hidden{display:none!important}.pull-right{float:right}.pull-left{float:left}.clearfix:after{clear:both;content:"";display:block}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.object-fill{-o-object-fit:fill;object-fit:fill}.object-none{-o-object-fit:none;object-fit:none}.object-scale-down{-o-object-fit:scale-down;object-fit:scale-down}.object-bottom{-o-object-position:bottom;object-position:bottom}.object-center{-o-object-position:center;object-position:center}.object-left{-o-object-position:left;object-position:left}.object-left-bottom{-o-object-position:left bottom;object-position:left bottom}.object-left-top{-o-object-position:left top;object-position:left top}.object-right{-o-object-position:right;object-position:right}.object-right-bottom{-o-object-position:right bottom;object-position:right bottom}.object-right-top{-o-object-position:right top;object-position:right top}.object-top{-o-object-position:top;object-position:top}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-clip{overflow:clip}.overflow-visible{overflow:visible}.overflow-scroll{overflow:scroll}.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-x-clip{overflow-x:clip}.overflow-y-clip{overflow-y:clip}.overflow-x-visible{overflow-x:visible}.overflow-y-visible{overflow-y:visible}.overflow-x-scroll{overflow-x:scroll}.overflow-y-scroll{overflow-y:scroll}.overflow-overlay{overflow:overlay}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-auto{inset:auto}.inset-x-0{left:0;right:0}.inset-y-0{bottom:0;top:0}.top-0{top:0}.right-0{right:0}.bottom-0{bottom:0}.left-0{left:0}.top-full{top:100%}.right-full{right:100%}.bottom-full{bottom:100%}.left-full{left:100%}.top-auto{top:auto}.right-auto{right:auto}.bottom-auto{bottom:auto}.left-auto{left:auto}.top-px{top:1px}.right-px{right:1px}.bottom-px{bottom:1px}.left-px{left:1px}.top-0\.5{top:.125rem}.right-0\.5{right:.125rem}.bottom-0\.5{bottom:.125rem}.left-0\.5{left:.125rem}.top-1{top:.25rem}.right-1{right:.25rem}.bottom-1{bottom:.25rem}.left-1{left:.25rem}.top-1\.5{top:.375rem}.right-1\.5{right:.375rem}.bottom-1\.5{bottom:.375rem}.left-1\.5{left:.375rem}.top-2{top:.5rem}.right-2{right:.5rem}.bottom-2{bottom:.5rem}.left-2{left:.5rem}.top-2\.5{top:.625rem}.right-2\.5{right:.625rem}.bottom-2\.5{bottom:.625rem}.left-2\.5{left:.625rem}.top-3{top:.75rem}.right-3{right:.75rem}.bottom-3{bottom:.75rem}.left-3{left:.75rem}.top-3\.5{top:.875rem}.right-3\.5{right:.875rem}.bottom-3\.5{bottom:.875rem}.left-3\.5{left:.875rem}.top-4{top:1rem}.right-4{right:1rem}.bottom-4{bottom:1rem}.left-4{left:1rem}.top-5{top:1.25rem}.right-5{right:1.25rem}.bottom-5{bottom:1.25rem}.left-5{left:1.25rem}.top-6{top:1.5rem}.right-6{right:1.5rem}.bottom-6{bottom:1.5rem}.left-6{left:1.5rem}.top-7{top:1.75rem}.right-7{right:1.75rem}.bottom-7{bottom:1.75rem}.left-7{left:1.75rem}.top-8{top:2rem}.right-8{right:2rem}.bottom-8{bottom:2rem}.left-8{left:2rem}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-0{z-index:0}.z-1{z-index:1}.z-5{z-index:5}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-auto{z-index:auto}.z-base{z-index:1100}.z-above{z-index:50}.z-below{z-index:-50}.z-dropdown{z-index:1200}.z-sticky{z-index:1300}.z-fixed{z-index:1400}.z-modal{z-index:1500}.z-overlay{z-index:1600}.z-popover{z-index:1700}.z-tooltip{z-index:1800}.z-messager{z-index:1900}.m-0{margin:0}.m-auto{margin:auto}.m-px{margin:1px}.m-0\.5{margin:.125rem}.m-1{margin:.25rem}.m-1\.5{margin:.375rem}.m-2{margin:.5rem}.m-2\.5{margin:.625rem}.m-3{margin:.75rem}.m-3\.5{margin:.875rem}.m-4{margin:1rem}.m-5{margin:1.25rem}.m-6{margin:1.5rem}.m-7{margin:1.75rem}.m-8{margin:2rem}.m-9{margin:2.25rem}.m-10{margin:2.5rem}.mx-0{margin-left:0;margin-right:0}.my-0{margin-bottom:0}.mt-0,.my-0{margin-top:0}.mr-0{margin-right:0}.mb-0{margin-bottom:0}.ml-0{margin-left:0}.mx-auto{margin-left:auto;margin-right:auto}.my-auto{margin-bottom:auto}.mt-auto,.my-auto{margin-top:auto}.mr-auto{margin-right:auto}.mb-auto{margin-bottom:auto}.ml-auto{margin-left:auto}.mx-px{margin-left:1px;margin-right:1px}.my-px{margin-bottom:1px}.mt-px,.my-px{margin-top:1px}.mr-px{margin-right:1px}.mb-px{margin-bottom:1px}.ml-px{margin-left:1px}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.my-0\.5{margin-bottom:.125rem}.mt-0\.5,.my-0\.5{margin-top:.125rem}.mr-0\.5{margin-right:.125rem}.mb-0\.5{margin-bottom:.125rem}.ml-0\.5{margin-left:.125rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.my-1{margin-bottom:.25rem}.mt-1,.my-1{margin-top:.25rem}.mr-1{margin-right:.25rem}.mb-1{margin-bottom:.25rem}.ml-1{margin-left:.25rem}.mx-1\.5{margin-left:.375rem;margin-right:.375rem}.my-1\.5{margin-bottom:.375rem}.mt-1\.5,.my-1\.5{margin-top:.375rem}.mr-1\.5{margin-right:.375rem}.mb-1\.5{margin-bottom:.375rem}.ml-1\.5{margin-left:.375rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-2{margin-bottom:.5rem}.mt-2,.my-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.mx-2\.5{margin-left:.625rem;margin-right:.625rem}.my-2\.5{margin-bottom:.625rem}.mt-2\.5,.my-2\.5{margin-top:.625rem}.mr-2\.5{margin-right:.625rem}.mb-2\.5{margin-bottom:.625rem}.ml-2\.5{margin-left:.625rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.my-3{margin-bottom:.75rem}.mt-3,.my-3{margin-top:.75rem}.mr-3{margin-right:.75rem}.mb-3{margin-bottom:.75rem}.ml-3{margin-left:.75rem}.mx-3\.5{margin-left:.875rem;margin-right:.875rem}.my-3\.5{margin-bottom:.875rem}.mt-3\.5,.my-3\.5{margin-top:.875rem}.mr-3\.5{margin-right:.875rem}.mb-3\.5{margin-bottom:.875rem}.ml-3\.5{margin-left:.875rem}.mx-4{margin-left:1rem;margin-right:1rem}.my-4{margin-bottom:1rem}.mt-4,.my-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.ml-4{margin-left:1rem}.mx-5{margin-left:1.25rem;margin-right:1.25rem}.my-5{margin-bottom:1.25rem}.mt-5,.my-5{margin-top:1.25rem}.mr-5{margin-right:1.25rem}.mb-5{margin-bottom:1.25rem}.ml-5{margin-left:1.25rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.my-6{margin-bottom:1.5rem}.mt-6,.my-6{margin-top:1.5rem}.mr-6{margin-right:1.5rem}.mb-6{margin-bottom:1.5rem}.ml-6{margin-left:1.5rem}.mx-7{margin-left:1.75rem;margin-right:1.75rem}.my-7{margin-bottom:1.75rem}.mt-7,.my-7{margin-top:1.75rem}.mr-7{margin-right:1.75rem}.mb-7{margin-bottom:1.75rem}.ml-7{margin-left:1.75rem}.mx-8{margin-left:2rem;margin-right:2rem}.my-8{margin-bottom:2rem}.mt-8,.my-8{margin-top:2rem}.mr-8{margin-right:2rem}.mb-8{margin-bottom:2rem}.ml-8{margin-left:2rem}.mx-9{margin-left:2.25rem;margin-right:2.25rem}.my-9{margin-bottom:2.25rem}.mt-9,.my-9{margin-top:2.25rem}.mr-9{margin-right:2.25rem}.mb-9{margin-bottom:2.25rem}.ml-9{margin-left:2.25rem}.mx-10{margin-left:2.5rem;margin-right:2.5rem}.my-10{margin-bottom:2.5rem}.mt-10,.my-10{margin-top:2.5rem}.mr-10{margin-right:2.5rem}.mb-10{margin-bottom:2.5rem}.ml-10{margin-left:2.5rem}.p-0{padding:0}.p-px{padding:1px}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-3\.5{padding:.875rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-7{padding:1.75rem}.p-8{padding:2rem}.p-9{padding:2.25rem}.p-10{padding:2.5rem}.px-0{padding-left:0;padding-right:0}.py-0{padding-bottom:0}.pt-0,.py-0{padding-top:0}.pr-0{padding-right:0}.pb-0{padding-bottom:0}.pl-0{padding-left:0}.px-px{padding-left:1px;padding-right:1px}.py-px{padding-bottom:1px}.pt-px,.py-px{padding-top:1px}.pr-px{padding-right:1px}.pb-px{padding-bottom:1px}.pl-px{padding-left:1px}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.py-0\.5{padding-bottom:.125rem}.pt-0\.5,.py-0\.5{padding-top:.125rem}.pr-0\.5{padding-right:.125rem}.pb-0\.5{padding-bottom:.125rem}.pl-0\.5{padding-left:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-1{padding-bottom:.25rem}.pt-1,.py-1{padding-top:.25rem}.pr-1{padding-right:.25rem}.pb-1{padding-bottom:.25rem}.pl-1{padding-left:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.py-1\.5{padding-bottom:.375rem}.pt-1\.5,.py-1\.5{padding-top:.375rem}.pr-1\.5{padding-right:.375rem}.pb-1\.5{padding-bottom:.375rem}.pl-1\.5{padding-left:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-2{padding-bottom:.5rem}.pt-2,.py-2{padding-top:.5rem}.pr-2{padding-right:.5rem}.pb-2{padding-bottom:.5rem}.pl-2{padding-left:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.py-2\.5{padding-bottom:.625rem}.pt-2\.5,.py-2\.5{padding-top:.625rem}.pr-2\.5{padding-right:.625rem}.pb-2\.5{padding-bottom:.625rem}.pl-2\.5{padding-left:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-3{padding-bottom:.75rem}.pt-3,.py-3{padding-top:.75rem}.pr-3{padding-right:.75rem}.pb-3{padding-bottom:.75rem}.pl-3{padding-left:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.py-3\.5{padding-bottom:.875rem}.pt-3\.5,.py-3\.5{padding-top:.875rem}.pr-3\.5{padding-right:.875rem}.pb-3\.5{padding-bottom:.875rem}.pl-3\.5{padding-left:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.py-4{padding-bottom:1rem}.pt-4,.py-4{padding-top:1rem}.pr-4{padding-right:1rem}.pb-4{padding-bottom:1rem}.pl-4{padding-left:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-5{padding-bottom:1.25rem}.pt-5,.py-5{padding-top:1.25rem}.pr-5{padding-right:1.25rem}.pb-5{padding-bottom:1.25rem}.pl-5{padding-left:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-6{padding-bottom:1.5rem}.pt-6,.py-6{padding-top:1.5rem}.pr-6{padding-right:1.5rem}.pb-6{padding-bottom:1.5rem}.pl-6{padding-left:1.5rem}.px-7{padding-left:1.75rem;padding-right:1.75rem}.py-7{padding-bottom:1.75rem}.pt-7,.py-7{padding-top:1.75rem}.pr-7{padding-right:1.75rem}.pb-7{padding-bottom:1.75rem}.pl-7{padding-left:1.75rem}.px-8{padding-left:2rem;padding-right:2rem}.py-8{padding-bottom:2rem}.pt-8,.py-8{padding-top:2rem}.pr-8{padding-right:2rem}.pb-8{padding-bottom:2rem}.pl-8{padding-left:2rem}.px-9{padding-left:2.25rem;padding-right:2.25rem}.py-9{padding-bottom:2.25rem}.pt-9,.py-9{padding-top:2.25rem}.pr-9{padding-right:2.25rem}.pb-9{padding-bottom:2.25rem}.pl-9{padding-left:2.25rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.py-10{padding-bottom:2.5rem}.pt-10,.py-10{padding-top:2.5rem}.pr-10{padding-right:2.5rem}.pb-10{padding-bottom:2.5rem}.pl-10{padding-left:2.5rem}.space-x-0>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(0px*(1 - var(--tw-space-x-reverse)));margin-right:calc(0px*var(--tw-space-x-reverse))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(0px*var(--tw-space-y-reverse));margin-top:calc(0px*(1 - var(--tw-space-y-reverse)))}.space-x-0\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.125rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.125rem*var(--tw-space-x-reverse))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.125rem*var(--tw-space-y-reverse));margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)))}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.25rem*var(--tw-space-x-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.space-x-1\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.375rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.375rem*var(--tw-space-x-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.375rem*var(--tw-space-y-reverse));margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.space-x-2\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.625rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.625rem*var(--tw-space-x-reverse))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.625rem*var(--tw-space-y-reverse));margin-top:calc(.625rem*(1 - var(--tw-space-y-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.75rem*var(--tw-space-x-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.space-x-3\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.875rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.875rem*var(--tw-space-x-reverse))}.space-y-3\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.875rem*var(--tw-space-y-reverse));margin-top:calc(.875rem*(1 - var(--tw-space-y-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1.25rem*var(--tw-space-x-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.25rem*var(--tw-space-y-reverse));margin-top:calc(1.25rem*(1 - var(--tw-space-y-reverse)))}.space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1.5rem*var(--tw-space-x-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.space-x-7>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1.75rem*var(--tw-space-x-reverse))}.space-y-7>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.75rem*var(--tw-space-y-reverse));margin-top:calc(1.75rem*(1 - var(--tw-space-y-reverse)))}.space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(2rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(2rem*var(--tw-space-x-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(2rem*var(--tw-space-y-reverse));margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)))}.space-x-9>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(2.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(2.25rem*var(--tw-space-x-reverse))}.space-y-9>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(2.25rem*var(--tw-space-y-reverse));margin-top:calc(2.25rem*(1 - var(--tw-space-y-reverse)))}.space-x-10>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(2.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(2.5rem*var(--tw-space-x-reverse))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(2.5rem*var(--tw-space-y-reverse));margin-top:calc(2.5rem*(1 - var(--tw-space-y-reverse)))}.space-x-px>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1px*(1 - var(--tw-space-x-reverse)));margin-right:calc(1px*var(--tw-space-x-reverse))}.space-y-px>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1px*var(--tw-space-y-reverse));margin-top:calc(1px*(1 - var(--tw-space-y-reverse)))}.w-0{width:0}.w-px{width:1px}.w-0\.5{width:.125rem}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-32{width:8rem}.w-36{width:9rem}.w-40{width:10rem}.w-44{width:11rem}.w-48{width:12rem}.w-52{width:13rem}.w-56{width:14rem}.w-60{width:15rem}.w-64{width:16rem}.w-72{width:18rem}.w-80{width:20rem}.w-96{width:24rem}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-2\/3{width:66.666667%}.w-1\/4{width:25%}.w-2\/4{width:50%}.w-3\/4{width:75%}.w-1\/5{width:20%}.w-2\/5{width:40%}.w-3\/5{width:60%}.w-4\/5{width:80%}.w-1\/6{width:16.666667%}.w-2\/6{width:33.333333%}.w-3\/6{width:50%}.w-4\/6{width:66.666667%}.w-5\/6{width:83.333333%}.w-auto{width:auto}.w-full{width:100%}.w-screen{width:100vw}.w-min{width:-moz-min-content;width:min-content}.w-max{width:-moz-max-content;width:max-content}.w-fit{width:-moz-fit-content;width:fit-content}.min-w-0{min-width:0}.min-w-full{min-width:100%}.min-w-min{min-width:-moz-min-content;min-width:min-content}.min-w-max{min-width:-moz-max-content;min-width:max-content}.min-w-fit{min-width:-moz-fit-content;min-width:fit-content}.max-w-0{max-width:0}.max-w-none{max-width:none}.max-w-xs{max-width:20rem}.max-w-sm{max-width:24rem}.max-w-md{max-width:28rem}.max-w-lg{max-width:32rem}.max-w-xl{max-width:36rem}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-full{max-width:100%}.max-w-min{max-width:-moz-min-content;max-width:min-content}.max-w-max{max-width:-moz-max-content;max-width:max-content}.max-w-fit{max-width:-moz-fit-content;max-width:fit-content}.h-0{height:0}.h-px{height:1px}.h-0\.5{height:.125rem}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-20{height:5rem}.h-24{height:6rem}.h-28{height:7rem}.h-32{height:8rem}.h-36{height:9rem}.h-40{height:10rem}.h-44{height:11rem}.h-48{height:12rem}.h-52{height:13rem}.h-56{height:14rem}.h-60{height:15rem}.h-64{height:16rem}.h-72{height:18rem}.h-80{height:20rem}.h-96{height:24rem}.h-1\/2{height:50%}.h-1\/3{height:33.333333%}.h-2\/3{height:66.666667%}.h-1\/4{height:25%}.h-2\/4{height:50%}.h-3\/4{height:75%}.h-1\/5{height:20%}.h-2\/5{height:40%}.h-3\/5{height:60%}.h-4\/5{height:80%}.h-1\/6{height:16.666667%}.h-2\/6{height:33.333333%}.h-3\/6{height:50%}.h-4\/6{height:66.666667%}.h-5\/6{height:83.333333%}.h-auto{height:auto}.h-full{height:100%}.h-screen{height:100vh}.h-min{height:-moz-min-content;height:min-content}.h-max{height:-moz-max-content;height:max-content}.h-fit{height:-moz-fit-content;height:fit-content}.min-h-0{min-height:0}.min-h-full{min-height:100%}.min-h-min{min-height:-moz-min-content;min-height:min-content}.min-h-max{min-height:-moz-max-content;min-height:max-content}.min-h-fit{min-height:-moz-fit-content;min-height:fit-content}.max-h-0{max-height:0}.max-h-px{max-height:1px}.max-h-none{max-height:none}.max-h-full{max-height:100%}.max-h-min{max-height:-moz-min-content;max-height:min-content}.max-h-screen{max-height:100vh}.max-h-max{max-height:-moz-max-content;max-height:max-content}.max-h-fit{max-height:-moz-fit-content;max-height:fit-content}.canvas,.surface,.surface-light,.surface-strong{--tw-text-opacity:1;color:rgba(var(--color-fore-rgb),var(--tw-text-opacity))}.canvas{--tw-bg-opacity:1;background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity))}.surface-light{--tw-bg-opacity:1;--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-surface-light-rgb),var(--tw-ring-opacity));background-color:rgba(var(--color-surface-light-rgb),var(--tw-bg-opacity))}.surface{--tw-bg-opacity:1;--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-surface-rgb),var(--tw-ring-opacity));background-color:rgba(var(--color-surface-rgb),var(--tw-bg-opacity))}.surface-strong{--tw-bg-opacity:1;--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-surface-strong-rgb),var(--tw-ring-opacity));background-color:rgba(var(--color-surface-strong-rgb),var(--tw-bg-opacity))}.inverse{background-color:rgba(var(--color-inverse-rgb),var(--tw-bg-opacity));color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity))}.inverse,.white{--tw-bg-opacity:1;--tw-text-opacity:1}.white{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-white-rgb),var(--tw-ring-opacity));background-color:rgba(var(--color-white-rgb),var(--tw-bg-opacity));color:rgba(var(--color-fore-in-light-rgb),var(--tw-text-opacity))}.black{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-black-rgb),var(--tw-ring-opacity));background-color:rgba(var(--color-black-rgb),var(--tw-bg-opacity));color:rgba(var(--color-fore-in-dark-rgb),var(--tw-text-opacity))}.transparent{--tw-ring-color:transparent;background-color:transparent}.skin{--skin-bg:var(--skin-color);--skin-ring:var(--skin-color);--skin-border:var(--skin-color);--skin-hover-text:var(--skin-text);--skin-hover-bg:var(--skin-bg);--tw-ring-color:var(--skin-ring);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--color-link-hover:var(--skin-text);background-color:var(--skin-bg);border-color:var(--skin-border);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:var(--skin-text)}.skin:hover{background-color:var(--skin-hover-bg);color:var(--skin-hover-text)}.danger,.darken,.darker,.darkest,.gray,.gray-100,.gray-200,.gray-300,.gray-400,.gray-50,.gray-500,.gray-600,.gray-700,.gray-800,.gray-900,.gray-950,.important,.lighten,.lighter,.lightest,.primary,.secondary,.special,.success,.warning{--skin-bg:var(--skin-color);--skin-ring:var(--skin-color);--skin-border:var(--skin-color);--skin-hover-text:var(--skin-text);--skin-hover-bg:var(--skin-bg);--tw-ring-color:var(--skin-ring);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--color-link-hover:var(--skin-text);background-color:var(--skin-bg);border-color:var(--skin-border);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:var(--skin-text)}.danger:hover,.darken:hover,.darker:hover,.darkest:hover,.gray-100:hover,.gray-200:hover,.gray-300:hover,.gray-400:hover,.gray-500:hover,.gray-50:hover,.gray-600:hover,.gray-700:hover,.gray-800:hover,.gray-900:hover,.gray-950:hover,.gray:hover,.important:hover,.lighten:hover,.lighter:hover,.lightest:hover,.primary:hover,.secondary:hover,.special:hover,.success:hover,.warning:hover{background-color:var(--skin-hover-bg);color:var(--skin-hover-text)}.danger,.darken,.darker,.darkest,.gray,.gray-100,.gray-200,.gray-300,.gray-400,.gray-50,.gray-500,.gray-600,.gray-700,.gray-800,.gray-900,.gray-950,.important,.lighten,.lighter,.lightest,.primary,.secondary,.special,.success,.warning{--skin-text:rgba(var(--color-fore-in-dark-rgb),var(--tw-text-opacity));--skin-color:rgba(var(--skin-solid-rgb),1);--state-ring-color:var(--skin-color);--state-active-color:rgba(0,0,0,.1);--state-pressed-color:rgba(0,0,0,.1);--state-color:hsla(0,0%,100%,.1);--state-focus-color:rgba(0,0,0,.1)}.primary{--skin-solid-rgb:var(--color-primary-500-rgb)}.secondary{--skin-solid-rgb:var(--color-secondary-500-rgb)}.success{--skin-solid-rgb:var(--color-success-500-rgb)}.warning{--skin-solid-rgb:var(--color-warning-500-rgb)}.danger{--skin-solid-rgb:var(--color-danger-500-rgb)}.important{--skin-solid-rgb:var(--color-important-500-rgb)}.special{--skin-solid-rgb:var(--color-special-500-rgb)}.gray-50{--skin-bg:rgba(var(--color-gray-50-rgb),var(--tw-bg-opacity));--skin-text:rgba(var(--color-fore),var(--tw-text-opacity))}.gray-100{--skin-solid-rgb:var(--color-gray-100-rgb);--skin-text:rgba(var(--color-fore),var(--tw-text-opacity))}.gray-200,.lightest{--skin-solid-rgb:var(--color-gray-200-rgb);--skin-text:rgba(var(--color-fore),var(--tw-text-opacity))}.gray-300,.lighter{--skin-solid-rgb:var(--color-gray-300-rgb);--skin-text:rgba(var(--color-fore),var(--tw-text-opacity))}.gray-400,.lighten{--skin-solid-rgb:var(--color-gray-400-rgb)}.gray,.gray-500{--skin-solid-rgb:var(--color-gray-500-rgb)}.darken,.gray-600{--skin-solid-rgb:var(--color-gray-600-rgb)}.darker,.gray-700{--skin-solid-rgb:var(--color-gray-700-rgb)}.darkest,.gray-800{--skin-solid-rgb:var(--color-gray-800-rgb)}.gray-900{--skin-solid-rgb:var(--color-gray-900-rgb)}.gray-950{--skin-solid-rgb:var(--color-gray-950-rgb)}.danger-pale,.gray-100-pale,.gray-200-pale,.gray-300-pale,.gray-400-pale,.gray-50-pale,.gray-500-pale,.gray-600-pale,.gray-700-pale,.gray-800-pale,.gray-900-pale,.gray-950-pale,.gray-pale,.important-pale,.pale,.primary-pale,.secondary-pale,.special-pale,.success-pale,.warning-pale{--skin-bg:var(--skin-color);--skin-ring:var(--skin-color);--skin-border:var(--skin-color);--skin-hover-text:var(--skin-text);--skin-hover-bg:var(--skin-bg);--tw-ring-color:var(--skin-ring);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--color-link-hover:var(--skin-text);background-color:var(--skin-bg);border-color:var(--skin-border);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:var(--skin-text)}.danger-pale:hover,.gray-100-pale:hover,.gray-200-pale:hover,.gray-300-pale:hover,.gray-400-pale:hover,.gray-50-pale:hover,.gray-500-pale:hover,.gray-600-pale:hover,.gray-700-pale:hover,.gray-800-pale:hover,.gray-900-pale:hover,.gray-950-pale:hover,.gray-pale:hover,.important-pale:hover,.pale:hover,.primary-pale:hover,.secondary-pale:hover,.special-pale:hover,.success-pale:hover,.warning-pale:hover{background-color:var(--skin-hover-bg);color:var(--skin-hover-text)}.danger-pale,.gray-100-pale,.gray-200-pale,.gray-300-pale,.gray-400-pale,.gray-50-pale,.gray-500-pale,.gray-600-pale,.gray-700-pale,.gray-800-pale,.gray-900-pale,.gray-950-pale,.gray-pale,.important-pale,.pale,.primary-pale,.secondary-pale,.special-pale,.success-pale,.warning-pale{--skin-color:rgba(var(--skin-pale-rgb),.1);--skin-text:rgba(var(--skin-pale-rgb),1);--state-color:rgba(var(--skin-pale-rgb),.1)}.pale{--skin-pale-rgb:var(--color-gray-500-rgb)}.primary-pale{--skin-pale-rgb:var(--color-primary-500-rgb)}.secondary-pale{--skin-pale-rgb:var(--color-secondary-500-rgb)}.success-pale{--skin-pale-rgb:var(--color-success-500-rgb)}.warning-pale{--skin-pale-rgb:var(--color-warning-500-rgb)}.danger-pale{--skin-pale-rgb:var(--color-danger-500-rgb)}.important-pale{--skin-pale-rgb:var(--color-important-500-rgb)}.special-pale{--skin-pale-rgb:var(--color-special-500-rgb)}.gray-50-pale{--skin-pale-rgb:var(--color-gray-50-rgb);--skin-text:var(--color-gray-400)}.gray-100-pale{--skin-pale-rgb:var(--color-gray-100-rgb);--skin-text:var(--color-gray-400)}.gray-200-pale{--skin-pale-rgb:var(--color-gray-200-rgb);--skin-text:var(--color-gray-400)}.gray-300-pale{--skin-pale-rgb:var(--color-gray-300-rgb);--skin-text:var(--color-gray-500)}.gray-400-pale{--skin-pale-rgb:var(--color-gray-400-rgb);--skin-text:var(--color-gray-500)}.gray-500-pale,.gray-pale{--skin-pale-rgb:var(--color-gray-500-rgb)}.gray-600-pale{--skin-pale-rgb:var(--color-gray-600-rgb)}.gray-700-pale{--skin-pale-rgb:var(--color-gray-700-rgb)}.gray-800-pale{--skin-pale-rgb:var(--color-gray-800-rgb)}.gray-900-pale{--skin-pale-rgb:var(--color-gray-900-rgb)}.gray-950-pale{--skin-pale-rgb:var(--color-gray-950-rgb)}.danger-outline,.dark-outline,.gray-300-outline,.gray-400-outline,.gray-600-outline,.gray-outline,.important-outline,.light-outline,.outline,.primary-outline,.secondary-outline,.special-outline,.success-outline,.warning-outline{--skin-bg:var(--skin-color);--skin-ring:var(--skin-color);--skin-border:var(--skin-color);--skin-hover-text:var(--skin-text);--skin-hover-bg:var(--skin-bg);--tw-ring-color:var(--skin-ring);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--color-link-hover:var(--skin-text);background-color:var(--skin-bg);border-color:var(--skin-border);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:var(--skin-text)}.danger-outline:hover,.dark-outline:hover,.gray-300-outline:hover,.gray-400-outline:hover,.gray-600-outline:hover,.gray-outline:hover,.important-outline:hover,.light-outline:hover,.outline:hover,.primary-outline:hover,.secondary-outline:hover,.special-outline:hover,.success-outline:hover,.warning-outline:hover{background-color:var(--skin-hover-bg);color:var(--skin-hover-text)}.danger-outline,.dark-outline,.gray-300-outline,.gray-400-outline,.gray-600-outline,.gray-outline,.important-outline,.light-outline,.outline,.primary-outline,.secondary-outline,.special-outline,.success-outline,.warning-outline{--skin-text:var(--skin-color,inherit);--skin-bg:transparent;--skin-color:rgba(var(--skin-outline-rgb),1);--state-color:rgba(var(--skin-outline-rgb),.1)}.outline{--skin-outline-rgb:var(--color-fore-rgb)}.primary-outline{--skin-outline-rgb:var(--color-primary-500-rgb)}.secondary-outline{--skin-outline-rgb:var(--color-secondary-500-rgb)}.success-outline{--skin-outline-rgb:var(--color-success-500-rgb)}.warning-outline{--skin-outline-rgb:var(--color-warning-500-rgb)}.danger-outline{--skin-outline-rgb:var(--color-danger-500-rgb)}.important-outline{--skin-outline-rgb:var(--color-important-500-rgb)}.special-outline{--skin-outline-rgb:var(--color-special-500-rgb)}.gray-300-outline{--skin-text:var(--color-gray-500);--skin-outline-rgb:var(--color-gray-300-rgb)}.gray-400-outline{--skin-text:var(--color-gray-500);--skin-outline-rgb:var(--color-gray-400-rgb)}.gray-outline{--skin-outline-rgb:var(--color-gray-500-rgb)}.gray-600-outline{--skin-outline-rgb:var(--color-gray-600-rgb)}.dark-outline{--skin-outline-rgb:var(--color-inverse-rgb)}.light-outline{--skin-outline-rgb:var(--color-canvas-rgb)}.danger-ghost,.ghost,.important-ghost,.primary-ghost,.secondary-ghost,.special-ghost,.success-ghost,.warning-ghost{--skin-bg:var(--skin-color);--skin-ring:var(--skin-color);--skin-border:var(--skin-color);--skin-hover-text:var(--skin-text);--skin-hover-bg:var(--skin-bg);--tw-ring-color:var(--skin-ring);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--color-link-hover:var(--skin-text);background-color:var(--skin-bg);border-color:var(--skin-border);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:var(--skin-text)}.danger-ghost:hover,.ghost:hover,.important-ghost:hover,.primary-ghost:hover,.secondary-ghost:hover,.special-ghost:hover,.success-ghost:hover,.warning-ghost:hover{background-color:var(--skin-hover-bg);color:var(--skin-hover-text)}.danger-ghost,.ghost,.important-ghost,.primary-ghost,.secondary-ghost,.special-ghost,.success-ghost,.warning-ghost{--tw-ring-opacity:0;--tw-bg-opacity:0;--skin-text:var(--skin-color,inherit);--skin-bg:transparent;--skin-ring:transparent;--skin-color:rgba(var(--skin-ghost-rgb),1);--state-color:rgba(var(--skin-ghost-rgb),.1)}.ghost{--skin-ghost-rgb:var(--color-fore-rgb);--skin-text:inherit}.primary-ghost{--skin-ghost-rgb:var(--color-primary-500-rgb)}.secondary-ghost{--skin-ghost-rgb:var(--color-secondary-500-rgb)}.success-ghost{--skin-ghost-rgb:var(--color-success-500-rgb)}.warning-ghost{--skin-ghost-rgb:var(--color-warning-500-rgb)}.danger-ghost{--skin-ghost-rgb:var(--color-danger-500-rgb)}.important-ghost{--skin-ghost-rgb:var(--color-important-500-rgb)}.special-ghost{--skin-ghost-rgb:var(--color-special-500-rgb)}.font-sans{font-family:-apple-system,Noto Sans,Helvetica Neue,Helvetica,Nimbus Sans L,Arial,Liberation Sans,PingFang SC,Hiragino Sans GB,Noto Sans CJK SC,Source Han Sans SC,Source Han Sans CN,Microsoft YaHei,Wenquanyi Micro Hei,WenQuanYi Zen Hei,ST Heiti,SimHei,WenQuanYi Zen Hei Sharp,sans-serif}.font-serif{font-family:Nimbus Roman No9 L,Songti SC,Noto Serif CJK SC,Source Han Serif SC,Source Han Serif CN,STSong,AR PL New Sung,AR PL SungtiL GB,NSimSun,SimSun,TW-Sung,WenQuanYi Bitmap Song,AR PL UMing CN,AR PL UMing HK,AR PL UMing TW,AR PL UMing TW MBE,PMingLiU,MingLiU,serif}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-root{font-size:16px}.text-sm{font-size:.75rem;line-height:1rem}.text-base{font-size:.8125rem;line-height:1.25rem}.text-md{font-size:.875rem;line-height:1.3rem}.text-lg{font-size:1rem;line-height:1.5rem}.text-xl{font-size:1.125rem;line-height:1.75rem}.text-2xl{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}.font-thin{font-weight:100}.font-light{font-weight:300}.font-normal{font-weight:400}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.font-black{font-weight:900}.leading-3{line-height:.75rem}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-7{line-height:1.75rem}.leading-8{line-height:2rem}.leading-9{line-height:2.25rem}.leading-10{line-height:2.5rem}.leading-none{line-height:1}.leading-tight{line-height:1.25}.leading-snug{line-height:1.375}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.leading-loose{line-height:2}.line-clamp-1{-webkit-line-clamp:1}.line-clamp-1,.line-clamp-2{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2}.line-clamp-3{-webkit-line-clamp:3}.line-clamp-3,.line-clamp-4{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-4{-webkit-line-clamp:4}.line-clamp-5{-webkit-line-clamp:5}.line-clamp-5,.line-clamp-6{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-6{-webkit-line-clamp:6}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.align-middle{vertical-align:middle}.align-top{vertical-align:top}.align-bottom{vertical-align:bottom}.align-sub{vertical-align:sub}.align-super{vertical-align:super}.text-primary{--tw-text-opacity:1;color:rgba(var(--color-primary-500-rgb),var(--tw-text-opacity))}.text-secondary{--tw-text-opacity:1;color:rgba(var(--color-secondary-500-rgb),var(--tw-text-opacity))}.text-success{--tw-text-opacity:1;color:rgba(var(--color-success-500-rgb),var(--tw-text-opacity))}.text-warning{--tw-text-opacity:1;color:rgba(var(--color-warning-500-rgb),var(--tw-text-opacity))}.text-danger{--tw-text-opacity:1;color:rgba(var(--color-danger-500-rgb),var(--tw-text-opacity))}.text-important{--tw-text-opacity:1;color:rgba(var(--color-important-500-rgb),var(--tw-text-opacity))}.text-special{--tw-text-opacity:1;color:rgba(var(--color-special-500-rgb),var(--tw-text-opacity))}.text-primary-50{--tw-text-opacity:1;color:rgba(var(--color-primary-50-rgb),var(--tw-text-opacity))}.text-primary-100{--tw-text-opacity:1;color:rgba(var(--color-primary-100-rgb),var(--tw-text-opacity))}.text-primary-200{--tw-text-opacity:1;color:rgba(var(--color-primary-200-rgb),var(--tw-text-opacity))}.text-primary-300{--tw-text-opacity:1;color:rgba(var(--color-primary-300-rgb),var(--tw-text-opacity))}.text-primary-400{--tw-text-opacity:1;color:rgba(var(--color-primary-400-rgb),var(--tw-text-opacity))}.text-primary-500{--tw-text-opacity:1;color:rgba(var(--color-primary-500-rgb),var(--tw-text-opacity))}.text-primary-600{--tw-text-opacity:1;color:rgba(var(--color-primary-600-rgb),var(--tw-text-opacity))}.text-primary-700{--tw-text-opacity:1;color:rgba(var(--color-primary-700-rgb),var(--tw-text-opacity))}.text-primary-800{--tw-text-opacity:1;color:rgba(var(--color-primary-800-rgb),var(--tw-text-opacity))}.text-primary-900{--tw-text-opacity:1;color:rgba(var(--color-primary-900-rgb),var(--tw-text-opacity))}.text-primary-950{--tw-text-opacity:1;color:rgba(var(--color-primary-950-rgb),var(--tw-text-opacity))}.text-secondary-50{--tw-text-opacity:1;color:rgba(var(--color-secondary-50-rgb),var(--tw-text-opacity))}.text-secondary-100{--tw-text-opacity:1;color:rgba(var(--color-secondary-100-rgb),var(--tw-text-opacity))}.text-secondary-200{--tw-text-opacity:1;color:rgba(var(--color-secondary-200-rgb),var(--tw-text-opacity))}.text-secondary-300{--tw-text-opacity:1;color:rgba(var(--color-secondary-300-rgb),var(--tw-text-opacity))}.text-secondary-400{--tw-text-opacity:1;color:rgba(var(--color-secondary-400-rgb),var(--tw-text-opacity))}.text-secondary-500{--tw-text-opacity:1;color:rgba(var(--color-secondary-500-rgb),var(--tw-text-opacity))}.text-secondary-600{--tw-text-opacity:1;color:rgba(var(--color-secondary-600-rgb),var(--tw-text-opacity))}.text-secondary-700{--tw-text-opacity:1;color:rgba(var(--color-secondary-700-rgb),var(--tw-text-opacity))}.text-secondary-800{--tw-text-opacity:1;color:rgba(var(--color-secondary-800-rgb),var(--tw-text-opacity))}.text-secondary-900{--tw-text-opacity:1;color:rgba(var(--color-secondary-900-rgb),var(--tw-text-opacity))}.text-secondary-950{--tw-text-opacity:1;color:rgba(var(--color-secondary-950-rgb),var(--tw-text-opacity))}.text-gray-50{--tw-text-opacity:1;color:rgba(var(--color-gray-50-rgb),var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity:1;color:rgba(var(--color-gray-100-rgb),var(--tw-text-opacity))}.text-gray-200,.text-lightest{--tw-text-opacity:1;color:rgba(var(--color-gray-200-rgb),var(--tw-text-opacity))}.text-gray-300,.text-lighter{--tw-text-opacity:1;color:rgba(var(--color-gray-300-rgb),var(--tw-text-opacity))}.text-gray-400,.text-lighten{--tw-text-opacity:1;color:rgba(var(--color-gray-400-rgb),var(--tw-text-opacity))}.text-gray,.text-gray-500{--tw-text-opacity:1;color:rgba(var(--color-gray-500-rgb),var(--tw-text-opacity))}.text-darken,.text-gray-600{--tw-text-opacity:1;color:rgba(var(--color-gray-600-rgb),var(--tw-text-opacity))}.text-darker,.text-gray-700{--tw-text-opacity:1;color:rgba(var(--color-gray-700-rgb),var(--tw-text-opacity))}.text-darkest,.text-gray-800{--tw-text-opacity:1;color:rgba(var(--color-gray-800-rgb),var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgba(var(--color-gray-900-rgb),var(--tw-text-opacity))}.text-gray-950{--tw-text-opacity:1;color:rgba(var(--color-gray-950-rgb),var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgba(var(--color-white-rgb),var(--tw-text-opacity))}.text-black{--tw-text-opacity:1;color:rgba(var(--color-black-rgb),var(--tw-text-opacity))}.text-transparent{color:transparent}.text-canvas{--tw-text-opacity:1;color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity))}.text-surface-light{--tw-text-opacity:1;color:rgba(var(--color-surface-light-rgb),var(--tw-text-opacity))}.text-surface{--tw-text-opacity:1;color:rgba(var(--color-surface-rgb),var(--tw-text-opacity))}.text-surface-strong{--tw-text-opacity:1;color:rgba(var(--color-surface-strong-rgb),var(--tw-text-opacity))}.text-inverse{--tw-text-opacity:1;color:rgba(var(--color-inverse-rgb),var(--tw-text-opacity))}.text-fore-in-light{--tw-text-opacity:1;color:rgba(var(--color-fore-in-light-rgb),var(--tw-text-opacity))}.text-fore-in-dark{--tw-text-opacity:1;color:rgba(var(--color-fore-in-dark-rgb),var(--tw-text-opacity))}.text-fore{--tw-text-opacity:1;color:rgba(var(--color-fore-rgb),var(--tw-text-opacity))}.text-focus{--tw-text-opacity:1;color:rgba(var(--color-focus-rgb),var(--tw-text-opacity))}.text-link{--tw-text-opacity:1;color:rgba(var(--color-link-rgb),var(--tw-text-opacity))}.text-link-hover{--tw-text-opacity:1;color:rgba(var(--color-link-hover-rgb),var(--tw-text-opacity))}.text-current{color:currentColor}.text-inherit{color:inherit}.clip,.ellipsis,.text-clip,.text-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.clip,.text-clip{text-overflow:clip}.nowrap,.whitespace-nowrap{white-space:nowrap}.pre,.whitespace-pre{white-space:pre}.pre-line,.whitespace-pre-line{white-space:pre-line}.pre-wrap,.whitespace-pre-wrap{white-space:pre-wrap}.break-normal{overflow-wrap:normal;word-break:normal}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.text-opacity-0{--tw-text-opacity:0}.text-opacity-5{--tw-text-opacity:.05}.text-opacity-10{--tw-text-opacity:.1}.text-opacity-20{--tw-text-opacity:.2}.text-opacity-25{--tw-text-opacity:.25}.text-opacity-30{--tw-text-opacity:.3}.text-opacity-40{--tw-text-opacity:.4}.text-opacity-50{--tw-text-opacity:.5}.text-opacity-60{--tw-text-opacity:.6}.text-opacity-70{--tw-text-opacity:.7}.text-opacity-80{--tw-text-opacity:.8}.text-opacity-90{--tw-text-opacity:.9}.text-opacity-95{--tw-text-opacity:.95}.text-opacity-100{--tw-text-opacity:1}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.list-none{list-style-type:none}.list-disc{list-style-type:disc}.list-decimal{list-style-type:decimal}.list-unstyled{list-style-type:none;padding-left:0}.underline{text-decoration-line:underline}.overline{text-decoration-line:overline}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.bg-primary{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-500-rgb),var(--tw-bg-opacity))}.bg-secondary{--tw-bg-opacity:1;background-color:rgba(var(--color-secondary-500-rgb),var(--tw-bg-opacity))}.bg-success{--tw-bg-opacity:1;background-color:rgba(var(--color-success-500-rgb),var(--tw-bg-opacity))}.bg-warning{--tw-bg-opacity:1;background-color:rgba(var(--color-warning-500-rgb),var(--tw-bg-opacity))}.bg-danger{--tw-bg-opacity:1;background-color:rgba(var(--color-danger-500-rgb),var(--tw-bg-opacity))}.bg-important{--tw-bg-opacity:1;background-color:rgba(var(--color-important-500-rgb),var(--tw-bg-opacity))}.bg-special{--tw-bg-opacity:1;background-color:rgba(var(--color-special-500-rgb),var(--tw-bg-opacity))}.bg-primary-50{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-50-rgb),var(--tw-bg-opacity))}.bg-primary-100{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100-rgb),var(--tw-bg-opacity))}.bg-primary-200{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-200-rgb),var(--tw-bg-opacity))}.bg-primary-300{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-300-rgb),var(--tw-bg-opacity))}.bg-primary-400{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-400-rgb),var(--tw-bg-opacity))}.bg-primary-500{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-500-rgb),var(--tw-bg-opacity))}.bg-primary-600{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-600-rgb),var(--tw-bg-opacity))}.bg-primary-700{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-700-rgb),var(--tw-bg-opacity))}.bg-primary-800{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-800-rgb),var(--tw-bg-opacity))}.bg-primary-900{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-900-rgb),var(--tw-bg-opacity))}.bg-primary-950{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-950-rgb),var(--tw-bg-opacity))}.bg-secondary-50{--tw-bg-opacity:1;background-color:rgba(var(--color-secondary-50-rgb),var(--tw-bg-opacity))}.bg-secondary-100{--tw-bg-opacity:1;background-color:rgba(var(--color-secondary-100-rgb),var(--tw-bg-opacity))}.bg-secondary-200{--tw-bg-opacity:1;background-color:rgba(var(--color-secondary-200-rgb),var(--tw-bg-opacity))}.bg-secondary-300{--tw-bg-opacity:1;background-color:rgba(var(--color-secondary-300-rgb),var(--tw-bg-opacity))}.bg-secondary-400{--tw-bg-opacity:1;background-color:rgba(var(--color-secondary-400-rgb),var(--tw-bg-opacity))}.bg-secondary-500{--tw-bg-opacity:1;background-color:rgba(var(--color-secondary-500-rgb),var(--tw-bg-opacity))}.bg-secondary-600{--tw-bg-opacity:1;background-color:rgba(var(--color-secondary-600-rgb),var(--tw-bg-opacity))}.bg-secondary-700{--tw-bg-opacity:1;background-color:rgba(var(--color-secondary-700-rgb),var(--tw-bg-opacity))}.bg-secondary-800{--tw-bg-opacity:1;background-color:rgba(var(--color-secondary-800-rgb),var(--tw-bg-opacity))}.bg-secondary-900{--tw-bg-opacity:1;background-color:rgba(var(--color-secondary-900-rgb),var(--tw-bg-opacity))}.bg-secondary-950{--tw-bg-opacity:1;background-color:rgba(var(--color-secondary-950-rgb),var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgba(var(--color-gray-50-rgb),var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgba(var(--color-gray-100-rgb),var(--tw-bg-opacity))}.bg-gray-200,.bg-lightest{--tw-bg-opacity:1;background-color:rgba(var(--color-gray-200-rgb),var(--tw-bg-opacity))}.bg-gray-300,.bg-lighter{--tw-bg-opacity:1;background-color:rgba(var(--color-gray-300-rgb),var(--tw-bg-opacity))}.bg-gray-400,.bg-light{--tw-bg-opacity:1;background-color:rgba(var(--color-gray-400-rgb),var(--tw-bg-opacity))}.bg-gray,.bg-gray-500{--tw-bg-opacity:1;background-color:rgba(var(--color-gray-500-rgb),var(--tw-bg-opacity))}.bg-darken,.bg-gray-600{--tw-bg-opacity:1;background-color:rgba(var(--color-gray-600-rgb),var(--tw-bg-opacity))}.bg-darker,.bg-gray-700{--tw-bg-opacity:1;background-color:rgba(var(--color-gray-700-rgb),var(--tw-bg-opacity))}.bg-darkest,.bg-gray-800{--tw-bg-opacity:1;background-color:rgba(var(--color-gray-800-rgb),var(--tw-bg-opacity))}.bg-gray-900{--tw-bg-opacity:1;background-color:rgba(var(--color-gray-900-rgb),var(--tw-bg-opacity))}.bg-gray-950{--tw-bg-opacity:1;background-color:rgba(var(--color-gray-950-rgb),var(--tw-bg-opacity))}.bg-canvas{--tw-bg-opacity:1;background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity))}.bg-surface-light{--tw-bg-opacity:1;background-color:rgba(var(--color-surface-light-rgb),var(--tw-bg-opacity))}.bg-surface{--tw-bg-opacity:1;background-color:rgba(var(--color-surface-rgb),var(--tw-bg-opacity))}.bg-surface-strong{--tw-bg-opacity:1;background-color:rgba(var(--color-surface-strong-rgb),var(--tw-bg-opacity))}.bg-inverse{--tw-bg-opacity:1;background-color:rgba(var(--color-inverse-rgb),var(--tw-bg-opacity))}.bg-fore-in-light{--tw-bg-opacity:1;background-color:rgba(var(--color-fore-in-light-rgb),var(--tw-bg-opacity))}.bg-fore-in-dark{--tw-bg-opacity:1;background-color:rgba(var(--color-fore-in-dark-rgb),var(--tw-bg-opacity))}.bg-fore{--tw-bg-opacity:1;background-color:rgba(var(--color-fore-rgb),var(--tw-bg-opacity))}.bg-focus{--tw-bg-opacity:1;background-color:rgba(var(--color-focus-rgb),var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgba(var(--color-white-rgb),var(--tw-bg-opacity))}.bg-black{--tw-bg-opacity:1;background-color:rgba(var(--color-black-rgb),var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-current{background-color:currentColor}.bg-inherit{background-color:inherit}.bg-none{background-image:none}.bg-opacity-0{--tw-bg-opacity:0}.bg-opacity-5{--tw-bg-opacity:.05}.bg-opacity-10{--tw-bg-opacity:.1}.bg-opacity-20{--tw-bg-opacity:.2}.bg-opacity-30{--tw-bg-opacity:.3}.bg-opacity-40{--tw-bg-opacity:.4}.bg-opacity-50{--tw-bg-opacity:.5}.bg-opacity-60{--tw-bg-opacity:.6}.bg-opacity-70{--tw-bg-opacity:.7}.bg-opacity-80{--tw-bg-opacity:.8}.bg-opacity-90{--tw-bg-opacity:.9}.bg-opacity-100{--tw-bg-opacity:1}.bg-auto{background-size:auto}.bg-cover{background-size:cover}.bg-contain{background-size:contain}.bg-repeat{background-repeat:repeat}.bg-no-repeat{background-repeat:no-repeat}.bg-repeat-x{background-repeat:repeat-x}.bg-repeat-y{background-repeat:repeat-y}.bg-repeat-round{background-repeat:round}.bg-repeat-space{background-repeat:space}.bg-bottom{background-position:bottom}.bg-center{background-position:50%}.bg-left{background-position:0}.bg-left-bottom{background-position:0 100%}.bg-left-top{background-position:0 0}.bg-right{background-position:100%}.bg-right-bottom{background-position:100% 100%}.bg-right-top{background-position:100% 0}.bg-top{background-position:top}.bg-fixed{background-attachment:fixed}.bg-local{background-attachment:local}.bg-scroll{background-attachment:scroll}.divider{align-self:stretch;border-color:currentColor;border-left-width:1px;border-top-width:1px;opacity:.1}.border-0{border-width:0}.border{border-width:1px}.border-2{border-width:2px}.border-4{border-width:4px}.border-t{border-top-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-b{border-bottom-width:1px}.border-t-0{border-top-width:0}.border-r-0{border-right-width:0}.border-b-0{border-bottom-width:0}.border-l-0{border-left-width:0}.border-t-2{border-top-width:2px}.border-l-2{border-left-width:2px}.border-r-2{border-right-width:2px}.border-b-2{border-bottom-width:2px}.border-t-4{border-top-width:4px}.border-l-4{border-left-width:4px}.border-r-4{border-right-width:4px}.border-b-4{border-bottom-width:4px}.border-light{--tw-border-opacity:1;border-color:rgba(var(--color-border-light-rgb),var(--tw-border-opacity))}.border-strong{--tw-border-opacity:1;border-color:rgba(var(--color-border-strong-rgb),var(--tw-border-opacity))}.border-primary{--tw-border-opacity:1;border-color:rgba(var(--color-primary-500-rgb),var(--tw-border-opacity))}.border-secondary{--tw-border-opacity:1;border-color:rgba(var(--color-secondary-500-rgb),var(--tw-border-opacity))}.border-success{--tw-border-opacity:1;border-color:rgba(var(--color-success-500-rgb),var(--tw-border-opacity))}.border-warning{--tw-border-opacity:1;border-color:rgba(var(--color-warning-500-rgb),var(--tw-border-opacity))}.border-danger{--tw-border-opacity:1;border-color:rgba(var(--color-danger-500-rgb),var(--tw-border-opacity))}.border-important{--tw-border-opacity:1;border-color:rgba(var(--color-important-500-rgb),var(--tw-border-opacity))}.border-special{--tw-border-opacity:1;border-color:rgba(var(--color-special-500-rgb),var(--tw-border-opacity))}.border-gray-50{--tw-border-opacity:1;border-color:rgba(var(--color-gray-50-rgb),var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity:1;border-color:rgba(var(--color-gray-100-rgb),var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgba(var(--color-gray-200-rgb),var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgba(var(--color-gray-300-rgb),var(--tw-border-opacity))}.border-gray-400{--tw-border-opacity:1;border-color:rgba(var(--color-gray-400-rgb),var(--tw-border-opacity))}.border-gray,.border-gray-500{--tw-border-opacity:1;border-color:rgba(var(--color-gray-500-rgb),var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity:1;border-color:rgba(var(--color-gray-600-rgb),var(--tw-border-opacity))}.border-gray-700{--tw-border-opacity:1;border-color:rgba(var(--color-gray-700-rgb),var(--tw-border-opacity))}.border-gray-800{--tw-border-opacity:1;border-color:rgba(var(--color-gray-800-rgb),var(--tw-border-opacity))}.border-gray-900{--tw-border-opacity:1;border-color:rgba(var(--color-gray-900-rgb),var(--tw-border-opacity))}.border-gray-950{--tw-border-opacity:1;border-color:rgba(var(--color-gray-950-rgb),var(--tw-border-opacity))}.border-white{--tw-border-opacity:1;border-color:rgba(var(--color-white-rgb),var(--tw-border-opacity))}.border-black{--tw-border-opacity:1;border-color:rgba(var(--color-black-rgb),var(--tw-border-opacity))}.border-canvas{--tw-border-opacity:1;border-color:rgba(var(--color-canvas-rgb),var(--tw-border-opacity))}.border-surface-light{--tw-border-opacity:1;border-color:rgba(var(--color-surface-light-rgb),var(--tw-border-opacity))}.border-surface{--tw-border-opacity:1;border-color:rgba(var(--color-surface-rgb),var(--tw-border-opacity))}.border-surface-strong{--tw-border-opacity:1;border-color:rgba(var(--color-surface-strong-rgb),var(--tw-border-opacity))}.border-inverse{--tw-border-opacity:1;border-color:rgba(var(--color-inverse-rgb),var(--tw-border-opacity))}.border-fore-in-light{--tw-border-opacity:1;border-color:rgba(var(--color-fore-in-light-rgb),var(--tw-border-opacity))}.border-fore-in-dark{--tw-border-opacity:1;border-color:rgba(var(--color-fore-in-dark-rgb),var(--tw-border-opacity))}.border-fore{--tw-border-opacity:1;border-color:rgba(var(--color-fore-rgb),var(--tw-border-opacity))}.border-focus{--tw-border-opacity:1;border-color:rgba(var(--color-focus-rgb),var(--tw-border-opacity))}.border-link{--tw-border-opacity:1;border-color:rgba(var(--color-link-rgb),var(--tw-border-opacity))}.border-link-hover{--tw-border-opacity:1;border-color:rgba(var(--color-link-hover-rgb),var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-current{border-color:currentColor}.border-inherit{border-color:inherit}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-dotted{border-style:dotted}.border-double{border-style:double}.border-hidden{border-style:hidden}.border-none{border-style:none}.border-opacity-0{--tw-border-opacity:0}.border-opacity-5{--tw-border-opacity:.05}.border-opacity-10{--tw-border-opacity:.1}.border-opacity-20{--tw-border-opacity:.2}.border-opacity-25{--tw-border-opacity:.25}.border-opacity-30{--tw-border-opacity:.3}.border-opacity-40{--tw-border-opacity:.4}.border-opacity-50{--tw-border-opacity:.5}.border-opacity-60{--tw-border-opacity:.6}.border-opacity-70{--tw-border-opacity:.7}.border-opacity-80{--tw-border-opacity:.8}.border-opacity-90{--tw-border-opacity:.9}.border-opacity-95{--tw-border-opacity:.95}.border-opacity-100{--tw-border-opacity:1}.rounded-none{border-radius:var(--radius-none)}.rounded-sm{border-radius:var(--radius-sm)}.rounded{border-radius:var(--radius)}.rounded-md{border-radius:var(--radius-md)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.circle,.rounded-full{border-radius:var(--radius-full)}.rounded-l-none{border-bottom-left-radius:var(--radius-none);border-top-left-radius:var(--radius-none)}.rounded-t-none{border-top-left-radius:var(--radius-none)}.rounded-r-none,.rounded-t-none{border-top-right-radius:var(--radius-none)}.rounded-b-none,.rounded-r-none{border-bottom-right-radius:var(--radius-none)}.rounded-b-none{border-bottom-left-radius:var(--radius-none)}.rounded-br-none{border-bottom-right-radius:var(--radius-none)}.rounded-bl-none{border-bottom-left-radius:var(--radius-none)}.rounded-tr-none{border-top-right-radius:var(--radius-none)}.rounded-tl-none{border-top-left-radius:var(--radius-none)}.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(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-border-rgb),var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-border-light{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-border-light-rgb),var(--tw-ring-opacity))}.ring-border{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-border-rgb),var(--tw-ring-opacity))}.ring-border-strong{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-border-strong-rgb),var(--tw-ring-opacity))}.ring-light{--tw-ring-color:rgba(var(--color-inverse-rgb),var(--tw-ring-opacity));--tw-ring-opacity:0.05}.ring-gray{--tw-ring-color:rgba(var(--color-inverse-rgb),var(--tw-ring-opacity));--tw-ring-opacity:0.1}.ring-dark{--tw-ring-color:rgba(var(--color-inverse-rgb),var(--tw-ring-opacity));--tw-ring-opacity:0.2}.ring-darker{--tw-ring-color:rgba(var(--color-inverse-rgb),var(--tw-ring-opacity));--tw-ring-opacity:0.3}.ring-darkest{--tw-ring-color:rgba(var(--color-inverse-rgb),var(--tw-ring-opacity));--tw-ring-opacity:0.5}.ring-primary{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-primary-500-rgb),var(--tw-ring-opacity))}.ring-secondary{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-secondary-500-rgb),var(--tw-ring-opacity))}.ring-warning{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-warning-500-rgb),var(--tw-ring-opacity))}.ring-success{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-success-500-rgb),var(--tw-ring-opacity))}.ring-danger{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-danger-500-rgb),var(--tw-ring-opacity))}.ring-important{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-important-500-rgb),var(--tw-ring-opacity))}.ring-special{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-special-500-rgb),var(--tw-ring-opacity))}.ring-gray-50{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-gray-50-rgb),var(--tw-ring-opacity))}.ring-gray-100{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-gray-100-rgb),var(--tw-ring-opacity))}.ring-gray-200{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-gray-200-rgb),var(--tw-ring-opacity))}.ring-gray-300{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-gray-300-rgb),var(--tw-ring-opacity))}.ring-gray-400{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-gray-400-rgb),var(--tw-ring-opacity))}.ring-gray-500{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-gray-500-rgb),var(--tw-ring-opacity))}.ring-gray-600{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-gray-600-rgb),var(--tw-ring-opacity))}.ring-gray-700{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-gray-700-rgb),var(--tw-ring-opacity))}.ring-gray-800{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-gray-800-rgb),var(--tw-ring-opacity))}.ring-gray-900{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-gray-900-rgb),var(--tw-ring-opacity))}.ring-gray-950{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-gray-950-rgb),var(--tw-ring-opacity))}.ring-inverse{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-inverse-rgb),var(--tw-ring-opacity))}.ring-canvas{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-canvas-rgb),var(--tw-ring-opacity))}.ring-surface{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-surface-rgb),var(--tw-ring-opacity))}.ring-fore{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-fore-rgb),var(--tw-ring-opacity))}.ring-transparent{--tw-ring-color:transparent}.ring-black{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-black-rgb),var(--tw-ring-opacity))}.ring-white{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-white-rgb),var(--tw-ring-opacity))}.ring-inherit{--tw-ring-color:inherit}.ring-current{--tw-ring-color:currentColor}.ring-opacity-0{--tw-ring-opacity:0}.ring-opacity-5{--tw-ring-opacity:.05}.ring-opacity-10{--tw-ring-opacity:.1}.ring-opacity-20{--tw-ring-opacity:.2}.ring-opacity-30{--tw-ring-opacity:.3}.ring-opacity-40{--tw-ring-opacity:.4}.ring-opacity-50{--tw-ring-opacity:.5}.ring-opacity-60{--tw-ring-opacity:.6}.ring-opacity-70{--tw-ring-opacity:.7}.ring-opacity-80{--tw-ring-opacity:.8}.ring-opacity-90{--tw-ring-opacity:.9}.ring-opacity-100{--tw-ring-opacity:1}.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-0,.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-3{--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-3,.ring-4{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-4{--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(4px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-8{--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(8px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-inset{--tw-ring-inset:inset}.ring-offset-0{--tw-ring-offset-width:0px}.ring-offset-1{--tw-ring-offset-width:1px}.ring-offset-2{--tw-ring-offset-width:2px}.ring-offset-4{--tw-ring-offset-width:4px}.ring-offset-8{--tw-ring-offset-width:8px}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.04),0 0 2px -1px rgba(0,0,0,.01);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color),0 0 2px -1px var(--tw-shadow-color)}.shadow,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow{--tw-shadow:0 3px 8px 0 rgba(0,0,0,.04),0 1px 2px -1px rgba(0,0,0,.01);--tw-shadow-colored:0 3px 8px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow-md{--tw-shadow:0 2px 6px -1px rgba(0,0,0,.2),0 1px 4px -2px rgba(0,0,0,.15);--tw-shadow-colored:0 2px 6px -1px var(--tw-shadow-color),0 1px 4px -2px 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-lg{--tw-shadow:0 5px 15px -3px rgba(0,0,0,.2),0 2px 6px -4px rgba(0,0,0,.15);--tw-shadow-colored:0 5px 15px -3px var(--tw-shadow-color),0 2px 6px -4px var(--tw-shadow-color)}.shadow-xl{--tw-shadow:0 10px 25px -5px rgba(0,0,0,.2),0 4px 10px -6px rgba(0,0,0,.15);--tw-shadow-colored:0 10px 25px -5px var(--tw-shadow-color),0 4px 10px -6px var(--tw-shadow-color)}.shadow-2xl,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 10px 50px -10px rgba(0,0,0,.4),0 8px 20px -10px rgba(0,0,0,.3);--tw-shadow-colored:0 10px 50px -10px var(--tw-shadow-color),0 8px 20px -10px var(--tw-shadow-color)}.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-inner,.shadow-none{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.muted{opacity:var(--opacity-muted)}.opacity-0{opacity:0}.opacity-5{opacity:.05}.opacity-10{opacity:.1}.opacity-20{opacity:.2}.opacity-25{opacity:.25}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.opacity-95{opacity:.95}.opacity-100{opacity:1}.blur-none{--tw-blur:blur(0)}.blur-none,.blur-sm{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)}.blur-sm{--tw-blur:blur(4px)}.blur{--tw-blur:blur(8px)}.blur,.blur-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)}.blur-md{--tw-blur:blur(12px)}.blur-lg{--tw-blur:blur(16px)}.blur-lg,.blur-xl{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)}.blur-xl{--tw-blur:blur(24px)}.grayscale{--tw-grayscale:grayscale(100%)}.grayscale,.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)}.invert{--tw-invert:invert(100%)}.filter-none{filter:none!important}.drop-shadow-none{--tw-drop-shadow:drop-shadow(0 0 #0000)}.drop-shadow-none,.drop-shadow-sm{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-sm{--tw-drop-shadow:drop-shadow(0 1px 1px rgba(0,0,0,.05))}.drop-shadow{--tw-drop-shadow:drop-shadow(0 1px 2px rgba(0,0,0,.1)) drop-shadow(0 1px 1px rgba(0,0,0,.06))}.drop-shadow,.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))}.drop-shadow-lg{--tw-drop-shadow:drop-shadow(0 10px 8px rgba(0,0,0,.04)) drop-shadow(0 4px 3px rgba(0,0,0,.1))}.drop-shadow-lg,.drop-shadow-xl{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-xl{--tw-drop-shadow:drop-shadow(0 20px 13px rgba(0,0,0,.03)) drop-shadow(0 8px 5px rgba(0,0,0,.08))}.drop-shadow-2xl{--tw-drop-shadow:drop-shadow(0 25px 25px rgba(0,0,0,.15));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-none{--tw-backdrop-blur:blur(0)}.backdrop-blur-none,.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-blur{--tw-backdrop-blur:blur(8px)}.backdrop-blur,.backdrop-blur-md{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-md{--tw-backdrop-blur:blur(12px)}.backdrop-blur-lg{--tw-backdrop-blur:blur(16px)}.backdrop-blur-lg,.backdrop-blur-xl{-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-xl{--tw-backdrop-blur:blur(24px)}.backdrop-blur-2xl{--tw-backdrop-blur:blur(40px)}.backdrop-blur-2xl,.backdrop-blur-3xl{-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-3xl{--tw-backdrop-blur:blur(64px)}.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)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-shadow{transition-duration:.15s;transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-none{transition-property:none}.fade,.fade-from-bottom,.fade-from-center,.fade-from-left,.fade-from-right,.fade-from-top{opacity:0;transition-duration:.15s;transition-property:opacity,transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.fade-from-bottom,.fade-from-center,.fade-from-left,.fade-from-right,.fade-from-top{--tw-scale-x:.9;--tw-scale-y:.9}.fade-from-bottom,.fade-from-center,.fade-from-left,.fade-from-right,.fade-from-top{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))}.fade-from-bottom{--tw-translate-y:25%}.fade-from-top{--tw-translate-y:-25%}.fade-from-left,.fade-from-top{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))}.fade-from-left{--tw-translate-x:-25%}.fade-from-right{--tw-translate-x:25%}.fade-from-bottom.in,.fade-from-center.in,.fade-from-left.in,.fade-from-right,.fade-from-right.in,.fade-from-top.in,.fade.in{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))}.fade-from-bottom.in,.fade-from-center.in,.fade-from-left.in,.fade-from-right.in,.fade-from-top.in,.fade.in{--tw-translate-x:0px;--tw-translate-y:0px;--tw-scale-x:1;--tw-scale-y:1;opacity:1}.duration-75{transition-duration:75ms}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-1000{transition-duration:1s}@keyframes -spin{to{transform:rotate(1turn)}}.animate-spin,.spin{animation:-spin 1s linear infinite}@keyframes -ping{75%,to{opacity:0;transform:scale(2)}}.animate-ping,.ping{animation:-ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes -pulse{50%{opacity:.5}}.animate-pulse,.pulse{animation:-pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes -bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}.animate-bounce,.bounce{animation:-bounce 1s infinite}.scale-0{--tw-scale-x:0;--tw-scale-y:0}.scale-0,.scale-50{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-50{--tw-scale-x:.5;--tw-scale-y:.5}.scale-75{--tw-scale-x:.75;--tw-scale-y:.75}.scale-75,.scale-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))}.scale-90{--tw-scale-x:.9;--tw-scale-y:.9}.scale-95{--tw-scale-x:.95;--tw-scale-y:.95}.scale-100,.scale-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))}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-105{--tw-scale-x:1.05;--tw-scale-y:1.05}.scale-105,.scale-110{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-110{--tw-scale-x:1.1;--tw-scale-y:1.1}.scale-125{--tw-scale-x:1.25;--tw-scale-y:1.25}.scale-125,.scale-150{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-150{--tw-scale-x:1.5;--tw-scale-y:1.5}.flip-x{--tw-scale-x:-1}.flip-x,.flip-y{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))}.flip-y{--tw-scale-y:-1}.rotate-0{--tw-rotate:0deg}.rotate-0,.rotate-1{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-1{--tw-rotate:1deg}.rotate-2{--tw-rotate:2deg}.rotate-2,.rotate-3{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-3{--tw-rotate:3deg}.rotate-6{--tw-rotate:6deg}.rotate-12,.rotate-6{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-12{--tw-rotate:12deg}.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-135{--tw-rotate:135deg}.rotate-135,.rotate-180{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-180{--tw-rotate:180deg}.rotate-270{--tw-rotate:270deg;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))}.basis-0{flex-basis:0px}.basis-1{flex-basis:0.25rem}.basis-2{flex-basis:0.5rem}.basis-3{flex-basis:0.75rem}.basis-4{flex-basis:1rem}.basis-5{flex-basis:1.25rem}.basis-6{flex-basis:1.5rem}.basis-7{flex-basis:1.75rem}.basis-8{flex-basis:2rem}.basis-9{flex-basis:2.25rem}.basis-10{flex-basis:2.5rem}.basis-11{flex-basis:2.75rem}.basis-12{flex-basis:3rem}.basis-14{flex-basis:3.5rem}.basis-16{flex-basis:4rem}.basis-20{flex-basis:5rem}.basis-24{flex-basis:6rem}.basis-28{flex-basis:7rem}.basis-32{flex-basis:8rem}.basis-36{flex-basis:9rem}.basis-40{flex-basis:10rem}.basis-44{flex-basis:11rem}.basis-48{flex-basis:12rem}.basis-52{flex-basis:13rem}.basis-56{flex-basis:14rem}.basis-60{flex-basis:15rem}.basis-64{flex-basis:16rem}.basis-72{flex-basis:18rem}.basis-80{flex-basis:20rem}.basis-96{flex-basis:24rem}.basis-auto{flex-basis:auto}.basis-px{flex-basis:1px}.basis-0\.5{flex-basis:0.125rem}.basis-1\.5{flex-basis:0.375rem}.basis-2\.5{flex-basis:0.625rem}.basis-3\.5{flex-basis:0.875rem}.basis-1\/2{flex-basis:50%}.basis-1\/3{flex-basis:33.333333%}.basis-2\/3{flex-basis:66.666667%}.basis-1\/4{flex-basis:25%}.basis-2\/4{flex-basis:50%}.basis-3\/4{flex-basis:75%}.basis-1\/5{flex-basis:20%}.basis-2\/5{flex-basis:40%}.basis-3\/5{flex-basis:60%}.basis-4\/5{flex-basis:80%}.basis-1\/6{flex-basis:16.666667%}.basis-2\/6{flex-basis:33.333333%}.basis-3\/6{flex-basis:50%}.basis-4\/6{flex-basis:66.666667%}.basis-5\/6{flex-basis:83.333333%}.basis-1\/12{flex-basis:8.333333%}.basis-2\/12{flex-basis:16.666667%}.basis-3\/12{flex-basis:25%}.basis-4\/12{flex-basis:33.333333%}.basis-5\/12{flex-basis:41.666667%}.basis-6\/12{flex-basis:50%}.basis-7\/12{flex-basis:58.333333%}.basis-8\/12{flex-basis:66.666667%}.basis-9\/12{flex-basis:75%}.basis-10\/12{flex-basis:83.333333%}.basis-11\/12{flex-basis:91.666667%}.basis-full{flex-basis:100%}.row{display:flex;flex-direction:row}.center,.col{display:flex;flex-direction:column}.center,.center-row{align-items:center;justify-content:center}.center-row{display:flex;flex-direction:row}.center-x,.center-y{align-items:center;display:flex}.center-y{flex-direction:column}.row-reverse{display:flex;flex-direction:row-reverse}.col-reverse{display:flex;flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.flex-nowrap{flex-wrap:nowrap}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-initial{flex:0 1 auto}.flex-none{flex:none}.grow{flex-grow:1!important}.grow-0{flex-grow:0!important}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.order-first{order:-9999}.order-last{order:9999}.order-none{order:0}.gap-0{gap:0}.gap-x-0{-moz-column-gap:0;column-gap:0}.gap-y-0{row-gap:0}.gap-px{gap:1px}.gap-x-px{-moz-column-gap:1px;column-gap:1px}.gap-y-px{row-gap:1px}.gap-0\.5{gap:.125rem}.gap-x-0\.5{-moz-column-gap:.125rem;column-gap:.125rem}.gap-y-0\.5{row-gap:.125rem}.gap-3px{gap:3px}.gap-1{gap:.25rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-y-1{row-gap:.25rem}.gap-1\.5{gap:.375rem}.gap-x-1\.5{-moz-column-gap:.375rem;column-gap:.375rem}.gap-y-1\.5{row-gap:.375rem}.gap-2{gap:.5rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-y-2{row-gap:.5rem}.gap-2\.5{gap:.625rem}.gap-x-2\.5{-moz-column-gap:.625rem;column-gap:.625rem}.gap-y-2\.5{row-gap:.625rem}.gap-3{gap:.75rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-y-3{row-gap:.75rem}.gap-3\.5{gap:.875rem}.gap-x-3\.5{-moz-column-gap:.875rem;column-gap:.875rem}.gap-y-3\.5{row-gap:.875rem}.gap-4{gap:1rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-4{row-gap:1rem}.gap-5{gap:1.25rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-y-5{row-gap:1.25rem}.gap-6{gap:1.5rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-6{row-gap:1.5rem}.gap-7{gap:1.75rem}.gap-x-7{-moz-column-gap:1.75rem;column-gap:1.75rem}.gap-y-7{row-gap:1.75rem}.gap-8{gap:2rem}.gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.gap-y-8{row-gap:2rem}.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}.justify-evenly{justify-content:space-evenly}.self-auto{align-self:auto}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.self-center{align-self:center}.self-stretch{align-self:stretch}.self-baseline{align-self:baseline}.content-center{align-content:center}.content-start{align-content:flex-start}.content-end{align-content:flex-end}.content-between{align-content:space-between}.content-around{align-content:space-around}.content-evenly{align-content:space-evenly}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}@font-face{font-display:fallback;font-family:D-DIN-PRO;font-weight:400;src:url(./fonts/D-DIN-PRO-400-Regular.otf)}@font-face{font-display:fallback;font-family:D-DIN-PRO;font-weight:500;src:url(./fonts/D-DIN-PRO-700-Bold.otf)}.num{font-family:D-DIN-PRO}@font-face{font-display:fallback;font-family:Nunito;font-weight:400;src:url(./fonts/Nunito-Regular.ttf)}@font-face{font-display:fallback;font-family:Nunito;font-weight:700;src:url(./fonts/Nunito-bold.ttf)}@font-face{font-display:fallback;font-family:Nunito;font-weight:300;src:url(./fonts/Nunito-Light.ttf)}.font-brand{font-family:Nunito;font-weight:400}
\ No newline at end of file
+/*! tailwindcss v3.3.6 | MIT License | https://tailwindcss.com*/*,:after,:before{border-color:rgb(var(--color-gray-200-rgb));border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--tw-content:""}html{-webkit-text-size-adjust:100%;font-feature-settings:normal;font-family:-apple-system,Noto Sans,Helvetica Neue,Helvetica,Nimbus Sans L,Arial,Liberation Sans,PingFang SC,Hiragino Sans GB,Noto Sans CJK SC,Source Han Sans SC,Source Han Sans CN,Microsoft YaHei,Wenquanyi Micro Hei,WenQuanYi Zen Hei,ST Heiti,SimHei,WenQuanYi Zen Hei Sharp,sans-serif;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:rgb(var(--color-gray-400-rgb));opacity:1}input::placeholder,textarea::placeholder{color:rgb(var(--color-gray-400-rgb));opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}:root{--screen-2xl:1720px;--color-gray-50:#fcfdfe;--color-gray-100:#eff1f3;--color-gray-200:#ebedf3;--color-gray-300:#d2d6e5;--color-gray-400:#b2b9c5;--color-gray-500:#64758b;--color-gray-600:#4a577f;--color-gray-700:#3d4667;--color-gray-800:#353d57;--color-gray-900:#30394a;--color-gray-950:#0b0f18;--color-gray-50-rgb:252,253,254;--color-gray-100-rgb:239,241,243;--color-gray-200-rgb:235,237,243;--color-gray-300-rgb:210,214,229;--color-gray-400-rgb:178,185,197;--color-gray-500-rgb:100,117,139;--color-gray-600-rgb:74,87,127;--color-gray-700-rgb:61,70,103;--color-gray-800-rgb:53,61,87;--color-gray-900-rgb:48,57,74;--color-gray-950-rgb:11,15,24;--color-primary-50:#eef6ff;--color-primary-100:#d9eaff;--color-primary-200:#bcdcff;--color-primary-300:#8ec6ff;--color-primary-400:#59a5ff;--color-primary-500:#3883fa;--color-primary-600:#2b67e5;--color-primary-700:#144ce1;--color-primary-800:#173db6;--color-primary-900:#19388f;--color-primary-950:#142457;--color-primary-50-rgb:238,246,255;--color-primary-100-rgb:217,234,255;--color-primary-200-rgb:188,220,255;--color-primary-300-rgb:142,198,255;--color-primary-400-rgb:89,165,255;--color-primary-500-rgb:56,131,250;--color-primary-600-rgb:43,103,229;--color-primary-700-rgb:20,76,225;--color-primary-800-rgb:23,61,182;--color-primary-900-rgb:25,56,143;--color-primary-950-rgb:20,36,87;--color-secondary-50:#e7f6ff;--color-secondary-100:#cdecff;--color-secondary-200:#9bd9ff;--color-secondary-300:#77cbff;--color-secondary-400:#60c2ff;--color-secondary-500:#37b2fe;--color-secondary-600:#18a6fd;--color-secondary-700:#1099ed;--color-secondary-800:#078ada;--color-secondary-900:#046bab;--color-secondary-950:#062a4b;--color-secondary-50-rgb:231,246,255;--color-secondary-100-rgb:205,236,255;--color-secondary-200-rgb:155,217,255;--color-secondary-300-rgb:119,203,255;--color-secondary-400-rgb:96,194,255;--color-secondary-500-rgb:55,178,254;--color-secondary-600-rgb:24,166,253;--color-secondary-700-rgb:16,153,237;--color-secondary-800-rgb:7,138,218;--color-secondary-900-rgb:4,107,171;--color-secondary-950-rgb:6,42,75;--color-success-50:#ecfff8;--color-success-100:#d0f6e8;--color-success-200:#b1ecd6;--color-success-300:#7adfba;--color-success-400:#48d1a0;--color-success-500:#22c98d;--color-success-600:#0dbb7d;--color-success-700:#0ca76f;--color-success-800:#0e8d60;--color-success-900:#186c4e;--color-success-50-rgb:236,255,248;--color-success-100-rgb:208,246,232;--color-success-200-rgb:177,236,214;--color-success-300-rgb:122,223,186;--color-success-400-rgb:72,209,160;--color-success-500-rgb:34,201,141;--color-success-600-rgb:13,187,125;--color-success-700-rgb:12,167,111;--color-success-800-rgb:14,141,96;--color-success-900-rgb:24,108,78;--color-warning-50:#fff4ea;--color-warning-100:#ffecdb;--color-warning-200:#ffd2a9;--color-warning-300:#ffbc7e;--color-warning-400:#ffaf65;--color-warning-500:#ff9f46;--color-warning-600:#f38f19;--color-warning-700:#ed8307;--color-warning-800:#d17100;--color-warning-900:#af5f01;--color-warning-50-rgb:255,244,234;--color-warning-100-rgb:255,236,219;--color-warning-200-rgb:255,210,169;--color-warning-300-rgb:255,188,126;--color-warning-400-rgb:255,175,101;--color-warning-500-rgb:255,159,70;--color-warning-600-rgb:243,143,25;--color-warning-700-rgb:237,131,7;--color-warning-800-rgb:209,113,0;--color-warning-900-rgb:175,95,1;--color-danger-50:#ffebeb;--color-danger-100:#ffd5d5;--color-danger-200:#ffb1b1;--color-danger-300:#ff9292;--color-danger-400:#ff7c7c;--color-danger-500:#fc5959;--color-danger-600:#fb2b2b;--color-danger-700:#d91b1b;--color-danger-800:#ba1313;--color-danger-900:#a20606;--color-danger-50-rgb:255,235,235;--color-danger-100-rgb:255,213,213;--color-danger-200-rgb:255,177,177;--color-danger-300-rgb:255,146,146;--color-danger-400-rgb:255,124,124;--color-danger-500-rgb:252,89,89;--color-danger-600-rgb:251,43,43;--color-danger-700-rgb:217,27,27;--color-danger-800-rgb:186,19,19;--color-danger-900-rgb:162,6,6;--color-important-50:#fff8f5;--color-important-100:#ffe2d9;--color-important-200:#ffcebf;--color-important-300:#ffb29b;--color-important-400:#ff8c68;--color-important-500:#ff8058;--color-important-600:#ff6f42;--color-important-700:#ff4912;--color-important-800:#c83509;--color-important-900:#611700;--color-important-50-rgb:255,248,245;--color-important-100-rgb:255,226,217;--color-important-200-rgb:255,206,191;--color-important-300-rgb:255,178,155;--color-important-400-rgb:255,140,104;--color-important-500-rgb:255,128,88;--color-important-600-rgb:255,111,66;--color-important-700-rgb:255,73,18;--color-important-800-rgb:200,53,9;--color-important-900-rgb:97,23,0;--color-special-50:#efecfa;--color-special-100:#e4dff7;--color-special-200:#c4b6ff;--color-special-300:#a38cff;--color-special-400:#8a6ff5;--color-special-500:#8166ee;--color-special-600:#7055df;--color-special-700:#513baa;--color-special-800:#452da5;--color-special-900:#30216e;--color-special-50-rgb:239,236,250;--color-special-100-rgb:228,223,247;--color-special-200-rgb:196,182,255;--color-special-300-rgb:163,140,255;--color-special-400-rgb:138,111,245;--color-special-500-rgb:129,102,238;--color-special-600-rgb:112,85,223;--color-special-700-rgb:81,59,170;--color-special-800-rgb:69,45,165;--color-special-900-rgb:48,33,110;--color-inherit:inherit;--color-transparent:transparent;--color-current:currentColor;--color-black:#000;--color-white:#fff;--color-canvas:#fff;--color-canvas-light:#fff;--color-canvas-dark:#fcfdfe;--color-inverse:#000;--color-surface:#eff1f3;--color-surface-light:#fcfdfe;--color-surface-strong:#ebedf3;--color-fore:#30394a;--color-fore-in-light:#30394a;--color-fore-in-dark:#fff;--color-focus:#bcdcff;--color-link:#2b47a2;--color-link-hover:#144ce1;--color-link-visited:#6328a4;--color-link-active:#144ce1;--color-placeholder:#b2b9c5;--color-border:#ebedf3;--color-border-strong:#d2d6e5;--color-border-light:#eff1f3;--color-black-rgb:0,0,0;--color-white-rgb:255,255,255;--color-canvas-rgb:255,255,255;--color-canvas-light-rgb:255,255,255;--color-canvas-dark-rgb:252,253,254;--color-inverse-rgb:0,0,0;--color-surface-rgb:239,241,243;--color-surface-light-rgb:252,253,254;--color-surface-strong-rgb:235,237,243;--color-fore-rgb:48,57,74;--color-fore-in-light-rgb:48,57,74;--color-fore-in-dark-rgb:255,255,255;--color-focus-rgb:188,220,255;--color-link-rgb:43,71,162;--color-link-hover-rgb:20,76,225;--color-link-visited-rgb:99,40,164;--color-link-active-rgb:20,76,225;--color-placeholder-rgb:178,185,197;--color-border-rgb:235,237,243;--color-border-strong-rgb:210,214,229;--color-border-light-rgb:239,241,243;--radius-none:0px;--radius-sm:0.0625rem;--radius:0.125rem;--radius-md:0.25rem;--radius-lg:0.375rem;--radius-xl:0.5rem;--radius-2xl:0.75rem;--radius-3xl:1rem;--radius-full:9999px;--shadow-sm:0 1px 2px 0 rgba(0,0,0,.04),0 0 2px -1px rgba(0,0,0,.01);--shadow:0 3px 8px 0 rgba(0,0,0,.04),0 1px 2px -1px rgba(0,0,0,.01);--shadow-md:0 2px 6px -1px rgba(0,0,0,.2),0 1px 4px -2px rgba(0,0,0,.15);--shadow-lg:0 5px 15px -3px rgba(0,0,0,.2),0 2px 6px -4px rgba(0,0,0,.15);--shadow-xl:0 10px 25px -5px rgba(0,0,0,.2),0 4px 10px -6px rgba(0,0,0,.15);--shadow-2xl:0 10px 50px -10px rgba(0,0,0,.4),0 8px 20px -10px rgba(0,0,0,.3);--shadow-inner:inset 0 2px 4px 0 rgba(0,0,0,.05);--shadow-none:none;--space:0.25rem;--font-size-article:0.875rem;--font-size-root:16px;--font-size-page-lineHeight:1.5384615385}.dark{--color-gray-50:#0b0f18;--color-gray-100:#30394a;--color-gray-200:#353d57;--color-gray-300:#3d4667;--color-gray-400:#4a577f;--color-gray-500:#64758b;--color-gray-600:#b2b9c5;--color-gray-700:#d2d6e5;--color-gray-800:#ebedf3;--color-gray-900:#eff1f3;--color-gray-950:#fcfdfe;--color-gray-50-rgb:11,15,24;--color-gray-100-rgb:48,57,74;--color-gray-200-rgb:53,61,87;--color-gray-300-rgb:61,70,103;--color-gray-400-rgb:74,87,127;--color-gray-500-rgb:100,117,139;--color-gray-600-rgb:178,185,197;--color-gray-700-rgb:210,214,229;--color-gray-800-rgb:235,237,243;--color-gray-900-rgb:239,241,243;--color-gray-950-rgb:252,253,254;--color-primary-50:#142457;--color-primary-100:#19388f;--color-primary-200:#173db6;--color-primary-300:#144ce1;--color-primary-400:#2b67e5;--color-primary-500:#3883fa;--color-primary-600:#59a5ff;--color-primary-700:#8ec6ff;--color-primary-800:#bcdcff;--color-primary-900:#d9eaff;--color-primary-950:#eef6ff;--color-primary-50-rgb:20,36,87;--color-primary-100-rgb:25,56,143;--color-primary-200-rgb:23,61,182;--color-primary-300-rgb:20,76,225;--color-primary-400-rgb:43,103,229;--color-primary-500-rgb:56,131,250;--color-primary-600-rgb:89,165,255;--color-primary-700-rgb:142,198,255;--color-primary-800-rgb:188,220,255;--color-primary-900-rgb:217,234,255;--color-primary-950-rgb:238,246,255;--color-secondary-50:#062a4b;--color-secondary-100:#046bab;--color-secondary-200:#078ada;--color-secondary-300:#1099ed;--color-secondary-400:#18a6fd;--color-secondary-500:#37b2fe;--color-secondary-600:#60c2ff;--color-secondary-700:#77cbff;--color-secondary-800:#9bd9ff;--color-secondary-900:#cdecff;--color-secondary-950:#e7f6ff;--color-secondary-50-rgb:6,42,75;--color-secondary-100-rgb:4,107,171;--color-secondary-200-rgb:7,138,218;--color-secondary-300-rgb:16,153,237;--color-secondary-400-rgb:24,166,253;--color-secondary-500-rgb:55,178,254;--color-secondary-600-rgb:96,194,255;--color-secondary-700-rgb:119,203,255;--color-secondary-800-rgb:155,217,255;--color-secondary-900-rgb:205,236,255;--color-secondary-950-rgb:231,246,255;--color-success-50:#186c4e;--color-success-100:#0e8d60;--color-success-200:#0ca76f;--color-success-300:#0dbb7d;--color-success-400:#22c98d;--color-success-500:#48d1a0;--color-success-600:#7adfba;--color-success-700:#b1ecd6;--color-success-800:#d0f6e8;--color-success-900:#ecfff8;--color-success-50-rgb:24,108,78;--color-success-100-rgb:14,141,96;--color-success-200-rgb:12,167,111;--color-success-300-rgb:13,187,125;--color-success-400-rgb:34,201,141;--color-success-500-rgb:72,209,160;--color-success-600-rgb:122,223,186;--color-success-700-rgb:177,236,214;--color-success-800-rgb:208,246,232;--color-success-900-rgb:236,255,248;--color-warning-50:#af5f01;--color-warning-100:#d17100;--color-warning-200:#ed8307;--color-warning-300:#f38f19;--color-warning-400:#ff9f46;--color-warning-500:#ffaf65;--color-warning-600:#ffbc7e;--color-warning-700:#ffd2a9;--color-warning-800:#ffecdb;--color-warning-900:#fff4ea;--color-warning-50-rgb:175,95,1;--color-warning-100-rgb:209,113,0;--color-warning-200-rgb:237,131,7;--color-warning-300-rgb:243,143,25;--color-warning-400-rgb:255,159,70;--color-warning-500-rgb:255,175,101;--color-warning-600-rgb:255,188,126;--color-warning-700-rgb:255,210,169;--color-warning-800-rgb:255,236,219;--color-warning-900-rgb:255,244,234;--color-danger-50:#a20606;--color-danger-100:#ba1313;--color-danger-200:#d91b1b;--color-danger-300:#fb2b2b;--color-danger-400:#fc5959;--color-danger-500:#ff7c7c;--color-danger-600:#ff9292;--color-danger-700:#ffb1b1;--color-danger-800:#ffd5d5;--color-danger-900:#ffebeb;--color-danger-50-rgb:162,6,6;--color-danger-100-rgb:186,19,19;--color-danger-200-rgb:217,27,27;--color-danger-300-rgb:251,43,43;--color-danger-400-rgb:252,89,89;--color-danger-500-rgb:255,124,124;--color-danger-600-rgb:255,146,146;--color-danger-700-rgb:255,177,177;--color-danger-800-rgb:255,213,213;--color-danger-900-rgb:255,235,235;--color-important-50:#611700;--color-important-100:#c83509;--color-important-200:#ff4912;--color-important-300:#ff6f42;--color-important-400:#ff8058;--color-important-500:#ff8c68;--color-important-600:#ffb29b;--color-important-700:#ffcebf;--color-important-800:#ffe2d9;--color-important-900:#fff8f5;--color-important-50-rgb:97,23,0;--color-important-100-rgb:200,53,9;--color-important-200-rgb:255,73,18;--color-important-300-rgb:255,111,66;--color-important-400-rgb:255,128,88;--color-important-500-rgb:255,140,104;--color-important-600-rgb:255,178,155;--color-important-700-rgb:255,206,191;--color-important-800-rgb:255,226,217;--color-important-900-rgb:255,248,245;--color-special-50:#30216e;--color-special-100:#452da5;--color-special-200:#513baa;--color-special-300:#7055df;--color-special-400:#8166ee;--color-special-500:#8a6ff5;--color-special-600:#a38cff;--color-special-700:#c4b6ff;--color-special-800:#e4dff7;--color-special-900:#efecfa;--color-special-50-rgb:48,33,110;--color-special-100-rgb:69,45,165;--color-special-200-rgb:81,59,170;--color-special-300-rgb:112,85,223;--color-special-400-rgb:129,102,238;--color-special-500-rgb:138,111,245;--color-special-600-rgb:163,140,255;--color-special-700-rgb:196,182,255;--color-special-800-rgb:228,223,247;--color-special-900-rgb:239,236,250;--color-canvas:#0b0f18;--color-inverse:#fff;--color-surface:#353d57;--color-surface-light:#30394a;--color-surface-strong:#3d4667;--color-fore:#ebedf3;--color-focus:#173db6;--color-link:#59a5ff;--color-link-hover:#3883fa;--color-link-visited:#bcdcff;--color-link-active:#bcdcff;--color-placeholder:#4a577f;--color-border:#353d57;--color-border-strong:#3d4667;--color-border-light:#30394a;--color-canvas-rgb:11,15,24;--color-inverse-rgb:255,255,255;--color-surface-rgb:53,61,87;--color-surface-light-rgb:48,57,74;--color-surface-strong-rgb:61,70,103;--color-fore-rgb:235,237,243;--color-focus-rgb:23,61,182;--color-link-rgb:89,165,255;--color-link-hover-rgb:56,131,250;--color-link-visited-rgb:188,220,255;--color-link-active-rgb:188,220,255;--color-placeholder-rgb:74,87,127;--color-border-rgb:53,61,87;--color-border-strong-rgb:61,70,103;--color-border-light-rgb:48,57,74}.light-in-dark{--color-gray-50:#fcfdfe;--color-gray-100:#eff1f3;--color-gray-200:#ebedf3;--color-gray-300:#d2d6e5;--color-gray-400:#b2b9c5;--color-gray-500:#64758b;--color-gray-600:#4a577f;--color-gray-700:#3d4667;--color-gray-800:#353d57;--color-gray-900:#30394a;--color-gray-950:#0b0f18;--color-gray-50-rgb:252,253,254;--color-gray-100-rgb:239,241,243;--color-gray-200-rgb:235,237,243;--color-gray-300-rgb:210,214,229;--color-gray-400-rgb:178,185,197;--color-gray-500-rgb:100,117,139;--color-gray-600-rgb:74,87,127;--color-gray-700-rgb:61,70,103;--color-gray-800-rgb:53,61,87;--color-gray-900-rgb:48,57,74;--color-gray-950-rgb:11,15,24;--color-primary-50:#eef6ff;--color-primary-100:#d9eaff;--color-primary-200:#bcdcff;--color-primary-300:#8ec6ff;--color-primary-400:#59a5ff;--color-primary-500:#3883fa;--color-primary-600:#2b67e5;--color-primary-700:#144ce1;--color-primary-800:#173db6;--color-primary-900:#19388f;--color-primary-950:#142457;--color-primary-50-rgb:238,246,255;--color-primary-100-rgb:217,234,255;--color-primary-200-rgb:188,220,255;--color-primary-300-rgb:142,198,255;--color-primary-400-rgb:89,165,255;--color-primary-500-rgb:56,131,250;--color-primary-600-rgb:43,103,229;--color-primary-700-rgb:20,76,225;--color-primary-800-rgb:23,61,182;--color-primary-900-rgb:25,56,143;--color-primary-950-rgb:20,36,87;--color-secondary-50:#e7f6ff;--color-secondary-100:#cdecff;--color-secondary-200:#9bd9ff;--color-secondary-300:#77cbff;--color-secondary-400:#60c2ff;--color-secondary-500:#37b2fe;--color-secondary-600:#18a6fd;--color-secondary-700:#1099ed;--color-secondary-800:#078ada;--color-secondary-900:#046bab;--color-secondary-950:#062a4b;--color-secondary-50-rgb:231,246,255;--color-secondary-100-rgb:205,236,255;--color-secondary-200-rgb:155,217,255;--color-secondary-300-rgb:119,203,255;--color-secondary-400-rgb:96,194,255;--color-secondary-500-rgb:55,178,254;--color-secondary-600-rgb:24,166,253;--color-secondary-700-rgb:16,153,237;--color-secondary-800-rgb:7,138,218;--color-secondary-900-rgb:4,107,171;--color-secondary-950-rgb:6,42,75;--color-success-50:#ecfff8;--color-success-100:#d0f6e8;--color-success-200:#b1ecd6;--color-success-300:#7adfba;--color-success-400:#48d1a0;--color-success-500:#22c98d;--color-success-600:#0dbb7d;--color-success-700:#0ca76f;--color-success-800:#0e8d60;--color-success-900:#186c4e;--color-success-50-rgb:236,255,248;--color-success-100-rgb:208,246,232;--color-success-200-rgb:177,236,214;--color-success-300-rgb:122,223,186;--color-success-400-rgb:72,209,160;--color-success-500-rgb:34,201,141;--color-success-600-rgb:13,187,125;--color-success-700-rgb:12,167,111;--color-success-800-rgb:14,141,96;--color-success-900-rgb:24,108,78;--color-warning-50:#fff4ea;--color-warning-100:#ffecdb;--color-warning-200:#ffd2a9;--color-warning-300:#ffbc7e;--color-warning-400:#ffaf65;--color-warning-500:#ff9f46;--color-warning-600:#f38f19;--color-warning-700:#ed8307;--color-warning-800:#d17100;--color-warning-900:#af5f01;--color-warning-50-rgb:255,244,234;--color-warning-100-rgb:255,236,219;--color-warning-200-rgb:255,210,169;--color-warning-300-rgb:255,188,126;--color-warning-400-rgb:255,175,101;--color-warning-500-rgb:255,159,70;--color-warning-600-rgb:243,143,25;--color-warning-700-rgb:237,131,7;--color-warning-800-rgb:209,113,0;--color-warning-900-rgb:175,95,1;--color-danger-50:#ffebeb;--color-danger-100:#ffd5d5;--color-danger-200:#ffb1b1;--color-danger-300:#ff9292;--color-danger-400:#ff7c7c;--color-danger-500:#fc5959;--color-danger-600:#fb2b2b;--color-danger-700:#d91b1b;--color-danger-800:#ba1313;--color-danger-900:#a20606;--color-danger-50-rgb:255,235,235;--color-danger-100-rgb:255,213,213;--color-danger-200-rgb:255,177,177;--color-danger-300-rgb:255,146,146;--color-danger-400-rgb:255,124,124;--color-danger-500-rgb:252,89,89;--color-danger-600-rgb:251,43,43;--color-danger-700-rgb:217,27,27;--color-danger-800-rgb:186,19,19;--color-danger-900-rgb:162,6,6;--color-important-50:#fff8f5;--color-important-100:#ffe2d9;--color-important-200:#ffcebf;--color-important-300:#ffb29b;--color-important-400:#ff8c68;--color-important-500:#ff8058;--color-important-600:#ff6f42;--color-important-700:#ff4912;--color-important-800:#c83509;--color-important-900:#611700;--color-important-50-rgb:255,248,245;--color-important-100-rgb:255,226,217;--color-important-200-rgb:255,206,191;--color-important-300-rgb:255,178,155;--color-important-400-rgb:255,140,104;--color-important-500-rgb:255,128,88;--color-important-600-rgb:255,111,66;--color-important-700-rgb:255,73,18;--color-important-800-rgb:200,53,9;--color-important-900-rgb:97,23,0;--color-special-50:#efecfa;--color-special-100:#e4dff7;--color-special-200:#c4b6ff;--color-special-300:#a38cff;--color-special-400:#8a6ff5;--color-special-500:#8166ee;--color-special-600:#7055df;--color-special-700:#513baa;--color-special-800:#452da5;--color-special-900:#30216e;--color-special-50-rgb:239,236,250;--color-special-100-rgb:228,223,247;--color-special-200-rgb:196,182,255;--color-special-300-rgb:163,140,255;--color-special-400-rgb:138,111,245;--color-special-500-rgb:129,102,238;--color-special-600-rgb:112,85,223;--color-special-700-rgb:81,59,170;--color-special-800-rgb:69,45,165;--color-special-900-rgb:48,33,110;--color-inherit:inherit;--color-transparent:transparent;--color-current:currentColor;--color-black:#000;--color-white:#fff;--color-canvas:#fff;--color-canvas-light:#fff;--color-canvas-dark:#fcfdfe;--color-inverse:#000;--color-surface:#eff1f3;--color-surface-light:#fcfdfe;--color-surface-strong:#ebedf3;--color-fore:#30394a;--color-fore-in-light:#30394a;--color-fore-in-dark:#fff;--color-focus:#bcdcff;--color-link:#2b47a2;--color-link-hover:#144ce1;--color-link-visited:#6328a4;--color-link-active:#144ce1;--color-placeholder:#b2b9c5;--color-border:#ebedf3;--color-border-strong:#d2d6e5;--color-border-light:#eff1f3;--color-black-rgb:0,0,0;--color-white-rgb:255,255,255;--color-canvas-rgb:255,255,255;--color-canvas-light-rgb:255,255,255;--color-canvas-dark-rgb:252,253,254;--color-inverse-rgb:0,0,0;--color-surface-rgb:239,241,243;--color-surface-light-rgb:252,253,254;--color-surface-strong-rgb:235,237,243;--color-fore-rgb:48,57,74;--color-fore-in-light-rgb:48,57,74;--color-fore-in-dark-rgb:255,255,255;--color-focus-rgb:188,220,255;--color-link-rgb:43,71,162;--color-link-hover-rgb:20,76,225;--color-link-visited-rgb:99,40,164;--color-link-active-rgb:20,76,225;--color-placeholder-rgb:178,185,197;--color-border-rgb:235,237,243;--color-border-strong-rgb:210,214,229;--color-border-light-rgb:239,241,243}body{--btn-bg:var(--color-gray-50)}@media (prefers-color-scheme:dark){.dark-auto{--color-gray-50:#0b0f18;--color-gray-100:#30394a;--color-gray-200:#353d57;--color-gray-300:#3d4667;--color-gray-400:#4a577f;--color-gray-500:#64758b;--color-gray-600:#b2b9c5;--color-gray-700:#d2d6e5;--color-gray-800:#ebedf3;--color-gray-900:#eff1f3;--color-gray-950:#fcfdfe;--color-gray-50-rgb:11,15,24;--color-gray-100-rgb:48,57,74;--color-gray-200-rgb:53,61,87;--color-gray-300-rgb:61,70,103;--color-gray-400-rgb:74,87,127;--color-gray-500-rgb:100,117,139;--color-gray-600-rgb:178,185,197;--color-gray-700-rgb:210,214,229;--color-gray-800-rgb:235,237,243;--color-gray-900-rgb:239,241,243;--color-gray-950-rgb:252,253,254;--color-primary-50:#142457;--color-primary-100:#19388f;--color-primary-200:#173db6;--color-primary-300:#144ce1;--color-primary-400:#2b67e5;--color-primary-500:#3883fa;--color-primary-600:#59a5ff;--color-primary-700:#8ec6ff;--color-primary-800:#bcdcff;--color-primary-900:#d9eaff;--color-primary-950:#eef6ff;--color-primary-50-rgb:20,36,87;--color-primary-100-rgb:25,56,143;--color-primary-200-rgb:23,61,182;--color-primary-300-rgb:20,76,225;--color-primary-400-rgb:43,103,229;--color-primary-500-rgb:56,131,250;--color-primary-600-rgb:89,165,255;--color-primary-700-rgb:142,198,255;--color-primary-800-rgb:188,220,255;--color-primary-900-rgb:217,234,255;--color-primary-950-rgb:238,246,255;--color-secondary-50:#062a4b;--color-secondary-100:#046bab;--color-secondary-200:#078ada;--color-secondary-300:#1099ed;--color-secondary-400:#18a6fd;--color-secondary-500:#37b2fe;--color-secondary-600:#60c2ff;--color-secondary-700:#77cbff;--color-secondary-800:#9bd9ff;--color-secondary-900:#cdecff;--color-secondary-950:#e7f6ff;--color-secondary-50-rgb:6,42,75;--color-secondary-100-rgb:4,107,171;--color-secondary-200-rgb:7,138,218;--color-secondary-300-rgb:16,153,237;--color-secondary-400-rgb:24,166,253;--color-secondary-500-rgb:55,178,254;--color-secondary-600-rgb:96,194,255;--color-secondary-700-rgb:119,203,255;--color-secondary-800-rgb:155,217,255;--color-secondary-900-rgb:205,236,255;--color-secondary-950-rgb:231,246,255;--color-success-50:#186c4e;--color-success-100:#0e8d60;--color-success-200:#0ca76f;--color-success-300:#0dbb7d;--color-success-400:#22c98d;--color-success-500:#48d1a0;--color-success-600:#7adfba;--color-success-700:#b1ecd6;--color-success-800:#d0f6e8;--color-success-900:#ecfff8;--color-success-50-rgb:24,108,78;--color-success-100-rgb:14,141,96;--color-success-200-rgb:12,167,111;--color-success-300-rgb:13,187,125;--color-success-400-rgb:34,201,141;--color-success-500-rgb:72,209,160;--color-success-600-rgb:122,223,186;--color-success-700-rgb:177,236,214;--color-success-800-rgb:208,246,232;--color-success-900-rgb:236,255,248;--color-warning-50:#af5f01;--color-warning-100:#d17100;--color-warning-200:#ed8307;--color-warning-300:#f38f19;--color-warning-400:#ff9f46;--color-warning-500:#ffaf65;--color-warning-600:#ffbc7e;--color-warning-700:#ffd2a9;--color-warning-800:#ffecdb;--color-warning-900:#fff4ea;--color-warning-50-rgb:175,95,1;--color-warning-100-rgb:209,113,0;--color-warning-200-rgb:237,131,7;--color-warning-300-rgb:243,143,25;--color-warning-400-rgb:255,159,70;--color-warning-500-rgb:255,175,101;--color-warning-600-rgb:255,188,126;--color-warning-700-rgb:255,210,169;--color-warning-800-rgb:255,236,219;--color-warning-900-rgb:255,244,234;--color-danger-50:#a20606;--color-danger-100:#ba1313;--color-danger-200:#d91b1b;--color-danger-300:#fb2b2b;--color-danger-400:#fc5959;--color-danger-500:#ff7c7c;--color-danger-600:#ff9292;--color-danger-700:#ffb1b1;--color-danger-800:#ffd5d5;--color-danger-900:#ffebeb;--color-danger-50-rgb:162,6,6;--color-danger-100-rgb:186,19,19;--color-danger-200-rgb:217,27,27;--color-danger-300-rgb:251,43,43;--color-danger-400-rgb:252,89,89;--color-danger-500-rgb:255,124,124;--color-danger-600-rgb:255,146,146;--color-danger-700-rgb:255,177,177;--color-danger-800-rgb:255,213,213;--color-danger-900-rgb:255,235,235;--color-important-50:#611700;--color-important-100:#c83509;--color-important-200:#ff4912;--color-important-300:#ff6f42;--color-important-400:#ff8058;--color-important-500:#ff8c68;--color-important-600:#ffb29b;--color-important-700:#ffcebf;--color-important-800:#ffe2d9;--color-important-900:#fff8f5;--color-important-50-rgb:97,23,0;--color-important-100-rgb:200,53,9;--color-important-200-rgb:255,73,18;--color-important-300-rgb:255,111,66;--color-important-400-rgb:255,128,88;--color-important-500-rgb:255,140,104;--color-important-600-rgb:255,178,155;--color-important-700-rgb:255,206,191;--color-important-800-rgb:255,226,217;--color-important-900-rgb:255,248,245;--color-special-50:#30216e;--color-special-100:#452da5;--color-special-200:#513baa;--color-special-300:#7055df;--color-special-400:#8166ee;--color-special-500:#8a6ff5;--color-special-600:#a38cff;--color-special-700:#c4b6ff;--color-special-800:#e4dff7;--color-special-900:#efecfa;--color-special-50-rgb:48,33,110;--color-special-100-rgb:69,45,165;--color-special-200-rgb:81,59,170;--color-special-300-rgb:112,85,223;--color-special-400-rgb:129,102,238;--color-special-500-rgb:138,111,245;--color-special-600-rgb:163,140,255;--color-special-700-rgb:196,182,255;--color-special-800-rgb:228,223,247;--color-special-900-rgb:239,236,250;--color-canvas:#0b0f18;--color-inverse:#fff;--color-surface:#353d57;--color-surface-light:#30394a;--color-surface-strong:#3d4667;--color-fore:#ebedf3;--color-focus:#173db6;--color-link:#59a5ff;--color-link-hover:#3883fa;--color-link-visited:#bcdcff;--color-link-active:#bcdcff;--color-placeholder:#4a577f;--color-border:#353d57;--color-border-strong:#3d4667;--color-border-light:#30394a;--color-canvas-rgb:11,15,24;--color-inverse-rgb:255,255,255;--color-surface-rgb:53,61,87;--color-surface-light-rgb:48,57,74;--color-surface-strong-rgb:61,70,103;--color-fore-rgb:235,237,243;--color-focus-rgb:23,61,182;--color-link-rgb:89,165,255;--color-link-hover-rgb:56,131,250;--color-link-visited-rgb:188,220,255;--color-link-active-rgb:188,220,255;--color-placeholder-rgb:74,87,127;--color-border-rgb:53,61,87;--color-border-strong-rgb:61,70,103;--color-border-light-rgb:48,57,74}}*,:after,:before{--tw-border-opacity:1;--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;border-color:rgba(var(--color-border-rgb),var(--tw-border-opacity))}::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }html{font-size:var(--font-size-root)}body{--tw-bg-opacity:1;background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));font-size:.8125rem;line-height:1.5384615385}.dark,body{--tw-text-opacity:1;color:rgba(var(--color-fore-rgb),var(--tw-text-opacity))}:root{--font-h1-size:2.25rem;--article-p-space:0.5em;--article-heading-space:0.5em;--article-hr-space:1.5em;--article-cell-padding:0.25rem 0.75rem}a,a.disabled:hover{--tw-text-opacity:1;color:rgba(var(--color-link-rgb),var(--tw-text-opacity))}a:hover{--tw-text-opacity:1;color:rgba(var(--color-link-hover-rgb),var(--tw-text-opacity))}a:focus-visible{outline-color:rgb(var(--color-focus-rgb));outline-offset:2px;outline-width:2px}.code,code{--tw-text-opacity:1;background-color:rgba(var(--color-important-500-rgb),.1);border-radius:var(--radius);color:rgba(var(--color-important-500-rgb),var(--tw-text-opacity));padding-left:.25rem;padding-right:.25rem}pre{font-size:.75rem;line-height:1rem;overflow:auto;padding:.5rem}pre code{background-color:transparent;color:inherit;padding:0}samp,var{font-weight:700}.blockquote,blockquote{text-wrap:balance;border-left-width:4px;font-size:.875rem;line-height:1.3rem;padding-left:.75rem}.blockquote figcaption,blockquote figcaption{--tw-text-opacity:1;color:rgba(var(--color-gray-500-rgb),var(--tw-text-opacity));font-size:.75rem;line-height:1rem}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{text-wrap:balance;font-weight:700;line-height:1.5}.h1,h1{font-size:1.75rem}.h2,h2{font-size:1.5rem}.h3,h3{font-size:1.25rem}.h4,h4{font-size:1rem}.h5,h5{font-size:.875rem}.h6,h6{font-size:.75rem}ul{list-style-type:disc}ol,ul{padding-left:1.5em}ol{list-style-type:decimal}dt{font-weight:700}dd{padding-left:2em}.article{color:var(--font-size-article)}.article h1,.article h2,.article h3,.article h4{margin-bottom:var(--article-heading-space);margin-top:var(--article-heading-space)}.article audio,.article blockquote,.article figure,.article img,.article ol,.article p,.article table,.article ul,.article video{margin-bottom:var(--article-p-space);margin-top:var(--article-p-space)}.article hr{margin-bottom:var(--article-hr-space);margin-top:var(--article-hr-space)}.article table{border-width:1px}.article td,.article th{border-bottom-width:1px;padding:var(--article-cell-padding)}.article thead{background-color:var(--table-head-bg,var(--color-gray-100))}.article ol *,.article table *,.article ul *{margin-bottom:0;margin-top:0}.article pre{--tw-bg-opacity:1;background-color:rgba(var(--color-gray-50-rgb),var(--tw-bg-opacity));border-radius:var(--radius);border-width:1px}:root{--alert-bg:var(--color-surface)}.alert{align-items:center;background-color:var(--alert-bg);border-radius:var(--radius);display:flex;gap:.75rem;padding:.5rem .75rem}.alert-content{display:flex;flex:1 1 auto;flex-direction:column;gap:1rem}.alert-close{margin-bottom:-.375rem;margin-right:-.5rem;margin-top:-.375rem}.alert-link{color:inherit;font-weight:700}.alert-link:hover{color:inherit;text-decoration-line:underline}.alert-heading{font-weight:700;margin:0}.alert-text{flex:1 1 auto;white-space:pre-line}.alert-actions{align-items:center;display:flex;gap:.5rem}:root{--breadcrumb-divider:"/";--breadcrumb-divider-color:var(--color-gray-500);--breadcrumb-color-active:var(--color-gray-500)}.breadcrumb{display:flex;gap:1.25rem;list-style-type:none;padding-left:0}.breadcrumb>li{position:relative}.breadcrumb>li+li:before{color:var(--breadcrumb-divider-color);content:var(--breadcrumb-divider);display:block;left:-1.25rem;position:absolute;text-align:center;width:1.25rem}.breadcrumb>.active{color:var(--breadcrumb-color-active)}:root{--btn-radius:var(--radius);--btn-bg:var(--color-surface);--btn-border-color:var(--color-gray-300)}.btn{--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);--tw-ring-color:var(--btn-border-color);--state-active-opacity:1;align-items:center;background-color:var(--btn-bg);border-radius:var(--btn-radius);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);display:inline-flex;gap:.375rem;height:2rem;justify-content:center;padding-left:.75rem;padding-right:.75rem;white-space:nowrap}.btn,.btn-default:hover{color:inherit}.btn-link{--tw-text-opacity:1;--tw-ring-color:transparent;color:rgba(var(--color-link-rgb),var(--tw-text-opacity));text-decoration-line:underline;text-underline-offset:2px}.btn-link:visited{color:rgba(var(--color-link-visited-rgb),var(--tw-text-opacity))}.btn-link:hover{--tw-text-opacity:1;color:rgba(var(--color-link-hover-rgb),var(--tw-text-opacity))}.btn-link{--btn-bg:transparent}.btn.size-xs,.size-xs>.btn{font-size:.75rem;height:1.25rem;line-height:1rem;padding-left:.25rem;padding-right:.25rem}.btn.size-sm,.size-sm>.btn{font-size:.75rem;height:1.5rem;line-height:1rem}.btn.size-md,.btn.size-sm,.size-md>.btn,.size-sm>.btn{padding-left:.5rem;padding-right:.5rem}.btn.size-md,.size-md>.btn{height:1.75rem}.btn.size-lg,.size-lg>.btn{font-size:1rem;height:2.5rem;line-height:1.5rem;padding-left:1rem;padding-right:1rem}.btn.size-xl,.size-xl>.btn{font-size:1.125rem;height:3rem;line-height:1.75rem;padding-left:1.25rem;padding-right:1.25rem}.btn.square{aspect-ratio:1/1;gap:.125rem;padding-left:0;padding-right:0}.btn.btn-caret{padding-left:.25rem;padding-right:.25rem}.btn.btn-wide{min-width:80px}:root{--checkbox-size:12px;--checkbox-color:var(--color-primary-500)}.checkbox,.radio{align-items:center;cursor:pointer;display:flex;gap:.375rem;min-height:20px}.checkbox>input[type=checkbox],.radio>input[type=radio]{accent-color:rgb(var(--color-primary-500-rgb));border-radius:var(--radius-lg)}.checkbox-primary,.radio-primary{display:flex;gap:.375rem;min-height:20px;position:relative}.checkbox-primary>input[type=checkbox],.radio-primary>input[type=radio]{inset:0;opacity:0;position:absolute}.checkbox-primary>label,.radio-primary>label{cursor:pointer;padding-left:calc(var(--checkbox-size) + 8px);position:relative}.checkbox-primary>label:after,.checkbox-primary>label:before,.radio-primary>label:after,.radio-primary>label:before{--tw-content:"";content:var(--tw-content);display:block;height:var(--checkbox-size);left:0;position:absolute;top:calc((20px - var(--checkbox-size))/2);transition-duration:.15s;transition-property:transform,background-color,color,opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);width:var(--checkbox-size)}.checkbox-primary>label:before{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));border-color:rgba(var(--color-gray-400-rgb),var(--tw-border-opacity));border-radius:var(--radius-sm);border-width:1px}.checkbox-primary>label:after{--tw-scale-x:.9;--tw-scale-y:.9;background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZmlsbD0iI2ZmZiIgZD0ibTkgMjAuNDItNi4yMS02LjIxIDIuODMtMi44M0w5IDE0Ljc3bDkuODgtOS44OSAyLjgzIDIuODN6Ii8+PC9zdmc+");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))}.radio-primary>label:before{--tw-border-opacity:1;border-color:rgba(var(--color-gray-400-rgb),var(--tw-border-opacity));border-radius:var(--radius-full);border-width:1px}.radio-primary>label:after{--checkbox-radio-size:calc(var(--checkbox-size)*2/3);background-color:var(--checkbox-color);border-radius:var(--radius-full);height:var(--checkbox-radio-size);left:calc((var(--checkbox-size) - var(--checkbox-radio-size))/2);opacity:0;top:calc((20px - var(--checkbox-radio-size))/2);width:var(--checkbox-radio-size)}.checkbox-primary>label:hover:before,.radio-primary>label:hover:before{border-color:var(--checkbox-color)}.checkbox-primary.focus>label:before,.checkbox-primary>input[type=checkbox]:focus+label:before,.radio-primary.focus>label:before,.radio-primary>input[type=radio]:focus+label:before{border-color:var(--checkbox-color);outline-color:rgb(var(--color-focus-rgb));outline-style:solid;outline-width:2px}.checkbox-primary.checked>label:before,.checkbox-primary>input[type=checkbox]:checked+label:before{background-color:var(--checkbox-color);border-color:var(--checkbox-color)}.radio-primary.checked>label:before,.radio-primary>input[type=radio]:checked+label:before{border-color:var(--checkbox-color)}.checkbox-primary.checked>label:after,.checkbox-primary>input[type=checkbox]:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input[type=radio]:checked+label:after{opacity:1}.checkbox-primary.disabled>label,.checkbox-primary>input[type=checkbox]:disabled+label,.radio-primary.disabled>label,.radio-primary>input[type=radio]:disabled+label{--tw-grayscale:grayscale(100%);cursor:not-allowed;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);opacity:.7;pointer-events:none}.checkbox-primary.indeterminate>label:after,.checkbox-primary>input[type=checkbox]:indeterminate+label:after{--tw-border-opacity:1;background-color:var(--checkbox-color);background-image:none;border-color:rgba(var(--color-canvas-rgb),var(--tw-border-opacity));border-width:calc((var(--checkbox-size) - 2px)/2) 2px;opacity:1}.check-list{align-items:flex-start;flex-direction:column;gap:.5rem}.check-list,.check-list-inline{display:flex;padding-bottom:.375rem;padding-top:.375rem}.check-list-inline{align-items:center;-moz-column-gap:1rem;column-gap:1rem;flex-direction:row;flex-wrap:wrap;row-gap:.5rem}.switch{display:flex;gap:.375rem;min-height:20px;padding-left:2.5rem;position:relative}.switch>input{inset:0;opacity:0;position:absolute}.switch>label:after,.switch>label:before{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-content:"";background-color:rgba(var(--color-surface-rgb),var(--tw-bg-opacity));border-color:rgba(var(--color-border-strong-rgb),var(--tw-border-opacity));border-radius:var(--radius-full);border-width:1px;content:var(--tw-content);height:1rem;left:0;position:absolute;top:.125rem;transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);width:2rem}.switch>label:before{--tw-shadow:inset 0 2px 4px 0 rgba(0,0,0,.05);--tw-shadow-colored:inset 0 2px 4px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);cursor:pointer}.switch>label:hover:before{--tw-border-opacity:1;border-color:rgba(var(--color-border-rgb),var(--tw-border-opacity))}.switch>label:after{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-shadow:0 3px 8px 0 rgba(0,0,0,.04),0 1px 2px -1px rgba(0,0,0,.01);--tw-shadow-colored:0 3px 8px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));border-color:rgba(var(--color-canvas-rgb),var(--tw-border-opacity));box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);height:.75rem;left:.125rem;top:.25rem;width:.75rem}.switch>input:checked+label:before{background-color:var(--checkbox-color);border-color:rgba(var(--color-inverse-rgb),.2)}.switch>input:checked+label:after{color:var(--checkbox-color);left:18px}.switch.focus>label:before,.switch>input:focus+label:before{border-color:var(--checkbox-color);outline-color:rgb(var(--color-focus-rgb));outline-style:solid;outline-width:2px}.switch.disabled>label:before,.switch>input:disabled+label:before{--tw-grayscale:grayscale(100%);cursor:not-allowed;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);opacity:.7;pointer-events:none}:root{--form-control-radius:var(--radius);--form-control-border:var(--color-border);--form-control-focus:var(--color-primary-500);--form-control-disabled:var(--color-surface);--form-control-readonly:var(--color-surface)}.dark{--form-control-border:var(--color-border-strong)}input::-moz-placeholder,textarea::-moz-placeholder{--tw-placeholder-opacity:1;color:rgba(var(--color-placeholder-rgb),var(--tw-placeholder-opacity))}input::placeholder,textarea::placeholder{--tw-placeholder-opacity:1;color:rgba(var(--color-placeholder-rgb),var(--tw-placeholder-opacity))}.form-control{--tw-bg-opacity: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);--tw-ring-color:var(--form-control-border);background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));border-radius:var(--form-control-radius);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);display:block;height:2rem;outline-color:transparent;outline-style:solid;outline-width:1px;padding:.25rem .5rem;transition-duration:.15s;transition-property:outline,box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);width:100%}.form-control.focus,.form-control: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(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgba(var(--color-focus-rgb),var(--tw-ring-opacity));--tw-ring-opacity:0.3;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline-color:var(--form-control-focus)}.form-control.disabled,.form-control[disabled]{background-color:var(--form-control-disabled);opacity:1}.form-control.readonly,.form-control[readonly]{background-color:var(--form-control-readonly)}select{-webkit-appearance:none;background-image:url("data:image/gif;base64,R0lGODlhBwAEAIAAAMvQ2////yH5BAEAAAEALAAAAAAHAAQAAAIIhA+BGWoNWSgAOw==");background-position:right 8px top 50%;background-repeat:no-repeat;background-size:8px auto;padding-right:1rem}select.form-control[multiple]{background-image:none}textarea.form-control{height:auto;min-height:32px}input[type=file].form-control{padding:.125rem}input[type=file].form-control::-webkit-file-upload-button{-webkit-appearance:none;appearance:none;border-radius:inherit;border-style:none;cursor:pointer;height:1.75rem;padding-left:.5rem;padding-right:.5rem}input[type=file].form-control::-webkit-file-upload-button:hover{background-color:rgba(var(--color-black-rgb),.1)}.has-error .form-control,.has-error.form-control{--tw-ring-color:rgba(var(--color-danger-500-rgb),0.6)}.has-error .form-control.focus,.has-error .form-control:focus,.has-error.form-control.focus,.has-error.form-control:focus{--tw-ring-color:rgba(var(--color-danger-500-rgb),0.1);outline-color:rgb(var(--color-danger-500-rgb))}.has-warning .form-control,.has-warning.form-control{--tw-ring-color:rgba(var(--color-warning-500-rgb),0.6)}.has-warning .form-control.focus,.has-warning .form-control:focus,.has-warning.form-control.focus,.has-warning.form-control:focus{--tw-ring-color:rgba(var(--color-warning-500-rgb),0.2);outline-color:rgb(var(--color-warning-500-rgb))}.has-success .form-control,.has-success.form-control{--tw-ring-color:rgba(var(--color-success-500-rgb),0.6)}.has-success .form-control.focus,.has-success .form-control:focus,.has-success.form-control.focus,.has-success.form-control:focus{--tw-ring-color:rgba(var(--color-success-500-rgb),0.2);outline-color:rgb(var(--color-success-500-rgb))}.form-control.size-sm,.size-sm>.form-control{font-size:.75rem;height:1.5rem;line-height:1rem;padding-left:.5rem;padding-right:.5rem}.form-control.size-md,.size-md>.form-control{height:1.75rem;padding-left:.5rem;padding-right:.5rem}.form-control.size-lg,.size-lg>.form-control{font-size:1rem;height:2.5rem;line-height:1.5rem;padding-left:.75rem;padding-right:.75rem}:root{--input-group-addon-bg:var(--color-gray-50)}.input-group{align-items:stretch;display:flex}.input-group>.form-control,.input-group>.input-control{flex:1 1 auto;z-index:1}.input-group-addon{--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);--tw-ring-color:var(--form-control-border);align-items:center;background-color:var(--input-group-addon-bg);border-radius:var(--form-control-radius);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);display:flex;flex:none;height:2rem;padding-left:.5rem;padding-right:.5rem;z-index:0}.size-sm>.input-group-addon{font-size:.75rem;height:1.5rem;line-height:1rem;padding-left:.5rem;padding-right:.5rem}.size-lg>.input-group-addon{font-size:1rem;height:2.5rem;line-height:1.5rem;padding-left:.75rem;padding-right:.75rem}.input-group-control{flex:1 1 auto}.input-group>*+*,.input-group>*+* .form-control{border-bottom-left-radius:var(--radius-none);border-top-left-radius:var(--radius-none)}.input-group>:not(:last-child),.input-group>:not(:last-child) .form-control{border-bottom-right-radius:var(--radius-none);border-top-right-radius:var(--radius-none)}.input-group .btn:focus-visible,.input-group .form-control:focus{z-index:2}:root{--form-tip-color:var(--color-gray-400);--form-label-color:var(--color-gray-700);--form-horz-label-width:6rem;--form-grid-gap-x:1.25rem;--form-grid-gap-y:.75rem}.form{flex-direction:column;gap:1rem}.form,.form-label{display:flex}.form-label{align-items:center;color:var(--form-label-color);flex-direction:row;gap:.25rem;height:2rem;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap}.form-label.required:after{--tw-translate-y:0.125rem;--tw-scale-x:1.25;--tw-scale-y:1.25;--tw-text-opacity:1;color:rgba(var(--color-danger-500-rgb),var(--tw-text-opacity));content:"*";display:inline-block;margin-left:.25rem;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))}.no-required .form-label.required:after{display:none}.form-label-actions{flex:1 1 auto;justify-content:flex-end}.form-label>.checkbox-primary{margin-left:.75rem}.form-tip{color:var(--form-tip-color);display:block;margin-top:.25rem}.has-error .form-tip{--tw-text-opacity:1;color:rgba(var(--color-danger-500-rgb),var(--tw-text-opacity))}.has-warning .form-tip{--tw-text-opacity:1;color:rgba(var(--color-warning-500-rgb),var(--tw-text-opacity))}.has-success .form-tip{--tw-text-opacity:1;color:rgba(var(--color-success-500-rgb),var(--tw-text-opacity))}.form-actions{display:flex;flex-direction:row;gap:1rem;justify-content:center}.form-grid{--form-grid-gap-x-half:calc(var(--form-grid-gap-x)/2);--form-grid-gap-y-half:calc(var(--form-grid-gap-y)/2);align-items:flex-start;flex-direction:row;flex-wrap:wrap;gap:0}.form-grid .form-group{padding:var(--form-grid-gap-y-half) var(--form-grid-gap-x-half)}.form-grid .form-label.required:after{margin-left:.25rem;order:-9999}.form-grid .form-label .checkbox{margin-left:.75rem;margin-right:.75rem}.form-grid .has-wrap-after:after{--tw-content:"";content:var(--tw-content);display:block;width:100%}.form-grid-wrap{width:100%}.form-grid-row{display:flex;flex-direction:row;padding-bottom:var(--form-grid-gap-y-half);padding-top:var(--form-grid-gap-y-half);position:relative;width:100%}.form-grid-col{padding-left:var(--form-grid-gap-x-half);padding-right:var(--form-grid-gap-x-half)}.form-grid .form-actions{gap:1.5rem;justify-content:center;padding:var(--form-grid-gap-y) var(--form-grid-gap-x-half);width:100%}.form-grid .form-actions.is-pinned{border-top-width:1px}.form-horz .form-group,.form-horz .form-row{align-items:flex-start;display:flex;flex-direction:row}.form-horz .form-group{flex-grow:1;flex-wrap:wrap;min-height:32px;min-width:0;padding-left:var(--form-horz-label-width);position:relative}.form-horz .form-group[class*=" w-"],.form-horz .form-group[class^=w-]{flex:none}.form-horz .form-group>*{min-width:0}.form-horz .form-group.no-label{padding-left:0}.form-horz .form-group.no-label>.check-list-inline{padding-left:1rem;padding-right:1rem}.form-horz .form-label{justify-content:flex-end;left:0;padding-left:1rem;padding-right:.5rem;position:absolute;top:0;width:var(--form-horz-label-width)}.form-horz .form-label.required:after{margin-left:0;order:-9999}.form-horz .form-tip{width:100%}.form-horz .form-tip,.form-horz .input-control,.form-horz .input-group{flex:1 1 auto}.form .form-group-wrapper,.form-horz .form-group-wrapper{flex:1 1 auto;min-width:0;width:100%;z-index:1}.form .form-group-wrapper.flex-none,.form-horz .form-group-wrapper.flex-none{flex:none}.form fieldset>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.form fieldset{padding-bottom:1rem;padding-left:1rem}.form-grid fieldset>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.form legend{--tw-border-opacity:1;border-bottom-color:rgba(var(--color-primary-100-rgb),var(--tw-border-opacity));border-bottom-width:1px;display:flex;justify-content:flex-start;margin-left:-1rem;width:100%;width:calc(100% + 1rem)}.form-title{align-items:center;background-color:rgba(var(--color-primary-50-rgb),.5);display:flex;font-weight:700;height:1.75rem;padding-left:.75rem;padding-right:.75rem}:root{--input-control-fix-width-sm:2rem;--input-control-fix-width:4.375rem;--input-control-fix-width-lg:6.75rem}.input-control{--input-control-prefix:8px;--input-control-suffix:8px;position:relative}.input-control-prefix,.input-control-suffix{align-items:center;display:flex;height:100%;left:0;opacity:.5;padding-left:.5rem;padding-right:.5rem;position:absolute;top:0;white-space:nowrap;width:var(--input-control-prefix);z-index:1}.input-control-suffix{justify-content:flex-end;left:auto;right:0;width:var(--input-control-suffix)}.form-control:focus+.input-control-prefix,.form-control:focus+.input-control-suffix{opacity:1}.input-control>.form-control{padding-left:var(--input-control-prefix);padding-right:var(--input-control-suffix)}.input-control>select.form-control{background-position-x:calc(100% - var(--input-control-suffix) - 8px);padding-right:calc(var(--input-control-suffix) + 20px)}.has-prefix{--input-control-prefix:var(--input-control-fix-width)}.has-suffix{--input-control-suffix:var(--input-control-fix-width)}.has-prefix-sm{--input-control-prefix:var(--input-control-fix-width-sm)}.has-suffix-sm{--input-control-suffix:var(--input-control-fix-width-sm)}.has-prefix-lg{--input-control-prefix:var(--input-control-fix-width-lg)}.has-suffix-lg{--input-control-suffix:var(--input-control-fix-width-lg)}.has-prefix-icon{--input-control-prefix:32px}.has-suffix-icon{--input-control-suffix:32px}.input-control.has-prefix-icon{--input-control-prefix:32px}.input-control.has-suffix-icon{--input-control-suffix:32px}.input-control.has-prefix-icon>.input-control-prefix,.input-control.has-suffix-icon>.input-control-suffix{justify-content:center;padding:0}.input-control.size-sm>.form-control,.input-control.size-sm>.input-control-prefix,.input-control.size-sm>.input-control-suffix{font-size:.75rem;line-height:1rem}.input-control.size-lg>.form-control,.input-control.size-lg>.input-control-prefix,.input-control.size-lg>.input-control-suffix{font-size:1rem;line-height:1.5rem}:root{--label-bg:rgba(var(--color-canvas-rgb),.1);--label-border-color:var(--color-gray-300);--label-color:var(--color-gray-500);--label-radius:var(--radius)}.label{--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);--tw-ring-color:var(--label-border-color);align-items:center;background-color:var(--label-bg);border-radius:var(--label-radius);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:var(--label-color);display:inline-flex;font-size:.75rem;height:1.25rem;justify-content:center;line-height:1rem;min-width:1.25rem;padding-left:.25rem;padding-right:.25rem;white-space:pre-line}.label.size-lg{font-size:.8125rem;height:1.5rem;line-height:1.25rem;min-width:1.5rem;padding-left:.5rem;padding-right:.5rem}.label.size-sm{height:1rem;min-width:1rem}.label-dot{aspect-ratio:1/1;border-radius:var(--radius-full);height:.5rem;padding-left:0;padding-right:0}.caret,.caret-down,.caret-left,.caret-right,.caret-up{align-items:center;display:inline-flex;height:.75rem;justify-content:center;position:relative;width:.75rem}.caret-down:before,.caret-left:before,.caret-right:before,.caret-up:before,.caret:before{--tw-translate-y:-1px;--tw-rotate:45deg;--tw-content:"";border-color:currentColor;border-width:0 1px 1px 0;content:var(--tw-content);display:block;height:.35rem;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));transform-origin:center;width:.35rem}.caret-left:before{--tw-translate-x:0.125rem;--tw-translate-y:0px;--tw-rotate:135deg}.caret-left:before,.caret-right:before{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))}.caret-right:before{--tw-translate-x:-0.125rem;--tw-translate-y:0px;--tw-rotate:-45deg}.caret-up:before{--tw-translate-y:0.125rem;--tw-rotate:225deg;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))}:focus>.caret,:hover>.caret{opacity:inherit}.disabled .caret,.readonly .caret{opacity:var(--caret-opacity,.5)}.listitem{align-items:center;border-radius:var(--radius);display:flex;flex-direction:row;flex-wrap:nowrap;gap:.5rem;padding:.25rem}.listitem.selected{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-50-rgb),var(--tw-bg-opacity))}.listitem.active{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgba(var(--color-primary-500-rgb),var(--tw-bg-opacity));color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity))}.item-actions,.item-avatar,.item-icon,.item-trailing,.item-trailing-icon{flex:none}.item-icon.icon-EMPTY{display:none}.item-subtitle{font-size:.75rem;line-height:1rem;opacity:.8}.item-content,.item-text{flex:1 1 auto;min-width:0}.item-leading,.item-trailing{align-items:center;display:flex;flex:none;gap:.5rem}.item-checkbox{margin-right:-.5rem}.item-content{align-items:center;display:flex;gap:.5rem}.multiline>.item-content{align-items:flex-start;flex-direction:column;gap:.25rem}.list{list-style-type:none;padding-left:0}.list-heading-inner .item-title{--tw-text-opacity:1;color:rgba(var(--color-gray-500-rgb),var(--tw-text-opacity));font-weight:700}.list.is-nested-sub{padding-left:var(--list-indent)}.is-nested-collapsed{display:none}.nested-toggle-icon{align-items:center;border-radius:var(--radius);display:flex;height:1rem;justify-content:center;margin-right:-.25rem;width:1rem}.magnifier{display:inline-block;height:1em;position:relative;width:1em}.magnifier:after,.magnifier:before{border-radius:var(--radius-full);content:"";display:block;position:absolute}.magnifier:before{border:1px solid;height:.75em;width:.75em}.magnifier:after{--tw-rotate:45deg;background-color:currentColor;height:1px;left:.55em;top:.7em;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));width:.5em}.close{aspect-ratio:1/1;display:block;position:relative;width:1em}.close:after,.close:before{--tw-rotate:45deg;background-color:currentColor;border-radius:var(--radius-full);content:"";display:block;height:1px;left:0;position:absolute;top:calc(50% - .5px);width:100%}.close:after,.close:before{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))}.close:after{--tw-rotate:-45deg}.search-box.compact.has-prefix-icon{--input-control-prefix:24px}.search-box.compact.has-suffix-icon{--input-control-suffix:24px}:root{--menu-bg:var(--color-canvas);--menu-active-bg:var(--color-primary-500);--menu-active-color:var(--color-canvas);--menu-selected-bg:var(--color-primary-50);--menu-selected-color:var(--color-primary-500);--menu-icon-opacity:.5;--menu-icon-margin:1.75rem;--menu-min-width:3rem;--menu-heading-color:var(--color-gray-500)}.menu{background:var(--menu-bg);max-width:var(--menu-max-width);min-width:var(--menu-min-width);padding:.5rem}.menu-wrapper{display:flex;flex-direction:column;min-height:0}.menu-wrapper>.menu{flex:1 1 auto;min-height:0;overflow:auto}.menu-item>.item-inner,.menu-item>a{align-items:center;border-radius:var(--radius);color:inherit;cursor:pointer;display:flex;gap:.5rem;justify-content:space-between;overflow:hidden;padding:.25rem .5rem;position:relative;text-overflow:ellipsis;transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);white-space:nowrap}.menu-item>.selected{background:var(--menu-selected-bg);color:var(--menu-selected-color)}.menu-item>.active,.menu-item>a.hover,.menu-item>a:hover{background:var(--menu-active-bg);color:var(--menu-active-color)}.menu-item.disabled>a:hover,.menu-item>a.disabled:hover{background-color:inherit;color:inherit}.menu-item>a>.item-title{flex:1 1 auto}.menu>.divider{margin:.5rem .25rem}.menu-heading{align-items:center;color:var(--menu-heading-color);display:flex;font-size:.75rem;font-weight:700;height:2rem;line-height:1rem;padding-left:.25rem;padding-right:.25rem}.has-icons>.menu-item>a>.item-icon{align-items:center;display:flex;height:1rem;justify-content:center;opacity:var(--menu-icon-opacity);width:1rem}.menu-nested{--menu-indent:10px}.menu-nested .menu{background-color:transparent;margin-bottom:-.5rem;margin-left:var(--menu-indent);margin-top:-.5rem;padding-right:0}.menu-nested .menu-item>.item-inner{padding-left:0}.menu.compact .menu-item>a{padding-bottom:.125rem;padding-top:.125rem}.menu.compact .menu-heading{height:1.75rem}.search-menu-header{padding:.5rem .5rem .125rem}.search-menu-footer{padding:.125rem .5rem .5rem}.search-menu .item.is-not-match{display:none}.search-menu .item.is-not-match.has-match-child{display:list-item}.search-menu .item.is-not-match.has-match-child>.item-inner{opacity:.5;pointer-events:none}.search-menu.no-toggle-on-search .nested-toggle-icon{pointer-events:none}.search-menu .is-match-keys{font-weight:700;text-decoration-line:underline}.search-menu-no-match-hint{--tw-text-opacity:1;color:rgba(var(--color-gray-500-rgb),var(--tw-text-opacity));display:none;font-size:.75rem;line-height:1rem;padding:.5rem}.no-match-child .search-menu-no-match-hint{display:block}.no-match-child>.menu{display:none}:root{--alert-bg:var(--color-surface)}.alert{align-items:center;background-color:var(--alert-bg);border-radius:var(--radius);display:flex;gap:.75rem;padding:.5rem .75rem}.alert-content{display:flex;flex:1 1 auto;flex-direction:column;gap:1rem}.alert-close{margin-bottom:-.375rem;margin-right:-.5rem;margin-top:-.375rem}.alert-link{color:inherit;font-weight:700}.alert-link:hover{color:inherit;text-decoration-line:underline}.alert-heading{font-weight:700;margin:0}.alert-text{flex:1 1 auto;white-space:pre-line}.alert-actions{align-items:center;display:flex;gap:.5rem}.close{aspect-ratio:1/1;display:block;position:relative;width:1em}.close:after,.close:before{--tw-rotate:45deg;background-color:currentColor;border-radius:var(--radius-full);content:"";display:block;height:1px;left:0;position:absolute;top:calc(50% - .5px);width:100%}.close:after,.close:before{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))}.close:after{--tw-rotate:-45deg}.messagers{align-items:flex-end;display:flex;flex-direction:column;gap:.5rem;inset:0;justify-content:flex-end;padding:1rem;pointer-events:none;position:fixed;z-index:1900}.messagers-top-left,.messagers-top-right{justify-content:flex-start}.messagers-bottom-left,.messagers-top-left{align-items:flex-start}.messagers-bottom,.messagers-center,.messagers-top{align-items:center}.messagers-top,.messagers-top-left,.messagers-top-right{justify-content:flex-start}.messagers-center{justify-content:center}.messager{--tw-text-opacity:1;--tw-shadow:0 10px 25px -5px rgba(0,0,0,.2),0 4px 10px -6px rgba(0,0,0,.15);--tw-shadow-colored:0 10px 25px -5px var(--tw-shadow-color),0 4px 10px -6px var(--tw-shadow-color);--tw-backdrop-blur:blur(8px);-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);background-color:rgba(var(--color-inverse-rgb),.8);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity));pointer-events:auto;transition-duration:.3s}:root{--progress-radius:var(--radius);--progress-striped-size:40px;--progress-bg:var(--color-surface);--progress-bar-color:var(--color-primary-500)}.progress{background:var(--progress-bg);border-radius:var(--progress-radius);display:flex;height:1.25rem}.progress-bar{background:var(--progress-bar-color);height:100%}.progress-striped>.progress-bar{background-image:linear-gradient(45deg,rgba(var(--color-canvas-rgb),.15) 25%,transparent 25%,transparent 50%,rgba(var(--color-canvas-rgb),.15) 50%,rgba(var(--color-canvas-rgb),.15) 75%,transparent 75%,transparent);background-size:var(--progress-striped-size) var(--progress-striped-size)}.progress>.progress-bar:first-child{border-bottom-left-radius:inherit;border-top-left-radius:inherit}.progress>.progress-bar:last-child{border-bottom-right-radius:inherit;border-top-right-radius:inherit}.progress.active .progress-bar{animation:progress-bar-stripes 2s linear infinite}@keyframes progress-bar-stripes{0%{background-position:40px 0}to{background-position:0 0}}:root{--scrollbar-size:10px;--scrollbar-opacity:.6;--scrollbar-bg:rgba(var(--color-inverse-rgb),.15);--scrollbar-inset:inset 0 0 0 1px rgba(var(--color-inverse-rgb),.05);--scrollbar-bar-bg:rgba(var(--color-inverse-rgb),.3);--scrollbar-hover-bg:rgba(var(--color-inverse-rgb),.4);--scrollbar-drag-bg:rgba(var(--color-inverse-rgb),.5);--scrollbar-radius:var(--radius-sm);--scrollbar-duration:.7s}::-webkit-scrollbar{height:var(--scrollbar-size);width:var(--scrollbar-size)}::-webkit-scrollbar-track{box-shadow:var(--scrollbar-shadow);-webkit-transition:background-color var(--scrollbar-duration);transition:background-color var(--scrollbar-duration)}::-webkit-scrollbar-track:hover,:hover::-webkit-scrollbar-track{background:var(--scrollbar-bg)}::-webkit-scrollbar-thumb{background:var(--scrollbar-bar-bg);border-radius:var(--scrollbar-radius);min-height:var(--scrollbar-size);-webkit-transition:var(--scrollbar-duration);transition:var(--scrollbar-duration);-webkit-transition-property:background-color;transition-property:background-color}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-hover-bg)}::-webkit-scrollbar-thumb:active{background:var(--scrollbar-drag-bg)}.scrollbar-thin::-webkit-scrollbar{height:calc(var(--scrollbar-size)/2);width:calc(var(--scrollbar-size)/2)}.scrollbar-hover::-webkit-scrollbar,.scrollbar-hover::-webkit-scrollbar-thumb,.scrollbar-hover::-webkit-scrollbar-track{visibility:var(--scrollbar-visibility,hidden)}.scrollbar-hover:hover::-webkit-scrollbar,.scrollbar-hover:hover::-webkit-scrollbar-thumb,.scrollbar-hover:hover::-webkit-scrollbar-track{visibility:var(--scrollbar-visibility,visible)}@font-face{font-family:ZentaoIcon;font-style:normal;font-weight:400;src:url(./icons/ZentaoIcon.eot?v=1.65);src:url(./icons/ZentaoIcon.woff?v=1.65) format("woff"),url(./icons/ZentaoIcon.ttf?v=1.65) format("truetype"),url(./icons/ZentaoIcon.svg?v=1.65#regular) format("svg")}.icon,[class*=" icon-"],[class^=icon-]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-display:block;font-family:ZentaoIcon;font-size:14px;font-style:normal;font-variant:normal;font-weight:400;line-height:1;text-transform:none}.icon:before{display:inline-block;min-width:14px;text-align:center}.icon-xs:before{font-size:.7em}.icon-sm:before{font-size:.8em}.icon-lg:before{font-size:1.25em;vertical-align:-10%}.icon-2x{font-size:28px}.icon-3x{font-size:42px}.icon-4x{font-size:56px}.icon-5x{font-size:70px}.icon-run{position:relative}.icon-run:before{opacity:.5}.icon-run:after{bottom:0;content:"\ea07";display:block;left:0;position:absolute;right:0;text-align:center;top:0}.icon-guihua:before{content:"\ea02"}.icon-memory:before{content:"\e9fd"}.icon-cpu:before{content:"\e9fe"}.icon-pause-pure:before{content:"\e9ff"}.icon-exclamation-pure:before{content:"\ea00"}.icon-zentao:before{content:"\e901"}.icon-zentao-alt:before{content:"\e900"}.icon-safe:before{content:"\ea06"}.icon-ai:before{content:"\e983"}.icon-kanban:before{content:"\e997"}.icon-college:before{content:"\e9c8"}.icon-home:before,.icon-menu-my:before{content:"\e97a"}.icon-program:before{content:"\e9aa"}.icon-lightbulb-alt:before,.icon-product:before{content:"\e98f"}.icon-project:before,.icon-rocket:before{content:"\e99c"}.icon-run:before{content:"\e9a9"}.icon-run-alt:before{content:"\ea07"}.icon-test:before{content:"\e956"}.icon-devops:before,.icon-infinite:before{content:"\e9a3"}.icon-doc:before,.icon-menu-doc:before{content:"\e99b"}.icon-statistic:before{content:"\e999"}.icon-group:before,.icon-menu-users:before,.icon-persons:before,.icon-team:before{content:"\e97e"}.icon-assets:before,.icon-diamond:before{content:"\e9ae"}.icon-flow:before{content:"\e994"}.icon-backend:before,.icon-cog-outline:before{content:"\ea05"}.icon-help:before{content:"\e968"}.icon-download:before,.icon-import:before{content:"\e904"}.icon-export:before{content:"\e905"}.icon-lightbulb:before{content:"\e91c"}.icon-close:before{content:"\e936"}.icon-check:before{content:"\e5ca"}.icon-minus:before{content:"\e926"}.icon-expand-alt:before{content:"\e6f1"}.icon-collapse-alt:before{content:"\e6f2"}.icon-fullscreen:before{content:"\e96b"}.icon-star-empty:before{content:"\e94a"}.icon-star:before{content:"\e94b"}.icon-exclamation-sign:before{content:"\e930"}.icon-info-sign:before{content:"\e9d5"}.icon-flag:before{content:"\e937"}.icon-check-circle:before{content:"\e92f"}.icon-check-sign:before{content:"\e938"}.icon-chart-pie:before{content:"\e95b"}.icon-history:before{content:"\e95f"}.icon-pencil:before{content:"\e254"}.icon-search:before{content:"\e928"}.icon-restart:before{content:"\e95e"}.icon-cog:before{content:"\e93b"}.icon-chart-line:before{content:"\e95c"}.icon-bar-chart:before,.icon-chart-bar:before{content:"\e95d"}.icon-exchange:before{content:"\e927"}.icon-severity:before{content:"\e973"}.icon-book:before{content:"\f02d"}.icon-treemap-alt:before{content:"\e971"}.icon-severity-solid:before{content:"\e902"}.icon-chat-line:before{content:"\e998"}.icon-stack:before{content:"\e943"}.icon-cube:before{content:"\e967"}.icon-minus-sign:before{content:"\e939"}.icon-bars-sign:before{content:"\e93a"}.icon-chat:before,.icon-message:before{content:"\e940"}.icon-more:before{content:"\e744"}.icon-certificate:before{content:"\f0a3"}.icon-bell:before{content:"\e7f5"}.icon-columns:before{content:"\f0db"}.icon-envelope-o:before{content:"\e92a"}.icon-unfold-all:before{content:"\e931"}.icon-fold-all:before{content:"\e932"}.icon-bars:before{content:"\e948"}.icon-cards-view:before{content:"\e949"}.icon-ellipsis-v:before{content:"\e5d4"}.icon-spinner-indicator:before{content:"\e982"}.icon-up-circle:before{content:"\e92b"}.icon-right-circle:before{content:"\e92c"}.icon-down-circle:before{content:"\e92d"}.icon-left-circle:before{content:"\e92e"}.icon-angle-double-right:before{content:"\f101"}.icon-angle-down:before{content:"\e313"}.icon-angle-left:before{content:"\e314"}.icon-angle-right:before{content:"\e315"}.icon-angle-top:before{content:"\e316"}.icon-first-page:before{content:"\e5dc"}.icon-last-page:before{content:"\e5dd"}.icon-caret-down:before{content:"\f0d7"}.icon-caret-up:before{content:"\f0d8"}.icon-caret-left:before{content:"\f0d9"}.icon-caret-right:before{content:"\f0da"}.icon-sort:before{content:"\f0dc"}.icon-sort-down:before{content:"\f0dd"}.icon-sort-up:before{content:"\f0de"}.icon-arrow-up:before{content:"\e923"}.icon-arrow-down:before{content:"\e924"}.icon-arrow-left:before{content:"\e952"}.icon-arrow-right:before{content:"\e93e"}.icon-chevron-left:before{content:"\e934"}.icon-chevron-right:before{content:"\e935"}.icon-chevron-double-up:before{content:"\e959"}.icon-chevron-double-down:before{content:"\e95a"}.icon-folder-account:before{content:"\e942"}.icon-folder-move:before{content:"\e960"}.icon-folder-plus:before{content:"\e961"}.icon-folder-upload:before{content:"\e962"}.icon-folder-star:before{content:"\e963"}.icon-folder-edit:before{content:"\e964"}.icon-folder-download:before{content:"\e965"}.icon-folder-outline:before{content:"\e966"}.icon-folder:before{content:"\e944"}.icon-folder-o:before{content:"\e945"}.icon-folder-open-o:before{content:"\e946"}.icon-folder-open:before{content:"\e947"}.icon-color:before{content:"\e93c"}.icon-paper-clip:before{content:"\e93d"}.icon-text:before{content:"\e929"}.icon-share:before{content:"\f064"}.icon-format-list-bulleted:before{content:"\e9a8"}.icon-format-bold:before{content:"\e953"}.icon-format-header-pound:before{content:"\e954"}.icon-format-italic:before{content:"\e955"}.icon-format-list-numbers:before{content:"\e969"}.icon-format-quote-close:before{content:"\e96a"}.icon-image:before{content:"\e96c"}.icon-table-large:before{content:"\e96d"}.icon-productplan:before{content:"\e9fc"}.icon-aiux:before{content:"\e99e"}.icon-qc:before{content:"\e986"}.icon-qc-q:before{content:"\e985"}.icon-qc-c:before{content:"\e987"}.icon-sonarqube:before{content:"\e9ba"}.icon-board:before{content:"\ea15"}.icon-market:before{content:"\ea01"}.icon-ztool:before{content:"\e9c1"}.icon-contacts:before{content:"\e9c3"}.icon-chats:before{content:"\e9c4"}.icon-ops:before{content:"\e903"}.icon-menu-backend:before{content:"\e993"}.icon-feedback:before{content:"\e991"}.icon-oa:before{content:"\e9a1"}.icon-more-circle:before{content:"\e988"}.icon-controls:before{content:"\e995"}.icon-account:before{content:"\e992"}.icon-about:before,.icon-info:before{content:"\e996"}.icon-exclamation:before{content:"\e9fa"}.icon-exit:before{content:"\e99a"}.icon-theme:before{content:"\e9a0"}.icon-globe:before,.icon-lang:before{content:"\f0ac"}.icon-template:before{content:"\e9fb"}.icon-seal:before{content:"\e9f8"}.icon-menu-arrow-left:before{content:"\e9f0"}.icon-menu-arrow-right:before{content:"\e9f1"}.icon-add-directory:before{content:"\e9ef"}.icon-design:before{content:"\e9ec"}.icon-download-alt:before{content:"\e9ea"}.icon-blame:before{content:"\e9e0"}.icon-draft-edit:before{content:"\e9dc"}.icon-sub-review-user:before{content:"\e9db"}.icon-sub-review:before{content:"\e9df"}.icon-ztf:before{content:"\e9dd"}.icon-save:before{content:"\e9d8"}.icon-list-box:before{content:"\e9b4"}.icon-usecase:before{content:"\e99d"}.icon-code:before{content:"\e990"}.icon-summary:before{content:"\e9ad"}.icon-more-alt:before{content:"\e9a7"}.icon-customer:before{content:"\e9d9"}.icon-treeview:before{content:"\ea0d"}.icon-or:before{content:"\ea0b"}.icon-manager:before{content:"\ea0c"}.icon-target:before{content:"\ea0a"}.icon-ipd:before{content:"\e9f9"}.icon-wiki-lib:before{content:"\e9f5"}.icon-annex-lib:before{content:"\e9f6"}.icon-interface-lib:before{content:"\e9f7"}.icon-has-authority-pack:before{content:"\e9f3"}.icon-without-authority-pack:before{content:"\e9f4"}.icon-data-structure:before{content:"\e9f2"}.icon-waterfallplus:before{content:"\e9ed"}.icon-agileplus:before{content:"\e9ee"}.icon-horn:before{content:"\e9eb"}.icon-resume:before{content:"\e9e9"}.icon-mirror:before{content:"\e9e6"}.icon-remote:before{content:"\e9e7"}.icon-moon:before{content:"\e9e8"}.icon-ticket:before{content:"\e9e1"}.icon-gantt-alt:before{content:"\e9e2"}.icon-tree:before{content:"\e9c9"}.icon-list:before{content:"\e9cb"}.icon-gantt:before{content:"\e9cc"}.icon-group-view:before{content:"\e9cd"}.icon-inherit-space:before{content:"\e9c2"}.icon-card-archive:before{content:"\e9b8"}.icon-col-archive:before{content:"\e9b9"}.icon-col-add-right:before{content:"\e9bb"}.icon-col-add-left:before{content:"\e9bc"}.icon-col-split:before{content:"\e9bd"}.icon-waterfall:before{content:"\e9a4"}.icon-manual:before{content:"\e98d"}.icon-lane:before{content:"\e9b1"}.icon-unpinned:before{content:"\ea08"}.icon-pinned:before{content:"\ea09"}.icon-support-ticket:before{content:"\ea04"}.icon-snap-house:before{content:"\e9e3"}.icon-wrench:before{content:"\e9e4"}.icon-desktop:before{content:"\e9e5"}.icon-back-circle:before{content:"\e9da"}.icon-back:before{content:"\e9d3"}.icon-shield:before{content:"\e9ca"}.icon-meh:before{content:"\e9ce"}.icon-frown:before{content:"\e9cf"}.icon-smile:before{content:"\e9d0"}.icon-unlock-solid:before{content:"\e9d1"}.icon-lock-solid:before{content:"\e9d2"}.icon-ver:before{content:"\e9c6"}.icon-publish:before,.icon-send:before{content:"\e9c7"}.icon-tag:before{content:"\e9be"}.icon-tag-lock:before{content:"\e9bf"}.icon-code-fork:before{content:"\f126"}.icon-branch-lock:before{content:"\e9c0"}.icon-groups:before{content:"\e9af"}.icon-thumbs-up:before{content:"\f087"}.icon-thumbs-down:before{content:"\f088"}.icon-thumbs-up-solid:before{content:"\e9d6"}.icon-thumbs-down-solid:before{content:"\e9d7"}.icon-hash:before,.icon-version:before{content:"\e9ab"}.icon-p-square:before{content:"\e97b"}.icon-video-play:before{content:"\e97f"}.icon-plus-solid-circle:before{content:"\e974"}.icon-minuse-solid-circle:before{content:"\e9b6"}.icon-s:before{content:"\e975"}.icon-c:before{content:"\e976"}.icon-t:before{content:"\e977"}.icon-guide:before{content:"\e978"}.icon-todo:before{content:"\e979"}.icon-plus:before{content:"\e925"}.icon-side-left:before{content:"\e9b3"}.icon-side-right:before{content:"\e9b2"}.icon-fullscreen-exit:before{content:"\e972"}.icon-alert:before{content:"\e99f"}.icon-undo:before{content:"\e93f"}.icon-redo:before{content:"\e9d4"}.icon-swap:before{content:"\e9b0"}.icon-chat-solid:before{content:"\e9b5"}.icon-clock:before{content:"\e97c"}.icon-cost:before{content:"\e97d"}.icon-pencil-alt:before{content:"\e984"}.icon-size-height:before{content:"\e9c5"}.icon-upload-file:before{content:"\ea03"}.icon-file-log:before{content:"\e9de"}.icon-rich-text:before{content:"\e913"}.icon-markdown:before{content:"\e916"}.icon-excel:before{content:"\e933"}.icon-text-link:before{content:"\e94d"}.icon-ppt:before{content:"\e957"}.icon-word:before{content:"\e958"}.icon-doc-lib:before{content:"\e96f"}.icon-file-empty:before,.icon-file:before{content:"\f016"}.icon-file-text:before{content:"\f0f6"}.icon-file-alt:before{content:"\f15b"}.icon-file-text-alt:before{content:"\f15c"}.icon-file-pdf:before{content:"\f1c1"}.icon-file-word:before{content:"\f1c2"}.icon-file-excel:before{content:"\f1c3"}.icon-file-powerpoint:before{content:"\f1c4"}.icon-file-image:before{content:"\f1c5"}.icon-file-archive:before{content:"\f1c6"}.icon-file-audio:before{content:"\f1c7"}.icon-file-video:before{content:"\f1c8"}.icon-file-code:before{content:"\f1c9"}.icon-cell-input:before{content:"\ea0e"}.icon-input:before{content:"\ea0f"}.icon-checkbox:before{content:"\ea10"}.icon-radio:before{content:"\ea11"}.icon-transition:before{content:"\ea12"}.icon-add-sub-chapter:before{content:"\ea13"}.icon-add-chapter:before{content:"\ea14"}.icon-menu-collapse:before{content:"\e980"}.icon-menu-expand:before{content:"\e981"}.icon-estimate:before{content:"\e9ac"}.icon-sprint:before{content:"\e9a2"}.icon-shield-check:before{content:"\e9a5"}.icon-ok:before{content:"\e9a6"}.icon-printer:before{content:"\e906"}.icon-bullhorn:before{content:"\e910"}.icon-person:before{content:"\e941"}.icon-fields:before{content:"\e989"}.icon-trigger:before{content:"\e98a"}.icon-layout:before{content:"\e98b"}.icon-audit:before{content:"\e98c"}.icon-ban-circle:before,.icon-cancel:before{content:"\e951"}.icon-eye:before{content:"\e94e"}.icon-eye-off:before{content:"\e96e"}.icon-unlock:before{content:"\e94f"}.icon-lock:before,.icon-private:before{content:"\e950"}.icon-move:before{content:"\e94c"}.icon-hand-right:before{content:"\e907"}.icon-checked:before{content:"\e908"}.icon-off:before{content:"\e909"}.icon-play:before,.icon-start:before{content:"\e90a"}.icon-time:before{content:"\e90b"}.icon-edit:before{content:"\e90c"}.icon-trash:before{content:"\e90d"}.icon-link:before{content:"\e90e"}.icon-unlink:before{content:"\e90f"}.icon-bug:before{content:"\e911"}.icon-list-alt:before{content:"\e912"}.icon-alter:before,.icon-change:before{content:"\e970"}.icon-glasses:before,.icon-review:before{content:"\e914"}.icon-sitemap:before,.icon-testcase:before{content:"\e915"}.icon-pluses:before{content:"\e917"}.icon-report-list:before{content:"\e918"}.icon-active:before,.icon-magic:before{content:"\e919"}.icon-treemap:before{content:"\e91a"}.icon-confirm:before{content:"\e91b"}.icon-split:before{content:"\e98e"}.icon-calendar:before,.icon-delay:before{content:"\e91d"}.icon-pause:before{content:"\e91e"}.icon-ban:before{content:"\e91f"}.icon-plus-bold:before{content:"\e920"}.icon-copy:before{content:"\e921"}.icon-refresh:before{content:"\e922"}.icon-diff:before{content:"\e9b7"}.status-active,.status-asked,.status-normal,.status-unconfirmed,.status-wait{color:#313c52}.status-active.status-issue,.status-checking,.status-commenting,.status-confirmed,.status-doing{color:#ff6f42}.status-blocked,.status-hangup,.status-pause,.status-suspended{color:#b89664}.status-clarify,.status-draft{color:#8166ee}.status-noreview,.status-reviewing,.status-wait.status-testcase{color:#18a6fd}.status-active.status-risk,.status-changed,.status-changing,.status-fail{color:#fb2b2b}.status-checked,.status-done,.status-pass,.status-replied,.status-resolved,.status-success{color:#0dbb7d}.status-cancel,.status-canceled,.status-investigate{color:#838a9d}.status-canceled,.status-closed,.status-testtask.status-done{color:#9ea3b0}.pri,[class*=" pri-"],[class^=pri-]{--tw-text-opacity:1;border-color:currentColor;border-radius:var(--radius-full);border-width:1px;color:rgba(var(--color-gray-400-rgb),var(--tw-text-opacity));display:inline-block;font-size:.75rem;height:1rem;line-height:1rem;line-height:14px;max-width:54px;min-width:16px;overflow:hidden;padding-left:.125rem;padding-right:.125rem;text-align:center;white-space:nowrap}.pri-1{color:rgb(255 73 18/var(--tw-text-opacity))}.pri-1,.pri-2{--tw-text-opacity:1}.pri-2{color:rgba(var(--color-warning-600-rgb),var(--tw-text-opacity))}.pri-3{color:rgb(59 130 246/var(--tw-text-opacity))}.pri-3,.pri-4{--tw-text-opacity:1}.pri-4{color:rgb(149 211 224/var(--tw-text-opacity))}.severity{--tw-text-opacity:1;color:rgba(var(--color-gray-400-rgb),var(--tw-text-opacity));display:inline-block;font-size:.75rem;height:1rem;line-height:1rem;line-height:14px;max-width:54px;min-width:16px;overflow:hidden;padding-left:.125rem;padding-right:.125rem;position:relative;text-align:center;white-space:nowrap}.severity:before{--tw-content:attr(data-severity);background-color:currentColor;background-repeat:no-repeat;content:var(--tw-content);height:100%;left:0;-webkit-mask:url('data:image/svg+xml;charset=utf-8,');mask:url('data:image/svg+xml;charset=utf-8,');-webkit-mask-size:100% 100%;mask-size:100% 100%;position:absolute;top:0;width:100%;z-index:0}.severity:after,.severity:before{display:inline-block}.severity:after{--tw-scale-x:.75;--tw-scale-y:.75;content:attr(data-severity);line-height:20px;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))}.severity[data-severity="1"]{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}.severity[data-severity="2"]{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity))}.severity[data-severity="3"]{--tw-text-opacity:1;color:rgb(250 174 26/var(--tw-text-opacity))}.severity[data-severity="4"]{--tw-text-opacity:1;color:rgb(184 150 100/var(--tw-text-opacity))}.severity[data-severity="5"]{--tw-text-opacity:1;color:rgb(158 163 176/var(--tw-text-opacity))}.severity-label{background-color:transparent}.severity-label:after,.severity-label:before{--tw-content:none;content:var(--tw-content)}.risk-high{color:rgb(220 38 38/var(--tw-text-opacity))}.risk-high,.risk-middle{--tw-text-opacity:1}.risk-middle{color:rgb(234 179 8/var(--tw-text-opacity))}.nav-feature{--nav-active-bg:var(--color-primary-100);--nav-active-color:var(--color-fore)}.nav-feature .nav-checkbox>.checkbox,.nav-feature .nav-checkbox>.checkbox-primary,.nav-feature .nav-item>a{align-items:center;border-radius:var(--radius);height:2rem;padding-left:.625rem;padding-right:.625rem}.nav-feature .nav-item>a>.icon{--tw-text-opacity:1;color:rgba(var(--color-primary-500-rgb),var(--tw-text-opacity))}.sortable-list .listitem{--tw-bg-opacity:1;background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));cursor:move;padding-left:.5rem;padding-right:.5rem}.sortable-list .sortable-ghost>.listitem{--tw-bg-opacity:1;background-color:rgba(var(--color-warning-50-rgb),var(--tw-bg-opacity))}:root{--avatar-radius:12.5%;--avatar-bg:var(--color-surface)}.avatar{align-items:center;aspect-ratio:1/1;background:var(--avatar-bg);border-radius:var(--avatar-radius);display:inline-flex;justify-content:center;overflow:hidden;width:2rem}.avatar>img{height:100%;margin:0;-o-object-fit:cover;object-fit:cover;width:100%}.avatar.size-xs{width:1.25rem}.avatar.size-sm,.avatar.size-xs{font-size:.75rem;line-height:1rem}.avatar.size-sm{width:1.5rem}.avatar.size-lg{font-size:1.5rem;line-height:2rem;width:3rem}.avatar.size-xl{font-size:2.25rem;line-height:2.5rem;width:5rem}.avatar-group{display:flex;gap:.625rem}.avatar-group>.avatar{box-shadow:0 0 0 1px var(--color-canvas)}.avatar-group>*+*{margin-left:-1rem}.avatar-group.size-xs>*+*{margin-left:-.75rem}.avatar-group.size-sm>*+*{margin-left:-.875rem}.avatar-group.size-lg>*+*{margin-left:-1.25rem}.avatar-group.size-xl>*+*{margin-left:-1.5rem}.btn-group{display:flex;gap:1px}.btn-group>.btn.active{z-index:1}.btn-group>.btn:focus-within,.btn-group>.btn:hover{z-index:2}.btn-group>.btn.disabled,.btn-group>.btn:disabled{z-index:-1}.btn-group>.btn:not(:first-child){border-bottom-left-radius:var(--radius-none);border-left-color:rgba(var(--color-canvas-rgb),.2);border-left-width:1px;border-top-left-radius:var(--radius-none)}.btn-group>.btn:not(:first-child):before{left:-1px}.btn-group>.btn:not(:last-child){border-bottom-right-radius:var(--radius-none);border-top-right-radius:var(--radius-none)}.color-picker-heading{align-items:center;font-weight:700;justify-content:space-between;margin-bottom:-.25rem;padding:.5rem}.color-picker-heading,.color-picker-row{display:flex;flex-direction:row}.color-picker-row{flex-wrap:wrap;gap:.5rem;padding:.75rem}.color-picker-item{--tw-text-opacity: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(var(--tw-ring-offset-width)) var(--tw-ring-color);align-items:center;border-radius:var(--radius-full);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity));display:flex;height:1.25rem;justify-content:center;padding-left:.125rem;padding-right:.125rem;width:1.25rem}.pick-container{left:0;pointer-events:none;position:absolute;top:0;z-index:1600}.pick-pop{display:flex;flex-direction:column;opacity:0;pointer-events:auto;position:absolute;transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);z-index:1200}.pick-pop.in{opacity:1}.date-picker-menu{--menu-bg:none}.date-picker-menu .mini-calendar{margin-top:-.75rem}.date-pick-menu-month,.date-pick-menu-years{display:flex;flex-direction:row;flex-wrap:wrap;gap:1px;max-height:237px;padding-bottom:.5rem;padding-left:.5rem;padding-right:.5rem}.date-pick-menu-years>.btn{width:2.5rem}.date-pick-menu-years>.btn.is-current{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgba(var(--color-primary-100-rgb),var(--tw-bg-opacity));color:rgba(var(--color-primary-500-rgb),var(--tw-text-opacity))}.date-pick-menu-month>.btn.active,.date-pick-menu-years>.btn.active{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgba(var(--color-primary-500-rgb),var(--tw-bg-opacity));color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity))}.date-pick-menu-month>.btn{width:3rem}.date-picker-menu-footer{border-top-width:1px;display:flex;flex-direction:row;padding:.25rem}.date-picker-menu-footer>.toolbar{flex:1 1 auto;justify-content:center}.date-picker-menu>.menu{border-right-width:1px}.date-picker-menu .menu-item{--tw-text-opacity:1;color:rgba(var(--color-primary-500-rgb),var(--tw-text-opacity))}.time-picker-menu{max-height:inherit}.time-picker-menu .menu-item>a{justify-content:center}.datetime-picker-menu{max-height:inherit}.mini-calendar{padding:.5rem}.mini-calendar>.row>.col{align-items:center;justify-content:center;width:14.2857%}.mini-calendar-day{height:2rem}.mini-calendar-day.disabled{--tw-bg-opacity:1;background-color:rgba(var(--color-gray-200-rgb),var(--tw-bg-opacity));opacity:.5;pointer-events:none}.mini-calendar-day>.btn{width:2rem}.mini-calendar-day.is-weekend>.btn{--tw-text-opacity:1;color:rgba(var(--color-gray-500-rgb),var(--tw-text-opacity))}.mini-calendar-day.active>.btn,.mini-calendar-day.is-today>.btn{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgba(var(--color-primary-100-rgb),var(--tw-bg-opacity));color:rgba(var(--color-primary-500-rgb),var(--tw-text-opacity))}.mini-calendar-day.selected>.btn{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgba(var(--color-primary-500-rgb),var(--tw-bg-opacity));color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity))}.mini-calendar-day.is-out-month{opacity:.5}.i-time{border-color:currentColor;border-radius:50%;border-width:.08em;display:inline-block;height:1em;position:relative;width:1em}.i-time:after{--tw-content:"";border-color:currentColor;border-width:0 0 .08em .08em;content:var(--tw-content);height:.385em;left:.3846em;position:absolute;top:.08em;width:.385em}.chevron-down,.chevron-left,.chevron-right,.chevron-up{align-items:center;display:inline-flex;height:1em;justify-content:center;position:relative;width:1em}.chevron-down:before,.chevron-left:before,.chevron-right:before,.chevron-up:before{--tw-translate-y:-0.125rem;--tw-rotate:45deg;--tw-content:"";border-color:currentColor;border-width:0 1px 1px 0;content:var(--tw-content);display:block;height:.6923077em;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));transform-origin:center;width:.6923077em}.chevron-left:before{--tw-translate-y:0px;--tw-translate-x:0.125rem;--tw-rotate:135deg}.chevron-left:before,.chevron-right:before{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))}.chevron-right:before{--tw-translate-y:0px;--tw-translate-x:-0.125rem;--tw-rotate:-45deg}.chevron-up:before{--tw-translate-y:0.125rem;--tw-rotate:225deg;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))}.i-calendar{border-radius:2px;display:inline-block;height:.79em;margin-top:.16em;position:relative;width:1em}.i-calendar,.i-calendar:after,.i-calendar:before{border-color:currentColor;border-width:.08em}.i-calendar:after,.i-calendar:before{--tw-content:"";content:var(--tw-content);position:absolute}.i-calendar:before{border-bottom-width:0;left:.15em;top:.307em;width:.6em}.i-calendar:after{border-bottom-width:0;border-top-width:0;height:.3077em;left:.17em;top:-.154em;width:.538em}:root{--modal-radius:var(--radius-lg);--modal-bg:rgba(var(--color-inverse-rgb),.4);--modal-sm:37.5rem;--modal-base:50rem;--modal-lg:75rem;--modal-xl:90rem}.modal{align-items:center;background-color:var(--modal-bg);display:none;inset:0;justify-content:center;overflow:hidden;position:fixed;z-index:1500}.modal.load-indicator:before{background-color:transparent;transition-property:none}.modal.loading:after{--tw-text-opacity:1;color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity))}.modal.loading .modal-dialog{opacity:0!important}.modal.show{display:flex}.modal-no-backdrop{background-color:transparent;pointer-events:none}.modal-hide{opacity:0!important}.modal-dialog{--tw-bg-opacity:0.9;--tw-shadow:0 10px 50px -10px rgba(0,0,0,.4),0 8px 20px -10px rgba(0,0,0,.3);--tw-shadow-colored:0 10px 50px -10px var(--tw-shadow-color),0 8px 20px -10px var(--tw-shadow-color);--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);--tw-ring-color:rgba(var(--color-inverse-rgb),var(--tw-ring-opacity));--tw-ring-opacity:0.05;--tw-backdrop-blur:blur(8px);-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);background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));border-radius:var(--modal-radius);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);pointer-events:auto;position:relative;width:var(--modal-base)}.modal-content,.modal-dialog{max-height:100vh}.modal-content{display:flex;flex-direction:column;height:100%}.loading>.modal-dialog>.modal-content{opacity:0;visibility:hidden}.close{aspect-ratio:1/1;display:block;position:relative;width:1em}.close:after,.close:before{--tw-rotate:45deg;background-color:currentColor;border-radius:var(--radius-full);content:"";display:block;height:1px;left:0;position:absolute;top:calc(50% - .5px);width:100%}.close:after,.close:before{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))}.close:after{--tw-rotate:-45deg}.modal-header{align-items:center;display:flex;flex:none;flex-wrap:nowrap;gap:1rem;padding:1rem 1.25rem;position:relative}.modal-title{flex:1 1 auto;font-size:1rem;font-weight:700;line-height:1.5rem}.modal-actions{position:absolute;right:.75rem;top:.75rem;z-index:10}.modal-body{flex:1 1 auto;overflow:auto;padding:1rem 1.25rem}.modal-footer{align-items:center;display:flex;flex:none;gap:.75rem;padding:1.25rem}.modal-dialog.size-full,.modal-dialog[data-size=full]{height:100vh;width:100vw}.modal-dialog.size-sm,.modal-dialog[data-size=sm]{width:var(--modal-sm)}.modal-dialog.size-lg,.modal-dialog[data-size=lg]{width:var(--modal-lg)}.modal-dialog.size-xl,.modal-dialog[data-size=xl]{width:var(--modal-xl)}.modal-iframe{flex:1 1 auto;width:100%}.modal-trans{opacity:0;transition-duration:.2s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.modal-trans.in{opacity:1}.modal-trans>.modal-dialog{--tw-scale-x:.95;--tw-scale-y:.95;opacity:0;transition-duration:.3s;transition-property:transform,opacity}.modal-trans.in>.modal-dialog,.modal-trans>.modal-dialog{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))}.modal-trans.in>.modal-dialog{--tw-scale-x:1;--tw-scale-y:1;opacity:1}.modal-alert .modal-footer{justify-content:flex-end}.modal-alert .modal-header{margin-bottom:-1rem}.modal-alert .modal-body{white-space:pre-line}.modal-alert .modal-actions+.modal-body{padding-right:3rem}.modal-alert .modal-header+.modal-actions+.modal-body{padding-right:1.25rem}.file-selector{gap:.5rem;width:100%}.file-selector,.file-selector-box{display:flex;flex-direction:column}.file-selector-box{--tw-border-opacity:1;--tw-ring-color:transparent;--state-color:rgba(var(--color-primary-500-rgb),.05);background-color:rgba(var(--color-primary-50-rgb),.3);border-color:rgba(var(--color-primary-400-rgb),var(--tw-border-opacity));border-style:dashed;border-width:1px;gap:0;height:auto;justify-content:center;padding:.5rem .75rem;position:relative}.file-selector-box .text{--tw-text-opacity:1;color:rgba(var(--color-primary-500-rgb),var(--tw-text-opacity))}.is-dragging .file-selector-box{border-style:solid}.file-selector-btn{align-items:center;display:flex;gap:.5rem;position:relative}.is-dragging .file-selector-btn{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-50-rgb),var(--tw-bg-opacity))}.file-selector-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;inset:0;opacity:.1;position:absolute}.file-selector-tip{--tw-text-opacity:1;color:rgba(var(--color-gray-400-rgb),var(--tw-text-opacity))}.file-selector.is-mode-button{flex-direction:column-reverse}.file-selector-list.is-empty{display:none}.file-selector-item .item-avatar{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgba(var(--color-gray-50-rgb),var(--tw-bg-opacity));color:rgba(var(--color-gray-500-rgb),var(--tw-text-opacity))}.file-selector-item .item-subtitle{--tw-text-opacity:1;color:rgba(var(--color-gray-400-rgb),var(--tw-text-opacity))}.file-selector-item .item-content{flex:none;margin-right:.25rem;max-width:100%}.file-selector-item>.listitem:hover{background-color:rgba(var(--color-gray-500-rgb),.05)}.file-selector-item.is-renaming .item-avatar+.item-content{max-width:calc(100% - 32px)}.file-selector-rename-text{max-width:100%;min-width:100px;position:relative}.file-selector-rename-text>div{overflow:hidden;pointer-events:none;visibility:hidden;white-space:nowrap}.file-selector-rename-input{inset:0;position:absolute}.file-selector-grid{--tw-bg-opacity:1;align-items:flex-start;background-color:rgba(var(--color-surface-light-rgb),var(--tw-bg-opacity));border-color:transparent;border-radius:var(--radius);border-width:1px;display:flex;flex-direction:row;flex-wrap:wrap;gap:var(--file-selector-grid-gap);padding:.5rem}.file-selector-grid-item{height:var(--file-selector-grid-height)}.file-selector-grid-btn,.file-selector-grid-item{width:var(--file-selector-grid-width)}.file-selector-grid-btn{--tw-border-opacity:1;--tw-ring-color:transparent;--state-color:rgba(var(--color-primary-500-rgb),.05);aspect-ratio:1/1;background-color:rgba(var(--color-primary-50-rgb),.3);border-color:rgba(var(--color-primary-400-rgb),var(--tw-border-opacity));border-style:dashed;border-width:1px;display:flex;flex-direction:column;gap:0;height:auto;justify-content:center;padding:.5rem}.file-selector-grid-btn .text{--tw-text-opacity:1;color:rgba(var(--color-primary-500-rgb),var(--tw-text-opacity))}.file-selector-grid-item .listitem{flex-direction:column;height:100%;padding:0;position:relative;width:100%}.file-selector-grid-item .item-avatar{--tw-text-opacity:1;border-radius:var(--radius);border-width:1px;color:rgba(var(--color-gray-500-rgb),var(--tw-text-opacity));width:100%}.file-selector-grid-item .item-avatar.has-icon>.icon{font-size:calc(var(--file-selector-grid-width)/2)}.file-selector-grid-item .item-content,.file-selector-grid-item .toolbar{aspect-ratio:1/1;left:0;position:absolute;right:0;top:0;width:100%}.file-selector-grid-item .item-title{bottom:-1.25rem;font-size:.75rem;left:0;line-height:1rem;overflow:hidden;position:absolute;right:1.5rem;white-space:nowrap}.file-selector-grid-item .item-subtitle{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgba(var(--color-fore-rgb),var(--tw-bg-opacity));border-radius:var(--radius-full);bottom:.25rem;color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity));font-size:.75rem;left:.25rem;line-height:1rem;opacity:0;padding-left:.25rem;padding-right:.25rem;position:absolute;transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.file-selector-grid-item:hover .item-subtitle{opacity:1}.file-selector-grid-item .toolbar .btn[data-remove-file]{--tw-text-opacity:1;background-color:rgba(var(--color-inverse-rgb),.5);color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity));padding:.375rem;position:absolute;right:1px;top:1px}.file-selector-grid-item .toolbar .btn[data-rename-file]{bottom:-1.5rem;padding:0;position:absolute;right:0}.file-selector-grid .file-selector-rename{bottom:0;height:1.5rem;position:absolute;top:auto}.file-selector-grid .file-selector-rename-text{width:100%}.is-dragging .file-selector-grid{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgba(var(--color-primary-50-rgb),var(--tw-bg-opacity));border-color:rgba(var(--color-primary-400-rgb),var(--tw-border-opacity));border-width:1px}:root{--nav-radius:var(--radius);--nav-active-color:var(--color-primary-500);--nav-active-bg:var(--color-inherit);--nav-heading-color:var(--color-gray-500)}.nav{list-style-type:none;padding-left:0}.nav,.nav-item{align-items:center;display:flex;position:relative}.nav-item{gap:.75rem}.nav-item>a{align-items:center;color:inherit;cursor:pointer;display:flex;gap:.25rem;height:2rem;justify-content:center;padding-left:1rem;padding-right:1rem}.nav-item>a>.text{white-space:nowrap}.nav-item>.active{background:var(--nav-active-bg);color:var(--nav-active-color);font-weight:700}.nav-item>.disabled{opacity:1}.nav-item>.disabled>*{opacity:var(--opacity-disabled)}.nav-divider,.nav>.divider{margin:.5rem}.nav-heading{align-items:center;color:var(--nav-heading-color);display:flex;font-weight:700;gap:.25rem;height:2rem;justify-content:center;padding-left:1rem;padding-right:1rem}.nav-space{flex:1 1 auto;width:1rem}.nav-compact{gap:.25rem}.nav-compact .nav-item{gap:.5rem}.nav-compact .nav-item>a{height:1.75rem;padding-left:.5rem;padding-right:.5rem}.nav-primary>.nav-item{position:relative}.nav-primary>.nav-item:hover{z-index:10}.nav-primary>.nav-item+.nav-item{margin-left:-1px}.nav-primary>.nav-item>a{border-radius:var(--radius-none);border-width:1px}.nav-primary>.nav-item:first-child>a,.nav-primary>.nav-item:has(.nav-heading)+.nav-item>a{border-bottom-left-radius:var(--nav-radius);border-top-left-radius:var(--nav-radius)}.nav-primary>.nav-item:last-child>a{border-bottom-right-radius:var(--nav-radius);border-top-right-radius:var(--nav-radius)}.nav-primary>.nav-item>.active{--tw-text-opacity:1;background:var(--nav-active-color);border-color:var(--nav-active-color);color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity))}.nav-primary>.nav-divider{display:none}.nav-secondary>.nav-item>a{border-radius:var(--radius-none);position:relative}.nav-secondary>.nav-item>a:after{--tw-bg-opacity:1;--tw-content:"";background-color:rgba(var(--color-border-rgb),var(--tw-bg-opacity));bottom:-2px;content:var(--tw-content);display:block;height:2px;left:0;position:absolute;right:0}.nav-secondary>.nav-item>.active:after{background-color:currentColor}.nav-secondary>.nav-divider{margin:0 0 0 -1px}.nav-tabs>.nav-item>a{border-bottom-left-radius:var(--radius-none);border-bottom-right-radius:var(--radius-none);position:relative}.nav-tabs>.nav-item>a:after{--tw-border-opacity:1;--tw-content:"";border-color:transparent;border-bottom-color:rgba(var(--color-border-rgb),var(--tw-border-opacity));border-top-left-radius:inherit;border-top-right-radius:inherit;border-width:1px;content:var(--tw-content);display:block;inset:-1px;pointer-events:none;position:absolute}.nav-tabs>.nav-item>.active:after{--tw-border-opacity:1;border-color:rgba(var(--color-border-rgb),var(--tw-border-opacity));border-bottom-color:transparent}.nav-tabs>.nav-divider{margin:0 0 0 -1px}.nav-pills>.nav-item>a{border-radius:var(--radius-full)}.nav-pills>.nav-item>.active{--tw-text-opacity:1;background:var(--nav-active-color);border-color:var(--nav-active-color);color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity))}.nav-stacked{flex-direction:column}.nav-stacked>.nav-item{width:100%}.nav-stacked>.nav-heading,.nav-stacked>.nav-item>a{justify-content:flex-start;width:100%}.nav-stacked>.nav-divider{height:1px;margin:.5rem 0;width:100%}.nav-primary.nav-stacked>.nav-item>a{height:2.5rem}.nav-primary.nav-stacked>.nav-item+.nav-item{margin-left:0;margin-top:-1px}.nav-primary.nav-stacked>.nav-item:first-child>a{border-bottom-left-radius:0;border-top-left-radius:var(--nav-radius);border-top-right-radius:var(--nav-radius)}.nav-primary.nav-stacked>.nav-item:last-child>a{border-bottom-left-radius:var(--nav-radius);border-bottom-right-radius:var(--nav-radius);border-top-right-radius:0}.nav-secondary.nav-stacked>.nav-item>a:after{--tw-bg-opacity:1;background-color:rgba(var(--color-border-rgb),var(--tw-bg-opacity));bottom:0;height:100%;left:auto;right:0;top:0;width:2px}.nav-secondary.nav-stacked>.nav-item>.active:after{background-color:currentColor}.nav-secondary.nav-stacked>.nav-divider{margin:0}.nav-tabs.nav-stacked>.nav-item>a{border-bottom-left-radius:var(--nav-radius);border-bottom-right-radius:var(--radius-none);border-top-right-radius:var(--radius-none);position:relative}.nav-tabs.nav-stacked>.nav-item>a:after{--tw-border-opacity:1;border-bottom-color:transparent;border-bottom-left-radius:inherit;border-right-color:rgba(var(--color-border-rgb),var(--tw-border-opacity));border-top-left-radius:inherit}.nav-tabs.nav-stacked>.nav-item>a.active:after{--tw-border-opacity:1;border-color:rgba(var(--color-border-rgb),var(--tw-border-opacity));border-right-color:transparent}.nav-tabs.nav-stacked>.nav-divider{margin:0}.nav-pills.nav-stacked>.nav-item+.nav-item{margin-top:.25rem}.nav-justified>.nav-item:not(.flex-none,.nav-divider){flex:1 1 auto}.nav-justified>.nav-item>a{width:100%}.arrow,.arrow:before{background:inherit;height:calc(var(--arrow-size)*1.4142);position:absolute;width:calc(var(--arrow-size)*1.4142)}.arrow{--arrow-size:5px;visibility:hidden}.arrow:before{--tw-rotate:45deg;border:inherit;content:"";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));visibility:visible}.arrow-top,.arrow-up{border-bottom:inherit;border-right:inherit;border-width:1px 0 0 1px;top:calc(1px - var(--arrow-size))}.white>.arrow-top,.white>.arrow-up{top:calc(0px - var(--arrow-size))}.arrow-bottom,.arrow-down{border-left:inherit;border-top:inherit;border-width:0 1px 1px 0;bottom:calc(1px - var(--arrow-size))}.white>.arrow-bottom,.white>.arrow-down{bottom:calc(0px - var(--arrow-size))}.arrow-left{border-right:inherit;border-top:inherit;border-width:0 0 1px 1px;left:calc(1px - var(--arrow-size))}.white>.arrow-left{left:calc(0px - var(--arrow-size))}.arrow-right{border-bottom:inherit;border-left:inherit;border-width:1px 1px 0 0;right:calc(1px - var(--arrow-size))}.white>.arrow-right{right:calc(0px - var(--arrow-size))}.popover{display:none;position:absolute;width:-moz-max-content;width:max-content}.popover.show{display:block}.popover-heading{--tw-bg-opacity:1;align-items:center;background-color:rgba(var(--color-surface-rgb),var(--tw-bg-opacity));border-top-left-radius:inherit;border-top-right-radius:inherit;display:flex;gap:1rem;height:2.5rem;justify-content:space-between;padding-left:.75rem;padding-right:.5rem;position:relative;z-index:1}.popover-title{flex:1 1 auto;font-weight:700}.popover-content{padding:.75rem;position:relative;z-index:1}.popover-arrow{z-index:0}.has-heading>.popover-arrow.arrow-top,.has-heading>.popover-arrow.arrow-up{--tw-bg-opacity:1;background-color:rgba(var(--color-surface-rgb),var(--tw-bg-opacity))}.popover>.btn-close{position:absolute;right:.5rem;top:.625rem;z-index:2}.btn-close+.popover-content{padding-right:3rem}.btn.with-popover-show{--tw-shadow:inset 0 2px 4px 0 rgba(0,0,0,.05);--tw-shadow-colored:inset 0 2px 4px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.with-popover-show[data-pop-placement=top]>.caret{--tw-rotate:180deg}.with-popover-show[data-pop-placement=left]>.caret,.with-popover-show[data-pop-placement=top]>.caret{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))}.with-popover-show[data-pop-placement=left]>.caret{--tw-rotate:90deg}.with-popover-show[data-pop-placement=right]>.caret{--tw-rotate:-90deg;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))}.pager{align-items:center;display:flex;gap:.25rem;white-space:nowrap}.menu.pager-size-menu{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));text-align:center}.menu.pager-size-menu>.menu-item>a{margin:.125rem}.pager .pager-goto-group>.form-control{width:3rem}.pager .pager-goto-group>.input-group-addon{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));border-color:rgba(var(--color-gray-300-rgb),var(--tw-border-opacity));border-width:1px}.pager>.pager-nav.active{--tw-text-opacity:1;box-shadow:0 0 0 1px var(--color-primary-500);color:rgba(var(--color-primary-500-rgb),var(--tw-text-opacity))}.panel{--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);--tw-ring-color:rgba(var(--color-inverse-rgb),var(--tw-ring-opacity));--tw-ring-opacity:0.05;border-radius:var(--radius);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);overflow:hidden}.panel-heading{background-color:var(--panel-heading-bg);flex-wrap:nowrap;gap:1rem;justify-content:space-between;padding:.5rem 1rem}.panel-heading,.panel-title{align-items:center;display:flex}.panel-title{font-weight:700;gap:.5rem;margin:0}.panel-actions{align-items:center;display:flex;margin-right:-.5rem}.panel-body{padding:.75rem 1rem}.panel-footer{align-items:center;background-color:var(--panel-footer-bg);display:flex;gap:.5rem;padding:.5rem 1rem}.size-sm .panel-body,.size-sm .panel-footer,.size-sm .panel-heading{padding:.375rem .75rem}.size-lg .panel-body,.size-lg .panel-footer,.size-lg .panel-heading{padding:1rem 1.25rem}.picker{position:relative}.picker-select{align-items:center;gap:.25rem;justify-content:space-between}.picker-select,.picker-select.form-control{display:flex}.picker-select-placeholder{--tw-text-opacity:1;color:rgba(var(--color-placeholder-rgb),var(--tw-text-opacity));flex:1 1 auto}.picker-select-multi .picker-select-placeholder{padding-left:.25rem;padding-right:.25rem}.picker-single-selection{flex:1 1 auto;min-width:0;overflow:hidden;white-space:nowrap}.picker-deselect-btn{border-radius:var(--radius-full);padding:.25rem}.picker-deselect-btn:not(:hover){opacity:.7}.picker-select-multi.form-control{height:auto;min-height:32px;padding-left:.25rem}.picker-multi-selections{display:flex;flex-wrap:wrap;gap:.25rem;min-width:0}.picker-multi-selection{--tw-bg-opacity:1;align-items:center;background-color:rgba(var(--color-surface-rgb),var(--tw-bg-opacity));border-radius:var(--radius-full);border-width:1px;display:flex;max-width:100%;padding-left:.5rem}.readonly .picker-multi-selection{padding-right:.5rem}.picker-multi-selection>.text{max-width:180px;overflow:clip;white-space:nowrap}.picker-menu-list{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;border-style:none;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);flex:1 1 auto;min-height:0;overflow-y:auto}.picker-menu-search+.picker-menu-list.menu{margin-top:-.125rem;padding-top:0}.picker-menu-list.tree{padding:.5rem}.picker-menu .search-menu-footer{border-top-width:1px;padding-bottom:.25rem;padding-top:.25rem}.picker-search-input{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)!important;border-color:transparent;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important;height:1.75rem;outline-width:0!important;padding-left:0;padding-right:2rem}.picker-search{flex:none;position:relative;width:100%}.picker-search>.magnifier{opacity:.5;position:absolute;right:0;top:.5rem}.picker-search-clear.btn{cursor:pointer;height:1.25rem;position:absolute;right:0;top:.25rem;width:1.25rem}.picker-search.is-inline{min-width:64px;width:4rem}.is-inline>.picker-search-input{height:1.25rem;min-width:64px;padding-left:.25rem;padding-right:.25rem}.picker-search-measure{height:0;left:0;overflow:hidden;position:absolute;top:0;white-space:nowrap}.split{display:flex;flex-direction:row}.split-vert{flex-direction:column}.split-cell{min-height:0;min-width:0}.has-animation>.split-cell{transition-duration:.15s;transition-property:width,height;transition-timing-function:cubic-bezier(.4,0,.2,1)}.gutter{align-items:stretch;border-radius:var(--radius);cursor:col-resize;display:flex;flex:none;flex-direction:row;justify-content:center;position:relative}.gutter-vert{cursor:row-resize;flex-direction:column}.gutter:before{--tw-bg-opacity:1;--tw-content:"";background-color:rgba(var(--color-border-rgb),var(--tw-bg-opacity));content:var(--tw-content);display:block;transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.gutter-horz:before{width:1px}.gutter-vert:before{height:1px}.gutter-horz:hover:before{width:75%}.gutter-vert:hover:before{height:75%}.gutter-resize-handler,.gutter-toggle{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;align-items:center;background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));border-color:rgba(var(--color-border-rgb),var(--tw-border-opacity));border-radius:var(--radius-lg);border-width:1px;color:rgba(var(--color-fore-rgb),var(--tw-text-opacity));display:flex;height:1.75rem;justify-content:center;margin-top:-.875rem;position:absolute;top:50%;transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);width:.75rem}.gutter-toggle>span{--tw-scale-x:.75;--tw-scale-y:.75;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));transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.gutter:hover .gutter-toggle{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgba(var(--color-gray-100-rgb),var(--tw-bg-opacity));border-color:rgba(var(--color-gray-500-rgb),var(--tw-border-opacity));color:rgba(var(--color-gray-500-rgb),var(--tw-text-opacity))}.gutter .gutter-toggle:hover{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgba(var(--color-primary-500-rgb),var(--tw-bg-opacity));border-color:rgba(var(--color-primary-500-rgb),var(--tw-border-opacity));color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity))}.is-last>.gutter-toggle{--tw-scale-x:-1}.is-first>.gutter-toggle,.is-last>.gutter-toggle{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))}.is-first>.gutter-toggle{--tw-scale-x:1}.gutter-vert .gutter-toggle{--tw-rotate:90deg;left:50%;margin-left:-.375rem;margin-top:0;top:auto}.gutter-vert .gutter-toggle,.gutter.is-next-collapsed>.gutter-toggle{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))}.gutter.is-next-collapsed>.gutter-toggle{--tw-scale-x:1}.gutter.is-prev-collapsed>.gutter-toggle{--tw-scale-x:-1;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))}.gutter-horz.is-first.is-prev-collapsed{transform:translateX(calc(-1px - var(--split-gutter-size)/2))}.gutter-horz.is-last.is-next-collapsed{transform:translateX(calc(1px + var(--split-gutter-size)/2))}.gutter-vert.is-first.is-prev-collapsed{transform:translateY(calc(-1px - var(--split-gutter-size)/2))}.gutter-vert.is-last.is-next-collapsed{transform:translateY(calc(1px + var(--split-gutter-size)/2))}.gutter-resize-handler{background-color:transparent;border-width:0}.gutter-resize-handler:before{--tw-content:"";border-left-width:1px;border-right-width:1px;bottom:0;content:var(--tw-content);left:.25rem;position:absolute;right:.25rem;top:0}.sidebar{--gutter-width:1px;--sidebar-duration:200ms;flex:none!important;position:relative}.has-sidebar-animation .sidebar{transition-duration:.15s;transition-duration:var(--sidebar-duration);transition-property:width,margin;transition-timing-function:cubic-bezier(.4,0,.2,1)}.sidebar-left.is-collapsed{margin-left:calc(var(--gutter-width)*-1)}.sidebar-right.is-collapsed{margin-right:calc(var(--gutter-width)*-1)}.sidebar.is-collapsed>*,.sidebar.is-expanded.is-animating>*{display:none}.sidebar.is-collapsed>.sidebar-gutter{display:flex!important}.sidebar-gutter{bottom:0;left:100%;position:absolute;top:0;width:var(--gutter-width)}.sidebar-right>.sidebar-gutter{left:auto;right:100%}.is-collapsed>.gutter>.gutter-toggle>span{--tw-rotate:-180deg;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))}.sidebar-gutter:before{border-radius:var(--radius-full);opacity:0}.sidebar-gutter:hover:before{opacity:1;width:.5rem}.is-expanded .sidebar-gutter.gutter-border:before{opacity:1}.is-sidebar-resizing{cursor:col-resize}:root{--table-head-bg:var(--color-surface);--table-striped-color:var(--color-gray-50);--table-hover-color:rgba(var(--color-primary-500-rgb),.05);--table-border-color:var(--color-border)}.table{border-color:var(--table-border-color);width:100%}.table>thead{background-color:var(--table-head-bg)}.table>*>tr{border-bottom-width:1px}.table>*>tr>*{padding:.5rem 1rem}.table-striped>tbody>tr:nth-child(2n){background:var(--table-striped-color)}.table-hover>tbody>tr:hover>*{background:var(--table-hover-color)}.table.bordered>*>tr>*{border-width:1px}.table.borderless>*>tr,.table.borderless>*>tr>*{border-style:none}.condensed>*>tr>*{padding:.375rem .75rem}.table-fixed{table-layout:fixed}.table-fixed>*>tr>*{overflow:hidden;white-space:nowrap}.toolbar{align-items:center;display:flex;position:relative}.toolbar>.divider{--tw-bg-opacity:1;background-color:rgba(var(--color-border-rgb),var(--tw-bg-opacity));margin:.5rem;width:1px}.toolbar-space{flex:1 1 auto;height:1px;width:1px}.toolbar>.dropdown.show{align-items:center;display:flex;position:relative}:root{--tooltip-bg:var(--skin-color,var(--color-inverse));--tooltip-text:var(--skin-text,var(--color-canvas));--tooltip-arrow:6px;--tooltip-delay:0.5s}.hint,[class*=" hint-"],[class^=hint-]{position:relative}.hint:before,[class*=" hint-"]:before,[class^=hint-]:before{--tw-content:"";border-color:var(--tooltip-bg) transparent transparent transparent;border-style:solid;border-width:var(--tooltip-arrow) var(--tooltip-arrow) 0 var(--tooltip-arrow);content:var(--tw-content);height:0;margin-bottom:calc(0px - var(--tooltip-arrow));position:absolute;width:0}.hint:after,[class*=" hint-"]:after,[class^=hint-]:after{--tw-shadow:0 3px 8px 0 rgba(0,0,0,.04),0 1px 2px -1px rgba(0,0,0,.01);--tw-shadow-colored:0 3px 8px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);--tw-content:attr(data-hint);background-color:var(--tooltip-bg);border-color:var(--tooltip-color);border-radius:var(--radius);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);color:var(--tooltip-text);content:var(--tw-content);font-size:.75rem;line-height:1rem;max-width:28rem;overflow:hidden;padding:.25rem .5rem;position:absolute;text-shadow:0 1px 0 var(--tooltip-bg);white-space:nowrap}.hint:after,.hint:before,[class*=" hint-"]:after,[class*=" hint-"]:before,[class^=hint-]:after,[class^=hint-]:before{--tw-translate-x:-50%;--tw-translate-y:calc(var(--tooltip-arrow)*-1);bottom:100%;left:50%;opacity:0;pointer-events:none;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));transition-delay:0s;transition-duration:.15s;transition-property:opacity,visibility;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,1,1);visibility:hidden;z-index:1800}.hint:hover:after,.hint:hover:before,[class*=" hint-"]:hover:after,[class*=" hint-"]:hover:before,[class^=hint-]:hover:after,[class^=hint-]:hover:before{opacity:1;transition-delay:var(--tooltip-delay);visibility:visible}.hint-bottom:before{border-color:transparent transparent var(--tooltip-bg) transparent;border-width:0 var(--tooltip-arrow) var(--tooltip-arrow) var(--tooltip-arrow);margin-bottom:auto;margin-top:calc(0px - var(--tooltip-arrow))}.hint-bottom:after,.hint-bottom:before{--tw-translate-y:var(--tooltip-arrow);bottom:auto;top: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))}.hint-left:before{border-color:transparent transparent transparent var(--tooltip-bg);border-width:var(--tooltip-arrow) 0 var(--tooltip-arrow) var(--tooltip-arrow);margin-bottom:auto;margin-right:calc(0px - var(--tooltip-arrow))}.hint-left:after,.hint-left:before{--tw-translate-x:calc(var(--tooltip-arrow)*-1);--tw-translate-y:50%;bottom:50%;left:auto;right: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))}.hint-right:before{border-color:transparent var(--tooltip-bg) transparent;border-width:var(--tooltip-arrow) var(--tooltip-arrow) var(--tooltip-arrow) 0;margin-bottom:auto;margin-left:calc(0px - var(--tooltip-arrow))}.hint-right:after,.hint-right:before{--tw-translate-x:var(--tooltip-arrow);--tw-translate-y:50%;bottom:50%;left: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))}.hint-lg:after,.hint-sm
+.hint-md:after:after,.hint-xl:after{white-space:normal;word-break:break-all}.hint-sm:after{width:4rem}.hint-md:after{width:8rem}.hint-lg:after{width:16rem}.hint-xl:after{width:24rem}.hint-primary{--tooltip-bg:var(--color-primary-500)}.hint-success{--tooltip-bg:var(--color-success-500)}.hint-danger{--tooltip-bg:var(--color-danger-500)}.hint-warning{--tooltip-bg:var(--color-warning-500)}.hint-important{--tooltip-bg:var(--color-important-500)}.hint-special{--tooltip-bg:var(--color-special-500)}.tooltip{background-color:var(--tooltip-bg);border-color:var(--tooltip-color);border-radius:var(--radius);color:var(--tooltip-text);font-size:.75rem;line-height:1rem;max-width:28rem;padding:.25rem .5rem;z-index:1800}.tooltip:not(.white)>.arrow{border-width:0}.tooltip.white>.arrow{border-color:inherit}.tooltip-has-title{--tw-bg-opacity:0.8;--tw-shadow:0 10px 25px -5px rgba(0,0,0,.2),0 4px 10px -6px rgba(0,0,0,.15);--tw-shadow-colored:0 10px 25px -5px var(--tw-shadow-color),0 4px 10px -6px var(--tw-shadow-color);--tw-backdrop-blur:blur(8px);-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);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);padding:.5rem .75rem .75rem}.tooltip-has-title>.arrow{opacity:.75}.tooltip-heading{align-items:center;display:flex;font-size:.8125rem;font-weight:700;gap:1rem;justify-content:space-between;line-height:1.25rem;padding:.25rem}.tooltip-heading>.btn-close{margin-right:-.25rem}.tooltip-content{padding:.25rem}.tree-item-inner{flex-direction:row;min-height:24px;padding-left:var(--list-nested-indent)}.tree-item-inner,.tree-toggle{align-items:center;display:flex}.tree-toggle{--caret-size:5px;--caret-opacity:.3;border-radius:var(--radius);flex:none;height:1rem;justify-content:center;margin-right:-.375rem;width:1rem}.tree-item-inner>.item-icon{opacity:.5;width:1rem}.tree-item-inner:hover>.item-icon{opacity:.8}.tree-item-inner.has-hover{border-radius:var(--radius)}.tree-item-inner .item-title:not(:hover),.tree-item-inner>a.item-title:not(:hover){color:inherit}.tree-item-inner>.toolbar{margin-left:1rem;opacity:.6}.tree-item-inner:hover>.toolbar{opacity:1}.tree-item>.active{background:var(--menu-active-bg);color:var(--menu-active-color)}.tree-item>.selected{background:var(--menu-selected-bg)}.tree-item>.selected .item-content{color:var(--menu-selected-color);font-weight:700}.tree.search-menu-on-top>.search-box{left:0;right:0}.upload .upload-tip{--tw-text-opacity:1;color:rgba(var(--color-gray-400-rgb),var(--tw-text-opacity))}.upload .draggable-area{background-color:rgba(var(--color-primary-50-rgb),.2);border:1px dashed var(--color-primary-300)}.upload .draggable-area.dragover{background-color:rgba(var(--color-primary-500-rgb),.1);border-style:solid}.upload .upload-tip{color:var(--color-slate-500)}.file-item>.img{height:120px;width:120px}.upload .file-item:hover .file-size{display:flex!important}.form-batch-container{overflow-y:auto}.form-batch-table{--table-head-bg:var(--color-canvas);min-width:100%;table-layout:fixed}.form-batch-table>*>tr>*{padding-left:.375rem;padding-right:.375rem;vertical-align:top}.form-batch-table>*>tr>th{text-align:left;vertical-align:middle}.form-batch-head[data-name=ACTIONS]{width:5rem}.form-batch-label{display:inline}.form-batch-control>textarea.form-control{height:2rem}.form-batch-btn+.btn{margin-left:.25rem}.form-batch-table>tbody[data-count="1"] .form-batch-btn[data-type=delete]{display:none}.form-batch-ditto{position:relative}.form-batch-ditto-btn{bottom:0;height:auto;opacity:.5;padding-left:.5rem;padding-right:.5rem;position:absolute!important;right:0;top:0}.form-batch-ditto-btn:after{--tw-bg-opacity:1;--tw-content:"";background-color:rgba(var(--color-border-rgb),var(--tw-bg-opacity));bottom:.5rem;content:var(--tw-content);left:-1px;position:absolute;top:.5rem;width:1px}[data-ditto=on] .form-batch-ditto-btn{--tw-text-opacity:1;color:rgba(var(--color-primary-500-rgb),var(--tw-text-opacity));opacity:1}.form-batch-row-actions{padding-bottom:.75rem!important;padding-top:.75rem!important}.form-batch-ditto-control .form-control{padding-right:calc(var(--form-batch-ditto-width) + 8px)}.form-batch-ditto-control .input-control>.input-control-suffix{right:var(--form-batch-ditto-width)}.form-batch-ditto-control .input-control>.form-control{padding-right:calc(var(--form-batch-ditto-width) + var(--input-control-suffix))}.form-batch-ditto-control .pick-pri{padding-right:calc(var(--form-batch-ditto-width) + 8px)}.dropmenu-btn{gap:.25rem;padding-left:.5rem;padding-right:.5rem}.dropmenu-btn>.text{max-width:180px;overflow:hidden}.dropmenu-btn>.is-leading{left:-.625rem;position:absolute}.dropmenu-btn>.is-caret{align-items:center;background-color:rgba(var(--color-canvas-rgb),.2);border-radius:var(--radius);display:flex;height:1rem;justify-content:center;width:1rem}.dropmenu-nav{border-bottom-width:1px;margin-left:.75rem;margin-right:.75rem;margin-top:.25rem}.has-search .dropmenu-nav{margin-top:-.5rem}.dropmenu-nav>.nav-secondary{gap:.5rem}.dropmenu-nav>.nav-secondary>.nav-item>a{border-radius:var(--radius);padding-left:.5rem;padding-right:.5rem}.dropmenu-nav>.nav-secondary>.nav-item>a:after{bottom:-1px;left:1rem;opacity:0;right:1rem}.dropmenu-nav>.nav-secondary>.nav-item>.active:after{left:.5rem;opacity:1;right:.5rem;transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dropmenu-title{--tw-text-opacity:1;color:rgba(var(--color-gray-500-rgb),var(--tw-text-opacity));font-size:.75rem;font-weight:700;line-height:1rem;margin-bottom:-.5rem;padding:.75rem}.dropmenu-list{min-height:0;overflow-x:hidden;overflow-y:auto;padding:.5rem .75rem}.dropmenu.loading>*{opacity:0}.dropmenu-item .tree-item-inner{border-radius:var(--radius);cursor:pointer;transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dropmenu-item.is-item.active>.tree-item-inner{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgba(var(--color-primary-50-rgb),var(--tw-bg-opacity));color:rgba(var(--color-primary-500-rgb),var(--tw-text-opacity))}.tree-item-inner.is-link:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgba(var(--color-primary-500-rgb),var(--tw-bg-opacity));color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity))}.tree-item-inner.is-link:hover .item-content,.tree-item-inner.is-link:hover .item-trailing-icon,.tree-item-inner.is-link:hover .label{color:inherit}.tree-item-inner.is-toggle:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-gray-100-rgb),var(--tw-bg-opacity))}.dropmenu-item+.tree-item{margin-top:.125rem}.dropmenu-item .is-match{font-weight:700;text-decoration-line:underline}.dropmenu-item .item-title,.dropmenu-item .label{overflow:hidden;white-space:nowrap}.dropmenu-item .item-content{padding-left:.375rem;padding-right:.375rem}.dropmenu-item *+.item-content{padding-left:0}.tree-item-inner.is-toggle .item-title{opacity:.6}.tree-item-inner.is-toggle:hover .item-title{opacity:1}.dropmenu-item-check{align-items:center;display:flex;flex:1 1 auto;justify-content:flex-end;padding-right:.5rem}.dropmenu-item .nested-toggle-icon.is-empty{width:.25rem}.dropmenu-item .item-icon{margin-right:-.25rem}:root{--form-control-border:var(--color-border-strong)}.checkbox-primary.disabled,.checkbox-primary.disabled>label,.checkbox-primary>input[type=checkbox]:disabled,.checkbox-primary>input[type=checkbox]:disabled+label,.radio-primary.disabled,.radio-primary.disabled>label,.radio-primary>input[type=radio],.radio-primary>input[type=radio]:disabled+label{filter:none!important}.checkbox-primary.disabled>label,.radio-primary.disabled>label{opacity:1}.form-actions{gap:1rem;justify-content:center}.form-actions .btn{min-width:96px}.form-control-static{min-height:32px;padding-bottom:.375rem;padding-top:.375rem}:root{--zt-panel-form-max-width:1000px}.size-sm{--zt-panel-form-max-width:800px}.size-lg{--zt-panel-form-max-width:1200px}.panel-body>.container,.panel-heading>.container{max-width:var(--panel-container-width);min-width:0;padding-left:var(--panel-container-padding);padding-right:var(--panel-container-padding)}.panel-heading>.container{align-items:center;display:flex;flex-direction:row;flex-wrap:nowrap;gap:1rem;justify-content:space-between;min-height:48px}.panel-form{--tw-bg-opacity: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(var(--tw-ring-offset-width)) var(--tw-ring-color);background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));border-radius:var(--radius-md);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);margin-bottom:1rem;margin-left:auto;margin-right:auto;max-width:var(--zt-panel-form-max-width);min-width:var(--zt-panel-form-min-width);overflow:visible;padding-bottom:1rem;padding-left:1rem;padding-right:1rem}.panel-form .form-actions{--tw-backdrop-blur:blur(8px);-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);background-color:rgba(var(--color-canvas-rgb),.8);bottom:0;padding-bottom:1rem;padding-top:1rem;position:sticky;z-index:3}.panel-form .form-grid{margin-left:calc(0px - var(--form-grid-gap-y-half));margin-right:calc(0px - var(--form-grid-gap-y-half));padding-bottom:0}.panel-form-toolbar{padding-left:var(--form-grid-gap-x-half);padding-right:var(--form-grid-gap-x-half);width:100%}.panel-form-toolbar>.toolbar{gap:1rem;padding-bottom:.75rem;padding-top:.75rem}.panel-form-divider{margin-bottom:.75rem;margin-top:1rem;padding-left:var(--form-grid-gap-x-half);padding-right:var(--form-grid-gap-x-half);width:100%}.panel-form-divider:before{--tw-content:"";background-color:rgba(var(--color-border-rgb),.7);content:var(--tw-content);display:block;height:1px}.is-full .btn-full-form,.is-lite .btn-lite-form{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-primary-300-rgb),var(--tw-ring-opacity));background-color:rgba(var(--color-primary-50-rgb),var(--tw-bg-opacity));color:rgba(var(--color-primary-500-rgb),var(--tw-text-opacity));z-index:1}.btn-toggle-fold:after{content:attr(data-expand-text)}.show-fold-items .btn-toggle-fold:after{content:attr(data-collapse-text)}.is-foldable,.is-full .full\:hidden,.is-full .lite\:visible,.is-full .panel-form-divider,.is-full .panel-form-toolbar,.is-lite .full\:visible,.is-lite .lite\:hidden,.no-foldable-items .btn-toggle-fold{display:none}.is-foldable.is-pinned,.is-full .full\:visible,.is-full .is-foldable,.is-full .lite\:hidden,.is-lite .full\:hidden,.is-lite .lite\:visible,.show-fold-items .is-foldable{display:block}.is-full .full\:w-1\/2,.is-lite .lite\:w-1\/2{width:50%}.is-full .full\:w-1\/3,.is-lite .lite\:w-1\/3{width:33.333333%}.is-full .full\:w-2\/3,.is-lite .lite\:w-2\/3{width:66.666667%}.is-full .full\:w-1\/4,.is-lite .lite\:w-1\/4{width:25%}.is-full .full\:w-2\/4,.is-lite .lite\:w-2\/4{width:50%}.is-full .full\:w-3\/4,.is-lite .lite\:w-3\/4{width:75%}.is-full .full\:w-1\/5,.is-lite .lite\:w-1\/5{width:20%}.is-full .full\:w-2\/5,.is-lite .lite\:w-2\/5{width:40%}.is-full .full\:w-3\/5,.is-lite .lite\:w-3\/5{width:60%}.is-full .full\:w-4\/5,.is-lite .lite\:w-4\/5{width:80%}.is-full .full\:w-1\/6,.is-lite .lite\:w-1\/6{width:16.666667%}.is-full .full\:w-2\/6,.is-lite .lite\:w-2\/6{width:33.333333%}.is-full .full\:w-3\/6,.is-lite .lite\:w-3\/6{width:50%}.is-full .full\:w-4\/6,.is-lite .lite\:w-4\/6{width:66.666667%}.is-full .full\:w-5\/6,.is-lite .lite\:w-5\/6{width:83.333333%}.is-full .full\:w-full,.is-lite .lite\:w-full{width:100%}.page-form{--panel-container-width:960px;--panel-container-padding:20px;--zt-panel-form-max-width:1200px;--zt-panel-form-min-width:1040px;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.04),0 0 2px -1px rgba(0,0,0,.01);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color),0 0 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);padding-left:0;padding-right:0}.page-form .panel-heading{--tw-border-opacity:0.7;border-bottom-width:1px;padding:0}.page-form .panel-title{font-size:1rem;line-height:1.5rem}@media (max-width:1240px){.page-form{--zt-panel-form-max-width:1100px}}@media (max-width:1110px){.page-form{--zt-panel-form-max-width:1040px}}.modal-body>.page-form{--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);margin:-1.5rem -2rem!important}.modal-body>.page-form>.panel-heading{--tw-bg-opacity:1;background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));border-top-left-radius:var(--radius);border-top-right-radius:var(--radius);padding-bottom:.375rem;padding-top:.375rem;position:sticky;top:-1.25rem;z-index:2}.modal-body>.panel-form .form-actions{bottom:-1.5rem!important;padding-bottom:1.5rem;padding-top:1.5rem}.dropdown.popover{display:flex;flex-direction:column;position:absolute;z-index:1200}.dropdown.show{display:flex}.dropdown-menu{--menu-min-width:7rem;--menu-max-width:20rem;display:none}.dropdown-menu.show,.menu-wrapper>.dropdown-menu,.show>.dropdown-menu{display:block}.dropdown>.dropdown-menu,.menu-wrapper .dropdown-menu{position:relative}.show>.menu-wrapper{display:flex}.dropdown>.menu-wrapper{height:100%}.dropdown>.menu-wrapper .menu-wrapper{position:absolute}.dropdown>.menu-wrapper.is-tree .menu-wrapper{position:relative}.is-contextmenu .is-nested-show>a:not(:hover){--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100-rgb),var(--tw-bg-opacity))}.is-contextmenu .menu-item.is-nested>.item-inner>.nested-toggle-icon{position:absolute;right:.25rem;top:.375rem}.is-contextmenu .menu-nested .menu-item>.item-inner{padding-left:.5rem;padding-right:1.25rem}.is-contextmenu .menu-nested .menu-item>.item-inner>.item-content{overflow:hidden}.dropdown>.arrow{--tw-bg-opacity:1;background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity))}.global-search-panel li:not(.order-first):hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgba(var(--color-primary-500-rgb),var(--tw-bg-opacity));color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity))}.global-search-panel li a{width:100%}.global-search-panel li{cursor:pointer}.history-panel>.panel-heading+.panel-body{margin-top:-.75rem}.history-panel-action{position:relative}.history-panel-action:before{--tw-border-opacity:1;--tw-content:"";border-color:rgba(var(--color-border-rgb),var(--tw-border-opacity));border-left-width:1px;bottom:-.375rem;content:var(--tw-content);left:.5rem;position:absolute;top:22px}.col-reverse>.history-panel-action:first-child:before,.col>.history-panel-action:last-child:before{display:none}.history-panel-action>.item-inner{padding-left:1.5rem}.history-panel-action>.item-inner>.avatar{left:0;position:absolute;top:.375rem}.img-cutter{background:var(--color-gray-100);border:1px solid #ddd;margin-bottom:20px;padding:10px}.img-cutter .canvas{margin:0 auto;max-width:100%;min-width:50px;position:relative}.img-cutter .cover{inset:0;position:absolute;z-index:1}.img-cutter .controller{background:none;border:1px dashed hsla(0,0%,100%,.7);cursor:move;position:absolute;z-index:5}.img-cutter .control{background:#000;background:rgba(0,0,0,.6);border:1px solid hsla(0,0%,100%,.6);height:6px;position:absolute;width:6px}.img-cutter .control[data-type=left]{cursor:w-resize;left:-4px;margin-top:-3px;top:50%}.img-cutter .control[data-type=top]{cursor:n-resize;left:50%;margin-left:-3px;top:-4px}.img-cutter .control[data-type=right]{cursor:e-resize;margin-top:-3px;right:-4px;top:50%}.img-cutter .control[data-type=bottom]{bottom:-4px;cursor:s-resize;left:50%;margin-left:-3px}.img-cutter .control[data-type=top-left]{cursor:nw-resize;left:-4px;top:-4px}.img-cutter .control[data-type=top-right]{cursor:ne-resize;right:-4px;top:-4px}.img-cutter .control[data-type=bottom-left]{bottom:-4px;cursor:sw-resize;left:-4px}.img-cutter .control[data-type=bottom-right]{bottom:-4px;cursor:se-resize;right:-4px}.img-cutter .cliper{inset:0;position:absolute;z-index:2}.messager-fail .toolbar,.messager-success .toolbar{padding-left:72px}.modal-reconfirm .modal-body{font-size:14px;font-weight:700;padding:24px 32px}.modal-reconfirm .modal-footer{justify-content:center;padding:24px}.picker-deselect-btn{opacity:.6;transition-duration:.15s;transition-property:opacity,transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.picker-multi-selection{cursor:pointer;padding-right:.5rem;position:relative}.picker-multi-selection .picker-deselect-btn{--tw-scale-x:0;--tw-scale-y:0;background-color:rgba(var(--color-surface-rgb),.8);inset:0;opacity:0;position:absolute}.picker-deselect-btn:hover,.picker-multi-selection .picker-deselect-btn,.picker-multi-selection:hover .picker-deselect-btn{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))}.picker-deselect-btn:hover,.picker-multi-selection:hover .picker-deselect-btn{--tw-scale-x:1;--tw-scale-y:1;--state-color:rgba(var(--color-surface-rgb),.9);opacity:1}.pick-pri{flex-direction:row;justify-content:flex-start;position:relative}.pick-pri,.pick-pri>.text{align-items:center;display:flex}.pick-pri>.text{flex:1 1 auto;min-width:0;overflow:hidden;white-space:nowrap}.pick-pri .placeholder{--tw-text-opacity:1;color:rgba(var(--color-placeholder-rgb),var(--tw-text-opacity))}.pick-pri-list>.btn{justify-content:flex-start}.disabled.pick-pri,.disabled.pick-pri>*{filter:none}.search-form{--gutter-width:12px;padding-bottom:.5rem}.search-form-container{--tw-bg-opacity:1;--tw-shadow:0 3px 8px 0 rgba(0,0,0,.04),0 1px 2px -1px rgba(0,0,0,.01);--tw-shadow-colored:0 3px 8px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);--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);--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-border-rgb),var(--tw-ring-opacity));background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));border-radius:var(--radius);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);min-height:116px;position:relative}.is-simple .search-form-container{min-height:56px}.search-form-field td{padding:.375rem}.search-form .sidebar-right.is-collapsed{margin-right:-.375rem}.is-simple .search-form-wrapper{display:flex}.is-simple .search-form-wrapper>.row{flex:1 1 auto}.is-simple .search-form-wrapper>.toolbar{flex:none;margin-top:0}.zinbar [data-hint]{position:relative}.zinbar [data-hint]:after{--tw-bg-opacity:0.9;--tw-text-opacity:1;--tw-content:attr(data-hint);background-color:rgba(var(--color-inverse-rgb),var(--tw-bg-opacity));border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg);bottom:100%;color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity));content:var(--tw-content);display:block;font-size:.75rem;line-height:1rem;opacity:0;padding:.125rem .25rem;pointer-events:none;position:absolute;right:0;transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);white-space:nowrap;z-index:50}.zinbar [data-hint]:hover:after{opacity:1}.zin-perf-btn-list .text-danger{color:var(--color-danger-400)}.zinbar .state{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.zinbar .state:active{--tw-scale-x:1.05;--tw-scale-y:1.05}.zinbar .state:active,.zinbar.collapse{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))}.zinbar.collapse{--tw-translate-x:100%}.zinbar.collapse>div{pointer-events:none}.zinbar{--tw-translate-x:0px;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));transition-duration:.7s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.card{--tw-bg-opacity:1;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.04),0 0 2px -1px rgba(0,0,0,.01);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color),0 0 2px -1px var(--tw-shadow-color);--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);--tw-ring-color:rgba(var(--color-border-rgb),var(--tw-ring-opacity));--tw-ring-opacity:0.05;background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));border-radius:var(--radius);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);min-height:28px;position:relative;transition-duration:.15s;transition-property:shadow,border,color,background-color;transition-timing-function:cubic-bezier(.4,0,.2,1)}.card:hover{--tw-shadow:0 3px 8px 0 rgba(0,0,0,.04),0 1px 2px -1px rgba(0,0,0,.01);--tw-shadow-colored:0 3px 8px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.card-content,.card-footer,.card-header,.card-heading{padding:.25rem .5rem}.card-heading{align-items:center;display:flex;gap:.5rem}.card-icon{opacity:.5}.card-header{--tw-bg-opacity:1;background-color:rgba(var(--color-surface-rgb),var(--tw-bg-opacity))}.card-content{display:flex;flex-direction:column;gap:.25rem}.card-actions{position:absolute;right:.125rem;top:.125rem}.card-actions+.card-heading{padding-right:1.75rem}.card-subtitle{--tw-text-opacity:1;color:rgba(var(--color-gray-500-rgb),var(--tw-text-opacity));font-size:.75rem;line-height:1rem}.card-list{--list-gap:.625rem;--list-count-per-row:1}.card-list,.card-list-item{padding:calc(var(--list-gap)/2)}.card-list-item{width:calc(100%/var(--list-count-per-row))}.card-grid{display:flex;flex-wrap:wrap}.card-grid .card{height:100%}.contextmenu{display:none}.contextmenu.show{display:block}.contextmenu .popup .popup,.contextmenu.popup{position:absolute}.more,.more-vert{margin:.5rem;position:relative}.more,.more-vert,.more-vert:after,.more-vert:before,.more:after,.more:before{background-color:currentColor;border-radius:var(--radius-full);height:.125rem;width:.125rem}.more-vert:after,.more-vert:before,.more:after,.more:before{--tw-content:"";content:var(--tw-content);display:block;left:-5px;position:absolute;top:0}.more-vert:after,.more:after{left:5px}.more-vert{--tw-rotate:90deg;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))}.dashboard-blocks{position:relative}.dashboard-block-cell{position:absolute;transition-duration:.15s;transition-property:left,top;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dashboard-block{--tw-bg-opacity:1;background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));border-radius:var(--radius);inset:.5rem;position:absolute;transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dashboard-block.is-dragging{opacity:0;z-index:1600}.dashboard-block-header{align-items:center;border-top-left-radius:var(--radius);border-top-right-radius:var(--radius);display:flex;flex-direction:row;justify-content:space-between;left:0;padding:.75rem;pointer-events:none;position:absolute;right:0;top:0;z-index:10}.dashboard-block-header>*{pointer-events:auto}.dashboard-block-title{font-size:.875rem;font-weight:700;line-height:1.3rem}.dashboard-block-body{inset:0;position:absolute}.dashboard-block-body>.panel{--tw-shadow:0px 6px 16px rgba(202,215,235,.25);display:flex;flex-direction:column;height:100%;width:100%}.dashboard-block-body .panel-heading{cursor:move;flex:none}.dashboard-block-body .panel-body{flex:1 1 auto;overflow-y:auto}.has-more-menu>.dashboard-block-body .panel-heading{padding-right:3rem}.dashboard-block-body .panel-title{font-size:.875rem;height:2rem;line-height:1.3rem}.dashboard-block-actions .btn{opacity:.6}.dashboard-block-actions .btn:hover{opacity:1}.dashboard-drop-shadow{position:absolute;transition-duration:.15s;transition-property:left,top;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dashboard-drop-shadow:before{--tw-shadow:inset 0 2px 4px 0 rgba(0,0,0,.05);--tw-shadow-colored:inset 0 2px 4px 0 var(--tw-shadow-color);--tw-content:"";background-color:rgba(var(--color-inverse-rgb),.05);border-radius:var(--radius);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);content:var(--tw-content);inset:.5rem;position:absolute}:root{--scrollbar-size:10px;--scrollbar-opacity:.6;--scrollbar-bg:rgba(var(--color-inverse-rgb),.15);--scrollbar-inset:inset 0 0 0 1px rgba(var(--color-inverse-rgb),.05);--scrollbar-bar-bg:rgba(var(--color-inverse-rgb),.3);--scrollbar-hover-bg:rgba(var(--color-inverse-rgb),.4);--scrollbar-drag-bg:rgba(var(--color-inverse-rgb),.5);--scrollbar-radius:var(--radius-sm);--scrollbar-duration:.7s}.scrollbar{background:var(--scrollbar-bg);box-shadow:var(--scrollbar-shadow);opacity:var(--scrollbar-opacity);position:absolute;transition-duration:.15s;transition-duration:var(--scrollbar-duration);transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.scrollbar-hover .scrollbar{opacity:0}.scrollbar-hover:hover .scrollbar{opacity:var(--scrollbar-opacity)}.scrollbar.is-dragging,.scrollbar:hover{opacity:1!important}.scrollbar-bar{background:var(--scrollbar-bar-bg);border-radius:var(--scrollbar-radius);position:absolute}.scrollbar-bar:hover{background:var(--scrollbar-hover-bg)}.is-dragging>.scrollbar-bar{background:var(--scrollbar-drag-bg)}.is-horz>.scrollbar-bar{height:100%;z-index:20}.is-vert>.scrollbar-bar{width:100%;z-index:20}:root{--dtable-checked-bg:var(--color-warning-50);--dtable-checked-bg-hover:var(--color-warning-100);--dtable-checked-border:var(--color-border-strong)}.dtable-cell.is-checked,.dtable-striped .dtable-cell.is-odd-row.is-checked{background-color:var(--dtable-checked-bg)}.checkbox-primary.dtable-checkbox{margin-right:-.375rem}.dtable-checkbox{order:-5}.dtable-hover-col .dtable-cell.is-hover-col.is-checked,.dtable-hover-row .dtable-cell.is-hover-row.is-checked{background-color:var(--dtable-checked-bg-hover)}.dtable-cell.is-checked{--dtable-border-color:var(--dtable-checked-border)}.dtable-check-info{flex-shrink:1;margin-right:.5rem;overflow:hidden;white-space:nowrap}:root{--toggle-icon-size:calc(var(--font-size-root)*3/4 + 1px)}.toggle-icon,.toggle-icon-collapse,.toggle-icon-expand{border-color:currentColor;border-width:1px;display:block;opacity:.5;position:relative}.toggle-icon-collapse:hover,.toggle-icon-expand:hover,.toggle-icon:hover{opacity:.9}.toggle-icon,.toggle-icon-collapse,.toggle-icon-expand{border-radius:inherit;height:var(--toggle-icon-size);width:var(--toggle-icon-size)}.is-collapsed .toggle-icon:after,.is-collapsed .toggle-icon:before,.is-expanded .toggle-icon:before,.toggle-icon-collapse:after,.toggle-icon-collapse:before,.toggle-icon-expand:before{background-color:currentColor;content:" ";display:block;height:1px;left:2px;position:absolute;right:2px;top:calc((var(--toggle-icon-size) - 3px)/2)}.is-collapsed .toggle-icon:after,.toggle-icon-collapse:after{--tw-rotate:90deg;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))}:root{--dtable-nt-size:calc(var(--font-size-root)*3/4 + 1px)}.dtable-nested-indent{flex:none;margin-right:-.25rem;order:-100}.dtable-nested-toggle{align-items:center;border-radius:var(--radius-sm);display:flex;flex:none;height:1.25rem;justify-content:center;margin-left:-.25rem;order:-6;width:1.25rem}.dtable-nested-toggle.is-no-child{margin-right:-.25rem;opacity:0;pointer-events:none}.dtable-header-group{align-items:center;background:var(--dtable-header-bg);cursor:default;display:flex;justify-content:center;left:0;position:absolute;top:1px;z-index:30}.dtable-bordered .dtable-header-group{border-bottom:1px solid var(--dtable-border-color);border-left:1px solid var(--dtable-border-color)}.dtable-header-as-group{contain:style;content-visibility:visible;overflow:visible!important}.dtable-sorting{cursor:move}.dtable-cell.is-sorting-from{background-color:var(--dtable-bg);z-index:20}.dtable-cell.is-sorting-from:before{border-top-width:1px}.dtable-sorting .dtable-cell.is-sorting-after{--tw-translate-y:-100%}.dtable-sorting .dtable-cell.is-sorting-after,.dtable-sorting .dtable-cell.is-sorting-before{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))}.dtable-sorting .dtable-cell.is-sorting-before{--tw-translate-y:100%}.dtable-cell.is-sorting-before:before,.dtable-cell.is-sorting-from:before{border-bottom-width:1px;border-top-width:1px}:root{--dtable-bg:var(--color-canvas);--dtable-striped-bg:var(--color-gray-50);--dtable-hover-bg:rgba(var(--color-primary-500-rgb),.05);--dtable-header-bg:var(--color-surface);--dtable-footer-bg:var(--color-surface);--dtable-border-color:var(--color-border);--dtable-sorter-size:0.3125rem}.dtable{--tw-bg-opacity:1;background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));position:relative}.dtable.no-animation *{transition-property:none!important}.dtable-block{overflow:hidden;position:absolute;width:100%}.dtable-header{background-color:var(--dtable-header-bg);border-top-left-radius:inherit;border-top-right-radius:inherit}.dtable-body{overflow:hidden}.dtable-cells{background-color:var(--dtable-bg);height:100%;position:absolute;z-index:0}.dtable-cells-container{height:100%;position:absolute;width:100%}.dtable-header .dtable-cells{background-color:var(--dtable-header-bg)}.dtable-cells.dtable-fixed-left,.dtable-cells.dtable-fixed-right{z-index:10}.dtable-cell{position:absolute;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-property:color,background-color,border-color,transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dtable-cell:after,.dtable-cell:before{bottom:0;content:"";left:0;opacity:0;pointer-events:none;position:absolute;right:0;top:-1px;z-index:2}.dtable-cell:before{border-bottom-width:1px;border-color:var(--dtable-border-color);opacity:1}.dtable-header .dtable-cell{align-items:center;display:flex;font-weight:700}.dtable-header .dtable-cell:after,.dtable-header .dtable-cell:before{top:0}.dtable-cell-content{align-items:center;display:flex;gap:.25rem;height:100%;overflow:hidden;padding-left:.75rem;padding-right:.75rem;position:relative;white-space:nowrap;width:100%;z-index:5}.dtable-body .dtable-cell.is-last-row:before{border-bottom-width:0}.dtable-footer{align-items:center;background-color:var(--dtable-footer-bg);border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;border-color:var(--dtable-border-color);border-top-width:1px;display:flex;padding-left:.75rem;padding-right:.75rem;position:absolute;width:100%;z-index:10}.dtable-empty-tip{align-items:center;display:flex;height:100%;justify-content:center}.dtable .scrollbar{z-index:20}.dtable-header{transition-duration:1s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dtable-scrolled-down .dtable-header{border-bottom-color:rgba(var(--color-inverse-rgb),.1);border-bottom-width:1px}.dtable-has-scroll-y:not(.dtable-scrolled-bottom) .dtable-footer{border-top-color:rgba(var(--color-inverse-rgb),.1);border-top-width:1px}.dtable-scroll-shadow{background-image:linear-gradient(90deg,rgba(0,0,0,.03),transparent),linear-gradient(90deg,rgba(0,0,0,.03),transparent 50%);opacity:0;pointer-events:none;position:absolute;top:0;transition-duration:1s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);width:8px;z-index:20}.dtable:hover .dtable-scroll-shadow{opacity:1}.dtable-scroll-shadow.is-right{--tw-rotate:180deg;margin-left:-7px;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))}.dtable-scroll-shadow.is-left,.dtable-scrolled-end .dtable-scroll-shadow.is-right{visibility:hidden}.dtable-scroll-shadow.is-right,.dtable-scrolled-right .dtable-scroll-shadow.is-left{visibility:visible}.scrollbar-hover:hover .scrollbar{opacity:0}.scrollbar-hover.dtable-hover .scrollbar{opacity:var(--scrollbar-opacity)}.dtable-sort{display:inline-flex;height:calc(var(--dtable-sorter-size)*12/5);margin-left:.25rem;opacity:.8;position:relative}.dtable-cell:hover .dtable-sort{opacity:1}.dtable-sort:after,.dtable-sort:before{--tw-content:"";border-color:transparent;border-style:solid;border-width:var(--dtable-sorter-size);content:var(--tw-content);height:0;left:0;opacity:.4;position:absolute;width:0}.dtable-sort:before{border-bottom-color:currentColor;border-top-width:0;top:0}.dtable-sort:after{border-bottom-width:0;border-top-color:currentColor;bottom:0}.dtable-sort.dtable-sort-asc:before,.dtable-sort.dtable-sort-desc:after{opacity:.9}.dtable-sort-link{align-items:center;cursor:pointer;display:inline-flex}.dtable-cells.dtable-fixed-left:before,.dtable-cells.dtable-fixed-right:before{border-color:var(--dtable-border-color);content:"";height:100%;pointer-events:none;position:absolute;width:100%;z-index:5}.dtable-cells.dtable-fixed-left:before{border-right-width:1px;right:-1px}.dtable-cells.dtable-fixed-right:before{border-left-width:1px;left:0}.dtable-bordered:before{border-color:var(--dtable-border-color);border-radius:inherit;border-width:1px;content:"";display:block;inset:0;pointer-events:none;position:absolute;z-index:15}.dtable-bordered .dtable-cell:before{border-width:1px;right:-1px}.dtable-cell.has-border-left:before{border-left-width:1px}.dtable-cell.has-border-right:before{border-right-width:1px;right:-1px}.dtable-striped .dtable-cell.is-odd-row{background-color:var(--dtable-striped-bg)}.dtable-hover-cell .dtable-cell:hover:after,.dtable-hover-col .dtable-cell.is-hover-col:before,.dtable-hover-row .dtable-body .dtable-cell.is-hover-row:before{background-color:var(--dtable-hover-bg)}:root{--kanban-lane-name-width:20px;--kanban-col-width:280px;--kanban-cols-gap:8px;--kanban-lanes-gap:8px;--kanban-header-height:32px;--kanban-lane-height:auto;--kanban-lane-color:var(--color-primary-500);--kanban-link-color:var(--color-secondary-500)}.kanban{align-items:flex-start;display:flex;flex-direction:column;min-width:-moz-fit-content;min-width:fit-content;position:relative}.kanban-header{display:flex;flex-direction:row;height:var(--kanban-header-height)}.kanban.has-sub-cols .kanban-header{height:calc(var(--kanban-header-height)*2)}.kanban-header-lane-name{background-color:rgba(var(--color-fore-rgb),.05);flex:none;width:var(--kanban-lane-name-width)}.kanban-header-cols,.kanban-header-sub-cols{display:flex;flex:1 1 0%;flex-direction:row;gap:var(--kanban-cols-gap)}.kanban-header-sub-cols{--tw-border-opacity:1;border-color:rgba(var(--color-canvas-rgb),var(--tw-border-opacity));border-top-width:2px}.kanban-header-col{align-items:center;border-bottom-width:1px;display:flex;flex:1 1 0%;flex-direction:column;height:100%;width:var(--kanban-col-width)}.kanban-header-col.has-subs{width:auto}.kanban-header-col-wrapper{--tw-bg-opacity:1;align-items:center;background-color:rgba(var(--color-surface-rgb),var(--tw-bg-opacity));display:flex;flex:1 1 0%;flex-direction:row;padding-left:3.5rem;padding-right:3.5rem;position:relative;width:100%}.kanban-header-col-wrapper.is-align-left{justify-content:flex-start;padding-left:.5rem}.kanban-header-col-wrapper.is-align-left>.kanban-header-title{justify-content:flex-start}.kanban-header-title{align-items:center;display:flex;flex:1 1 auto;flex-direction:row;justify-content:center;overflow:hidden}.kanban-header-title>.as-title{color:var(--kanban-col-color);font-weight:700;overflow:hidden;white-space:nowrap}.kanban-header-col-actions{bottom:.25rem;position:absolute;right:.25rem;top:.25rem}.kanban-header-col-actions>.btn{opacity:.6}.kanban-header-col-actions>.btn:hover{opacity:1}.kanban-body{display:flex;flex-direction:column;gap:var(--kanban-lanes-gap)}.kanban-lane{display:flex;flex-direction:row;height:var(--kanban-lane-height);min-height:96px}.kanban-lane-name{--tw-text-opacity:1;align-items:center;background-color:var(--kanban-lane-color);color:rgba(var(--color-white-rgb),var(--tw-text-opacity));display:flex;justify-content:center;width:var(--kanban-lane-name-width);writing-mode:vertical-rl}.kanban-lane-actions,.kanban-lane-name{flex:none;position:relative}.kanban-lane.is-first .kanban-lane-actions{margin-top:calc(4px - var(--kanban-header-height))}.has-sub-cols .kanban-lane.is-first .kanban-lane-actions{margin-top:calc(4px - var(--kanban-header-height)*2)}.kanban-lane-actions>.btn.square{width:var(--kanban-lane-name-width)}.kanban-lane-title{align-items:center;display:flex;flex:1 1 auto;justify-content:center;overflow:hidden;white-space:nowrap}.kanban-lane-cols{display:flex;flex-direction:row;gap:var(--kanban-cols-gap)}.kanban-lane-col{background-color:rgba(var(--color-inverse-rgb),.05);display:flex;flex-direction:column;height:100%;width:var(--kanban-col-width)}.kanban-header-col,.kanban-lane-col{margin-left:calc(var(--kanban-col-gap-left) - var(--kanban-cols-gap));margin-right:calc(var(--kanban-col-gap-right) - var(--kanban-cols-gap))}.kanban-col-content{position:relative;z-index:5}.kanban-lane.is-first>.kanban-lane-name:before{--tw-content:"";background-color:var(--kanban-lane-color);bottom:100%;content:var(--tw-content);display:block;height:var(--kanban-header-height);left:0;position:absolute;right:0}.kanban.has-sub-cols .kanban-lane.is-first>.kanban-lane-name:before{height:calc(var(--kanban-header-height)*2)}.kanban-items{flex:1 1 auto;overflow:auto;scrollbar-gutter:both-edges stable}.kanban-lane.is-auto-height .kanban-items{scrollbar-gutter:auto}.kanban-item .card-actions{z-index:5}.kanban-heading{width:100%}.kanban-heading .listitem{height:2.25rem}.kanban-heading .item-title{font-weight:700}.kanban.has-dragging{cursor:move}.kanban-item.is-dragging{cursor:move;opacity:.1}.kanban-sticky .kanban-header{--tw-bg-opacity:1;background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));position:sticky;top:0;z-index:10}.kanban-sticky .kanban-lane-name{left:0;position:sticky;z-index:10}.kanban-region{--tw-bg-opacity:1;--tw-shadow:0 3px 8px 0 rgba(0,0,0,.04),0 1px 2px -1px rgba(0,0,0,.01);--tw-shadow-colored:0 3px 8px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));border-radius:var(--radius);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);min-width:-moz-fit-content;min-width:fit-content;padding:.75rem}.kanban-region>.kanban+.kanban{margin-top:.75rem}.kanban-region.has-heading{padding-top:0}.kanban-heading>.listitem{left:.75rem;position:sticky;width:calc(var(--kanban-list-width) - 24px)}.kanban-list{display:flex;flex-direction:column;gap:.75rem;height:100vh;overflow:auto;scrollbar-gutter:stable}.kanban-list.is-moving{cursor:grabbing}.kanban-items.is-dropping{position:relative}.kanban-item.is-dropping{position:relative;transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.kanban-item.is-dropping:after,.kanban-items.is-dropping>.card-list:after{--tw-content:"";background-color:rgba(var(--color-warning-500-rgb),.5);border-radius:var(--radius-full);content:var(--tw-content);display:block;height:.25rem}.kanban-item.is-dropping:after{left:.25rem;position:absolute;right:.25rem;top:-.25rem}.kanban-item.is-dropping[z-drop-side=before]{--tw-translate-y:0.25rem}.kanban-item.is-dropping[z-drop-side=after],.kanban-item.is-dropping[z-drop-side=before]{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))}.kanban-item.is-dropping[z-drop-side=after]{--tw-translate-y:-0.25rem}.kanban-item.is-dropping[z-drop-side=after]:after{bottom:-.25rem;top:auto}.kanban-links{inset:0;pointer-events:none;position:absolute;z-index:20}.kanban-link{align-items:center;color:var(--kanban-link-color);display:flex;justify-content:center}.kanban-link,.kanban-link>svg{position:absolute}.kanban-link-text{border-radius:var(--radius);height:1em;line-height:1;padding-left:.125rem;padding-right:.125rem;pointer-events:auto;position:relative;text-align:center;white-space:nowrap}.kanban-link-start-point{--tw-translate-x:-0.25rem;--tw-translate-y:-0.25rem;height:.5rem;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));width:.5rem}.kanban-link-start-point,.kanban-link-start-point:before{background-color:currentColor;border-radius:var(--radius-full);position:absolute}.kanban-link-start-point:before{--tw-content:"";content:var(--tw-content);display:block;inset:-.25rem;opacity:.2}.kanban-link path{pointer-events:auto}.kanban-link path+path{opacity:.6}.kanban-link.is-hover path+path{opacity:1}.kanban-link-delete-btn{--tw-scale-x:.75;--tw-scale-y:.75;opacity:0;pointer-events:auto;transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.is-hover .kanban-link-delete-btn,.kanban-link-delete-btn{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))}.is-hover .kanban-link-delete-btn{--tw-scale-x:1;--tw-scale-y:1;opacity:1}.kanban.is-adding-link{cursor:crosshair}.kanban-link-editor{inset:0;pointer-events:none;position:absolute;z-index:20}.kanban-link-editor-from,.kanban-link-editor-to{--tw-shadow-color:rgb(var(--color-primary-500-rgb));--tw-shadow:var(--tw-shadow-colored);--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);--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-primary-500-rgb),var(--tw-ring-opacity));border-radius:var(--radius)}.kanban-link-editor-from,.kanban-link-editor-point,.kanban-link-editor-to{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);position:absolute}.kanban-link-editor-point{--tw-translate-x:-0.25rem;--tw-translate-y:-0.25rem;--tw-bg-opacity: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(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgba(var(--color-primary-500-rgb),0.1);background-color:rgba(var(--color-primary-500-rgb),var(--tw-bg-opacity));border-radius:var(--radius-full);cursor:move;height:.5rem;opacity:.5;pointer-events:auto;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));transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);width:.5rem}.kanban-link-editor-point.is-left{left:0;top:50%}.kanban-link-editor-point.is-right{--tw-translate-x:0.25rem;right:0;top:50%;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))}.kanban-link-editor-point.is-top{left:50%;top:0}.kanban-link-editor-point.is-bottom{--tw-translate-y:0.25rem;bottom:0;left:50%;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))}.kanban-link-editor-point:hover{--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(8px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgba(var(--color-primary-500-rgb),0.5);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);opacity:1}.tab-pane{display:none}.tab-pane.active{display:block}:root{--dtable-header-bg:var(--color-surface-light);--dtable-footer-bg:var(--color-surface-light);--dtable-border-color:var(--color-border-light);--dtable-checked-border:var(--color-border);--dtable-checked-bg:var(--color-primary-50);--dtable-checked-bg-hover:var(--color-primary-100);--dtable-hover-bg:rgba(var(--color-gray-500-rgb),.05);--dtable-link-color:var(--color-link);--dtable-link-hover-color:var(--color-link-hover);--dtable-link-visited-color:var(--color-link-visited)}.dtable-cell-content[style*="--color-link"]{--dtable-link-hover-color:var(--color-link);--dtable-link-visited-color:var(--color-link)}.dtable-body .dtable-cell a:not(.btn){color:var(--dtable-link-color)}.dtable-body .dtable-cell a:not(.btn):visited{color:var(--dtable-link-visited-color)}.dtable-body .dtable-cell a:not(.btn):hover{color:var(--dtable-link-hover-color)}.dtable .btn-avatar{--tw-bg-opacity:1;--tw-ring-color:transparent;background-color:rgba(var(--color-gray-100-rgb),var(--tw-bg-opacity));border-radius:var(--radius-full);gap:.25rem;height:1.25rem;padding-left:0;padding-right:.5rem}.dtable .btn-avatar:hover{--tw-shadow:0 3px 8px 0 rgba(0,0,0,.04),0 1px 2px -1px rgba(0,0,0,.01);--tw-shadow-colored:0 3px 8px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.dtable-nested-toggle{width:1rem}.dtable .toggle-icon{--toggle-icon-size:11px;--tw-border-opacity:1;border-color:rgba(var(--color-gray-400-rgb),var(--tw-border-opacity));border-radius:var(--radius)}.dtable .toggle-icon:after,.dtable .toggle-icon:before{--tw-bg-opacity:1;background-color:rgba(var(--color-gray-700-rgb),var(--tw-bg-opacity))}.dtable-footer>.toolbar{margin-right:.5rem}.dtable-header .dtable-cell[data-sort]>.dtable-cell-content>a:not(:hover){color:inherit}.dtable-assign-btn{--dtable-link-color:var(--color-fore);align-items:center;border-radius:var(--radius-full);display:flex;flex-direction:row;height:1.25rem;padding-left:.375rem;padding-right:.375rem}.dtable-assign-btn:not(:hover){color:inherit}.dtable-assign-btn.is-me{--dtable-link-color:var(--color-warning-500)}.dtable-assign-btn:hover{--tw-bg-opacity: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);--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-border-strong-rgb),var(--tw-ring-opacity));background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.dtable-assign-btn>span{border-radius:var(--radius-full);line-height:20px;padding-left:.375rem;padding-right:.375rem}.dtable-assign-btn.is-unassigned>span{--tw-text-opacity: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);--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-border-strong-rgb),var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgba(var(--color-gray-500-rgb),var(--tw-text-opacity))}.dtable-assign-btn.is-unassigned:hover>span{--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);background-color:inherit;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:inherit}.dtable-assign-btn>.icon{opacity:0;transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dtable-assign-btn:not(.disabled):hover>.icon{opacity:1}.dtable-header .dtable-cell[data-type=assign]{padding-left:1.5rem}.dtable-cell-icon{order:-5}.dtable-custom-cell[data-type=control]{align-items:center;display:flex;justify-content:center;padding-left:.125rem;padding-right:.125rem;z-index:1}.dtable-empty-tip{min-height:212px}.menu.menu-dtable-actions.has-icons{--menu-icon-opacity:1;align-items:center;display:flex;gap:.25rem;min-width:auto}.menu.menu-dtable-actions.has-icons>.menu-item>a{padding-left:.25rem;padding-right:.25rem}.menu.menu-dtable-actions.has-icons>.menu-item>a>.icon-EMPTY,.menu.menu-dtable-actions.has-icons>.menu-item>a>.item-content{display:none}.menu.menu-dtable-actions.has-icons>.menu-item>a>.icon-EMPTY+.item-content,.menu.menu-dtable-actions.has-icons>.menu-item>a>.item-content:first-child{display:block}:root{--state-color:rgba(0,0,0,.03);--zt-page-bg:#f8f9fa;--zt-header-bg:var(--color-canvas);--zt-header-color:var(--color-fore);--zt-sidebar-width:160px;--zt-navbar-active-color:var(--color-primary-500)}body{background-color:var(--zt-page-bg)}.page-app{overflow:overlay}.container{min-width:1200px}#header{--tw-shadow:0 3px 8px 0 rgba(0,0,0,.04),0 1px 2px -1px rgba(0,0,0,.01);--tw-shadow-colored:0 3px 8px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);background:var(--zt-header-bg);border-bottom:1px solid var(--zt-header-border,rgba(var(--color-inverse-rgb),.05));box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);color:var(--zt-header-color);height:3rem}#header>.container{height:100%;position:relative}#heading{align-items:center;bottom:0;display:flex;gap:.25rem;left:1rem;position:absolute;top:0}#heading>.toolbar{margin-left:-.75rem}#heading .dropmenu-btn>.text{max-width:142px}#heading>[data-zui-dropmenu]+div .dropmenu-btn>.text,#heading>[data-zui-dropmenu]+div+div .dropmenu-btn>.text{max-width:78px}#navbar{align-items:center;display:flex;font-size:.875rem;height:100%;justify-content:center;line-height:1.3rem}#navbar>.nav{--nav-active-color:var(--zt-navbar-active-color,var(--color-current));--nav-item-padding:12px;--nav-divider-margin:8px;margin-left:var(--nav-offset-left)}#navbar>.nav>.nav-item>a{height:3rem;padding-left:var(--nav-item-padding);padding-right:var(--nav-item-padding)}#navbar>.nav>.nav-item>a:after{--tw-scale-x:.5;background-color:currentColor;bottom:.5rem;content:"";height:.125rem;left:.75rem;opacity:0;position:absolute;right:.75rem;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));transition-duration:.15s;transition-property:transform,opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}#navbar>.nav>.nav-item>a:hover:after{opacity:.5}#navbar>.nav>.nav-item>a.active:after,#navbar>.nav>.nav-item>a:hover:after{--tw-scale-x:1;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))}#navbar>.nav>.nav-item>a.active:after{opacity:.9}#navbar>.nav>.divider{align-self:center;height:1.25rem;margin-left:var(--nav-divider-margin);margin-right:var(--nav-divider-margin)}#navbar>.nav.compact{font-size:.8125rem;line-height:1.25rem}#navbar>.nav.compact-extra{font-size:.75rem;line-height:1rem}#toolbar{align-items:center;bottom:0;display:flex;gap:.25rem;position:absolute;right:1rem;top:0}#main{min-height:100vh}#header+#main{min-height:calc(100vh - 3rem)}#main>.container{padding-left:1rem;padding-right:1rem;position:relative}@media (min-width:1400px){#header>.container,#main>.container,#mainNavbar>.container{padding-left:2.5rem;padding-right:2.5rem}#heading{left:2.5rem}#toolbar{right:2.5rem}}#mainNavbar{--tw-bg-opacity:1;background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));height:2.75rem}#mainNavbar>.container{position:relative}#mainNavbar .nav{height:2.75rem;inset:0;justify-content:center;position:absolute}#mainNavbar .nav-item{font-size:.875rem;line-height:1.3rem}#mainNavbar .nav-item>a{border-radius:var(--radius)}#mainMenu{gap:1rem;justify-content:space-between;padding-bottom:.75rem;padding-top:.75rem}#featureBar,#mainMenu{align-items:center;display:flex}#featureBar{flex:1 1 auto;gap:.5rem}#actionBar{gap:.5rem}#actionBar>.nav-divider{margin-left:-.25rem;margin-right:-.25rem}#mainContent{padding-top:.75rem}#mainMenu+#mainContent{padding-top:0}#mainContent.row{align-items:stretch;display:flex;gap:1rem;justify-content:space-between}#mainContent.row>*{flex:1 1 auto;min-width:0}#mainContainer.has-sidebar-left{--gutter-left-size:16px}#mainContainer.is-sidebar-left-collapsed{--gutter-left-size:0}.has-sidebar-animation.has-sidebar-left #mainMenu{transition-duration:.15s;transition-property:padding-left;transition-timing-function:cubic-bezier(.4,0,.2,1)}:root{--modal-radius:var(--radius);--avatar-bg:var(--color-gray-200)}.modal-alert .modal-footer{justify-content:center}.modal-dialog{--tw-bg-opacity:1}.modal-content,.modal-dialog{max-height:calc(100vh - 4rem)}.modal-body,.modal-footer,.modal-header{padding:1.5rem 2rem}.modal-header{padding-right:3rem}.modal-body+.modal-footer,.modal-header+.modal-actions+.modal-body,.modal-header+.modal-body{padding-top:1px}.modal-condensed .modal-body,.modal-condensed .modal-header{padding:1rem 1.25rem}.modal-condensed .modal-actions{top:.75rem}:root{--label-bg:var(--color-gray-100);--label-color:var(--color-gray-800)}.label[class$=-pale],.label[class*="-pale "]{--tw-bg-opacity:0.4;--tw-ring-opacity:0.4}.tree{--tree-indent:14px}.body-modal .panel-form,.modal-body>.panel-form{margin:0;padding:0}.modal-body>.panel-form>.panel-heading{padding-left:1px;padding-right:1px;padding-top:1px}.modal-body>.panel-form>.panel-body{padding:1px}.modal-body>.form{padding-top:1px}.modal .history,.modal .panel-body>.form{padding:0}:root{--article-p-space:0}.arrow,.arrow:before{background:inherit;height:calc(var(--arrow-size)*1.4142);position:absolute;width:calc(var(--arrow-size)*1.4142)}.arrow{--arrow-size:5px;visibility:hidden}.arrow:before{--tw-rotate:45deg;border:inherit;content:"";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));visibility:visible}.arrow-top,.arrow-up{border-bottom:inherit;border-right:inherit;border-width:1px 0 0 1px;top:calc(1px - var(--arrow-size))}.white>.arrow-top,.white>.arrow-up{top:calc(0px - var(--arrow-size))}.arrow-bottom,.arrow-down{border-left:inherit;border-top:inherit;border-width:0 1px 1px 0;bottom:calc(1px - var(--arrow-size))}.white>.arrow-bottom,.white>.arrow-down{bottom:calc(0px - var(--arrow-size))}.arrow-left{border-right:inherit;border-top:inherit;border-width:0 0 1px 1px;left:calc(1px - var(--arrow-size))}.white>.arrow-left{left:calc(0px - var(--arrow-size))}.arrow-right{border-bottom:inherit;border-left:inherit;border-width:1px 1px 0 0;right:calc(1px - var(--arrow-size))}.white>.arrow-right{right:calc(0px - var(--arrow-size))}.caret,.caret-down,.caret-left,.caret-right,.caret-up{align-items:center;display:inline-flex;height:.75rem;justify-content:center;position:relative;width:.75rem}.caret-down:before,.caret-left:before,.caret-right:before,.caret-up:before,.caret:before{--tw-translate-y:-1px;--tw-rotate:45deg;--tw-content:"";border-color:currentColor;border-width:0 1px 1px 0;content:var(--tw-content);display:block;height:.35rem;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));transform-origin:center;width:.35rem}.caret-left:before{--tw-translate-x:0.125rem;--tw-translate-y:0px;--tw-rotate:135deg}.caret-left:before,.caret-right:before{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))}.caret-right:before{--tw-translate-x:-0.125rem;--tw-translate-y:0px;--tw-rotate:-45deg}.caret-up:before{--tw-translate-y:0.125rem;--tw-rotate:225deg;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))}:focus>.caret,:hover>.caret{opacity:inherit}.disabled .caret,.readonly .caret{opacity:var(--caret-opacity,.5)}:root{--toggle-icon-size:calc(var(--font-size-root)*3/4 + 1px)}.toggle-icon,.toggle-icon-collapse,.toggle-icon-expand{border-color:currentColor;border-width:1px;display:block;opacity:.5;position:relative}.toggle-icon-collapse:hover,.toggle-icon-expand:hover,.toggle-icon:hover{opacity:.9}.toggle-icon,.toggle-icon-collapse,.toggle-icon-expand{border-radius:inherit;height:var(--toggle-icon-size);width:var(--toggle-icon-size)}.is-collapsed .toggle-icon:after,.is-collapsed .toggle-icon:before,.is-expanded .toggle-icon:before,.toggle-icon-collapse:after,.toggle-icon-collapse:before,.toggle-icon-expand:before{background-color:currentColor;content:" ";display:block;height:1px;left:2px;position:absolute;right:2px;top:calc((var(--toggle-icon-size) - 3px)/2)}.is-collapsed .toggle-icon:after,.toggle-icon-collapse:after{--tw-rotate:90deg;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))}.close{aspect-ratio:1/1;display:block;position:relative;width:1em}.close:after,.close:before{--tw-rotate:45deg;background-color:currentColor;border-radius:var(--radius-full);content:"";display:block;height:1px;left:0;position:absolute;top:calc(50% - .5px);width:100%}.close:after,.close:before{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))}.close:after{--tw-rotate:-45deg}.spinner,.spinner:after,.spinner:before{display:block;height:1em;position:relative;width:1em}.spinner:after,.spinner:before{border-radius:var(--radius-full);content:" ";position:absolute}.spinner:before{animation:-spin 1s cubic-bezier(.6,0,.4,1) infinite;border:.16667em solid transparent;border-top-color:currentcolor}.spinner:after{border:.16667em solid;opacity:.2}.magnifier{display:inline-block;height:1em;position:relative;width:1em}.magnifier:after,.magnifier:before{border-radius:var(--radius-full);content:"";display:block;position:absolute}.magnifier:before{border:1px solid;height:.75em;width:.75em}.magnifier:after{--tw-rotate:45deg;background-color:currentColor;height:1px;left:.55em;top:.7em;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));width:.5em}.more,.more-vert{margin:.5rem;position:relative}.more,.more-vert,.more-vert:after,.more-vert:before,.more:after,.more:before{background-color:currentColor;border-radius:var(--radius-full);height:.125rem;width:.125rem}.more-vert:after,.more-vert:before,.more:after,.more:before{--tw-content:"";content:var(--tw-content);display:block;left:-5px;position:absolute;top:0}.more-vert:after,.more:after{left:5px}.more-vert{--tw-rotate:90deg;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))}.chevron-down,.chevron-left,.chevron-right,.chevron-up{align-items:center;display:inline-flex;height:1em;justify-content:center;position:relative;width:1em}.chevron-down:before,.chevron-left:before,.chevron-right:before,.chevron-up:before{--tw-translate-y:-0.125rem;--tw-rotate:45deg;--tw-content:"";border-color:currentColor;border-width:0 1px 1px 0;content:var(--tw-content);display:block;height:.6923077em;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));transform-origin:center;width:.6923077em}.chevron-left:before{--tw-translate-y:0px;--tw-translate-x:0.125rem;--tw-rotate:135deg}.chevron-left:before,.chevron-right:before{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))}.chevron-right:before{--tw-translate-y:0px;--tw-translate-x:-0.125rem;--tw-rotate:-45deg}.chevron-up:before{--tw-translate-y:0.125rem;--tw-rotate:225deg;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))}.i-time{border-color:currentColor;border-radius:50%;border-width:.08em;display:inline-block;height:1em;position:relative;width:1em}.i-time:after{--tw-content:"";border-color:currentColor;border-width:0 0 .08em .08em;content:var(--tw-content);height:.385em;left:.3846em;position:absolute;top:.08em;width:.385em}.i-calendar{border-color:currentColor;border-radius:2px;border-width:.08em;display:inline-block;height:.79em;margin-top:.16em;position:relative;width:1em}.i-calendar:after,.i-calendar:before{--tw-content:"";border-color:currentColor;border-width:.08em;content:var(--tw-content);position:absolute}.i-calendar:before{border-bottom-width:0;left:.15em;top:.307em;width:.6em}.i-calendar:after{border-bottom-width:0;border-top-width:0;height:.3077em;left:.17em;top:-.154em;width:.538em}:root{--state-color:rgba(0,0,0,.05);--state-scale:.9;--opacity-disabled:.65;--opacity-muted:.5}.btn,.item>a,.state{cursor:pointer;position:relative}.btn:before,.item>a:before,.state:before{background:var(--state-color);border-radius:inherit;content:" ";display:block;inset:0;opacity:0;pointer-events:none;position:absolute;transform:scale(var(--state-scale));transition-duration:.2s;transition-property:opacity,transform,box-shadow,background-color;transition-timing-function:cubic-bezier(.4,0,.2,1)}.btn.active:not(:hover,:focus-visible,:focus-within,:active):before,.item>a.active:not(:hover,:focus-visible,:focus-within,:active):before,.state.active:not(:hover,:focus-visible,:focus-within,:active):before{--tw-scale-x:1;--tw-scale-y:1;--tw-shadow:inset 0 2px 4px 0 rgba(0,0,0,.05);--tw-shadow-colored:inset 0 2px 4px 0 var(--tw-shadow-color);background:var(--state-active-color,var(--state-color));box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);opacity:var(--state-active-opacity,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));transition-duration:.7s}.btn.selected:not(:hover,:focus-visible,:focus-within,:active):before,.item>a.selected:not(:hover,:focus-visible,:focus-within,:active):before,.state.selected:not(:hover,:focus-visible,:focus-within,:active):before{--tw-scale-x:1;--tw-scale-y:1;background:var(--state-selected-color,var(--state-scale));opacity:var(--state-selected-opacity,.1);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))}.btn:focus-visible,.item>a:focus-visible,.state:focus-visible{outline:2px solid transparent;outline-offset:2px}.btn:active:before,.btn:focus-visible:before,.btn:hover:before,.item>a:active:before,.item>a:focus-visible:before,.item>a:hover:before,.state:active:before,.state:focus-visible:before,.state:hover:before{--tw-scale-x:1;--tw-scale-y:1;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))}.btn:hover:before,.item>a:hover:before,.state:hover:before{opacity:var(--state-hover-opacity,1)}.btn:active:before,.item>a:active:before,.state:active:before{--tw-ring-color:var(--state-ring-color,currentColor);--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);background:var(--state-pressed-color,var(--state-color));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);opacity:var(--state-pressed-opacity,.6);transition-duration:.7s}.btn:focus-visible:before,.item>a:focus-visible:before,.state:focus-visible:before{--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);--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-focus-rgb),var(--tw-ring-opacity));background:var(--state-focus-color,var(--state-color));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);opacity:var(--state-focus-opacity,1)}.btn.disabled:before,.btn[disabled]:before,.item>a.disabled:before,.item>a[disabled]:before,.state.disabled:before,.state[disabled]:before{display:none}.disabled,.disabled *,[disabled],[disabled] *{--tw-grayscale:grayscale(100%);cursor:not-allowed!important;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);opacity:var(--opacity-disabled)}.load-indicator:after,.load-indicator:before{display:block;opacity:0;position:absolute;transition-delay:0s;transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);visibility:hidden}.load-indicator:before{--tw-content:attr(data-loading);align-items:center;background-color:rgba(var(--color-canvas-rgb),.7);border-radius:inherit;content:var(--tw-content);display:flex;font-size:.75rem;inset:0;justify-content:center;line-height:1rem;z-index:99}.load-indicator[data-loading]:before{padding-top:3.5rem}.load-indicator:after{--tw-content:"";border-color:transparent currentcolor currentcolor;border-radius:var(--radius-full);border-style:dotted;border-width:4px 3px 4px 4px;content:var(--tw-content);height:2rem;left:50%;margin-left:-1rem;margin-top:-1rem;top:50%;width:2rem;z-index:100}.load-indicator.loading:after,.load-indicator.loading:before{opacity:1;transition-delay:.5s;visibility:visible}@keyframes -spin{to{transform:rotate(1turn)}}.load-indicator.loading:after{animation:-spin 1s linear infinite;opacity:.5}.events-none,.pointer-events-none{pointer-events:none}.events-auto,.pointer-events-auto{pointer-events:auto}.scroll-auto{scroll-behavior:auto}.scroll-smooth{scroll-behavior:smooth}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-text{-webkit-user-select:text;-moz-user-select:text;user-select:text}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.select-auto{-webkit-user-select:auto;-moz-user-select:auto;user-select:auto}.cursor-auto{cursor:auto}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-wait{cursor:wait}.cursor-text{cursor:text}.cursor-move{cursor:move}.cursor-help{cursor:help}.cursor-not-allowed{cursor:not-allowed}.active\:opacity-100.active,.active\:opacity-100:active,.group.active .group-active\:opacity-100,.group:active .group-active\:opacity-100,.group:hover .group-hover\:opacity-100,.hover\:opacity-100:hover{opacity:1}.active\:text-primary.active,.active\:text-primary:active,.group.active .group-active\:text-primary,.group:active .group-active\:text-primary,.group:hover .group-hover\:text-primary,.hover\:text-primary:hover{--tw-text-opacity:1;color:rgba(var(--color-primary-500-rgb),var(--tw-text-opacity))}.active\:border-primary.active,.active\:border-primary:active,.group.active .group-active\:border-primary,.group:active .group-active\:border-primary,.group:hover .group-hover\:border-primary,.hover\:border-primary:hover{--tw-border-opacity:1;border-color:rgba(var(--color-primary-500-rgb),var(--tw-border-opacity))}.active\:primary-pale.active,.active\:primary-pale:active,.group.active .group-active\:primary-pale,.group:active .group-active\:primary-pale,.group:hover .group-hover\:primary-pale,.hover\:primary-pale:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-50-rgb),var(--tw-bg-opacity))}.active\:primary.active,.active\:primary:active,.group.active .group-active\:primary,.group:active .group-active\:primary,.group:hover .group-hover\:primary,.hover\:primary:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgba(var(--color-primary-500-rgb),var(--tw-bg-opacity));color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity))}.active\:canvas.active,.active\:canvas:active,.group.active .group-active\:canvas,.group:active .group-active\:canvas,.group:hover .group-hover\:canvas,.hover\:canvas:hover{--tw-bg-opacity:1;background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity))}.active\:font-bold.active,.active\:font-bold:active,.group.active .group-active\:font-bold,.group:active .group-active\:font-bold,.group:hover .group-hover\:font-bold,.hover\:font-bold:hover{font-weight:700}.active\:shadow.active,.active\:shadow:active,.group.active .group-active\:shadow,.group:active .group-active\:shadow,.group:hover .group-hover\:shadow,.hover\:shadow:hover{--tw-shadow:0 3px 8px 0 rgba(0,0,0,.04),0 1px 2px -1px rgba(0,0,0,.01);--tw-shadow-colored:0 3px 8px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.aspect-auto{aspect-ratio:auto}.aspect-square{aspect-ratio:1/1}.aspect-video{aspect-ratio:16/9}.container{width:100%}@media (min-width:1720px){.container{max-width:1720px}}.container{margin-left:auto;margin-right:auto}.popup{--tw-bg-opacity:0.85;--tw-shadow:0 10px 25px -5px rgba(0,0,0,.2),0 4px 10px -6px rgba(0,0,0,.15);--tw-shadow-colored:0 10px 25px -5px var(--tw-shadow-color),0 4px 10px -6px var(--tw-shadow-color);--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);--tw-ring-color:rgba(var(--color-inverse-rgb),var(--tw-ring-opacity));--tw-ring-opacity:0.05;--tw-backdrop-blur:blur(16px);-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);background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity));border-radius:var(--radius);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.table-cell{display:table-cell}.table-row{display:table-row}.hidden{display:none!important}.pull-right{float:right}.pull-left{float:left}.clearfix:after{clear:both;content:"";display:block}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.object-fill{-o-object-fit:fill;object-fit:fill}.object-none{-o-object-fit:none;object-fit:none}.object-scale-down{-o-object-fit:scale-down;object-fit:scale-down}.object-bottom{-o-object-position:bottom;object-position:bottom}.object-center{-o-object-position:center;object-position:center}.object-left{-o-object-position:left;object-position:left}.object-left-bottom{-o-object-position:left bottom;object-position:left bottom}.object-left-top{-o-object-position:left top;object-position:left top}.object-right{-o-object-position:right;object-position:right}.object-right-bottom{-o-object-position:right bottom;object-position:right bottom}.object-right-top{-o-object-position:right top;object-position:right top}.object-top{-o-object-position:top;object-position:top}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-clip{overflow:clip}.overflow-visible{overflow:visible}.overflow-scroll{overflow:scroll}.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-x-clip{overflow-x:clip}.overflow-y-clip{overflow-y:clip}.overflow-x-visible{overflow-x:visible}.overflow-y-visible{overflow-y:visible}.overflow-x-scroll{overflow-x:scroll}.overflow-y-scroll{overflow-y:scroll}.overflow-overlay{overflow:overlay}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-auto{inset:auto}.inset-x-0{left:0;right:0}.inset-y-0{bottom:0;top:0}.top-0{top:0}.right-0{right:0}.bottom-0{bottom:0}.left-0{left:0}.top-full{top:100%}.right-full{right:100%}.bottom-full{bottom:100%}.left-full{left:100%}.top-auto{top:auto}.right-auto{right:auto}.bottom-auto{bottom:auto}.left-auto{left:auto}.top-px{top:1px}.right-px{right:1px}.bottom-px{bottom:1px}.left-px{left:1px}.top-0\.5{top:.125rem}.right-0\.5{right:.125rem}.bottom-0\.5{bottom:.125rem}.left-0\.5{left:.125rem}.top-1{top:.25rem}.right-1{right:.25rem}.bottom-1{bottom:.25rem}.left-1{left:.25rem}.top-1\.5{top:.375rem}.right-1\.5{right:.375rem}.bottom-1\.5{bottom:.375rem}.left-1\.5{left:.375rem}.top-2{top:.5rem}.right-2{right:.5rem}.bottom-2{bottom:.5rem}.left-2{left:.5rem}.top-2\.5{top:.625rem}.right-2\.5{right:.625rem}.bottom-2\.5{bottom:.625rem}.left-2\.5{left:.625rem}.top-3{top:.75rem}.right-3{right:.75rem}.bottom-3{bottom:.75rem}.left-3{left:.75rem}.top-3\.5{top:.875rem}.right-3\.5{right:.875rem}.bottom-3\.5{bottom:.875rem}.left-3\.5{left:.875rem}.top-4{top:1rem}.right-4{right:1rem}.bottom-4{bottom:1rem}.left-4{left:1rem}.top-5{top:1.25rem}.right-5{right:1.25rem}.bottom-5{bottom:1.25rem}.left-5{left:1.25rem}.top-6{top:1.5rem}.right-6{right:1.5rem}.bottom-6{bottom:1.5rem}.left-6{left:1.5rem}.top-7{top:1.75rem}.right-7{right:1.75rem}.bottom-7{bottom:1.75rem}.left-7{left:1.75rem}.top-8{top:2rem}.right-8{right:2rem}.bottom-8{bottom:2rem}.left-8{left:2rem}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-0{z-index:0}.z-1{z-index:1}.z-5{z-index:5}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-auto{z-index:auto}.z-base{z-index:1100}.z-above{z-index:50}.z-below{z-index:-50}.z-dropdown{z-index:1200}.z-sticky{z-index:1300}.z-fixed{z-index:1400}.z-modal{z-index:1500}.z-overlay{z-index:1600}.z-popover{z-index:1700}.z-tooltip{z-index:1800}.z-messager{z-index:1900}.m-0{margin:0}.m-auto{margin:auto}.m-px{margin:1px}.m-0\.5{margin:.125rem}.m-1{margin:.25rem}.m-1\.5{margin:.375rem}.m-2{margin:.5rem}.m-2\.5{margin:.625rem}.m-3{margin:.75rem}.m-3\.5{margin:.875rem}.m-4{margin:1rem}.m-5{margin:1.25rem}.m-6{margin:1.5rem}.m-7{margin:1.75rem}.m-8{margin:2rem}.m-9{margin:2.25rem}.m-10{margin:2.5rem}.mx-0{margin-left:0;margin-right:0}.my-0{margin-bottom:0}.mt-0,.my-0{margin-top:0}.mr-0{margin-right:0}.mb-0{margin-bottom:0}.ml-0{margin-left:0}.mx-auto{margin-left:auto;margin-right:auto}.my-auto{margin-bottom:auto}.mt-auto,.my-auto{margin-top:auto}.mr-auto{margin-right:auto}.mb-auto{margin-bottom:auto}.ml-auto{margin-left:auto}.mx-px{margin-left:1px;margin-right:1px}.my-px{margin-bottom:1px}.mt-px,.my-px{margin-top:1px}.mr-px{margin-right:1px}.mb-px{margin-bottom:1px}.ml-px{margin-left:1px}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.my-0\.5{margin-bottom:.125rem}.mt-0\.5,.my-0\.5{margin-top:.125rem}.mr-0\.5{margin-right:.125rem}.mb-0\.5{margin-bottom:.125rem}.ml-0\.5{margin-left:.125rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.my-1{margin-bottom:.25rem}.mt-1,.my-1{margin-top:.25rem}.mr-1{margin-right:.25rem}.mb-1{margin-bottom:.25rem}.ml-1{margin-left:.25rem}.mx-1\.5{margin-left:.375rem;margin-right:.375rem}.my-1\.5{margin-bottom:.375rem}.mt-1\.5,.my-1\.5{margin-top:.375rem}.mr-1\.5{margin-right:.375rem}.mb-1\.5{margin-bottom:.375rem}.ml-1\.5{margin-left:.375rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-2{margin-bottom:.5rem}.mt-2,.my-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.mx-2\.5{margin-left:.625rem;margin-right:.625rem}.my-2\.5{margin-bottom:.625rem}.mt-2\.5,.my-2\.5{margin-top:.625rem}.mr-2\.5{margin-right:.625rem}.mb-2\.5{margin-bottom:.625rem}.ml-2\.5{margin-left:.625rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.my-3{margin-bottom:.75rem}.mt-3,.my-3{margin-top:.75rem}.mr-3{margin-right:.75rem}.mb-3{margin-bottom:.75rem}.ml-3{margin-left:.75rem}.mx-3\.5{margin-left:.875rem;margin-right:.875rem}.my-3\.5{margin-bottom:.875rem}.mt-3\.5,.my-3\.5{margin-top:.875rem}.mr-3\.5{margin-right:.875rem}.mb-3\.5{margin-bottom:.875rem}.ml-3\.5{margin-left:.875rem}.mx-4{margin-left:1rem;margin-right:1rem}.my-4{margin-bottom:1rem}.mt-4,.my-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.ml-4{margin-left:1rem}.mx-5{margin-left:1.25rem;margin-right:1.25rem}.my-5{margin-bottom:1.25rem}.mt-5,.my-5{margin-top:1.25rem}.mr-5{margin-right:1.25rem}.mb-5{margin-bottom:1.25rem}.ml-5{margin-left:1.25rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.my-6{margin-bottom:1.5rem}.mt-6,.my-6{margin-top:1.5rem}.mr-6{margin-right:1.5rem}.mb-6{margin-bottom:1.5rem}.ml-6{margin-left:1.5rem}.mx-7{margin-left:1.75rem;margin-right:1.75rem}.my-7{margin-bottom:1.75rem}.mt-7,.my-7{margin-top:1.75rem}.mr-7{margin-right:1.75rem}.mb-7{margin-bottom:1.75rem}.ml-7{margin-left:1.75rem}.mx-8{margin-left:2rem;margin-right:2rem}.my-8{margin-bottom:2rem}.mt-8,.my-8{margin-top:2rem}.mr-8{margin-right:2rem}.mb-8{margin-bottom:2rem}.ml-8{margin-left:2rem}.mx-9{margin-left:2.25rem;margin-right:2.25rem}.my-9{margin-bottom:2.25rem}.mt-9,.my-9{margin-top:2.25rem}.mr-9{margin-right:2.25rem}.mb-9{margin-bottom:2.25rem}.ml-9{margin-left:2.25rem}.mx-10{margin-left:2.5rem;margin-right:2.5rem}.my-10{margin-bottom:2.5rem}.mt-10,.my-10{margin-top:2.5rem}.mr-10{margin-right:2.5rem}.mb-10{margin-bottom:2.5rem}.ml-10{margin-left:2.5rem}.p-0{padding:0}.p-px{padding:1px}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-3\.5{padding:.875rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-7{padding:1.75rem}.p-8{padding:2rem}.p-9{padding:2.25rem}.p-10{padding:2.5rem}.px-0{padding-left:0;padding-right:0}.py-0{padding-bottom:0}.pt-0,.py-0{padding-top:0}.pr-0{padding-right:0}.pb-0{padding-bottom:0}.pl-0{padding-left:0}.px-px{padding-left:1px;padding-right:1px}.py-px{padding-bottom:1px}.pt-px,.py-px{padding-top:1px}.pr-px{padding-right:1px}.pb-px{padding-bottom:1px}.pl-px{padding-left:1px}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.py-0\.5{padding-bottom:.125rem}.pt-0\.5,.py-0\.5{padding-top:.125rem}.pr-0\.5{padding-right:.125rem}.pb-0\.5{padding-bottom:.125rem}.pl-0\.5{padding-left:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-1{padding-bottom:.25rem}.pt-1,.py-1{padding-top:.25rem}.pr-1{padding-right:.25rem}.pb-1{padding-bottom:.25rem}.pl-1{padding-left:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.py-1\.5{padding-bottom:.375rem}.pt-1\.5,.py-1\.5{padding-top:.375rem}.pr-1\.5{padding-right:.375rem}.pb-1\.5{padding-bottom:.375rem}.pl-1\.5{padding-left:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-2{padding-bottom:.5rem}.pt-2,.py-2{padding-top:.5rem}.pr-2{padding-right:.5rem}.pb-2{padding-bottom:.5rem}.pl-2{padding-left:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.py-2\.5{padding-bottom:.625rem}.pt-2\.5,.py-2\.5{padding-top:.625rem}.pr-2\.5{padding-right:.625rem}.pb-2\.5{padding-bottom:.625rem}.pl-2\.5{padding-left:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-3{padding-bottom:.75rem}.pt-3,.py-3{padding-top:.75rem}.pr-3{padding-right:.75rem}.pb-3{padding-bottom:.75rem}.pl-3{padding-left:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.py-3\.5{padding-bottom:.875rem}.pt-3\.5,.py-3\.5{padding-top:.875rem}.pr-3\.5{padding-right:.875rem}.pb-3\.5{padding-bottom:.875rem}.pl-3\.5{padding-left:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.py-4{padding-bottom:1rem}.pt-4,.py-4{padding-top:1rem}.pr-4{padding-right:1rem}.pb-4{padding-bottom:1rem}.pl-4{padding-left:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-5{padding-bottom:1.25rem}.pt-5,.py-5{padding-top:1.25rem}.pr-5{padding-right:1.25rem}.pb-5{padding-bottom:1.25rem}.pl-5{padding-left:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-6{padding-bottom:1.5rem}.pt-6,.py-6{padding-top:1.5rem}.pr-6{padding-right:1.5rem}.pb-6{padding-bottom:1.5rem}.pl-6{padding-left:1.5rem}.px-7{padding-left:1.75rem;padding-right:1.75rem}.py-7{padding-bottom:1.75rem}.pt-7,.py-7{padding-top:1.75rem}.pr-7{padding-right:1.75rem}.pb-7{padding-bottom:1.75rem}.pl-7{padding-left:1.75rem}.px-8{padding-left:2rem;padding-right:2rem}.py-8{padding-bottom:2rem}.pt-8,.py-8{padding-top:2rem}.pr-8{padding-right:2rem}.pb-8{padding-bottom:2rem}.pl-8{padding-left:2rem}.px-9{padding-left:2.25rem;padding-right:2.25rem}.py-9{padding-bottom:2.25rem}.pt-9,.py-9{padding-top:2.25rem}.pr-9{padding-right:2.25rem}.pb-9{padding-bottom:2.25rem}.pl-9{padding-left:2.25rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.py-10{padding-bottom:2.5rem}.pt-10,.py-10{padding-top:2.5rem}.pr-10{padding-right:2.5rem}.pb-10{padding-bottom:2.5rem}.pl-10{padding-left:2.5rem}.space-x-0>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(0px*(1 - var(--tw-space-x-reverse)));margin-right:calc(0px*var(--tw-space-x-reverse))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(0px*var(--tw-space-y-reverse));margin-top:calc(0px*(1 - var(--tw-space-y-reverse)))}.space-x-0\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.125rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.125rem*var(--tw-space-x-reverse))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.125rem*var(--tw-space-y-reverse));margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)))}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.25rem*var(--tw-space-x-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.space-x-1\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.375rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.375rem*var(--tw-space-x-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.375rem*var(--tw-space-y-reverse));margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.space-x-2\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.625rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.625rem*var(--tw-space-x-reverse))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.625rem*var(--tw-space-y-reverse));margin-top:calc(.625rem*(1 - var(--tw-space-y-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.75rem*var(--tw-space-x-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.space-x-3\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.875rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.875rem*var(--tw-space-x-reverse))}.space-y-3\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.875rem*var(--tw-space-y-reverse));margin-top:calc(.875rem*(1 - var(--tw-space-y-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1.25rem*var(--tw-space-x-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.25rem*var(--tw-space-y-reverse));margin-top:calc(1.25rem*(1 - var(--tw-space-y-reverse)))}.space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1.5rem*var(--tw-space-x-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.space-x-7>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1.75rem*var(--tw-space-x-reverse))}.space-y-7>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.75rem*var(--tw-space-y-reverse));margin-top:calc(1.75rem*(1 - var(--tw-space-y-reverse)))}.space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(2rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(2rem*var(--tw-space-x-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(2rem*var(--tw-space-y-reverse));margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)))}.space-x-9>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(2.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(2.25rem*var(--tw-space-x-reverse))}.space-y-9>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(2.25rem*var(--tw-space-y-reverse));margin-top:calc(2.25rem*(1 - var(--tw-space-y-reverse)))}.space-x-10>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(2.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(2.5rem*var(--tw-space-x-reverse))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(2.5rem*var(--tw-space-y-reverse));margin-top:calc(2.5rem*(1 - var(--tw-space-y-reverse)))}.space-x-px>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1px*(1 - var(--tw-space-x-reverse)));margin-right:calc(1px*var(--tw-space-x-reverse))}.space-y-px>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1px*var(--tw-space-y-reverse));margin-top:calc(1px*(1 - var(--tw-space-y-reverse)))}.w-0{width:0}.w-px{width:1px}.w-0\.5{width:.125rem}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-32{width:8rem}.w-36{width:9rem}.w-40{width:10rem}.w-44{width:11rem}.w-48{width:12rem}.w-52{width:13rem}.w-56{width:14rem}.w-60{width:15rem}.w-64{width:16rem}.w-72{width:18rem}.w-80{width:20rem}.w-96{width:24rem}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-2\/3{width:66.666667%}.w-1\/4{width:25%}.w-2\/4{width:50%}.w-3\/4{width:75%}.w-1\/5{width:20%}.w-2\/5{width:40%}.w-3\/5{width:60%}.w-4\/5{width:80%}.w-1\/6{width:16.666667%}.w-2\/6{width:33.333333%}.w-3\/6{width:50%}.w-4\/6{width:66.666667%}.w-5\/6{width:83.333333%}.w-auto{width:auto}.w-full{width:100%}.w-screen{width:100vw}.w-min{width:-moz-min-content;width:min-content}.w-max{width:-moz-max-content;width:max-content}.w-fit{width:-moz-fit-content;width:fit-content}.min-w-0{min-width:0}.min-w-full{min-width:100%}.min-w-min{min-width:-moz-min-content;min-width:min-content}.min-w-max{min-width:-moz-max-content;min-width:max-content}.min-w-fit{min-width:-moz-fit-content;min-width:fit-content}.max-w-0{max-width:0}.max-w-none{max-width:none}.max-w-xs{max-width:20rem}.max-w-sm{max-width:24rem}.max-w-md{max-width:28rem}.max-w-lg{max-width:32rem}.max-w-xl{max-width:36rem}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-full{max-width:100%}.max-w-min{max-width:-moz-min-content;max-width:min-content}.max-w-max{max-width:-moz-max-content;max-width:max-content}.max-w-fit{max-width:-moz-fit-content;max-width:fit-content}.h-0{height:0}.h-px{height:1px}.h-0\.5{height:.125rem}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-20{height:5rem}.h-24{height:6rem}.h-28{height:7rem}.h-32{height:8rem}.h-36{height:9rem}.h-40{height:10rem}.h-44{height:11rem}.h-48{height:12rem}.h-52{height:13rem}.h-56{height:14rem}.h-60{height:15rem}.h-64{height:16rem}.h-72{height:18rem}.h-80{height:20rem}.h-96{height:24rem}.h-1\/2{height:50%}.h-1\/3{height:33.333333%}.h-2\/3{height:66.666667%}.h-1\/4{height:25%}.h-2\/4{height:50%}.h-3\/4{height:75%}.h-1\/5{height:20%}.h-2\/5{height:40%}.h-3\/5{height:60%}.h-4\/5{height:80%}.h-1\/6{height:16.666667%}.h-2\/6{height:33.333333%}.h-3\/6{height:50%}.h-4\/6{height:66.666667%}.h-5\/6{height:83.333333%}.h-auto{height:auto}.h-full{height:100%}.h-screen{height:100vh}.h-min{height:-moz-min-content;height:min-content}.h-max{height:-moz-max-content;height:max-content}.h-fit{height:-moz-fit-content;height:fit-content}.min-h-0{min-height:0}.min-h-full{min-height:100%}.min-h-min{min-height:-moz-min-content;min-height:min-content}.min-h-max{min-height:-moz-max-content;min-height:max-content}.min-h-fit{min-height:-moz-fit-content;min-height:fit-content}.max-h-0{max-height:0}.max-h-px{max-height:1px}.max-h-none{max-height:none}.max-h-full{max-height:100%}.max-h-min{max-height:-moz-min-content;max-height:min-content}.max-h-screen{max-height:100vh}.max-h-max{max-height:-moz-max-content;max-height:max-content}.max-h-fit{max-height:-moz-fit-content;max-height:fit-content}.canvas,.surface,.surface-light,.surface-strong{--tw-text-opacity:1;color:rgba(var(--color-fore-rgb),var(--tw-text-opacity))}.canvas{--tw-bg-opacity:1;background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity))}.surface-light{--tw-bg-opacity:1;--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-surface-light-rgb),var(--tw-ring-opacity));background-color:rgba(var(--color-surface-light-rgb),var(--tw-bg-opacity))}.surface{--tw-bg-opacity:1;--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-surface-rgb),var(--tw-ring-opacity));background-color:rgba(var(--color-surface-rgb),var(--tw-bg-opacity))}.surface-strong{--tw-bg-opacity:1;--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-surface-strong-rgb),var(--tw-ring-opacity));background-color:rgba(var(--color-surface-strong-rgb),var(--tw-bg-opacity))}.inverse{background-color:rgba(var(--color-inverse-rgb),var(--tw-bg-opacity));color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity))}.inverse,.white{--tw-bg-opacity:1;--tw-text-opacity:1}.white{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-white-rgb),var(--tw-ring-opacity));background-color:rgba(var(--color-white-rgb),var(--tw-bg-opacity));color:rgba(var(--color-fore-in-light-rgb),var(--tw-text-opacity))}.black{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-black-rgb),var(--tw-ring-opacity));background-color:rgba(var(--color-black-rgb),var(--tw-bg-opacity));color:rgba(var(--color-fore-in-dark-rgb),var(--tw-text-opacity))}.transparent{--tw-ring-color:transparent;background-color:transparent}.skin{--skin-bg:var(--skin-color);--skin-ring:var(--skin-color);--skin-border:var(--skin-color);--skin-hover-text:var(--skin-text);--skin-hover-bg:var(--skin-bg);--tw-ring-color:var(--skin-ring);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--color-link-hover:var(--skin-text);background-color:var(--skin-bg);border-color:var(--skin-border);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:var(--skin-text)}.skin:hover{background-color:var(--skin-hover-bg);color:var(--skin-hover-text)}.danger,.darken,.darker,.darkest,.gray,.gray-100,.gray-200,.gray-300,.gray-400,.gray-50,.gray-500,.gray-600,.gray-700,.gray-800,.gray-900,.gray-950,.important,.lighten,.lighter,.lightest,.primary,.secondary,.special,.success,.warning{--skin-bg:var(--skin-color);--skin-ring:var(--skin-color);--skin-border:var(--skin-color);--skin-hover-text:var(--skin-text);--skin-hover-bg:var(--skin-bg);--tw-ring-color:var(--skin-ring);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--color-link-hover:var(--skin-text);background-color:var(--skin-bg);border-color:var(--skin-border);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:var(--skin-text)}.danger:hover,.darken:hover,.darker:hover,.darkest:hover,.gray-100:hover,.gray-200:hover,.gray-300:hover,.gray-400:hover,.gray-500:hover,.gray-50:hover,.gray-600:hover,.gray-700:hover,.gray-800:hover,.gray-900:hover,.gray-950:hover,.gray:hover,.important:hover,.lighten:hover,.lighter:hover,.lightest:hover,.primary:hover,.secondary:hover,.special:hover,.success:hover,.warning:hover{background-color:var(--skin-hover-bg);color:var(--skin-hover-text)}.danger,.darken,.darker,.darkest,.gray,.gray-100,.gray-200,.gray-300,.gray-400,.gray-50,.gray-500,.gray-600,.gray-700,.gray-800,.gray-900,.gray-950,.important,.lighten,.lighter,.lightest,.primary,.secondary,.special,.success,.warning{--skin-text:rgba(var(--color-fore-in-dark-rgb),var(--tw-text-opacity));--skin-color:rgba(var(--skin-solid-rgb),1);--state-ring-color:var(--skin-color);--state-active-color:rgba(0,0,0,.1);--state-pressed-color:rgba(0,0,0,.1);--state-color:hsla(0,0%,100%,.1);--state-focus-color:rgba(0,0,0,.1)}.primary{--skin-solid-rgb:var(--color-primary-500-rgb)}.secondary{--skin-solid-rgb:var(--color-secondary-500-rgb)}.success{--skin-solid-rgb:var(--color-success-500-rgb)}.warning{--skin-solid-rgb:var(--color-warning-500-rgb)}.danger{--skin-solid-rgb:var(--color-danger-500-rgb)}.important{--skin-solid-rgb:var(--color-important-500-rgb)}.special{--skin-solid-rgb:var(--color-special-500-rgb)}.gray-50{--skin-bg:rgba(var(--color-gray-50-rgb),var(--tw-bg-opacity));--skin-text:rgba(var(--color-fore),var(--tw-text-opacity))}.gray-100{--skin-solid-rgb:var(--color-gray-100-rgb);--skin-text:rgba(var(--color-fore),var(--tw-text-opacity))}.gray-200,.lightest{--skin-solid-rgb:var(--color-gray-200-rgb);--skin-text:rgba(var(--color-fore),var(--tw-text-opacity))}.gray-300,.lighter{--skin-solid-rgb:var(--color-gray-300-rgb);--skin-text:rgba(var(--color-fore),var(--tw-text-opacity))}.gray-400,.lighten{--skin-solid-rgb:var(--color-gray-400-rgb)}.gray,.gray-500{--skin-solid-rgb:var(--color-gray-500-rgb)}.darken,.gray-600{--skin-solid-rgb:var(--color-gray-600-rgb)}.darker,.gray-700{--skin-solid-rgb:var(--color-gray-700-rgb)}.darkest,.gray-800{--skin-solid-rgb:var(--color-gray-800-rgb)}.gray-900{--skin-solid-rgb:var(--color-gray-900-rgb)}.gray-950{--skin-solid-rgb:var(--color-gray-950-rgb)}.danger-pale,.gray-100-pale,.gray-200-pale,.gray-300-pale,.gray-400-pale,.gray-50-pale,.gray-500-pale,.gray-600-pale,.gray-700-pale,.gray-800-pale,.gray-900-pale,.gray-950-pale,.gray-pale,.important-pale,.pale,.primary-pale,.secondary-pale,.special-pale,.success-pale,.warning-pale{--skin-bg:var(--skin-color);--skin-ring:var(--skin-color);--skin-border:var(--skin-color);--skin-hover-text:var(--skin-text);--skin-hover-bg:var(--skin-bg);--tw-ring-color:var(--skin-ring);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--color-link-hover:var(--skin-text);background-color:var(--skin-bg);border-color:var(--skin-border);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:var(--skin-text)}.danger-pale:hover,.gray-100-pale:hover,.gray-200-pale:hover,.gray-300-pale:hover,.gray-400-pale:hover,.gray-50-pale:hover,.gray-500-pale:hover,.gray-600-pale:hover,.gray-700-pale:hover,.gray-800-pale:hover,.gray-900-pale:hover,.gray-950-pale:hover,.gray-pale:hover,.important-pale:hover,.pale:hover,.primary-pale:hover,.secondary-pale:hover,.special-pale:hover,.success-pale:hover,.warning-pale:hover{background-color:var(--skin-hover-bg);color:var(--skin-hover-text)}.danger-pale,.gray-100-pale,.gray-200-pale,.gray-300-pale,.gray-400-pale,.gray-50-pale,.gray-500-pale,.gray-600-pale,.gray-700-pale,.gray-800-pale,.gray-900-pale,.gray-950-pale,.gray-pale,.important-pale,.pale,.primary-pale,.secondary-pale,.special-pale,.success-pale,.warning-pale{--skin-color:rgba(var(--skin-pale-rgb),.1);--skin-text:rgba(var(--skin-pale-rgb),1);--state-color:rgba(var(--skin-pale-rgb),.1)}.pale{--skin-pale-rgb:var(--color-gray-500-rgb)}.primary-pale{--skin-pale-rgb:var(--color-primary-500-rgb)}.secondary-pale{--skin-pale-rgb:var(--color-secondary-500-rgb)}.success-pale{--skin-pale-rgb:var(--color-success-500-rgb)}.warning-pale{--skin-pale-rgb:var(--color-warning-500-rgb)}.danger-pale{--skin-pale-rgb:var(--color-danger-500-rgb)}.important-pale{--skin-pale-rgb:var(--color-important-500-rgb)}.special-pale{--skin-pale-rgb:var(--color-special-500-rgb)}.gray-50-pale{--skin-pale-rgb:var(--color-gray-50-rgb);--skin-text:var(--color-gray-400)}.gray-100-pale{--skin-pale-rgb:var(--color-gray-100-rgb);--skin-text:var(--color-gray-400)}.gray-200-pale{--skin-pale-rgb:var(--color-gray-200-rgb);--skin-text:var(--color-gray-400)}.gray-300-pale{--skin-pale-rgb:var(--color-gray-300-rgb);--skin-text:var(--color-gray-500)}.gray-400-pale{--skin-pale-rgb:var(--color-gray-400-rgb);--skin-text:var(--color-gray-500)}.gray-500-pale,.gray-pale{--skin-pale-rgb:var(--color-gray-500-rgb)}.gray-600-pale{--skin-pale-rgb:var(--color-gray-600-rgb)}.gray-700-pale{--skin-pale-rgb:var(--color-gray-700-rgb)}.gray-800-pale{--skin-pale-rgb:var(--color-gray-800-rgb)}.gray-900-pale{--skin-pale-rgb:var(--color-gray-900-rgb)}.gray-950-pale{--skin-pale-rgb:var(--color-gray-950-rgb)}.danger-outline,.dark-outline,.gray-300-outline,.gray-400-outline,.gray-600-outline,.gray-outline,.important-outline,.light-outline,.outline,.primary-outline,.secondary-outline,.special-outline,.success-outline,.warning-outline{--skin-bg:var(--skin-color);--skin-ring:var(--skin-color);--skin-border:var(--skin-color);--skin-hover-text:var(--skin-text);--skin-hover-bg:var(--skin-bg);--tw-ring-color:var(--skin-ring);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--color-link-hover:var(--skin-text);background-color:var(--skin-bg);border-color:var(--skin-border);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:var(--skin-text)}.danger-outline:hover,.dark-outline:hover,.gray-300-outline:hover,.gray-400-outline:hover,.gray-600-outline:hover,.gray-outline:hover,.important-outline:hover,.light-outline:hover,.outline:hover,.primary-outline:hover,.secondary-outline:hover,.special-outline:hover,.success-outline:hover,.warning-outline:hover{background-color:var(--skin-hover-bg);color:var(--skin-hover-text)}.danger-outline,.dark-outline,.gray-300-outline,.gray-400-outline,.gray-600-outline,.gray-outline,.important-outline,.light-outline,.outline,.primary-outline,.secondary-outline,.special-outline,.success-outline,.warning-outline{--skin-text:var(--skin-color,inherit);--skin-bg:transparent;--skin-color:rgba(var(--skin-outline-rgb),1);--state-color:rgba(var(--skin-outline-rgb),.1)}.outline{--skin-outline-rgb:var(--color-fore-rgb)}.primary-outline{--skin-outline-rgb:var(--color-primary-500-rgb)}.secondary-outline{--skin-outline-rgb:var(--color-secondary-500-rgb)}.success-outline{--skin-outline-rgb:var(--color-success-500-rgb)}.warning-outline{--skin-outline-rgb:var(--color-warning-500-rgb)}.danger-outline{--skin-outline-rgb:var(--color-danger-500-rgb)}.important-outline{--skin-outline-rgb:var(--color-important-500-rgb)}.special-outline{--skin-outline-rgb:var(--color-special-500-rgb)}.gray-300-outline{--skin-text:var(--color-gray-500);--skin-outline-rgb:var(--color-gray-300-rgb)}.gray-400-outline{--skin-text:var(--color-gray-500);--skin-outline-rgb:var(--color-gray-400-rgb)}.gray-outline{--skin-outline-rgb:var(--color-gray-500-rgb)}.gray-600-outline{--skin-outline-rgb:var(--color-gray-600-rgb)}.dark-outline{--skin-outline-rgb:var(--color-inverse-rgb)}.light-outline{--skin-outline-rgb:var(--color-canvas-rgb)}.danger-ghost,.ghost,.important-ghost,.primary-ghost,.secondary-ghost,.special-ghost,.success-ghost,.warning-ghost{--skin-bg:var(--skin-color);--skin-ring:var(--skin-color);--skin-border:var(--skin-color);--skin-hover-text:var(--skin-text);--skin-hover-bg:var(--skin-bg);--tw-ring-color:var(--skin-ring);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--color-link-hover:var(--skin-text);background-color:var(--skin-bg);border-color:var(--skin-border);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:var(--skin-text)}.danger-ghost:hover,.ghost:hover,.important-ghost:hover,.primary-ghost:hover,.secondary-ghost:hover,.special-ghost:hover,.success-ghost:hover,.warning-ghost:hover{background-color:var(--skin-hover-bg);color:var(--skin-hover-text)}.danger-ghost,.ghost,.important-ghost,.primary-ghost,.secondary-ghost,.special-ghost,.success-ghost,.warning-ghost{--tw-ring-opacity:0;--tw-bg-opacity:0;--skin-text:var(--skin-color,inherit);--skin-bg:transparent;--skin-ring:transparent;--skin-color:rgba(var(--skin-ghost-rgb),1);--state-color:rgba(var(--skin-ghost-rgb),.1)}.ghost{--skin-ghost-rgb:var(--color-fore-rgb);--skin-text:inherit}.primary-ghost{--skin-ghost-rgb:var(--color-primary-500-rgb)}.secondary-ghost{--skin-ghost-rgb:var(--color-secondary-500-rgb)}.success-ghost{--skin-ghost-rgb:var(--color-success-500-rgb)}.warning-ghost{--skin-ghost-rgb:var(--color-warning-500-rgb)}.danger-ghost{--skin-ghost-rgb:var(--color-danger-500-rgb)}.important-ghost{--skin-ghost-rgb:var(--color-important-500-rgb)}.special-ghost{--skin-ghost-rgb:var(--color-special-500-rgb)}.font-sans{font-family:-apple-system,Noto Sans,Helvetica Neue,Helvetica,Nimbus Sans L,Arial,Liberation Sans,PingFang SC,Hiragino Sans GB,Noto Sans CJK SC,Source Han Sans SC,Source Han Sans CN,Microsoft YaHei,Wenquanyi Micro Hei,WenQuanYi Zen Hei,ST Heiti,SimHei,WenQuanYi Zen Hei Sharp,sans-serif}.font-serif{font-family:Nimbus Roman No9 L,Songti SC,Noto Serif CJK SC,Source Han Serif SC,Source Han Serif CN,STSong,AR PL New Sung,AR PL SungtiL GB,NSimSun,SimSun,TW-Sung,WenQuanYi Bitmap Song,AR PL UMing CN,AR PL UMing HK,AR PL UMing TW,AR PL UMing TW MBE,PMingLiU,MingLiU,serif}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-root{font-size:16px}.text-sm{font-size:.75rem;line-height:1rem}.text-base{font-size:.8125rem;line-height:1.25rem}.text-md{font-size:.875rem;line-height:1.3rem}.text-lg{font-size:1rem;line-height:1.5rem}.text-xl{font-size:1.125rem;line-height:1.75rem}.text-2xl{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}.font-thin{font-weight:100}.font-light{font-weight:300}.font-normal{font-weight:400}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.font-black{font-weight:900}.leading-3{line-height:.75rem}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-7{line-height:1.75rem}.leading-8{line-height:2rem}.leading-9{line-height:2.25rem}.leading-10{line-height:2.5rem}.leading-none{line-height:1}.leading-tight{line-height:1.25}.leading-snug{line-height:1.375}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.leading-loose{line-height:2}.line-clamp-1{-webkit-line-clamp:1}.line-clamp-1,.line-clamp-2{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2}.line-clamp-3{-webkit-line-clamp:3}.line-clamp-3,.line-clamp-4{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-4{-webkit-line-clamp:4}.line-clamp-5{-webkit-line-clamp:5}.line-clamp-5,.line-clamp-6{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-6{-webkit-line-clamp:6}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.align-middle{vertical-align:middle}.align-top{vertical-align:top}.align-bottom{vertical-align:bottom}.align-sub{vertical-align:sub}.align-super{vertical-align:super}.text-primary{--tw-text-opacity:1;color:rgba(var(--color-primary-500-rgb),var(--tw-text-opacity))}.text-secondary{--tw-text-opacity:1;color:rgba(var(--color-secondary-500-rgb),var(--tw-text-opacity))}.text-success{--tw-text-opacity:1;color:rgba(var(--color-success-500-rgb),var(--tw-text-opacity))}.text-warning{--tw-text-opacity:1;color:rgba(var(--color-warning-500-rgb),var(--tw-text-opacity))}.text-danger{--tw-text-opacity:1;color:rgba(var(--color-danger-500-rgb),var(--tw-text-opacity))}.text-important{--tw-text-opacity:1;color:rgba(var(--color-important-500-rgb),var(--tw-text-opacity))}.text-special{--tw-text-opacity:1;color:rgba(var(--color-special-500-rgb),var(--tw-text-opacity))}.text-primary-50{--tw-text-opacity:1;color:rgba(var(--color-primary-50-rgb),var(--tw-text-opacity))}.text-primary-100{--tw-text-opacity:1;color:rgba(var(--color-primary-100-rgb),var(--tw-text-opacity))}.text-primary-200{--tw-text-opacity:1;color:rgba(var(--color-primary-200-rgb),var(--tw-text-opacity))}.text-primary-300{--tw-text-opacity:1;color:rgba(var(--color-primary-300-rgb),var(--tw-text-opacity))}.text-primary-400{--tw-text-opacity:1;color:rgba(var(--color-primary-400-rgb),var(--tw-text-opacity))}.text-primary-500{--tw-text-opacity:1;color:rgba(var(--color-primary-500-rgb),var(--tw-text-opacity))}.text-primary-600{--tw-text-opacity:1;color:rgba(var(--color-primary-600-rgb),var(--tw-text-opacity))}.text-primary-700{--tw-text-opacity:1;color:rgba(var(--color-primary-700-rgb),var(--tw-text-opacity))}.text-primary-800{--tw-text-opacity:1;color:rgba(var(--color-primary-800-rgb),var(--tw-text-opacity))}.text-primary-900{--tw-text-opacity:1;color:rgba(var(--color-primary-900-rgb),var(--tw-text-opacity))}.text-primary-950{--tw-text-opacity:1;color:rgba(var(--color-primary-950-rgb),var(--tw-text-opacity))}.text-secondary-50{--tw-text-opacity:1;color:rgba(var(--color-secondary-50-rgb),var(--tw-text-opacity))}.text-secondary-100{--tw-text-opacity:1;color:rgba(var(--color-secondary-100-rgb),var(--tw-text-opacity))}.text-secondary-200{--tw-text-opacity:1;color:rgba(var(--color-secondary-200-rgb),var(--tw-text-opacity))}.text-secondary-300{--tw-text-opacity:1;color:rgba(var(--color-secondary-300-rgb),var(--tw-text-opacity))}.text-secondary-400{--tw-text-opacity:1;color:rgba(var(--color-secondary-400-rgb),var(--tw-text-opacity))}.text-secondary-500{--tw-text-opacity:1;color:rgba(var(--color-secondary-500-rgb),var(--tw-text-opacity))}.text-secondary-600{--tw-text-opacity:1;color:rgba(var(--color-secondary-600-rgb),var(--tw-text-opacity))}.text-secondary-700{--tw-text-opacity:1;color:rgba(var(--color-secondary-700-rgb),var(--tw-text-opacity))}.text-secondary-800{--tw-text-opacity:1;color:rgba(var(--color-secondary-800-rgb),var(--tw-text-opacity))}.text-secondary-900{--tw-text-opacity:1;color:rgba(var(--color-secondary-900-rgb),var(--tw-text-opacity))}.text-secondary-950{--tw-text-opacity:1;color:rgba(var(--color-secondary-950-rgb),var(--tw-text-opacity))}.text-gray-50{--tw-text-opacity:1;color:rgba(var(--color-gray-50-rgb),var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity:1;color:rgba(var(--color-gray-100-rgb),var(--tw-text-opacity))}.text-gray-200,.text-lightest{--tw-text-opacity:1;color:rgba(var(--color-gray-200-rgb),var(--tw-text-opacity))}.text-gray-300,.text-lighter{--tw-text-opacity:1;color:rgba(var(--color-gray-300-rgb),var(--tw-text-opacity))}.text-gray-400,.text-lighten{--tw-text-opacity:1;color:rgba(var(--color-gray-400-rgb),var(--tw-text-opacity))}.text-gray,.text-gray-500{--tw-text-opacity:1;color:rgba(var(--color-gray-500-rgb),var(--tw-text-opacity))}.text-darken,.text-gray-600{--tw-text-opacity:1;color:rgba(var(--color-gray-600-rgb),var(--tw-text-opacity))}.text-darker,.text-gray-700{--tw-text-opacity:1;color:rgba(var(--color-gray-700-rgb),var(--tw-text-opacity))}.text-darkest,.text-gray-800{--tw-text-opacity:1;color:rgba(var(--color-gray-800-rgb),var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgba(var(--color-gray-900-rgb),var(--tw-text-opacity))}.text-gray-950{--tw-text-opacity:1;color:rgba(var(--color-gray-950-rgb),var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgba(var(--color-white-rgb),var(--tw-text-opacity))}.text-black{--tw-text-opacity:1;color:rgba(var(--color-black-rgb),var(--tw-text-opacity))}.text-transparent{color:transparent}.text-canvas{--tw-text-opacity:1;color:rgba(var(--color-canvas-rgb),var(--tw-text-opacity))}.text-surface-light{--tw-text-opacity:1;color:rgba(var(--color-surface-light-rgb),var(--tw-text-opacity))}.text-surface{--tw-text-opacity:1;color:rgba(var(--color-surface-rgb),var(--tw-text-opacity))}.text-surface-strong{--tw-text-opacity:1;color:rgba(var(--color-surface-strong-rgb),var(--tw-text-opacity))}.text-inverse{--tw-text-opacity:1;color:rgba(var(--color-inverse-rgb),var(--tw-text-opacity))}.text-fore-in-light{--tw-text-opacity:1;color:rgba(var(--color-fore-in-light-rgb),var(--tw-text-opacity))}.text-fore-in-dark{--tw-text-opacity:1;color:rgba(var(--color-fore-in-dark-rgb),var(--tw-text-opacity))}.text-fore{--tw-text-opacity:1;color:rgba(var(--color-fore-rgb),var(--tw-text-opacity))}.text-focus{--tw-text-opacity:1;color:rgba(var(--color-focus-rgb),var(--tw-text-opacity))}.text-link{--tw-text-opacity:1;color:rgba(var(--color-link-rgb),var(--tw-text-opacity))}.text-link-hover{--tw-text-opacity:1;color:rgba(var(--color-link-hover-rgb),var(--tw-text-opacity))}.text-current{color:currentColor}.text-inherit{color:inherit}.clip,.ellipsis,.text-clip,.text-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.clip,.text-clip{text-overflow:clip}.nowrap,.whitespace-nowrap{white-space:nowrap}.pre,.whitespace-pre{white-space:pre}.pre-line,.whitespace-pre-line{white-space:pre-line}.pre-wrap,.whitespace-pre-wrap{white-space:pre-wrap}.break-normal{overflow-wrap:normal;word-break:normal}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.text-opacity-0{--tw-text-opacity:0}.text-opacity-5{--tw-text-opacity:.05}.text-opacity-10{--tw-text-opacity:.1}.text-opacity-20{--tw-text-opacity:.2}.text-opacity-25{--tw-text-opacity:.25}.text-opacity-30{--tw-text-opacity:.3}.text-opacity-40{--tw-text-opacity:.4}.text-opacity-50{--tw-text-opacity:.5}.text-opacity-60{--tw-text-opacity:.6}.text-opacity-70{--tw-text-opacity:.7}.text-opacity-80{--tw-text-opacity:.8}.text-opacity-90{--tw-text-opacity:.9}.text-opacity-95{--tw-text-opacity:.95}.text-opacity-100{--tw-text-opacity:1}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.list-none{list-style-type:none}.list-disc{list-style-type:disc}.list-decimal{list-style-type:decimal}.list-unstyled{list-style-type:none;padding-left:0}.underline{text-decoration-line:underline}.overline{text-decoration-line:overline}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.bg-primary{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-500-rgb),var(--tw-bg-opacity))}.bg-secondary{--tw-bg-opacity:1;background-color:rgba(var(--color-secondary-500-rgb),var(--tw-bg-opacity))}.bg-success{--tw-bg-opacity:1;background-color:rgba(var(--color-success-500-rgb),var(--tw-bg-opacity))}.bg-warning{--tw-bg-opacity:1;background-color:rgba(var(--color-warning-500-rgb),var(--tw-bg-opacity))}.bg-danger{--tw-bg-opacity:1;background-color:rgba(var(--color-danger-500-rgb),var(--tw-bg-opacity))}.bg-important{--tw-bg-opacity:1;background-color:rgba(var(--color-important-500-rgb),var(--tw-bg-opacity))}.bg-special{--tw-bg-opacity:1;background-color:rgba(var(--color-special-500-rgb),var(--tw-bg-opacity))}.bg-primary-50{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-50-rgb),var(--tw-bg-opacity))}.bg-primary-100{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-100-rgb),var(--tw-bg-opacity))}.bg-primary-200{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-200-rgb),var(--tw-bg-opacity))}.bg-primary-300{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-300-rgb),var(--tw-bg-opacity))}.bg-primary-400{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-400-rgb),var(--tw-bg-opacity))}.bg-primary-500{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-500-rgb),var(--tw-bg-opacity))}.bg-primary-600{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-600-rgb),var(--tw-bg-opacity))}.bg-primary-700{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-700-rgb),var(--tw-bg-opacity))}.bg-primary-800{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-800-rgb),var(--tw-bg-opacity))}.bg-primary-900{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-900-rgb),var(--tw-bg-opacity))}.bg-primary-950{--tw-bg-opacity:1;background-color:rgba(var(--color-primary-950-rgb),var(--tw-bg-opacity))}.bg-secondary-50{--tw-bg-opacity:1;background-color:rgba(var(--color-secondary-50-rgb),var(--tw-bg-opacity))}.bg-secondary-100{--tw-bg-opacity:1;background-color:rgba(var(--color-secondary-100-rgb),var(--tw-bg-opacity))}.bg-secondary-200{--tw-bg-opacity:1;background-color:rgba(var(--color-secondary-200-rgb),var(--tw-bg-opacity))}.bg-secondary-300{--tw-bg-opacity:1;background-color:rgba(var(--color-secondary-300-rgb),var(--tw-bg-opacity))}.bg-secondary-400{--tw-bg-opacity:1;background-color:rgba(var(--color-secondary-400-rgb),var(--tw-bg-opacity))}.bg-secondary-500{--tw-bg-opacity:1;background-color:rgba(var(--color-secondary-500-rgb),var(--tw-bg-opacity))}.bg-secondary-600{--tw-bg-opacity:1;background-color:rgba(var(--color-secondary-600-rgb),var(--tw-bg-opacity))}.bg-secondary-700{--tw-bg-opacity:1;background-color:rgba(var(--color-secondary-700-rgb),var(--tw-bg-opacity))}.bg-secondary-800{--tw-bg-opacity:1;background-color:rgba(var(--color-secondary-800-rgb),var(--tw-bg-opacity))}.bg-secondary-900{--tw-bg-opacity:1;background-color:rgba(var(--color-secondary-900-rgb),var(--tw-bg-opacity))}.bg-secondary-950{--tw-bg-opacity:1;background-color:rgba(var(--color-secondary-950-rgb),var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgba(var(--color-gray-50-rgb),var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgba(var(--color-gray-100-rgb),var(--tw-bg-opacity))}.bg-gray-200,.bg-lightest{--tw-bg-opacity:1;background-color:rgba(var(--color-gray-200-rgb),var(--tw-bg-opacity))}.bg-gray-300,.bg-lighter{--tw-bg-opacity:1;background-color:rgba(var(--color-gray-300-rgb),var(--tw-bg-opacity))}.bg-gray-400,.bg-light{--tw-bg-opacity:1;background-color:rgba(var(--color-gray-400-rgb),var(--tw-bg-opacity))}.bg-gray,.bg-gray-500{--tw-bg-opacity:1;background-color:rgba(var(--color-gray-500-rgb),var(--tw-bg-opacity))}.bg-darken,.bg-gray-600{--tw-bg-opacity:1;background-color:rgba(var(--color-gray-600-rgb),var(--tw-bg-opacity))}.bg-darker,.bg-gray-700{--tw-bg-opacity:1;background-color:rgba(var(--color-gray-700-rgb),var(--tw-bg-opacity))}.bg-darkest,.bg-gray-800{--tw-bg-opacity:1;background-color:rgba(var(--color-gray-800-rgb),var(--tw-bg-opacity))}.bg-gray-900{--tw-bg-opacity:1;background-color:rgba(var(--color-gray-900-rgb),var(--tw-bg-opacity))}.bg-gray-950{--tw-bg-opacity:1;background-color:rgba(var(--color-gray-950-rgb),var(--tw-bg-opacity))}.bg-canvas{--tw-bg-opacity:1;background-color:rgba(var(--color-canvas-rgb),var(--tw-bg-opacity))}.bg-surface-light{--tw-bg-opacity:1;background-color:rgba(var(--color-surface-light-rgb),var(--tw-bg-opacity))}.bg-surface{--tw-bg-opacity:1;background-color:rgba(var(--color-surface-rgb),var(--tw-bg-opacity))}.bg-surface-strong{--tw-bg-opacity:1;background-color:rgba(var(--color-surface-strong-rgb),var(--tw-bg-opacity))}.bg-inverse{--tw-bg-opacity:1;background-color:rgba(var(--color-inverse-rgb),var(--tw-bg-opacity))}.bg-fore-in-light{--tw-bg-opacity:1;background-color:rgba(var(--color-fore-in-light-rgb),var(--tw-bg-opacity))}.bg-fore-in-dark{--tw-bg-opacity:1;background-color:rgba(var(--color-fore-in-dark-rgb),var(--tw-bg-opacity))}.bg-fore{--tw-bg-opacity:1;background-color:rgba(var(--color-fore-rgb),var(--tw-bg-opacity))}.bg-focus{--tw-bg-opacity:1;background-color:rgba(var(--color-focus-rgb),var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgba(var(--color-white-rgb),var(--tw-bg-opacity))}.bg-black{--tw-bg-opacity:1;background-color:rgba(var(--color-black-rgb),var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-current{background-color:currentColor}.bg-inherit{background-color:inherit}.bg-none{background-image:none}.bg-opacity-0{--tw-bg-opacity:0}.bg-opacity-5{--tw-bg-opacity:.05}.bg-opacity-10{--tw-bg-opacity:.1}.bg-opacity-20{--tw-bg-opacity:.2}.bg-opacity-30{--tw-bg-opacity:.3}.bg-opacity-40{--tw-bg-opacity:.4}.bg-opacity-50{--tw-bg-opacity:.5}.bg-opacity-60{--tw-bg-opacity:.6}.bg-opacity-70{--tw-bg-opacity:.7}.bg-opacity-80{--tw-bg-opacity:.8}.bg-opacity-90{--tw-bg-opacity:.9}.bg-opacity-100{--tw-bg-opacity:1}.bg-auto{background-size:auto}.bg-cover{background-size:cover}.bg-contain{background-size:contain}.bg-repeat{background-repeat:repeat}.bg-no-repeat{background-repeat:no-repeat}.bg-repeat-x{background-repeat:repeat-x}.bg-repeat-y{background-repeat:repeat-y}.bg-repeat-round{background-repeat:round}.bg-repeat-space{background-repeat:space}.bg-bottom{background-position:bottom}.bg-center{background-position:50%}.bg-left{background-position:0}.bg-left-bottom{background-position:0 100%}.bg-left-top{background-position:0 0}.bg-right{background-position:100%}.bg-right-bottom{background-position:100% 100%}.bg-right-top{background-position:100% 0}.bg-top{background-position:top}.bg-fixed{background-attachment:fixed}.bg-local{background-attachment:local}.bg-scroll{background-attachment:scroll}.divider{align-self:stretch;border-color:currentColor;border-left-width:1px;border-top-width:1px;opacity:.1}.border-0{border-width:0}.border{border-width:1px}.border-2{border-width:2px}.border-4{border-width:4px}.border-t{border-top-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-b{border-bottom-width:1px}.border-t-0{border-top-width:0}.border-r-0{border-right-width:0}.border-b-0{border-bottom-width:0}.border-l-0{border-left-width:0}.border-t-2{border-top-width:2px}.border-l-2{border-left-width:2px}.border-r-2{border-right-width:2px}.border-b-2{border-bottom-width:2px}.border-t-4{border-top-width:4px}.border-l-4{border-left-width:4px}.border-r-4{border-right-width:4px}.border-b-4{border-bottom-width:4px}.border-light{--tw-border-opacity:1;border-color:rgba(var(--color-border-light-rgb),var(--tw-border-opacity))}.border-strong{--tw-border-opacity:1;border-color:rgba(var(--color-border-strong-rgb),var(--tw-border-opacity))}.border-primary{--tw-border-opacity:1;border-color:rgba(var(--color-primary-500-rgb),var(--tw-border-opacity))}.border-secondary{--tw-border-opacity:1;border-color:rgba(var(--color-secondary-500-rgb),var(--tw-border-opacity))}.border-success{--tw-border-opacity:1;border-color:rgba(var(--color-success-500-rgb),var(--tw-border-opacity))}.border-warning{--tw-border-opacity:1;border-color:rgba(var(--color-warning-500-rgb),var(--tw-border-opacity))}.border-danger{--tw-border-opacity:1;border-color:rgba(var(--color-danger-500-rgb),var(--tw-border-opacity))}.border-important{--tw-border-opacity:1;border-color:rgba(var(--color-important-500-rgb),var(--tw-border-opacity))}.border-special{--tw-border-opacity:1;border-color:rgba(var(--color-special-500-rgb),var(--tw-border-opacity))}.border-gray-50{--tw-border-opacity:1;border-color:rgba(var(--color-gray-50-rgb),var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity:1;border-color:rgba(var(--color-gray-100-rgb),var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgba(var(--color-gray-200-rgb),var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgba(var(--color-gray-300-rgb),var(--tw-border-opacity))}.border-gray-400{--tw-border-opacity:1;border-color:rgba(var(--color-gray-400-rgb),var(--tw-border-opacity))}.border-gray,.border-gray-500{--tw-border-opacity:1;border-color:rgba(var(--color-gray-500-rgb),var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity:1;border-color:rgba(var(--color-gray-600-rgb),var(--tw-border-opacity))}.border-gray-700{--tw-border-opacity:1;border-color:rgba(var(--color-gray-700-rgb),var(--tw-border-opacity))}.border-gray-800{--tw-border-opacity:1;border-color:rgba(var(--color-gray-800-rgb),var(--tw-border-opacity))}.border-gray-900{--tw-border-opacity:1;border-color:rgba(var(--color-gray-900-rgb),var(--tw-border-opacity))}.border-gray-950{--tw-border-opacity:1;border-color:rgba(var(--color-gray-950-rgb),var(--tw-border-opacity))}.border-white{--tw-border-opacity:1;border-color:rgba(var(--color-white-rgb),var(--tw-border-opacity))}.border-black{--tw-border-opacity:1;border-color:rgba(var(--color-black-rgb),var(--tw-border-opacity))}.border-canvas{--tw-border-opacity:1;border-color:rgba(var(--color-canvas-rgb),var(--tw-border-opacity))}.border-surface-light{--tw-border-opacity:1;border-color:rgba(var(--color-surface-light-rgb),var(--tw-border-opacity))}.border-surface{--tw-border-opacity:1;border-color:rgba(var(--color-surface-rgb),var(--tw-border-opacity))}.border-surface-strong{--tw-border-opacity:1;border-color:rgba(var(--color-surface-strong-rgb),var(--tw-border-opacity))}.border-inverse{--tw-border-opacity:1;border-color:rgba(var(--color-inverse-rgb),var(--tw-border-opacity))}.border-fore-in-light{--tw-border-opacity:1;border-color:rgba(var(--color-fore-in-light-rgb),var(--tw-border-opacity))}.border-fore-in-dark{--tw-border-opacity:1;border-color:rgba(var(--color-fore-in-dark-rgb),var(--tw-border-opacity))}.border-fore{--tw-border-opacity:1;border-color:rgba(var(--color-fore-rgb),var(--tw-border-opacity))}.border-focus{--tw-border-opacity:1;border-color:rgba(var(--color-focus-rgb),var(--tw-border-opacity))}.border-link{--tw-border-opacity:1;border-color:rgba(var(--color-link-rgb),var(--tw-border-opacity))}.border-link-hover{--tw-border-opacity:1;border-color:rgba(var(--color-link-hover-rgb),var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-current{border-color:currentColor}.border-inherit{border-color:inherit}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-dotted{border-style:dotted}.border-double{border-style:double}.border-hidden{border-style:hidden}.border-none{border-style:none}.border-opacity-0{--tw-border-opacity:0}.border-opacity-5{--tw-border-opacity:.05}.border-opacity-10{--tw-border-opacity:.1}.border-opacity-20{--tw-border-opacity:.2}.border-opacity-25{--tw-border-opacity:.25}.border-opacity-30{--tw-border-opacity:.3}.border-opacity-40{--tw-border-opacity:.4}.border-opacity-50{--tw-border-opacity:.5}.border-opacity-60{--tw-border-opacity:.6}.border-opacity-70{--tw-border-opacity:.7}.border-opacity-80{--tw-border-opacity:.8}.border-opacity-90{--tw-border-opacity:.9}.border-opacity-95{--tw-border-opacity:.95}.border-opacity-100{--tw-border-opacity:1}.rounded-none{border-radius:var(--radius-none)}.rounded-sm{border-radius:var(--radius-sm)}.rounded{border-radius:var(--radius)}.rounded-md{border-radius:var(--radius-md)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.circle,.rounded-full{border-radius:var(--radius-full)}.rounded-l-none{border-bottom-left-radius:var(--radius-none);border-top-left-radius:var(--radius-none)}.rounded-t-none{border-top-left-radius:var(--radius-none)}.rounded-r-none,.rounded-t-none{border-top-right-radius:var(--radius-none)}.rounded-b-none,.rounded-r-none{border-bottom-right-radius:var(--radius-none)}.rounded-b-none{border-bottom-left-radius:var(--radius-none)}.rounded-br-none{border-bottom-right-radius:var(--radius-none)}.rounded-bl-none{border-bottom-left-radius:var(--radius-none)}.rounded-tr-none{border-top-right-radius:var(--radius-none)}.rounded-tl-none{border-top-left-radius:var(--radius-none)}.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(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-border-rgb),var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-border-light{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-border-light-rgb),var(--tw-ring-opacity))}.ring-border{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-border-rgb),var(--tw-ring-opacity))}.ring-border-strong{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-border-strong-rgb),var(--tw-ring-opacity))}.ring-light{--tw-ring-color:rgba(var(--color-inverse-rgb),var(--tw-ring-opacity));--tw-ring-opacity:0.05}.ring-gray{--tw-ring-color:rgba(var(--color-inverse-rgb),var(--tw-ring-opacity));--tw-ring-opacity:0.1}.ring-dark{--tw-ring-color:rgba(var(--color-inverse-rgb),var(--tw-ring-opacity));--tw-ring-opacity:0.2}.ring-darker{--tw-ring-color:rgba(var(--color-inverse-rgb),var(--tw-ring-opacity));--tw-ring-opacity:0.3}.ring-darkest{--tw-ring-color:rgba(var(--color-inverse-rgb),var(--tw-ring-opacity));--tw-ring-opacity:0.5}.ring-primary{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-primary-500-rgb),var(--tw-ring-opacity))}.ring-secondary{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-secondary-500-rgb),var(--tw-ring-opacity))}.ring-warning{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-warning-500-rgb),var(--tw-ring-opacity))}.ring-success{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-success-500-rgb),var(--tw-ring-opacity))}.ring-danger{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-danger-500-rgb),var(--tw-ring-opacity))}.ring-important{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-important-500-rgb),var(--tw-ring-opacity))}.ring-special{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-special-500-rgb),var(--tw-ring-opacity))}.ring-gray-50{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-gray-50-rgb),var(--tw-ring-opacity))}.ring-gray-100{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-gray-100-rgb),var(--tw-ring-opacity))}.ring-gray-200{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-gray-200-rgb),var(--tw-ring-opacity))}.ring-gray-300{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-gray-300-rgb),var(--tw-ring-opacity))}.ring-gray-400{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-gray-400-rgb),var(--tw-ring-opacity))}.ring-gray-500{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-gray-500-rgb),var(--tw-ring-opacity))}.ring-gray-600{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-gray-600-rgb),var(--tw-ring-opacity))}.ring-gray-700{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-gray-700-rgb),var(--tw-ring-opacity))}.ring-gray-800{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-gray-800-rgb),var(--tw-ring-opacity))}.ring-gray-900{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-gray-900-rgb),var(--tw-ring-opacity))}.ring-gray-950{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-gray-950-rgb),var(--tw-ring-opacity))}.ring-inverse{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-inverse-rgb),var(--tw-ring-opacity))}.ring-canvas{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-canvas-rgb),var(--tw-ring-opacity))}.ring-surface{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-surface-rgb),var(--tw-ring-opacity))}.ring-fore{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-fore-rgb),var(--tw-ring-opacity))}.ring-transparent{--tw-ring-color:transparent}.ring-black{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-black-rgb),var(--tw-ring-opacity))}.ring-white{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--color-white-rgb),var(--tw-ring-opacity))}.ring-inherit{--tw-ring-color:inherit}.ring-current{--tw-ring-color:currentColor}.ring-opacity-0{--tw-ring-opacity:0}.ring-opacity-5{--tw-ring-opacity:.05}.ring-opacity-10{--tw-ring-opacity:.1}.ring-opacity-20{--tw-ring-opacity:.2}.ring-opacity-30{--tw-ring-opacity:.3}.ring-opacity-40{--tw-ring-opacity:.4}.ring-opacity-50{--tw-ring-opacity:.5}.ring-opacity-60{--tw-ring-opacity:.6}.ring-opacity-70{--tw-ring-opacity:.7}.ring-opacity-80{--tw-ring-opacity:.8}.ring-opacity-90{--tw-ring-opacity:.9}.ring-opacity-100{--tw-ring-opacity:1}.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-0,.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-3{--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-3,.ring-4{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-4{--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(4px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-8{--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(8px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-inset{--tw-ring-inset:inset}.ring-offset-0{--tw-ring-offset-width:0px}.ring-offset-1{--tw-ring-offset-width:1px}.ring-offset-2{--tw-ring-offset-width:2px}.ring-offset-4{--tw-ring-offset-width:4px}.ring-offset-8{--tw-ring-offset-width:8px}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.04),0 0 2px -1px rgba(0,0,0,.01);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color),0 0 2px -1px var(--tw-shadow-color)}.shadow,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow{--tw-shadow:0 3px 8px 0 rgba(0,0,0,.04),0 1px 2px -1px rgba(0,0,0,.01);--tw-shadow-colored:0 3px 8px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow-md{--tw-shadow:0 2px 6px -1px rgba(0,0,0,.2),0 1px 4px -2px rgba(0,0,0,.15);--tw-shadow-colored:0 2px 6px -1px var(--tw-shadow-color),0 1px 4px -2px 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-lg{--tw-shadow:0 5px 15px -3px rgba(0,0,0,.2),0 2px 6px -4px rgba(0,0,0,.15);--tw-shadow-colored:0 5px 15px -3px var(--tw-shadow-color),0 2px 6px -4px var(--tw-shadow-color)}.shadow-xl{--tw-shadow:0 10px 25px -5px rgba(0,0,0,.2),0 4px 10px -6px rgba(0,0,0,.15);--tw-shadow-colored:0 10px 25px -5px var(--tw-shadow-color),0 4px 10px -6px var(--tw-shadow-color)}.shadow-2xl,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 10px 50px -10px rgba(0,0,0,.4),0 8px 20px -10px rgba(0,0,0,.3);--tw-shadow-colored:0 10px 50px -10px var(--tw-shadow-color),0 8px 20px -10px var(--tw-shadow-color)}.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-inner,.shadow-none{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.muted{opacity:var(--opacity-muted)}.opacity-0{opacity:0}.opacity-5{opacity:.05}.opacity-10{opacity:.1}.opacity-20{opacity:.2}.opacity-25{opacity:.25}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.opacity-95{opacity:.95}.opacity-100{opacity:1}.blur-none{--tw-blur:blur(0)}.blur-none,.blur-sm{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)}.blur-sm{--tw-blur:blur(4px)}.blur{--tw-blur:blur(8px)}.blur,.blur-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)}.blur-md{--tw-blur:blur(12px)}.blur-lg{--tw-blur:blur(16px)}.blur-lg,.blur-xl{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)}.blur-xl{--tw-blur:blur(24px)}.grayscale{--tw-grayscale:grayscale(100%)}.grayscale,.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)}.invert{--tw-invert:invert(100%)}.filter-none{filter:none!important}.drop-shadow-none{--tw-drop-shadow:drop-shadow(0 0 #0000)}.drop-shadow-none,.drop-shadow-sm{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-sm{--tw-drop-shadow:drop-shadow(0 1px 1px rgba(0,0,0,.05))}.drop-shadow{--tw-drop-shadow:drop-shadow(0 1px 2px rgba(0,0,0,.1)) drop-shadow(0 1px 1px rgba(0,0,0,.06))}.drop-shadow,.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))}.drop-shadow-lg{--tw-drop-shadow:drop-shadow(0 10px 8px rgba(0,0,0,.04)) drop-shadow(0 4px 3px rgba(0,0,0,.1))}.drop-shadow-lg,.drop-shadow-xl{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-xl{--tw-drop-shadow:drop-shadow(0 20px 13px rgba(0,0,0,.03)) drop-shadow(0 8px 5px rgba(0,0,0,.08))}.drop-shadow-2xl{--tw-drop-shadow:drop-shadow(0 25px 25px rgba(0,0,0,.15));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-none{--tw-backdrop-blur:blur(0)}.backdrop-blur-none,.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-blur{--tw-backdrop-blur:blur(8px)}.backdrop-blur,.backdrop-blur-md{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-md{--tw-backdrop-blur:blur(12px)}.backdrop-blur-lg{--tw-backdrop-blur:blur(16px)}.backdrop-blur-lg,.backdrop-blur-xl{-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-xl{--tw-backdrop-blur:blur(24px)}.backdrop-blur-2xl{--tw-backdrop-blur:blur(40px)}.backdrop-blur-2xl,.backdrop-blur-3xl{-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-3xl{--tw-backdrop-blur:blur(64px)}.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)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-shadow{transition-duration:.15s;transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-none{transition-property:none}.fade,.fade-from-bottom,.fade-from-center,.fade-from-left,.fade-from-right,.fade-from-top{opacity:0;transition-duration:.15s;transition-property:opacity,transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.fade-from-bottom,.fade-from-center,.fade-from-left,.fade-from-right,.fade-from-top{--tw-scale-x:.9;--tw-scale-y:.9}.fade-from-bottom,.fade-from-center,.fade-from-left,.fade-from-right,.fade-from-top{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))}.fade-from-bottom{--tw-translate-y:25%}.fade-from-top{--tw-translate-y:-25%}.fade-from-left,.fade-from-top{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))}.fade-from-left{--tw-translate-x:-25%}.fade-from-right{--tw-translate-x:25%}.fade-from-bottom.in,.fade-from-center.in,.fade-from-left.in,.fade-from-right,.fade-from-right.in,.fade-from-top.in,.fade.in{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))}.fade-from-bottom.in,.fade-from-center.in,.fade-from-left.in,.fade-from-right.in,.fade-from-top.in,.fade.in{--tw-translate-x:0px;--tw-translate-y:0px;--tw-scale-x:1;--tw-scale-y:1;opacity:1}.duration-75{transition-duration:75ms}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-1000{transition-duration:1s}@keyframes -spin{to{transform:rotate(1turn)}}.animate-spin,.spin{animation:-spin 1s linear infinite}@keyframes -ping{75%,to{opacity:0;transform:scale(2)}}.animate-ping,.ping{animation:-ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes -pulse{50%{opacity:.5}}.animate-pulse,.pulse{animation:-pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes -bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}.animate-bounce,.bounce{animation:-bounce 1s infinite}.scale-0{--tw-scale-x:0;--tw-scale-y:0}.scale-0,.scale-50{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-50{--tw-scale-x:.5;--tw-scale-y:.5}.scale-75{--tw-scale-x:.75;--tw-scale-y:.75}.scale-75,.scale-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))}.scale-90{--tw-scale-x:.9;--tw-scale-y:.9}.scale-95{--tw-scale-x:.95;--tw-scale-y:.95}.scale-100,.scale-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))}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-105{--tw-scale-x:1.05;--tw-scale-y:1.05}.scale-105,.scale-110{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-110{--tw-scale-x:1.1;--tw-scale-y:1.1}.scale-125{--tw-scale-x:1.25;--tw-scale-y:1.25}.scale-125,.scale-150{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-150{--tw-scale-x:1.5;--tw-scale-y:1.5}.flip-x{--tw-scale-x:-1}.flip-x,.flip-y{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))}.flip-y{--tw-scale-y:-1}.rotate-0{--tw-rotate:0deg}.rotate-0,.rotate-1{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-1{--tw-rotate:1deg}.rotate-2{--tw-rotate:2deg}.rotate-2,.rotate-3{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-3{--tw-rotate:3deg}.rotate-6{--tw-rotate:6deg}.rotate-12,.rotate-6{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-12{--tw-rotate:12deg}.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-135{--tw-rotate:135deg}.rotate-135,.rotate-180{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-180{--tw-rotate:180deg}.rotate-270{--tw-rotate:270deg;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))}.basis-0{flex-basis:0px}.basis-1{flex-basis:0.25rem}.basis-2{flex-basis:0.5rem}.basis-3{flex-basis:0.75rem}.basis-4{flex-basis:1rem}.basis-5{flex-basis:1.25rem}.basis-6{flex-basis:1.5rem}.basis-7{flex-basis:1.75rem}.basis-8{flex-basis:2rem}.basis-9{flex-basis:2.25rem}.basis-10{flex-basis:2.5rem}.basis-11{flex-basis:2.75rem}.basis-12{flex-basis:3rem}.basis-14{flex-basis:3.5rem}.basis-16{flex-basis:4rem}.basis-20{flex-basis:5rem}.basis-24{flex-basis:6rem}.basis-28{flex-basis:7rem}.basis-32{flex-basis:8rem}.basis-36{flex-basis:9rem}.basis-40{flex-basis:10rem}.basis-44{flex-basis:11rem}.basis-48{flex-basis:12rem}.basis-52{flex-basis:13rem}.basis-56{flex-basis:14rem}.basis-60{flex-basis:15rem}.basis-64{flex-basis:16rem}.basis-72{flex-basis:18rem}.basis-80{flex-basis:20rem}.basis-96{flex-basis:24rem}.basis-auto{flex-basis:auto}.basis-px{flex-basis:1px}.basis-0\.5{flex-basis:0.125rem}.basis-1\.5{flex-basis:0.375rem}.basis-2\.5{flex-basis:0.625rem}.basis-3\.5{flex-basis:0.875rem}.basis-1\/2{flex-basis:50%}.basis-1\/3{flex-basis:33.333333%}.basis-2\/3{flex-basis:66.666667%}.basis-1\/4{flex-basis:25%}.basis-2\/4{flex-basis:50%}.basis-3\/4{flex-basis:75%}.basis-1\/5{flex-basis:20%}.basis-2\/5{flex-basis:40%}.basis-3\/5{flex-basis:60%}.basis-4\/5{flex-basis:80%}.basis-1\/6{flex-basis:16.666667%}.basis-2\/6{flex-basis:33.333333%}.basis-3\/6{flex-basis:50%}.basis-4\/6{flex-basis:66.666667%}.basis-5\/6{flex-basis:83.333333%}.basis-1\/12{flex-basis:8.333333%}.basis-2\/12{flex-basis:16.666667%}.basis-3\/12{flex-basis:25%}.basis-4\/12{flex-basis:33.333333%}.basis-5\/12{flex-basis:41.666667%}.basis-6\/12{flex-basis:50%}.basis-7\/12{flex-basis:58.333333%}.basis-8\/12{flex-basis:66.666667%}.basis-9\/12{flex-basis:75%}.basis-10\/12{flex-basis:83.333333%}.basis-11\/12{flex-basis:91.666667%}.basis-full{flex-basis:100%}.row{display:flex;flex-direction:row}.center,.col{display:flex;flex-direction:column}.center,.center-row{align-items:center;justify-content:center}.center-row{display:flex;flex-direction:row}.center-x,.center-y{align-items:center;display:flex}.center-y{flex-direction:column}.row-reverse{display:flex;flex-direction:row-reverse}.col-reverse{display:flex;flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.flex-nowrap{flex-wrap:nowrap}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-initial{flex:0 1 auto}.flex-none{flex:none}.grow{flex-grow:1!important}.grow-0{flex-grow:0!important}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.order-first{order:-9999}.order-last{order:9999}.order-none{order:0}.gap-0{gap:0}.gap-x-0{-moz-column-gap:0;column-gap:0}.gap-y-0{row-gap:0}.gap-px{gap:1px}.gap-x-px{-moz-column-gap:1px;column-gap:1px}.gap-y-px{row-gap:1px}.gap-0\.5{gap:.125rem}.gap-x-0\.5{-moz-column-gap:.125rem;column-gap:.125rem}.gap-y-0\.5{row-gap:.125rem}.gap-3px{gap:3px}.gap-1{gap:.25rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-y-1{row-gap:.25rem}.gap-1\.5{gap:.375rem}.gap-x-1\.5{-moz-column-gap:.375rem;column-gap:.375rem}.gap-y-1\.5{row-gap:.375rem}.gap-2{gap:.5rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-y-2{row-gap:.5rem}.gap-2\.5{gap:.625rem}.gap-x-2\.5{-moz-column-gap:.625rem;column-gap:.625rem}.gap-y-2\.5{row-gap:.625rem}.gap-3{gap:.75rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-y-3{row-gap:.75rem}.gap-3\.5{gap:.875rem}.gap-x-3\.5{-moz-column-gap:.875rem;column-gap:.875rem}.gap-y-3\.5{row-gap:.875rem}.gap-4{gap:1rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-4{row-gap:1rem}.gap-5{gap:1.25rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-y-5{row-gap:1.25rem}.gap-6{gap:1.5rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-6{row-gap:1.5rem}.gap-7{gap:1.75rem}.gap-x-7{-moz-column-gap:1.75rem;column-gap:1.75rem}.gap-y-7{row-gap:1.75rem}.gap-8{gap:2rem}.gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.gap-y-8{row-gap:2rem}.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}.justify-evenly{justify-content:space-evenly}.self-auto{align-self:auto}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.self-center{align-self:center}.self-stretch{align-self:stretch}.self-baseline{align-self:baseline}.content-center{align-content:center}.content-start{align-content:flex-start}.content-end{align-content:flex-end}.content-between{align-content:space-between}.content-around{align-content:space-around}.content-evenly{align-content:space-evenly}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}@font-face{font-display:fallback;font-family:D-DIN-PRO;font-weight:400;src:url(./fonts/D-DIN-PRO-400-Regular.otf)}@font-face{font-display:fallback;font-family:D-DIN-PRO;font-weight:500;src:url(./fonts/D-DIN-PRO-700-Bold.otf)}.num{font-family:D-DIN-PRO}@font-face{font-display:fallback;font-family:Nunito;font-weight:400;src:url(./fonts/Nunito-Regular.ttf)}@font-face{font-display:fallback;font-family:Nunito;font-weight:700;src:url(./fonts/Nunito-bold.ttf)}@font-face{font-display:fallback;font-family:Nunito;font-weight:300;src:url(./fonts/Nunito-Light.ttf)}.font-brand{font-family:Nunito;font-weight:400}
\ No newline at end of file
diff --git a/www/js/zui3/zui.zentao.js b/www/js/zui3/zui.zentao.js
index 0d53de03d7..0c4e2dfafd 100644
--- a/www/js/zui3/zui.zentao.js
+++ b/www/js/zui3/zui.zentao.js
@@ -1,3 +1,3 @@
-var Ao=(w,tt,vt)=>{if(!tt.has(w))throw TypeError("Cannot "+vt)};var bt=(w,tt,vt)=>(Ao(w,tt,"read from private field"),vt?vt.call(w):tt.get(w)),$t=(w,tt,vt)=>{if(tt.has(w))throw TypeError("Cannot add the same private member more than once");tt instanceof WeakSet?tt.add(w):tt.set(w,vt)},It=(w,tt,vt,mi)=>(Ao(w,tt,"write to private field"),mi?mi.call(w,vt):tt.set(w,vt),vt);var Do=(w,tt,vt)=>(Ao(w,tt,"access private method"),vt);(function(w,tt){typeof exports=="object"&&typeof module<"u"?tt(exports):typeof define=="function"&&define.amd?define(["exports"],tt):(w=typeof globalThis<"u"?globalThis:w||self,tt(w.zui={}))})(this,function(w){var di,ui,Ls,Rs,Fs,zs,Os,Ws,fi,Vc,pi,Kc,ye,_e;"use strict";const tt="",vt="",mi="",Bf="",jf="",Uf="",Vf="",Kf="",Gf="",qf="",Yf="",Qf="",Gc="3.0.0-alpha.4",jt=document,Hs=window,Lo=jt.documentElement,be=jt.createElement.bind(jt),Ro=be("div"),gi=be("table"),qc=be("tbody"),Fo=be("tr"),{isArray:Bs,prototype:zo}=Array,{concat:Yc,filter:yi,indexOf:Oo,map:Wo,push:Qc,slice:Ho,some:_i,splice:Zc}=zo,Xc=/^#(?:[\w-]|\\.|[^\x00-\xa0])*$/,Jc=/^\.(?:[\w-]|\\.|[^\x00-\xa0])*$/,th=/<.+>/,eh=/^\w+$/;function bi(n,t){const e=sh(t);return!n||!e&&!ve(t)&&!nt(t)?[]:!e&&Jc.test(n)?t.getElementsByClassName(n.slice(1).replace(/\\/g,"")):!e&&eh.test(n)?t.getElementsByTagName(n):t.querySelectorAll(n)}class js{constructor(t,e){if(!t)return;if(vi(t))return t;let s=t;if(dt(t)){const i=e||jt;if(s=Xc.test(t)&&ve(i)?i.getElementById(t.slice(1).replace(/\\/g,"")):th.test(t)?Go(t):vi(i)?i.find(t):dt(i)?u(i).find(t):bi(t,i),!s)return}else if(we(t))return this.ready(t);(s.nodeType||s===Hs)&&(s=[s]),this.length=s.length;for(let i=0,r=this.length;i{for(;t.firstChild;)t.removeChild(t.firstChild)})};function Us(...n){const t=ih(n[0])?n.shift():!1,e=n.shift(),s=n.length;if(!e)return{};if(!s)return Us(t,u,e);for(let i=0;i{nt(r)&<(e,(o,a)=>{s?t?r.classList.add(a):r.classList.remove(a):r.classList.toggle(a)})})},M.addClass=function(n){return this.toggleClass(n,!0)},M.removeAttr=function(n){const t=Vs(n);return this.each((e,s)=>{nt(s)&<(t,(i,r)=>{s.removeAttribute(r)})})};function oh(n,t){if(n){if(dt(n)){if(arguments.length<2){if(!this[0]||!nt(this[0]))return;const e=this[0].getAttribute(n);return os(e)?void 0:e}return wt(t)?this:os(t)?this.removeAttr(n):this.each((e,s)=>{nt(s)&&s.setAttribute(n,t)})}for(const e in n)this.attr(e,n[e]);return this}}M.attr=oh,M.removeClass=function(n){return arguments.length?this.toggleClass(n,!1):this.attr("class","")},M.hasClass=function(n){return!!n&&_i.call(this,t=>nt(t)&&t.classList.contains(n))},M.get=function(n){return wt(n)?Ho.call(this):(n=Number(n),this[n<0?n+this.length:n])},M.eq=function(n){return u(this.get(n))},M.first=function(){return this.eq(0)},M.last=function(){return this.eq(-1)};function ah(n){return wt(n)?this.get().map(t=>nt(t)||nh(t)?t.textContent:"").join(""):this.each((t,e)=>{nt(e)&&(e.textContent=n)})}M.text=ah;function Ut(n,t,e){if(!nt(n))return;const s=Hs.getComputedStyle(n,null);return e?s.getPropertyValue(t)||void 0:s[t]||n.style[t]}function zt(n,t){return parseInt(Ut(n,t),10)||0}function jo(n,t){return zt(n,`border${t?"Left":"Top"}Width`)+zt(n,`padding${t?"Left":"Top"}`)+zt(n,`padding${t?"Right":"Bottom"}`)+zt(n,`border${t?"Right":"Bottom"}Width`)}const Ci={};function lh(n){if(Ci[n])return Ci[n];const t=be(n);jt.body.insertBefore(t,null);const e=Ut(t,"display");return jt.body.removeChild(t),Ci[n]=e!=="none"?e:"block"}function Uo(n){return Ut(n,"display")==="none"}function Vo(n,t){const e=n&&(n.matches||n.webkitMatchesSelector||n.msMatchesSelector);return!!e&&!!t&&e.call(n,t)}function Ks(n){return dt(n)?(t,e)=>Vo(e,n):we(n)?n:vi(n)?(t,e)=>n.is(e):n?(t,e)=>e===n:()=>!1}M.filter=function(n){const t=Ks(n);return u(yi.call(this,(e,s)=>t.call(e,s,e)))};function se(n,t){return t?n.filter(t):n}M.detach=function(n){return se(this,n).each((t,e)=>{e.parentNode&&e.parentNode.removeChild(e)}),this};const ch=/^\s*<(\w+)[^>]*>/,hh=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,Ko={"*":Ro,tr:qc,td:Fo,th:Fo,thead:gi,tbody:gi,tfoot:gi};function Go(n){if(!dt(n))return[];if(hh.test(n))return[be(RegExp.$1)];const t=ch.test(n)&&RegExp.$1,e=Ko[t]||Ko["*"];return e.innerHTML=n,u(e.childNodes).detach().get()}u.parseHTML=Go,M.has=function(n){const t=dt(n)?(e,s)=>bi(n,s).length:(e,s)=>s.contains(n);return this.filter(t)},M.not=function(n){const t=Ks(n);return this.filter((e,s)=>(!dt(n)||nt(s))&&!t.call(s,e,s))};function Vt(n,t,e,s){const i=[],r=we(t),o=s&&Ks(s);for(let a=0,l=n.length;at.selected&&!t.disabled&&!t.parentNode.disabled),"value"):n.value||""}function dh(n){return arguments.length?this.each((t,e)=>{const s=e.multiple&&e.options;if(s||ra.test(e.type)){const i=Bs(n)?Wo.call(n,String):os(n)?[]:[String(n)];s?lt(e.options,(r,o)=>{o.selected=i.indexOf(o.value)>=0},!0):e.checked=i.indexOf(e.value)>=0}else e.value=wt(n)||os(n)?"":n}):this[0]&&qo(this[0])}M.val=dh,M.is=function(n){const t=Ks(n);return _i.call(this,(e,s)=>t.call(e,s,e))},u.guid=1;function Ot(n){return n.length>1?yi.call(n,(t,e,s)=>Oo.call(s,t)===e):n}u.unique=Ot,M.add=function(n,t){return u(Ot(this.get().concat(u(n,t).get())))},M.children=function(n){return se(u(Ot(Vt(this,t=>t.children))),n)},M.parent=function(n){return se(u(Ot(Vt(this,"parentNode"))),n)},M.index=function(n){const t=n?u(n)[0]:this[0],e=n?this:u(t).parent().children();return Oo.call(e,t)},M.closest=function(n){const t=this.filter(n);if(t.length)return t;const e=this.parent();return e.length?e.closest(n):t},M.siblings=function(n){return se(u(Ot(Vt(this,t=>u(t).parent().children().not(t)))),n)},M.find=function(n){return u(Ot(Vt(this,t=>bi(n,t))))};const uh=/^\s*\s*$/g,fh=/^$|^module$|\/(java|ecma)script/i,ph=["type","src","nonce","noModule"];function mh(n,t){const e=u(n);e.filter("script").add(e.find("script")).each((s,i)=>{if(fh.test(i.type)&&Lo.contains(i)){const r=be("script");r.text=i.textContent.replace(uh,""),lt(ph,(o,a)=>{i[a]&&(r[a]=i[a])}),t.head.insertBefore(r,null),t.head.removeChild(r)}})}function gh(n,t,e,s,i){s?n.insertBefore(t,e?n.firstChild:null):n.nodeName==="HTML"?n.parentNode.replaceChild(t,n):n.parentNode.insertBefore(t,e?n:n.nextSibling),i&&mh(t,n.ownerDocument)}function ne(n,t,e,s,i,r,o,a){return lt(n,(l,c)=>{lt(u(c),(h,d)=>{lt(u(t),(p,f)=>{const g=e?d:f,y=e?f:d,_=e?h:p;gh(g,_?y.cloneNode(!0):y,s,i,!_)},a)},o)},r),t}M.after=function(){return ne(arguments,this,!1,!1,!1,!0,!0)},M.append=function(){return ne(arguments,this,!1,!1,!0)};function yh(n){if(!arguments.length)return this[0]&&this[0].innerHTML;if(wt(n))return this;const t=/