diff --git a/easytier-noweb/Makefile b/easytier-noweb/Makefile
index f9954bbd2..3fcd525be 100644
--- a/easytier-noweb/Makefile
+++ b/easytier-noweb/Makefile
@@ -3,7 +3,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=easytier-noweb
PKG_VERSION:=$(or $(EASYTIER_VERSION),2.6.2)
-PKG_RELEASE:=1
+PKG_RELEASE:=2
ifeq ($(ARCH),mipsel)
APP_ARCH:=mipsel
@@ -37,6 +37,8 @@ PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
include $(INCLUDE_DIR)/package.mk
+RSTRIP:=:
+
define Package/$(PKG_NAME)
SECTION:=net
CATEGORY:=Network
@@ -64,8 +66,10 @@ endef
define Package/$(PKG_NAME)/install
$(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/easytier-core $(1)/usr/bin/easytier-core
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/easytier-cli $(1)/usr/bin/easytier-cli
+ $(CP) $(PKG_BUILD_DIR)/easytier-core $(1)/usr/bin/
+ chmod 0755 $(1)/usr/bin/easytier-core
+ $(CP) $(PKG_BUILD_DIR)/easytier-cli $(1)/usr/bin/
+ chmod 0755 $(1)/usr/bin/easytier-cli
endef
$(eval $(call BuildPackage,$(PKG_NAME)))
diff --git a/luci-app-openclaw/CHANGELOG.md b/luci-app-openclaw/CHANGELOG.md
index f87e69d93..2bcb20fad 100644
--- a/luci-app-openclaw/CHANGELOG.md
+++ b/luci-app-openclaw/CHANGELOG.md
@@ -4,6 +4,53 @@
格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.0.0/)。
+## [2.0.5] - 2026-05-15
+
+### 适配 OpenClaw v2026.5.12
+
+- `OC_TESTED_VERSION` 更新为 `2026.5.12`,默认稳定版固定到 npm `latest` 稳定标签。
+- 保持 Node.js 默认运行时 `22.16.0`,安装后按 OpenClaw `engines.node` 最低要求执行强校验;版本过低会直接失败并输出明确日志。
+- 文档补充 `2026.5.14-beta.2` 不作为默认稳定版的说明。
+
+### 修复权限与路径问题
+
+- 保留公开 UCI 字段 `openclaw.main.install_path`,新增统一路径规范化逻辑。
+- 兼容用户误填 `/mnt/data/openclaw`,避免实际路径变成 `/mnt/data/openclaw/openclaw`。
+- 拒绝相对路径、空白字符、shell 特殊字符和 `/tmp`、`/usr`、`/overlay` 等危险根目录。
+- `profile.d/openclaw.sh` 不再全局 `export HOME="$OC_DATA"`,仅在 `openclaw` 命令包装器内注入 HOME,避免影响 SSH/zsh/oh-my-zsh。
+- 卸载逻辑移除 `chmod -R 777`,并将 `rm -rf` 限定到规范化后的 OpenClaw 运行根目录。
+- 安装前新增写入探针,提前识别 overlay 已满、只读挂载或目标挂载点不可写。
+
+### 修复微信插件链路
+
+- 微信插件安装和升级前检查 `python3`、`openclaw` 系统用户、npm cache/tmp/data 写权限。
+- 统一以 `openclaw` 用户运行微信插件 CLI,并显式传入 `OPENCLAW_CONFIG_PATH`、`NPM_CONFIG_CACHE`、`TMPDIR`。
+- 自动迁移旧渠道名 `weixin` 到 `openclaw-weixin`。
+- 保留 Web PTY `cmd=wechat` 初始化能力,微信向导入口不被破坏。
+
+### 修复 LuCI 与打包
+
+- 状态页区分“启动中”和“启动失败”,并显示 procd gateway 退出码。
+- Web 控制台每次加载前重新读取 token,强制使用正确的 HTTP Gateway URL,避免旧 token 或 HTTPS 混用。
+- `Makefile`、`.run`、`.ipk` 打包清单补齐 `wechat.htm`、rpcd ACL、共享 shell/Lua helper。
+- 主包不再直接生成 `openclaw.zh-cn.lmo`,避免与 `luci-i18n-openclaw-zh-cn` 文件冲突。
+
+### 测试
+
+- 新增路径规范化、卸载保护、profile HOME、Node 版本比较、打包清单、微信安装预检和控制台 token URL 的契约测试入口。
+
+### 致谢
+
+感谢以下用户通过 Issue 或 PR 提供问题反馈、复现信息和修复思路:
+
+- @svgr110 (#89)、@Cuscito (#88)、@ayysama (#87)、@Jameslau-tech (#86, #66)
+- @hotwa (#85, #83, #63)、@hwliu11 (#84)、@alan9771 (#82, #65)、@zhuxf8 (#81)
+- @yiyibuguai (#80, #75)、@nbagui (#79)、@sam528300-lab (#78)、@392377870 (#77)
+- @ouyangmland (#76, #68, #67)、@lucian521 (#74)、@jiangxiaoqiang-cloud (#73)、@LuckyMai (#72, #62)
+- @xuguoliang189 (#71, #64)、@ampcwin (#70)、@natserver (#69)、@jh620026 (#61)、@okareyouok (#60)
+
+---
+
## [2.0.4] - 2026-04-10
### 适配 OpenClaw v2026.4.9
diff --git a/luci-app-openclaw/Makefile b/luci-app-openclaw/Makefile
index f2217c614..76f87900f 100644
--- a/luci-app-openclaw/Makefile
+++ b/luci-app-openclaw/Makefile
@@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-openclaw
PKG_VERSION:=$(strip $(shell cat $(CURDIR)/VERSION 2>/dev/null || echo "1.0.0"))
-PKG_RELEASE:=14
+PKG_RELEASE:=15
PKG_MAINTAINER:=10000ge10000 <10000ge10000@users.noreply.github.com>
PKG_LICENSE:=GPL-3.0
@@ -56,24 +56,28 @@ define Package/$(PKG_NAME)/install
$(INSTALL_DATA) ./root/etc/profile.d/openclaw.sh $(1)/etc/profile.d/openclaw.sh
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) ./root/usr/bin/openclaw-env $(1)/usr/bin/openclaw-env
+ $(INSTALL_DIR) $(1)/usr/libexec
+ $(INSTALL_BIN) ./root/usr/libexec/openclaw-paths.sh $(1)/usr/libexec/openclaw-paths.sh
+ $(INSTALL_BIN) ./root/usr/libexec/openclaw-node.sh $(1)/usr/libexec/openclaw-node.sh
$(INSTALL_DIR) $(1)/usr/lib/lua/luci/controller
$(INSTALL_DATA) ./luasrc/controller/openclaw.lua $(1)/usr/lib/lua/luci/controller/openclaw.lua
+ $(INSTALL_DIR) $(1)/usr/lib/lua/openclaw
+ $(INSTALL_DATA) ./luasrc/openclaw/paths.lua $(1)/usr/lib/lua/openclaw/paths.lua
$(INSTALL_DIR) $(1)/usr/lib/lua/luci/model/cbi/openclaw
$(INSTALL_DATA) ./luasrc/model/cbi/openclaw/basic.lua $(1)/usr/lib/lua/luci/model/cbi/openclaw/basic.lua
$(INSTALL_DIR) $(1)/usr/lib/lua/luci/view/openclaw
$(INSTALL_DATA) ./luasrc/view/openclaw/status.htm $(1)/usr/lib/lua/luci/view/openclaw/status.htm
$(INSTALL_DATA) ./luasrc/view/openclaw/advanced.htm $(1)/usr/lib/lua/luci/view/openclaw/advanced.htm
$(INSTALL_DATA) ./luasrc/view/openclaw/console.htm $(1)/usr/lib/lua/luci/view/openclaw/console.htm
+ $(INSTALL_DATA) ./luasrc/view/openclaw/wechat.htm $(1)/usr/lib/lua/luci/view/openclaw/wechat.htm
+ $(INSTALL_DIR) $(1)/usr/share/rpcd/acl.d
+ $(INSTALL_DATA) ./root/usr/share/rpcd/acl.d/luci-app-openclaw.json $(1)/usr/share/rpcd/acl.d/luci-app-openclaw.json
$(INSTALL_DIR) $(1)/usr/share/openclaw
$(INSTALL_DATA) ./VERSION $(1)/usr/share/openclaw/VERSION
$(INSTALL_BIN) ./root/usr/share/openclaw/oc-config.sh $(1)/usr/share/openclaw/oc-config.sh
$(INSTALL_DATA) ./root/usr/share/openclaw/web-pty.js $(1)/usr/share/openclaw/web-pty.js
$(INSTALL_DIR) $(1)/usr/share/openclaw/ui
$(CP) ./root/usr/share/openclaw/ui/* $(1)/usr/share/openclaw/ui/
- $(INSTALL_DIR) $(1)/usr/lib/lua/luci/i18n
- if [ -f ./po/zh-cn/openclaw.po ]; then \
- po2lmo ./po/zh-cn/openclaw.po $(1)/usr/lib/lua/luci/i18n/openclaw.zh-cn.lmo 2>/dev/null || true; \
- fi
endef
define Package/$(PKG_NAME)/postinst
diff --git a/luci-app-openclaw/README.md b/luci-app-openclaw/README.md
index b2c793470..7f8fd493b 100644
--- a/luci-app-openclaw/README.md
+++ b/luci-app-openclaw/README.md
@@ -19,10 +19,18 @@
|------|------|
| 架构 | x86_64 或 aarch64 (ARM64) |
| C 库 | musl(自动检测;离线包仅支持 musl) |
-| 依赖 | luci-compat, luci-base, curl, openssl-util |
-| 存储 | **1.5GB 以上可用空间** |
+| 依赖 | luci-compat, luci-base, curl, openssl-util, tar, script-utils |
+| 存储 | **2GB 以上可用空间** |
| 内存 | 推荐 1GB 及以上 |
+**当前适配版本**
+
+| 组件 | 默认版本 | 说明 |
+|------|----------|------|
+| OpenClaw | `2026.5.12` | npm `latest` 稳定标签;不默认追 `2026.5.14-beta.2` |
+| Node.js | `22.16.0` | 安装后会按 OpenClaw `engines.node` 做强校验,低于要求会直接失败 |
+| 微信插件 | `@tencent-weixin/openclaw-weixin@2.4.3` | CLI 使用 `@tencent-weixin/openclaw-weixin-cli@2.1.4` |
+
## 📦 安装
### 方式一:.run 自解压包(推荐)
@@ -84,6 +92,41 @@ find bin/ -name "luci-app-openclaw*.ipk"
3. 进入「Web 控制台」添加 AI 模型和 API Key
4. 进入「配置管理」可使用向导配置消息渠道
+## 自定义安装路径
+
+UCI 字段仍然是 `openclaw.main.install_path`,语义为基础目录。例如:
+
+```bash
+uci set openclaw.main.install_path='/mnt/data'
+uci commit openclaw
+openclaw-env setup
+```
+
+实际运行目录会固定展开为 `/mnt/data/openclaw`。如果误填 `/mnt/data/openclaw`,插件会自动规范化为 `/mnt/data`,不会再拼成 `/mnt/data/openclaw/openclaw`。
+
+安装前会执行写入探针;如果 overlay 已满、只读或外置盘未正确挂载,安装会在下载前失败并给出明确日志。
+
+## 微信插件依赖
+
+微信渠道安装前会检查:
+
+- `openclaw` 系统用户是否存在,不存在时自动创建
+- `python3` 是否已安装
+- npm cache、tmp、OpenClaw 数据目录是否可由 `openclaw` 用户写入
+- 旧渠道名 `weixin` 会迁移为 `openclaw-weixin`
+
+如缺少 Python3:
+
+```bash
+opkg update
+opkg install python3
+```
+
+## 已知说明
+
+- OpenClaw 的 diagnostic heartbeat 可能在日志中出现类似周期性探测记录。它不是一次真实用户对话请求;如需降低噪音,优先在 OpenClaw 配置或日志采集侧降低诊断日志级别,不建议直接修改模型调用逻辑。
+- 当前仓库提供源码、OpenWrt feeds 集成方式、本地 `.run` / `.ipk` 构建脚本入口;本次维护不自动生成 Release 产物。
+
## 📂 目录结构
```
@@ -91,17 +134,20 @@ luci-app-openclaw/
├── Makefile # OpenWrt 包定义
├── luasrc/
│ ├── controller/openclaw.lua # LuCI 路由和 API
+│ ├── openclaw/paths.lua # 路径规范化与安全校验
│ ├── model/cbi/openclaw/basic.lua # 主页面
│ └── view/openclaw/
│ ├── status.htm # 状态面板
│ ├── advanced.htm # 配置管理(终端)
-│ └── console.htm # Web 控制台
+│ ├── console.htm # Web 控制台
+│ └── wechat.htm # 微信渠道向导
├── root/
│ ├── etc/
│ │ ├── config/openclaw # UCI 配置
│ │ ├── init.d/openclaw # 服务脚本
│ │ └── uci-defaults/99-openclaw # 初始化脚本
│ └── usr/
+│ ├── libexec/ # 共享 shell helper
│ ├── bin/openclaw-env # 环境管理工具
│ └── share/openclaw/ # 配置终端资源
├── scripts/
diff --git a/luci-app-openclaw/VERSION b/luci-app-openclaw/VERSION
index 2165f8f9b..e01025862 100644
--- a/luci-app-openclaw/VERSION
+++ b/luci-app-openclaw/VERSION
@@ -1 +1 @@
-2.0.4
+2.0.5
diff --git a/luci-app-openclaw/luasrc/controller/openclaw.lua b/luci-app-openclaw/luasrc/controller/openclaw.lua
index d60ec57cd..795c8eed2 100644
--- a/luci-app-openclaw/luasrc/controller/openclaw.lua
+++ b/luci-app-openclaw/luasrc/controller/openclaw.lua
@@ -1,6 +1,89 @@
-- luci-app-openclaw — LuCI Controller
module("luci.controller.openclaw", package.seeall)
+local paths_ok, oc_paths = pcall(require, "openclaw.paths")
+
+local function shellquote(value)
+ if paths_ok and oc_paths.shellquote then
+ return oc_paths.shellquote(value)
+ end
+ return "'" .. tostring(value or ""):gsub("'", "'\\''") .. "'"
+end
+
+local function normalize_install_base(value)
+ if paths_ok and oc_paths.normalize_install_path then
+ return oc_paths.normalize_install_path(value)
+ end
+ local raw = tostring(value or ""):gsub("^%s+", ""):gsub("%s+$", ""):gsub("/+$", "")
+ if raw == "" then raw = "/opt" end
+ if raw:sub(1, 1) ~= "/" then return nil end
+ if raw:match("[%s'\"`$;&|<>()]") then return nil end
+ local unsafe = { "proc", "sys", "dev", "tmp", "var", "etc", "usr", "bin", "sbin", "lib", "rom", "overlay" }
+ if raw == "/" then return nil end
+ for _, name in ipairs(unsafe) do
+ if raw == "/" .. name or raw:match("^/" .. name .. "/") then return nil end
+ end
+ if raw:match("/openclaw$") then raw = raw:gsub("/openclaw$", "") end
+ return raw ~= "" and raw or nil
+end
+
+local function get_path_info(input)
+ local uci = require "luci.model.uci".cursor()
+ local base = input or uci:get("openclaw", "main", "install_path") or "/opt"
+ if paths_ok and oc_paths.derive_paths then
+ return oc_paths.derive_paths(base)
+ end
+ local normalized = normalize_install_base(base) or "/opt"
+ local root = normalized .. "/openclaw"
+ return {
+ install_path = normalized,
+ oc_root = root,
+ node_base = root .. "/node",
+ oc_global = root .. "/global",
+ oc_data = root .. "/data",
+ config_file = root .. "/data/.openclaw/openclaw.json"
+ }
+end
+
+local function is_safe_openclaw_root(value)
+ if paths_ok and oc_paths.is_safe_openclaw_root then
+ return oc_paths.is_safe_openclaw_root(value)
+ end
+ return value == "/opt/openclaw" or value:match("^/mnt/[^/]+/openclaw$") ~= nil or value:match("^/media/[^/]+/openclaw$") ~= nil
+end
+
+local function ensure_openclaw_user(oc_data)
+ local sys = require "luci.sys"
+ local uid = sys.exec("id -u openclaw 2>/dev/null"):gsub("%s+", "")
+ if uid ~= "" then return true end
+
+ local script = [[
+OC_UID=1000
+while grep -q "^[^:]*:x:${OC_UID}:" /etc/passwd 2>/dev/null; do OC_UID=$((OC_UID + 1)); done
+OC_GID=$OC_UID
+while grep -q "^[^:]*:x:${OC_GID}:" /etc/group 2>/dev/null; do OC_GID=$((OC_GID + 1)); done
+grep -q '^openclaw:' /etc/passwd 2>/dev/null || echo "openclaw:x:${OC_UID}:${OC_GID}:openclaw:${OC_DATA}:/bin/false" >> /etc/passwd
+grep -q '^openclaw:' /etc/shadow 2>/dev/null || echo 'openclaw:x:0:0:99999:7:::' >> /etc/shadow
+grep -q '^openclaw:' /etc/group 2>/dev/null || echo "openclaw:x:${OC_GID}:" >> /etc/group
+]]
+ sys.exec("OC_DATA=" .. shellquote(oc_data) .. " sh -c " .. shellquote(script) .. " >/dev/null 2>&1")
+ uid = sys.exec("id -u openclaw 2>/dev/null"):gsub("%s+", "")
+ return uid ~= ""
+end
+
+local function write_wechat_log_and_exit(log_file, exit_file, content, exit_code)
+ local f = io.open(log_file, "w")
+ if f then
+ f:write(content)
+ f:close()
+ end
+ local ef = io.open(exit_file, "w")
+ if ef then
+ ef:write(tostring(exit_code or 1))
+ ef:close()
+ end
+end
+
function index()
-- 主入口: 服务 → OpenClaw (🧠 作为菜单图标)
local page = entry({"admin", "services", "openclaw"}, alias("admin", "services", "openclaw", "basic"), _("OpenClaw"), 90)
@@ -77,32 +160,27 @@ function index()
end-- ═══════════════════════════════════════════
-- 获取安装路径 (唯一权威来源: UCI 配置)
-- ═══════════════════════════════════════════
--- 核心原则: 用户在安装时输入的路径是唯一的安装位置
--- - UCI install_path 存储用户输入的基础路径 (如 /mnt/data 或 /opt)
--- - 实际安装路径为 ${install_path}/openclaw
--- - 此函数始终返回 UCI 配置的路径,不做任何"智能"回退
+-- 核心原则: UCI install_path 继续存储公开兼容字段,语义是基础目录。
+-- 如果用户误填 /mnt/data/openclaw,这里会规范化为 /mnt/data,再返回真实根目录。
-- ═══════════════════════════════════════════
local function get_install_path()
- local uci = require "luci.model.uci".cursor()
- -- 从 UCI 读取用户配置的基础路径,默认 /opt
- local base_path = uci:get("openclaw", "main", "install_path") or "/opt"
- -- 返回完整安装路径
- return base_path .. "/openclaw"
+ return get_path_info().oc_root
end
-- 确保网关端口可用:检测占用并尝试优雅停止或强制杀死占用进程
local function ensure_port_free(port)
local sys = require "luci.sys"
if not port or port == "" then return end
+ if not tostring(port):match("^%d+$") then return end
-- 优先尝试使用 openclaw 自身的 stop 命令(如果已安装)
sys.exec("openclaw gateway stop >/dev/null 2>&1 || true")
-- 查询占用端口的行
local check_cmd = ""
if os.execute("command -v ss >/dev/null 2>&1") == 0 then
- check_cmd = string.format("ss -tulnp 2>/dev/null | grep -E ':%%s ' || true", port)
+ check_cmd = "ss -tulnp 2>/dev/null | grep -E " .. shellquote(":" .. port .. " ") .. " || true"
else
- check_cmd = string.format("netstat -tulnp 2>/dev/null | grep -E ':%%s ' || true", port)
+ check_cmd = "netstat -tulnp 2>/dev/null | grep -E " .. shellquote(":" .. port .. " ") .. " || true"
end
local out = sys.exec(check_cmd)
out = out or ""
@@ -164,6 +242,8 @@ function action_status()
install_path = install_path,
gateway_running = false,
gateway_starting = false,
+ gateway_failed = false,
+ gateway_exit_code = "",
pty_running = false,
pid = "",
memory_kb = 0,
@@ -218,9 +298,19 @@ function action_status()
-- 如果端口未监听但 procd 进程存在,说明正在启动中 (gateway 初始化需要数分钟)
if not result.gateway_running and enabled == "1" then
- local procd_pid = sys.exec("pgrep -f 'openclaw.*gateway' 2>/dev/null | head -1"):gsub("%s+", "")
- if procd_pid ~= "" then
+ local procd_pid = sys.exec("ubus call service list '{\"name\":\"openclaw\"}' 2>/dev/null | jsonfilter -e '$.openclaw.instances.gateway.pid' 2>/dev/null"):gsub("%s+", "")
+ local procd_running = sys.exec("ubus call service list '{\"name\":\"openclaw\"}' 2>/dev/null | jsonfilter -e '$.openclaw.instances.gateway.running' 2>/dev/null"):gsub("%s+", "")
+ local procd_exit = sys.exec("ubus call service list '{\"name\":\"openclaw\"}' 2>/dev/null | jsonfilter -e '$.openclaw.instances.gateway.exit_code' 2>/dev/null"):gsub("%s+", "")
+ result.gateway_exit_code = procd_exit
+ if procd_exit ~= "" and tonumber(procd_exit) and tonumber(procd_exit) ~= 0 and procd_running ~= "true" then
+ result.gateway_failed = true
+ elseif procd_pid ~= "" or procd_running == "true" then
result.gateway_starting = true
+ else
+ local fallback_pid = sys.exec("pgrep -f 'openclaw.*gateway' 2>/dev/null | head -1"):gsub("%s+", "")
+ if fallback_pid ~= "" then
+ result.gateway_starting = true
+ end
end
end
@@ -294,7 +384,7 @@ function action_status()
-- 磁盘剩余空间 (检测安装路径所在分区)
local install_parent = install_path:match("^(.*)/[^/]*$") or "/"
- local df_output = sys.exec("df -h " .. install_parent .. " 2>/dev/null | tail -1 | awk '{print $4}'"):gsub("%s+", "")
+ local df_output = sys.exec("df -h " .. shellquote(install_parent) .. " 2>/dev/null | tail -1 | awk '{print $4}'"):gsub("%s+", "")
if df_output and df_output ~= "" then
result.disk_free = df_output
end
@@ -339,24 +429,27 @@ function action_service_ctl()
-- 稳定版: 读取 openclaw-env 中定义的 OC_TESTED_VERSION
local tested_ver = sys.exec("grep '^OC_TESTED_VERSION=' /usr/bin/openclaw-env 2>/dev/null | cut -d'\"' -f2"):gsub("%s+", "")
if tested_ver ~= "" then
- env_prefix = "OC_VERSION=" .. tested_ver .. " "
+ env_prefix = "OC_VERSION=" .. shellquote(tested_ver) .. " "
end
+ elseif version == "latest" then
+ env_prefix = "OC_VERSION='latest' "
elseif version ~= "" and version ~= "latest" then
-- 校验版本号格式 (仅允许数字、点、横线、字母)
if version:match("^[%d%.%-a-zA-Z]+$") then
- env_prefix = "OC_VERSION=" .. version .. " "
+ env_prefix = "OC_VERSION=" .. shellquote(version) .. " "
end
end
-- 处理自定义安装路径
- if install_path ~= "" and install_path ~= "/opt" then
- -- 安全检查: 路径不能包含危险字符
- install_path = install_path:gsub("[`$;&|<>]", "")
- install_path = install_path:gsub("/+$", "")
- if install_path ~= "" then
- -- 保存到 UCI 配置 (保存用户输入的基础路径)
- sys.exec("uci set openclaw.main.install_path='" .. install_path .. "'; uci commit openclaw 2>/dev/null")
- env_prefix = env_prefix .. "OC_INSTALL_PATH='" .. install_path .. "' "
+ if install_path ~= "" then
+ local normalized = normalize_install_base(install_path)
+ if not normalized then
+ http.prepare_content("application/json")
+ http.write_json({ status = "error", message = "安装路径无效:必须是绝对路径,且不能包含空格、引号或 shell 特殊字符。" })
+ return
end
+ -- 保存规范化后的基础路径,公开字段仍为 install_path,避免破坏兼容。
+ sys.exec("uci set openclaw.main.install_path=" .. shellquote(normalized) .. "; uci commit openclaw 2>/dev/null")
+ env_prefix = env_prefix .. "OC_INSTALL_PATH=" .. shellquote(normalized) .. " "
end
-- 后台安装,成功后自动启用并启动服务
-- 注: openclaw-env 脚本有 set -e,init_openclaw 中的非关键失败不应阻止启动
@@ -490,10 +583,22 @@ function action_uninstall()
local sys = require "luci.sys"
local uci = require "luci.model.uci".cursor()
- -- 获取安装路径
- local install_path_uci = uci:get("openclaw", "main", "install_path") or "/opt"
- -- 实际安装路径
- local install_path = install_path_uci .. "/openclaw"
+ -- 获取并校验安装路径。卸载只能作用于规范化后的 /openclaw。
+ local configured_base = uci:get("openclaw", "main", "install_path") or "/opt"
+ local normalized_base = normalize_install_base(configured_base)
+ if not normalized_base then
+ http.prepare_content("application/json")
+ http.write_json({ status = "error", message = "UCI 安装路径无效,已取消卸载: " .. tostring(configured_base) })
+ return
+ end
+ local path_info = get_path_info(normalized_base)
+ local install_path = path_info.oc_root
+ if not is_safe_openclaw_root(install_path) then
+ http.prepare_content("application/json")
+ http.write_json({ status = "error", message = "安装路径未通过安全校验,已取消卸载: " .. install_path })
+ return
+ end
+ local q_install_path = shellquote(install_path)
-- 1. 停止服务 (通过 init.d 正常流程)
sys.exec("/etc/init.d/openclaw stop >/dev/null 2>&1")
@@ -513,17 +618,13 @@ function action_uninstall()
-- 设置 UCI enabled=0
sys.exec("uci set openclaw.main.enabled=0; uci commit openclaw 2>/dev/null")
-- 删除 Node.js + OpenClaw 运行环境 (包含所有插件: qqbot, 飞书等)
- -- 尝试先解绑可能挂载的目录
- sys.exec("umount " .. install_path .. " 2>/dev/null")
- -- 强制赋予最大权限避免 EACCES 阻挡
- sys.exec("chmod -R 777 " .. install_path .. " /root/.openclaw 2>/dev/null")
- -- 删除 Node.js + OpenClaw 运行环境
- sys.exec("rm -rf " .. install_path)
- -- OverlayFS 兼容: 确保 upper 层的残留也被暴力清空
- sys.exec("[ -d /overlay/upper" .. install_path .. " ] && rm -rf /overlay/upper" .. install_path .. " 2>/dev/null")
-
- -- 清理旧数据迁移后可能残留的目录
- sys.exec("rm -rf /root/.openclaw 2>/dev/null")
+ -- 尝试先解绑可能挂载的目录;失败不阻断后续删除。
+ sys.exec("umount " .. q_install_path .. " 2>/dev/null || true")
+ -- 删除 Node.js + OpenClaw 运行环境。不要通过全局提权绕过权限问题。
+ sys.exec("rm -rf " .. q_install_path)
+ -- OverlayFS 兼容: 只清理同一规范化路径在 upper 层的残留。
+ local overlay_install_path = "/overlay/upper" .. install_path
+ sys.exec("[ -d " .. shellquote(overlay_install_path) .. " ] && rm -rf " .. shellquote(overlay_install_path) .. " 2>/dev/null || true")
-- 清理临时文件
sys.exec("rm -f /tmp/openclaw-setup.* /tmp/openclaw-update.log /tmp/openclaw-plugin-upgrade.* /var/run/openclaw*.pid")
-- 清理 LuCI 缓存
@@ -534,7 +635,7 @@ function action_uninstall()
http.prepare_content("application/json")
http.write_json({
status = "ok",
- message = "运行环境已卸载。已清理: Node.js 运行环境 (" .. install_path .. ")、所有插件 (qqbot/飞书等)、旧数据目录 (/root/.openclaw)、临时文件、LuCI 缓存。"
+ message = "运行环境已卸载。已清理: Node.js 运行环境 (" .. install_path .. ")、所有插件、临时文件、LuCI 缓存。"
})
end
@@ -970,12 +1071,8 @@ function action_check_system()
local uci = require "luci.model.uci".cursor()
-- 获取自定义安装路径 (用户输入的是基础路径,如 /opt 或 /mnt/data)
- local install_path = http.formvalue("install_path") or uci:get("openclaw", "main", "install_path") or "/opt"
- -- 安全检查: 路径不能包含危险字符
- install_path = install_path:gsub("[`$;&|<>]", "")
- -- 确保路径不以 / 结尾
- install_path = install_path:gsub("/+$", "")
- if install_path == "" then install_path = "/opt" end
+ local raw_install_path = http.formvalue("install_path") or uci:get("openclaw", "main", "install_path") or "/opt"
+ local install_path = normalize_install_base(raw_install_path)
-- 最低要求配置 (v2026.3.28: 包体积 ~200MB, 建议 2GB 可用空间)
local MIN_MEMORY_MB = 1024 -- 1GB
@@ -987,12 +1084,21 @@ function action_check_system()
disk_mb = 0,
disk_ok = false,
disk_path = "",
- install_path = install_path,
+ install_path = install_path or tostring(raw_install_path or ""),
+ path_valid = install_path ~= nil,
+ writable_ok = false,
disk_free_str = "",
pass = false,
message = ""
}
+ if not install_path then
+ result.message = "安装路径无效:必须是绝对路径,且不能包含空格、引号或 shell 特殊字符。"
+ http.prepare_content("application/json")
+ http.write_json(result)
+ return
+ end
+
-- 检测总内存 (从 /proc/meminfo 读取 MemTotal)
local meminfo = io.open("/proc/meminfo", "r")
if meminfo then
@@ -1029,12 +1135,12 @@ function action_check_system()
local disk_check_path = find_mount_point(install_path)
-- 使用 df 检测磁盘空间
- local df_output = sys.exec("df -m " .. disk_check_path .. " 2>/dev/null | tail -1 | awk '{print $4}'"):gsub("%s+", "")
+ local df_output = sys.exec("df -m " .. shellquote(disk_check_path) .. " 2>/dev/null | tail -1 | awk '{print $4}'"):gsub("%s+", "")
if df_output and df_output ~= "" and tonumber(df_output) then
result.disk_mb = tonumber(df_output)
result.disk_path = disk_check_path
-- 获取可读的磁盘空间格式
- result.disk_free_str = sys.exec("df -h " .. disk_check_path .. " 2>/dev/null | tail -1 | awk '{print $4}'"):gsub("%s+", "")
+ result.disk_free_str = sys.exec("df -h " .. shellquote(disk_check_path) .. " 2>/dev/null | tail -1 | awk '{print $4}'"):gsub("%s+", "")
else
-- 如果检测失败,尝试检测根分区
df_output = sys.exec("df -m / 2>/dev/null | tail -1 | awk '{print $4}'"):gsub("%s+", "")
@@ -1046,8 +1152,19 @@ function action_check_system()
end
result.disk_ok = result.disk_mb >= MIN_DISK_MB
+ -- 安装前写入探针:先在实际存在的父目录创建临时目录。
+ -- 这能明确识别 overlay 满、只读挂载、路径挂载点不可写等问题,避免下载完才失败。
+ local probe_dir = disk_check_path .. "/.openclaw-write-test-" .. tostring(os.time()) .. "-" .. tostring(math.random(1000, 9999))
+ local probe_rc = os.execute("mkdir " .. shellquote(probe_dir) .. " >/dev/null 2>&1")
+ if probe_rc == 0 or probe_rc == true then
+ result.writable_ok = true
+ os.execute("rmdir " .. shellquote(probe_dir) .. " >/dev/null 2>&1")
+ else
+ result.writable_ok = false
+ end
+
-- 综合判断
- result.pass = result.memory_ok and result.disk_ok
+ result.pass = result.memory_ok and result.disk_ok and result.writable_ok
-- 生成提示信息
if result.pass then
@@ -1060,6 +1177,9 @@ function action_check_system()
if not result.disk_ok then
table.insert(issues, string.format("磁盘空间不足: 当前 %d MB 可用,需要至少 %d MB", result.disk_mb, MIN_DISK_MB))
end
+ if not result.writable_ok then
+ table.insert(issues, "安装路径所在挂载点不可写,可能是 overlay 已满、只读或外置盘未正确挂载")
+ end
result.message = table.concat(issues, ";")
end
@@ -1191,22 +1311,48 @@ function action_wechat_install()
http.write_json({ status = "ok", message = "微信插件安装已在后台启动..." })
return
end
+ if sys.exec("command -v python3 2>/dev/null"):gsub("%s+", "") == "" then
+ write_wechat_log_and_exit(
+ "/tmp/openclaw-wechat-install.log",
+ "/tmp/openclaw-wechat-install.exit",
+ "开始安装微信插件...\n安装路径: " .. install_path .. "\n❌ 错误: 未检测到 python3。\n请先安装依赖: opkg update && opkg install python3\n",
+ 127
+ )
+ http.prepare_content("application/json")
+ http.write_json({ status = "ok", message = "微信插件安装已在后台启动..." })
+ return
+ end
+ if not ensure_openclaw_user(oc_data) then
+ write_wechat_log_and_exit(
+ "/tmp/openclaw-wechat-install.log",
+ "/tmp/openclaw-wechat-install.exit",
+ "开始安装微信插件...\n安装路径: " .. install_path .. "\n❌ 错误: 无法创建或读取 openclaw 系统用户。\n请检查 /etc/passwd、/etc/group 是否可写。\n",
+ 1
+ )
+ http.prepare_content("application/json")
+ http.write_json({ status = "ok", message = "微信插件安装已在后台启动..." })
+ return
+ end
-- 后台执行安装
-- 在启动安装前,确保网关端口可用(自动清理残留 gateway 进程)
local port = uci:get("openclaw", "main", "port") or "18789"
ensure_port_free(port)
-- 微信插件安装目录路径 (用于安装后权限修复)
- local wechat_ext_dir = install_path .. "/data/.openclaw/extensions/openclaw-weixin"
+ local extensions_dir = install_path .. "/data/.openclaw/extensions"
local install_cmd = string.format(
"( " ..
"echo '开始安装微信插件...' > /tmp/openclaw-wechat-install.log; " ..
"echo '安装路径: %s' >> /tmp/openclaw-wechat-install.log; " ..
"echo 'npx 路径: %s' >> /tmp/openclaw-wechat-install.log; " ..
- -- 修复 npm 缓存目录权限 (避免 root 创建的缓存导致 openclaw 用户写入失败)
- "chown -R openclaw:openclaw %s/.npm 2>/dev/null; " ..
+ "mkdir -p %s/.npm %s/.tmp %s/.openclaw/extensions; " ..
+ "if [ ! -w %s/.openclaw/extensions ]; then chown -R openclaw:openclaw %s/.openclaw/extensions 2>/dev/null; fi; " ..
+ "chown -R openclaw:openclaw %s/.npm %s/.tmp %s/.openclaw 2>/dev/null; " ..
+ "if [ ! -w %s/.npm ] || [ ! -w %s/.tmp ]; then echo '❌ npm cache/tmp 目录不可写' >> /tmp/openclaw-wechat-install.log; echo 1 > /tmp/openclaw-wechat-install.exit; exit 0; fi; " ..
+ "su -s /bin/sh openclaw -c 'test -w %s/.npm && test -w %s/.tmp && test -w %s/.openclaw' || { echo '❌ openclaw 用户无法写入 npm cache/tmp/data 目录' >> /tmp/openclaw-wechat-install.log; echo 1 > /tmp/openclaw-wechat-install.exit; exit 0; }; " ..
"cd %s && " ..
"su -s /bin/sh openclaw -c 'HOME=%s OPENCLAW_HOME=%s OPENCLAW_STATE_DIR=%s/.openclaw " ..
+ "OPENCLAW_CONFIG_PATH=%s/.openclaw/openclaw.json NPM_CONFIG_CACHE=%s/.npm npm_config_cache=%s/.npm TMPDIR=%s/.tmp " ..
"PATH=%s/node/bin:%s/global/bin:$PATH " ..
"%s -y @tencent-weixin/openclaw-weixin-cli install' >> /tmp/openclaw-wechat-install.log 2>&1; " ..
"RC=$?; echo $RC > /tmp/openclaw-wechat-install.exit; " ..
@@ -1217,8 +1363,16 @@ function action_wechat_install()
"if [ $RC -eq 0 ]; then echo '✅ 微信插件安装成功!' >> /tmp/openclaw-wechat-install.log; " ..
"else echo '❌ 安装失败 (exit: '$RC')' >> /tmp/openclaw-wechat-install.log; fi " ..
") & echo $! > /tmp/openclaw-wechat-install.pid",
- install_path, npx_bin, oc_data, install_path, oc_data, oc_data, oc_data, install_path, install_path, npx_bin,
- wechat_ext_dir, wechat_ext_dir
+ install_path, npx_bin,
+ oc_data, oc_data, oc_data,
+ oc_data, oc_data,
+ oc_data, oc_data, oc_data,
+ oc_data, oc_data,
+ oc_data, oc_data, oc_data,
+ install_path, oc_data, oc_data, oc_data,
+ oc_data, oc_data, oc_data, oc_data,
+ install_path, install_path, npx_bin,
+ extensions_dir, extensions_dir
)
sys.exec(install_cmd)
@@ -1313,6 +1467,11 @@ function action_wechat_login()
http.write_json({ status = "error", message = "OpenClaw 未安装" })
return
end
+ if not ensure_openclaw_user(oc_data) then
+ http.prepare_content("application/json")
+ http.write_json({ status = "error", message = "无法创建或读取 openclaw 系统用户,请检查 /etc/passwd、/etc/group 是否可写" })
+ return
+ end
-- 清理旧状态和可能的残留进程
sys.exec("kill -9 $(cat /tmp/openclaw-wechat-login.pid 2>/dev/null) 2>/dev/null")
@@ -1322,13 +1481,17 @@ function action_wechat_login()
"( " ..
"echo '正在启动微信登录...' > /tmp/openclaw-wechat-qrcode.txt; " ..
"echo '安装路径: %s' >> /tmp/openclaw-wechat-qrcode.txt; " ..
+ "mkdir -p %s/.npm %s/.tmp %s/.openclaw; chown -R openclaw:openclaw %s/.npm %s/.tmp %s/.openclaw 2>/dev/null; " ..
"cd %s && " ..
"su -s /bin/sh openclaw -c 'HOME=%s OPENCLAW_HOME=%s OPENCLAW_STATE_DIR=%s/.openclaw OPENCLAW_CONFIG_PATH=%s/.openclaw/openclaw.json " ..
- "PATH=%s/node/bin:%s/global/bin:$PATH " ..
+ "NPM_CONFIG_CACHE=%s/.npm npm_config_cache=%s/.npm TMPDIR=%s/.tmp PATH=%s/node/bin:%s/global/bin:$PATH " ..
"%s %s channels login --channel openclaw-weixin' >> /tmp/openclaw-wechat-qrcode.txt 2>&1; " ..
"echo $? > /tmp/openclaw-wechat-login.exit; " ..
") >/dev/null 2>&1 & echo $! > /tmp/openclaw-wechat-login.pid",
- install_path, oc_data, oc_data, oc_data, oc_data, oc_data, install_path, install_path, node_bin, oc_entry
+ install_path,
+ oc_data, oc_data, oc_data, oc_data, oc_data, oc_data,
+ oc_data, oc_data, oc_data, oc_data, oc_data,
+ oc_data, oc_data, oc_data, install_path, install_path, node_bin, oc_entry
) sys.exec(login_cmd)
http.prepare_content("application/json")
@@ -1419,6 +1582,9 @@ function action_wechat_uninstall()
-- 删除微信插件目录
local wechat_ext_dir = install_path .. "/data/.openclaw/extensions/openclaw-weixin"
+ if wechat_ext_dir == install_path .. "/data/.openclaw/extensions/openclaw-weixin" then
+ sys.exec("rm -rf " .. shellquote(wechat_ext_dir) .. " 2>/dev/null")
+ end
-- 从配置中删除微信相关配置
local config_file = install_path .. "/data/.openclaw/openclaw.json"
@@ -1536,22 +1702,48 @@ function action_wechat_upgrade_plugin()
http.write_json({ status = "ok", message = "微信插件升级已在后台启动..." })
return
end
+ if sys.exec("command -v python3 2>/dev/null"):gsub("%s+", "") == "" then
+ write_wechat_log_and_exit(
+ "/tmp/openclaw-wechat-install.log",
+ "/tmp/openclaw-wechat-install.exit",
+ "正在升级微信插件...\n安装路径: " .. install_path .. "\n❌ 错误: 未检测到 python3。\n请先安装依赖: opkg update && opkg install python3\n",
+ 127
+ )
+ http.prepare_content("application/json")
+ http.write_json({ status = "ok", message = "微信插件升级已在后台启动..." })
+ return
+ end
+ if not ensure_openclaw_user(oc_data) then
+ write_wechat_log_and_exit(
+ "/tmp/openclaw-wechat-install.log",
+ "/tmp/openclaw-wechat-install.exit",
+ "正在升级微信插件...\n安装路径: " .. install_path .. "\n❌ 错误: 无法创建或读取 openclaw 系统用户。\n请检查 /etc/passwd、/etc/group 是否可写。\n",
+ 1
+ )
+ http.prepare_content("application/json")
+ http.write_json({ status = "ok", message = "微信插件升级已在后台启动..." })
+ return
+ end
-- 后台执行升级 (其实就是重新安装最新版)
-- 在启动升级前,确保网关端口可用(自动清理残留 gateway 进程)
local port = uci:get("openclaw", "main", "port") or "18789"
ensure_port_free(port)
-- 微信插件安装目录路径 (用于升级后权限修复)
- local wechat_ext_dir = install_path .. "/data/.openclaw/extensions/openclaw-weixin"
+ local extensions_dir = install_path .. "/data/.openclaw/extensions"
local upgrade_cmd = string.format(
"( " ..
"echo '正在升级微信插件...' > /tmp/openclaw-wechat-install.log; " ..
"echo '安装路径: %s' >> /tmp/openclaw-wechat-install.log; " ..
"echo 'npx 路径: %s' >> /tmp/openclaw-wechat-install.log; " ..
- -- 修复 npm 缓存目录权限 (避免 root 创建的缓存导致 openclaw 用户写入失败)
- "chown -R openclaw:openclaw %s/.npm 2>/dev/null; " ..
+ "mkdir -p %s/.npm %s/.tmp %s/.openclaw/extensions; " ..
+ "if [ ! -w %s/.openclaw/extensions ]; then chown -R openclaw:openclaw %s/.openclaw/extensions 2>/dev/null; fi; " ..
+ "chown -R openclaw:openclaw %s/.npm %s/.tmp %s/.openclaw 2>/dev/null; " ..
+ "if [ ! -w %s/.npm ] || [ ! -w %s/.tmp ]; then echo '❌ npm cache/tmp 目录不可写' >> /tmp/openclaw-wechat-install.log; echo 1 > /tmp/openclaw-wechat-install.exit; exit 0; fi; " ..
+ "su -s /bin/sh openclaw -c 'test -w %s/.npm && test -w %s/.tmp && test -w %s/.openclaw' || { echo '❌ openclaw 用户无法写入 npm cache/tmp/data 目录' >> /tmp/openclaw-wechat-install.log; echo 1 > /tmp/openclaw-wechat-install.exit; exit 0; }; " ..
"cd %s && " ..
"su -s /bin/sh openclaw -c 'HOME=%s OPENCLAW_HOME=%s OPENCLAW_STATE_DIR=%s/.openclaw " ..
+ "OPENCLAW_CONFIG_PATH=%s/.openclaw/openclaw.json NPM_CONFIG_CACHE=%s/.npm npm_config_cache=%s/.npm TMPDIR=%s/.tmp " ..
"PATH=%s/node/bin:%s/global/bin:$PATH " ..
"%s -y @tencent-weixin/openclaw-weixin-cli install' >> /tmp/openclaw-wechat-install.log 2>&1; " ..
"RC=$?; echo $RC > /tmp/openclaw-wechat-install.exit; " ..
@@ -1561,8 +1753,16 @@ function action_wechat_upgrade_plugin()
"if [ $RC -eq 0 ]; then echo '✅ 微信插件升级成功!' >> /tmp/openclaw-wechat-install.log; " ..
"else echo '❌ 升级失败 (exit: '$RC')' >> /tmp/openclaw-wechat-install.log; fi " ..
") & echo $! > /tmp/openclaw-wechat-install.pid",
- install_path, npx_bin, oc_data, install_path, oc_data, oc_data, oc_data, install_path, install_path, npx_bin,
- wechat_ext_dir, wechat_ext_dir
+ install_path, npx_bin,
+ oc_data, oc_data, oc_data,
+ oc_data, oc_data,
+ oc_data, oc_data, oc_data,
+ oc_data, oc_data,
+ oc_data, oc_data, oc_data,
+ install_path, oc_data, oc_data, oc_data,
+ oc_data, oc_data, oc_data, oc_data,
+ install_path, install_path, npx_bin,
+ extensions_dir, extensions_dir
)
sys.exec(upgrade_cmd)
@@ -1578,11 +1778,16 @@ function action_wechat_logout()
local sys = require "luci.sys"
local account_id = http.formvalue("account")
- if not account_id or account_id == "" then
- http.prepare_content("application/json")
- http.write_json({ status = "error", message = "参数错误:未提供账号 ID" })
- return
- end
+ if not account_id or account_id == "" then
+ http.prepare_content("application/json")
+ http.write_json({ status = "error", message = "参数错误:未提供账号 ID" })
+ return
+ end
+ if account_id:match("[`$;&|<>\"']") then
+ http.prepare_content("application/json")
+ http.write_json({ status = "error", message = "账号 ID 包含非法字符" })
+ return
+ end
local install_path = get_install_path()
local node_bin = install_path .. "/node/bin/node"
@@ -1604,13 +1809,18 @@ function action_wechat_logout()
end
end
- if oc_entry == "" then
- http.prepare_content("application/json")
- http.write_json({ status = "error", message = "OpenClaw 未安装" })
- return
- end
+ if oc_entry == "" then
+ http.prepare_content("application/json")
+ http.write_json({ status = "error", message = "OpenClaw 未安装" })
+ return
+ end
+ if not ensure_openclaw_user(oc_data) then
+ http.prepare_content("application/json")
+ http.write_json({ status = "error", message = "无法创建或读取 openclaw 系统用户" })
+ return
+ end
- -- 在后台执行 logout
+ -- 在后台执行 logout
local logout_cmd = string.format(
"cd %s && su -s /bin/sh openclaw -c 'HOME=%s OPENCLAW_HOME=%s OPENCLAW_STATE_DIR=%s/.openclaw OPENCLAW_CONFIG_PATH=%s/.openclaw/openclaw.json " ..
"PATH=%s/node/bin:%s/global/bin:$PATH " ..
diff --git a/luci-app-openclaw/luasrc/openclaw/paths.lua b/luci-app-openclaw/luasrc/openclaw/paths.lua
new file mode 100644
index 000000000..ec988f5d7
--- /dev/null
+++ b/luci-app-openclaw/luasrc/openclaw/paths.lua
@@ -0,0 +1,64 @@
+local M = {}
+
+local function trim(value)
+ return (value or ""):gsub("^%s+", ""):gsub("%s+$", "")
+end
+
+function M.normalize_install_path(value)
+ local raw = trim(value)
+ if raw == "" then raw = "/opt" end
+ raw = raw:gsub("/+$", "")
+ if raw == "" then raw = "/" end
+
+ if raw:sub(1, 1) ~= "/" then return nil end
+ if raw:match("[%s'\"`$;&|<>()]") then return nil end
+ if raw == "/" or raw == "/proc" or raw:match("^/proc/") or
+ raw == "/sys" or raw:match("^/sys/") or
+ raw == "/dev" or raw:match("^/dev/") or
+ raw == "/tmp" or raw:match("^/tmp/") or
+ raw == "/var" or raw:match("^/var/") or
+ raw == "/etc" or raw:match("^/etc/") or
+ raw == "/usr" or raw:match("^/usr/") or
+ raw == "/bin" or raw:match("^/bin/") or
+ raw == "/sbin" or raw:match("^/sbin/") or
+ raw == "/lib" or raw:match("^/lib/") or
+ raw == "/rom" or raw:match("^/rom/") or
+ raw == "/overlay" or raw:match("^/overlay/") then
+ return nil
+ end
+
+ if raw:match("/openclaw$") then
+ raw = raw:gsub("/openclaw$", "")
+ if raw == "" then raw = "/" end
+ end
+
+ return raw
+end
+
+function M.derive_paths(value)
+ local base = M.normalize_install_path(value) or "/opt"
+ local root = (base == "/") and "/openclaw" or (base .. "/openclaw")
+ return {
+ install_path = base,
+ oc_root = root,
+ node_base = root .. "/node",
+ oc_global = root .. "/global",
+ oc_data = root .. "/data",
+ config_file = root .. "/data/.openclaw/openclaw.json"
+ }
+end
+
+function M.shellquote(value)
+ return "'" .. tostring(value or ""):gsub("'", "'\\''") .. "'"
+end
+
+function M.is_safe_openclaw_root(value)
+ if type(value) ~= "string" or not value:match("/openclaw$") then return false end
+ if value == "/openclaw" or value == "/opt/openclaw" then return true end
+ if value:match("^/mnt/[^/]+/openclaw$") or value:match("^/media/[^/]+/openclaw$") then return true end
+ if value:match("^/srv/[^/]+/openclaw$") then return true end
+ if value == "/overlay/upper/opt/openclaw" then return true end
+ return false
+end
+
+return M
diff --git a/luci-app-openclaw/luasrc/view/openclaw/console.htm b/luci-app-openclaw/luasrc/view/openclaw/console.htm
index 4c4055477..42b6a431e 100644
--- a/luci-app-openclaw/luasrc/view/openclaw/console.htm
+++ b/luci-app-openclaw/luasrc/view/openclaw/console.htm
@@ -107,9 +107,9 @@ local port = uci:get("openclaw", "main", "port") or "18789"
var openBtn = document.getElementById('oc-console-open-btn');
function getConsoleUrl() {
- var proto = window.location.protocol;
var host = window.location.hostname;
- var url = proto + '//' + host + ':' + gwPort + '/';
+ // OpenClaw Gateway 当前只监听 HTTP;LuCI 使用 HTTPS 时也必须强制走 http,避免浏览器误连 HTTPS 端口。
+ var url = 'http://' + host + ':' + gwPort + '/';
if (gwToken) url += '#token=' + encodeURIComponent(gwToken);
return url;
}
@@ -136,6 +136,15 @@ local port = uci:get("openclaw", "main", "port") or "18789"
openBtn.href = url;
openBtn.style.display = '';
showIframe(url);
+ } else if (d.gateway_failed) {
+ statusTextEl.innerHTML = '● 网关启动失败';
+ openBtn.style.display = 'none';
+ loading.style.display = '';
+ loading.innerHTML = '
' +
+ '
×
' +
+ '
OpenClaw 网关启动失败
' +
+ '
退出码:' + (d.gateway_exit_code || '-') + '。请查看系统日志或安装日志。
' +
+ '
';
} else if (d.gateway_starting) {
statusTextEl.innerHTML = '⏳ 网关正在启动';
openBtn.style.display = 'none';
@@ -163,7 +172,10 @@ local port = uci:get("openclaw", "main", "port") or "18789"
function showIframe(url) {
loading.style.display = 'none';
var existing = document.getElementById('oc-console-iframe');
- if (existing) return;
+ if (existing) {
+ if (existing.src !== url) existing.src = url;
+ return;
+ }
var iframe = document.createElement('iframe');
iframe.id = 'oc-console-iframe';
diff --git a/luci-app-openclaw/luasrc/view/openclaw/status.htm b/luci-app-openclaw/luasrc/view/openclaw/status.htm
index 12338a369..71f78d74a 100644
--- a/luci-app-openclaw/luasrc/view/openclaw/status.htm
+++ b/luci-app-openclaw/luasrc/view/openclaw/status.htm
@@ -55,6 +55,7 @@
.oc-badge-running { background: #e6f7e9; color: #1a7f37; }
.oc-badge-stopped { background: #ffeef0; color: #cf222e; }
.oc-badge-starting { background: #fff8c5; color: #9a6700; }
+.oc-badge-failed { background: #ffeef0; color: #cf222e; }
.oc-badge-disabled { background: #f0f0f0; color: #656d76; }
.oc-badge-unknown { background: #fff8c5; color: #9a6700; }
.oc-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 6px; vertical-align: middle; }
@@ -101,6 +102,8 @@
stEl.innerHTML = '运行中';
} else if (d.gateway_starting) {
stEl.innerHTML = '⏳ 正在启动...';
+ } else if (d.gateway_failed) {
+ stEl.innerHTML = '启动失败';
} else {
stEl.innerHTML = '已停止';
}
@@ -110,6 +113,8 @@
gwEl.innerHTML = '监听中 :' + d.port;
} else if (d.gateway_starting) {
gwEl.innerHTML = '初始化中,首次启动可能需要 2~5 分钟...';
+ } else if (d.gateway_failed) {
+ gwEl.innerHTML = '启动失败,退出码 ' + (d.gateway_exit_code || '-');
} else {
gwEl.innerHTML = '未监听';
}
diff --git a/luci-app-openclaw/root/etc/init.d/openclaw b/luci-app-openclaw/root/etc/init.d/openclaw
index 458a3f7d0..93121bb15 100755
--- a/luci-app-openclaw/root/etc/init.d/openclaw
+++ b/luci-app-openclaw/root/etc/init.d/openclaw
@@ -11,13 +11,33 @@ EXTRA_HELP=" setup 下载 Node.js 并安装 OpenClaw
restart_gateway 仅重启 Gateway 实例 (不影响 Web PTY)"
# ── 安装路径 (支持自定义) ──
-# 从 UCI 配置读取自定义路径,默认为 /opt
-# 程序会在此路径下自动创建 openclaw 目录
-OC_BASE_PATH="$(uci -q get openclaw.main.install_path || echo '/opt')"
-OC_INSTALL_PATH="${OC_BASE_PATH}/openclaw"
-NODE_BASE="${OC_INSTALL_PATH}/node"
-OC_GLOBAL="${OC_INSTALL_PATH}/global"
-OC_DATA="${OC_INSTALL_PATH}/data"
+# 从 UCI 配置读取自定义路径,公开字段仍为 install_path。
+# 统一路径解析可以兼容 /mnt/data/openclaw 输入,避免双拼路径。
+[ -r /usr/libexec/openclaw-paths.sh ] && . /usr/libexec/openclaw-paths.sh
+[ -r /usr/libexec/openclaw-node.sh ] && . /usr/libexec/openclaw-node.sh
+OC_NODE_MIN_VERSION="${OC_NODE_MIN_VERSION:-22.14.0}"
+OC_CONFIGURED_PATH="$(uci -q get openclaw.main.install_path 2>/dev/null || echo '/opt')"
+if command -v oc_load_paths >/dev/null 2>&1; then
+ if ! oc_load_paths "$OC_CONFIGURED_PATH"; then
+ logger -t openclaw "安装路径无效: $OC_CONFIGURED_PATH"
+ OC_BASE_PATH="/opt"
+ OC_INSTALL_PATH="/opt/openclaw"
+ NODE_BASE="${OC_INSTALL_PATH}/node"
+ OC_GLOBAL="${OC_INSTALL_PATH}/global"
+ OC_DATA="${OC_INSTALL_PATH}/data"
+ CONFIG_FILE="${OC_DATA}/.openclaw/openclaw.json"
+ else
+ OC_BASE_PATH="$OPENCLAW_INSTALL_PATH"
+ OC_INSTALL_PATH="$OC_ROOT"
+ fi
+else
+ OC_BASE_PATH="${OC_CONFIGURED_PATH%/}"
+ OC_INSTALL_PATH="${OC_BASE_PATH}/openclaw"
+ NODE_BASE="${OC_INSTALL_PATH}/node"
+ OC_GLOBAL="${OC_INSTALL_PATH}/global"
+ OC_DATA="${OC_INSTALL_PATH}/data"
+ CONFIG_FILE="${OC_DATA}/.openclaw/openclaw.json"
+fi
# ── OverlayFS 兼容性修复 ──
# Docker bind mount (/overlay/upper/opt/docker) 会导致 /opt 不可写
@@ -220,6 +240,27 @@ if(d.plugins.installs){
}
});
}
+// v2026.5.x: 微信插件渠道名统一为 openclaw-weixin
+// 旧配置里可能残留 weixin,启动前迁移,避免渠道加载失败。
+if(Array.isArray(d.plugins.allow)){
+ d.plugins.allow=d.plugins.allow.map(x=>x==='weixin'?'openclaw-weixin':x)
+ .filter((x,i,a)=>x&&a.indexOf(x)===i);
+}
+['entries','installs'].forEach(ns=>{
+ if(d.plugins&&d.plugins[ns]&&d.plugins[ns].weixin){
+ if(!d.plugins[ns]['openclaw-weixin'])d.plugins[ns]['openclaw-weixin']=d.plugins[ns].weixin;
+ delete d.plugins[ns].weixin;
+ }
+});
+['channel','channels'].forEach(ns=>{
+ if(d[ns]&&d[ns].weixin){
+ if(!d[ns]['openclaw-weixin'])d[ns]['openclaw-weixin']=d[ns].weixin;
+ delete d[ns].weixin;
+ }
+});
+if(!d.plugins.allow.includes('openclaw-weixin') && d.plugins.installs && d.plugins.installs['openclaw-weixin']){
+ d.plugins.allow.push('openclaw-weixin');
+}
// 始终信任 copilot-proxy (内置插件)
if(!d.plugins.allow.includes('copilot-proxy'))d.plugins.allow.push('copilot-proxy');
fs.writeFileSync(f,JSON.stringify(d,null,2));
@@ -248,6 +289,13 @@ echo "未找到 Node.js: $NODE_BIN"
echo "请运行: openclaw-env setup"
return 1
fi
+if command -v oc_assert_node_min_version >/dev/null 2>&1; then
+ oc_assert_node_min_version "$NODE_BIN" "$OC_NODE_MIN_VERSION" >/dev/null || {
+ echo "Node.js 版本过低,OpenClaw 需要 >= v${OC_NODE_MIN_VERSION}"
+ echo "请运行: openclaw-env node"
+ return 1
+ }
+fi
# 检查 openclaw 入口
local oc_entry
diff --git a/luci-app-openclaw/root/etc/profile.d/openclaw.sh b/luci-app-openclaw/root/etc/profile.d/openclaw.sh
index 4577d8008..aaaea3436 100644
--- a/luci-app-openclaw/root/etc/profile.d/openclaw.sh
+++ b/luci-app-openclaw/root/etc/profile.d/openclaw.sh
@@ -6,13 +6,23 @@
# 支持自定义安装路径
# ============================================================================
-# 从 UCI 配置读取自定义安装路径
-# 用户配置的是基础路径,程序会在此路径下创建 openclaw 目录
-OC_BASE_PATH="$(uci -q get openclaw.main.install_path 2>/dev/null || echo '/opt')"
-OC_INSTALL_PATH="${OC_BASE_PATH}/openclaw"
-NODE_BASE="${OC_INSTALL_PATH}/node"
-OC_GLOBAL="${OC_INSTALL_PATH}/global"
-OC_DATA="${OC_INSTALL_PATH}/data"
+# 从 UCI 配置读取自定义安装路径。
+# 注意:这里不能修改全局 HOME。profile 会被 SSH shell、zsh/oh-my-zsh 等加载,
+# 全局改 HOME 会让 cd ~、插件缓存、历史文件全部跑到 OpenClaw 数据目录。
+# OpenClaw CLI 需要的 HOME 只在 openclaw 命令包装器里单独注入。
+[ -r /usr/libexec/openclaw-paths.sh ] && . /usr/libexec/openclaw-paths.sh
+OC_CONFIGURED_PATH="$(uci -q get openclaw.main.install_path 2>/dev/null || echo '/opt')"
+if command -v oc_load_paths >/dev/null 2>&1; then
+ oc_load_paths "$OC_CONFIGURED_PATH" || return 0
+ OC_INSTALL_PATH="$OC_ROOT"
+else
+ OC_BASE_PATH="${OC_CONFIGURED_PATH%/}"
+ OC_INSTALL_PATH="${OC_BASE_PATH}/openclaw"
+ NODE_BASE="${OC_INSTALL_PATH}/node"
+ OC_GLOBAL="${OC_INSTALL_PATH}/global"
+ OC_DATA="${OC_INSTALL_PATH}/data"
+ CONFIG_FILE="${OC_DATA}/.openclaw/openclaw.json"
+fi
# 检查 Node.js 是否已安装
[ -x "${NODE_BASE}/bin/node" ] || return 0
@@ -30,26 +40,32 @@ export NODE_ICU_DATA="${NODE_BASE}/share/icu"
# 这些变量确保 openclaw 命令使用正确的配置路径
export OPENCLAW_HOME="$OC_DATA"
export OPENCLAW_STATE_DIR="${OC_DATA}/.openclaw"
-export OPENCLAW_CONFIG_PATH="${OC_DATA}/.openclaw/openclaw.json"
+export OPENCLAW_CONFIG_PATH="$CONFIG_FILE"
-# 设置 HOME 为 OpenClaw 数据目录
-# 这是解决 Issue #42 的关键:确保 OpenClaw CLI 使用正确的配置路径
-# 注意:这会影响 cd ~ 等行为,但为了配置一致性是必要的
-export HOME="$OC_DATA"
-
-# 创建便捷别名:用户可直接运行 openclaw 命令
-if [ -x "${OC_GLOBAL}/bin/openclaw" ] || [ -x "${NODE_BASE}/bin/openclaw" ]; then
- # openclaw 已在 PATH 中,无需别名
- :
+# 创建便捷包装器:只给 openclaw 命令单独注入 HOME,避免污染用户 shell。
+_oc_cli=""
+if [ -x "${OC_GLOBAL}/bin/openclaw" ]; then
+ _oc_cli="${OC_GLOBAL}/bin/openclaw"
+elif [ -x "${NODE_BASE}/bin/openclaw" ]; then
+ _oc_cli="${NODE_BASE}/bin/openclaw"
else
- # 尝试查找 openclaw 入口并创建别名
- for _oc_dir in "${OC_GLOBAL}/lib/node_modules/openclaw" "${OC_GLOBAL}/node_modules/openclaw" "${NODE_BASE}/lib/node_modules/openclaw"; do
- if [ -f "${_oc_dir}/openclaw.mjs" ]; then
- alias openclaw="${NODE_BASE}/bin/node ${_oc_dir}/openclaw.mjs"
- break
- elif [ -f "${_oc_dir}/dist/cli.js" ]; then
- alias openclaw="${NODE_BASE}/bin/node ${_oc_dir}/dist/cli.js"
- break
- fi
- done
+ for _oc_dir in "${OC_GLOBAL}/lib/node_modules/openclaw" "${OC_GLOBAL}/node_modules/openclaw" "${NODE_BASE}/lib/node_modules/openclaw"; do
+ if [ -f "${_oc_dir}/openclaw.mjs" ]; then
+ _oc_cli="${NODE_BASE}/bin/node ${_oc_dir}/openclaw.mjs"
+ break
+ elif [ -f "${_oc_dir}/dist/cli.js" ]; then
+ _oc_cli="${NODE_BASE}/bin/node ${_oc_dir}/dist/cli.js"
+ break
+ fi
+ done
+fi
+
+if [ -n "$_oc_cli" ]; then
+ openclaw() {
+ HOME="$OC_DATA" \
+ OPENCLAW_HOME="$OC_DATA" \
+ OPENCLAW_STATE_DIR="${OC_DATA}/.openclaw" \
+ OPENCLAW_CONFIG_PATH="$CONFIG_FILE" \
+ sh -c 'exec "$@"' openclaw $_oc_cli "$@"
+ }
fi
diff --git a/luci-app-openclaw/root/etc/uci-defaults/99-openclaw b/luci-app-openclaw/root/etc/uci-defaults/99-openclaw
index a953d0773..89935913e 100755
--- a/luci-app-openclaw/root/etc/uci-defaults/99-openclaw
+++ b/luci-app-openclaw/root/etc/uci-defaults/99-openclaw
@@ -2,9 +2,17 @@
# luci-app-openclaw — 首次安装/升级初始化脚本
# 获取安装路径 (支持自定义)
-# 用户配置的是基础路径,程序会在此路径下创建 openclaw 目录
-OC_BASE_PATH="$(uci -q get openclaw.main.install_path || echo '/opt')"
-OC_INSTALL_PATH="${OC_BASE_PATH}/openclaw"
+# 用户配置的是基础路径,程序会在此路径下创建 openclaw 目录。
+# 这里复用统一路径解析,兼容用户误填 /mnt/data/openclaw 的情况。
+[ -r /usr/libexec/openclaw-paths.sh ] && . /usr/libexec/openclaw-paths.sh
+OC_CONFIGURED_PATH="$(uci -q get openclaw.main.install_path 2>/dev/null || echo '/opt')"
+if command -v oc_load_paths >/dev/null 2>&1 && oc_load_paths "$OC_CONFIGURED_PATH"; then
+ OC_BASE_PATH="$OPENCLAW_INSTALL_PATH"
+ OC_INSTALL_PATH="$OC_ROOT"
+else
+ OC_BASE_PATH="/opt"
+ OC_INSTALL_PATH="/opt/openclaw"
+fi
# ── v1.0.16: 清理错误路径下的配置文件 (Issue #42) ──
# 用户在 SSH 中直接运行 openclaw 命令时,可能创建了 /root/.openclaw/ 目录
diff --git a/luci-app-openclaw/root/usr/bin/openclaw-env b/luci-app-openclaw/root/usr/bin/openclaw-env
index bcabeec0a..289fdfdb4 100755
--- a/luci-app-openclaw/root/usr/bin/openclaw-env
+++ b/luci-app-openclaw/root/usr/bin/openclaw-env
@@ -19,19 +19,37 @@ NODE_VERSION_V1="22.15.1"
# 默认使用 V2 版本 (可通过 NODE_VERSION 环境变量覆盖)
NODE_VERSION="${NODE_VERSION:-${NODE_VERSION_V2}}"
# 经过验证的 OpenClaw 稳定版本 (更新此值需同步测试)
-OC_TESTED_VERSION="2026.4.9"
+OC_TESTED_VERSION="2026.5.12"
+# OpenClaw 2026.5.x package.json engines.node 的最低要求。
+# 如果未来上游提高要求,安装成功后还会从 package.json 再做一次强校验。
+OC_NODE_MIN_VERSION="${OC_NODE_MIN_VERSION:-22.14.0}"
# 用户可通过 OC_VERSION 环境变量覆盖安装版本
OC_VERSION="${OC_VERSION:-}"
+[ -r /usr/libexec/openclaw-paths.sh ] && . /usr/libexec/openclaw-paths.sh
+[ -r /usr/libexec/openclaw-node.sh ] && . /usr/libexec/openclaw-node.sh
+
# ── 安装路径 (支持自定义) ──
-# 从 UCI 配置读取自定义路径,默认为 /opt
-# 用户可在 LuCI 界面或通过 uci set openclaw.main.install_path=/mnt/data 设置
-# 程序会在此路径下自动创建 openclaw 目录
-OC_BASE_PATH="${OC_INSTALL_PATH:-$(uci -q get openclaw.main.install_path || echo '/opt')}"
-OC_INSTALL_PATH="${OC_BASE_PATH}/openclaw"
-NODE_BASE="${OC_INSTALL_PATH}/node"
-OC_GLOBAL="${OC_INSTALL_PATH}/global"
-OC_DATA="${OC_INSTALL_PATH}/data"
+# UCI 公开字段继续使用 openclaw.main.install_path,语义为“基础目录”。
+# 兼容用户误填 /mnt/data/openclaw:统一剥离末尾 openclaw,避免得到
+# /mnt/data/openclaw/openclaw 这种双拼路径。
+OC_CONFIGURED_PATH="${OC_INSTALL_PATH:-$(uci -q get openclaw.main.install_path 2>/dev/null || echo '/opt')}"
+if command -v oc_load_paths >/dev/null 2>&1; then
+ if ! oc_load_paths "$OC_CONFIGURED_PATH"; then
+ echo " [✗] 安装路径无效: $OC_CONFIGURED_PATH"
+ echo " [!] 请使用绝对路径,例如 /opt、/mnt/data;不要使用相对路径、空格或 shell 特殊字符。"
+ exit 1
+ fi
+ OC_BASE_PATH="$OPENCLAW_INSTALL_PATH"
+ OC_INSTALL_PATH="$OC_ROOT"
+else
+ OC_BASE_PATH="${OC_CONFIGURED_PATH%/}"
+ OC_INSTALL_PATH="${OC_BASE_PATH}/openclaw"
+ NODE_BASE="${OC_INSTALL_PATH}/node"
+ OC_GLOBAL="${OC_INSTALL_PATH}/global"
+ OC_DATA="${OC_INSTALL_PATH}/data"
+ CONFIG_FILE="${OC_DATA}/.openclaw/openclaw.json"
+fi
# ── OverlayFS 兼容性修复 ──
# iStoreOS/OpenWrt 上 Docker 的 bind mount (/overlay/upper/opt/docker)
@@ -82,11 +100,58 @@ ensure_mkdir() {
[ -d "$target" ] && return 0
if ! mkdir -p "$target" 2>/dev/null; then
log_error "无法创建目录: $target"
- log_error "如果安装了 Docker,可能需要手动执行: mount --bind /overlay/upper/opt /opt"
+ local probe_parent="/"
+ command -v oc_find_existing_path >/dev/null 2>&1 && probe_parent=$(oc_find_existing_path "$target")
+ log_error "请检查挂载点是否只读、overlay 是否已满,以及 ${probe_parent} 是否可写。"
+ [ "$OC_BASE_PATH" = "/opt" ] && log_error "如果安装了 Docker,可能需要手动执行: mount --bind /overlay/upper/opt /opt"
return 1
fi
}
+ensure_openclaw_user() {
+ # OpenWrt 默认没有 useradd/adduser 的完整实现,所以沿用 uci-defaults 的轻量写法。
+ # 这里在安装链路再兜底一次,避免用户删除账号后微信插件安装或 Gateway 启动失败。
+ if id openclaw >/dev/null 2>&1 || grep -q '^openclaw:' /etc/passwd 2>/dev/null; then
+ return 0
+ fi
+
+ local oc_uid=1000
+ while grep -q "^[^:]*:x:${oc_uid}:" /etc/passwd 2>/dev/null; do
+ oc_uid=$((oc_uid + 1))
+ done
+ local oc_gid="$oc_uid"
+ while grep -q "^[^:]*:x:${oc_gid}:" /etc/group 2>/dev/null; do
+ oc_gid=$((oc_gid + 1))
+ done
+
+ echo "openclaw:x:${oc_uid}:${oc_gid}:openclaw:${OC_DATA}:/bin/false" >> /etc/passwd
+ echo 'openclaw:x:0:0:99999:7:::' >> /etc/shadow
+ echo "openclaw:x:${oc_gid}:" >> /etc/group
+ log_info "已创建 openclaw 系统用户 (uid=${oc_uid}, gid=${oc_gid})"
+}
+
+probe_install_root() {
+ if command -v oc_probe_writable_root >/dev/null 2>&1; then
+ if ! oc_probe_writable_root "$OC_BASE_PATH"; then
+ log_error "安装路径不可写: $OC_BASE_PATH"
+ log_error "常见原因: overlay 已满、文件系统只读、挂载点未挂载或权限不正确。"
+ local check_path="/"
+ command -v oc_find_existing_path >/dev/null 2>&1 && check_path=$(oc_find_existing_path "$OC_BASE_PATH")
+ df -h "$check_path" 2>/dev/null | tail -1 || true
+ exit 1
+ fi
+ fi
+}
+
+cleanup_partial_install() {
+ # 只在确认目标是规范化后的 openclaw 运行根目录时清理,避免误删用户目录。
+ if command -v oc_safe_openclaw_root >/dev/null 2>&1 && oc_safe_openclaw_root "$OC_INSTALL_PATH"; then
+ log_warn "安装失败,清理未完成的运行目录: $OC_INSTALL_PATH"
+ rm -rf "$OC_INSTALL_PATH" 2>/dev/null || true
+ [ -d /overlay/upper ] && rm -rf "/overlay/upper${OC_INSTALL_PATH}" 2>/dev/null || true
+ fi
+}
+
# 检测 C 运行时类型 (glibc vs musl)
detect_libc() {
if ldd --version 2>&1 | grep -qi musl; then
@@ -126,6 +191,38 @@ $ver_dir"
done
}
+detect_oc_node_requirement() {
+ local oc_entry pkg_json required
+ oc_entry=$(find_oc_entry)
+ [ -n "$oc_entry" ] || return 1
+ pkg_json="$(dirname "$oc_entry")/package.json"
+ [ -f "$pkg_json" ] || return 1
+ [ -x "$NODE_BIN" ] || return 1
+
+ required=$(OC_PKG_JSON="$pkg_json" "$NODE_BIN" -e "
+const fs=require('fs');
+try{
+ const pkg=JSON.parse(fs.readFileSync(process.env.OC_PKG_JSON,'utf8'));
+ const spec=(pkg.engines&&pkg.engines.node)||'';
+ const m=String(spec).match(/([0-9]+\\.[0-9]+\\.[0-9]+)/);
+ if(m) process.stdout.write(m[1]);
+}catch(e){}
+" 2>/dev/null)
+ [ -n "$required" ] || return 1
+ printf '%s\n' "$required"
+}
+
+assert_node_runtime() {
+ local required="$OC_NODE_MIN_VERSION"
+ local from_pkg
+ from_pkg=$(detect_oc_node_requirement 2>/dev/null || true)
+ [ -n "$from_pkg" ] && required="$from_pkg"
+
+ if command -v oc_assert_node_min_version >/dev/null 2>&1; then
+ oc_assert_node_min_version "$NODE_BIN" "$required" || exit 1
+ fi
+}
+
detect_arch() {
local arch
arch=$(uname -m)
@@ -158,6 +255,7 @@ download_node() {
current_ver=$("$NODE_BIN" --version 2>/dev/null | sed 's/^v//')
if [ "$current_ver" = "$node_ver" ]; then
log_info "Node.js v${node_ver} 已安装, 跳过下载"
+ assert_node_runtime
return 0
fi
# ARM64 musl 使用 Alpine 打包,版本号可能不完全匹配
@@ -166,6 +264,7 @@ download_node() {
local want_major=$(echo "$node_ver" | cut -d. -f1)
if [ "$cur_major" = "$want_major" ]; then
log_info "Node.js v${current_ver} 已安装 (兼容 v${node_ver}), 跳过下载"
+ assert_node_runtime
return 0
fi
log_warn "当前 Node.js v${current_ver}, 将更新到 v${node_ver}"
@@ -273,6 +372,7 @@ download_node() {
local installed_ver
installed_ver=$("$NODE_BIN" --version 2>/dev/null || echo "unknown")
log_info "Node.js ${installed_ver} 安装成功"
+ assert_node_runtime
else
log_error "Node.js 安装验证失败"
exit 1
@@ -309,12 +409,15 @@ install_openclaw() {
# 确定安装版本
local oc_pkg="openclaw"
- if [ -n "$OC_VERSION" ]; then
+ if [ -z "$OC_VERSION" ] || [ "$OC_VERSION" = "stable" ]; then
+ oc_pkg="openclaw@${OC_TESTED_VERSION}"
+ log_info "默认稳定版: v${OC_TESTED_VERSION}"
+ elif [ "$OC_VERSION" = "latest" ]; then
+ oc_pkg="openclaw@latest"
+ log_info "安装 npm latest 稳定标签版本"
+ else
oc_pkg="openclaw@${OC_VERSION}"
log_info "指定版本: v${OC_VERSION}"
- else
- oc_pkg="openclaw@latest"
- log_info "安装最新版本"
fi
local libc_type
@@ -371,6 +474,7 @@ install_openclaw() {
if [ -n "$oc_ver" ]; then
log_info "OpenClaw v${oc_ver} 安装成功"
+ assert_node_runtime
else
log_error "OpenClaw 安装验证失败"
exit 1
@@ -435,16 +539,23 @@ do_setup() {
if [ -n "$OC_VERSION" ]; then
echo " OpenClaw: v${OC_VERSION} (稳定版)"
else
- echo " OpenClaw: 最新版"
+ echo " OpenClaw: v${OC_TESTED_VERSION} (默认稳定版)"
fi
echo " 安装路径: ${OC_INSTALL_PATH}"
echo " 数据路径: ${OC_DATA}"
echo ""
+ ensure_openclaw_user
+ probe_install_root
+ OC_SETUP_CLEANUP=1
+ trap 'rc=$?; if [ $rc -ne 0 ] && [ "${OC_SETUP_CLEANUP:-0}" = "1" ]; then cleanup_partial_install; fi; exit $rc' EXIT
+
download_node "$node_ver"
install_pnpm
install_openclaw
init_openclaw
+ OC_SETUP_CLEANUP=0
+ trap - EXIT
echo ""
echo "╔══════════════════════════════════════════════════════════════╗"
@@ -533,7 +644,11 @@ do_upgrade() {
echo "=== 正在升级 OpenClaw ==="
echo ""
- "$NPM_BIN" install -g openclaw@latest --prefix="$OC_GLOBAL" $install_flags 2>&1
+ local target_pkg="openclaw@${OC_TESTED_VERSION}"
+ [ "$OC_VERSION" = "latest" ] && target_pkg="openclaw@latest"
+ [ -n "$OC_VERSION" ] && [ "$OC_VERSION" != "latest" ] && [ "$OC_VERSION" != "stable" ] && target_pkg="openclaw@${OC_VERSION}"
+ echo "目标版本: ${target_pkg#openclaw@}"
+ "$NPM_BIN" install -g "$target_pkg" --prefix="$OC_GLOBAL" $install_flags 2>&1
# 验证升级结果
local new_ver=""
@@ -547,6 +662,7 @@ do_upgrade() {
echo ""
if [ -n "$new_ver" ]; then
+ assert_node_runtime
if [ "$current_ver" = "$new_ver" ]; then
log_info "当前已是最新版本 v${new_ver}"
else
@@ -658,6 +774,9 @@ do_setup_offline() {
echo " 离线包: ${offline_dir}"
echo ""
+ ensure_openclaw_user
+ probe_install_root
+
# [1] 安装 Node.js
local node_tarball="$offline_dir/node.tar.xz"
if [ -f "$node_tarball" ]; then
@@ -681,6 +800,7 @@ do_setup_offline() {
if [ -x "$NODE_BIN" ]; then
log_info "Node.js $($NODE_BIN --version 2>/dev/null) 安装成功"
+ assert_node_runtime
else
log_error "Node.js 安装失败"
exit 1
@@ -705,6 +825,7 @@ do_setup_offline() {
if [ -n "$oc_entry" ]; then
local oc_ver=$("$NODE_BIN" "$oc_entry" --version 2>/dev/null | tr -d '[:space:]')
log_info "OpenClaw v${oc_ver} 安装成功"
+ assert_node_runtime
else
log_error "OpenClaw 安装验证失败"
exit 1
diff --git a/luci-app-openclaw/root/usr/libexec/openclaw-node.sh b/luci-app-openclaw/root/usr/libexec/openclaw-node.sh
new file mode 100755
index 000000000..97c904cdc
--- /dev/null
+++ b/luci-app-openclaw/root/usr/libexec/openclaw-node.sh
@@ -0,0 +1,57 @@
+#!/bin/sh
+# OpenClaw Node.js 版本校验工具。
+
+oc_normalize_node_version() {
+ local raw="${1:-}"
+ raw=${raw#v}
+ case "$raw" in
+ [0-9]*.[0-9]*.[0-9]*) printf '%s\n' "$raw"; return 0 ;;
+ esac
+ return 1
+}
+
+oc_read_node_version() {
+ local node_bin="$1"
+ local raw
+ [ -x "$node_bin" ] || return 1
+ raw=$("$node_bin" --version 2>/dev/null) || return 1
+ oc_normalize_node_version "$raw"
+}
+
+oc_node_version_ge() {
+ local current required
+ current=$(oc_normalize_node_version "$1") || return 1
+ required=$(oc_normalize_node_version "$2") || return 1
+
+ awk -v a="$current" -v b="$required" '
+ BEGIN {
+ split(a, av, "."); split(b, bv, ".");
+ for (i = 1; i <= 3; i++) {
+ ai = av[i] + 0; bi = bv[i] + 0;
+ if (ai > bi) exit 0;
+ if (ai < bi) exit 1;
+ }
+ exit 0;
+ }
+ '
+}
+
+oc_assert_node_min_version() {
+ local node_bin="$1"
+ local required="$2"
+ local current
+
+ current=$(oc_read_node_version "$node_bin") || {
+ echo " [✗] Node.js 不可执行或无法读取版本: $node_bin"
+ return 1
+ }
+
+ if ! oc_node_version_ge "$current" "$required"; then
+ echo " [✗] Node.js v${current} 低于 OpenClaw 要求 v${required}"
+ echo " [!] 请重新运行 openclaw-env node 或 openclaw-env setup 更新运行时"
+ return 1
+ fi
+
+ echo " [✓] Node.js v${current} 满足要求 (>= v${required})"
+ return 0
+}
diff --git a/luci-app-openclaw/root/usr/libexec/openclaw-paths.sh b/luci-app-openclaw/root/usr/libexec/openclaw-paths.sh
new file mode 100755
index 000000000..a5291acbf
--- /dev/null
+++ b/luci-app-openclaw/root/usr/libexec/openclaw-paths.sh
@@ -0,0 +1,111 @@
+#!/bin/sh
+# luci-app-openclaw 统一路径解析工具
+#
+# 为什么单独抽出来:
+# OpenClaw 的安装根目录会被 init、openclaw-env、Web PTY、LuCI 控制器等多处使用。
+# 如果每处都自己拼路径,用户输入 /mnt/data/openclaw 时就容易得到
+# /mnt/data/openclaw/openclaw 这种错误路径,后续权限修复和卸载也会变得危险。
+
+oc_normalize_install_path() {
+ local raw="${1:-}"
+
+ # 空值统一回到 /opt,保持历史兼容。
+ [ -n "$raw" ] || raw="/opt"
+
+ # 去掉首尾空白和末尾斜杠。OpenWrt busybox sed 支持基础表达式。
+ raw=$(printf '%s' "$raw" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//;s:/*$::')
+ [ -n "$raw" ] || raw="/"
+
+ case "$raw" in
+ /*) ;;
+ *) return 1 ;;
+ esac
+
+ case "$raw" in
+ *[\ \ ]*|*\'*|*\"*|*\`*|*\$*|*\;*|*\&*|*\|*|*\<*|*\>*|*\(*|*\)*)
+ return 1
+ ;;
+ esac
+
+ case "$raw" in
+ /|/proc|/proc/*|/sys|/sys/*|/dev|/dev/*|/tmp|/tmp/*|/var|/var/*|/etc|/etc/*|/usr|/usr/*|/bin|/bin/*|/sbin|/sbin/*|/lib|/lib/*|/rom|/rom/*|/overlay|/overlay/*)
+ return 1
+ ;;
+ esac
+
+ # 用户如果填写的是实际运行目录 /xxx/openclaw,这里回退到根目录 /xxx。
+ case "$raw" in
+ */openclaw)
+ raw=${raw%/openclaw}
+ [ -n "$raw" ] || raw="/"
+ ;;
+ esac
+
+ printf '%s\n' "$raw"
+}
+
+oc_quote() {
+ # POSIX 单引号转义,用于拼接少量必须经 shell 执行的命令。
+ printf "'%s'" "$(printf '%s' "$1" | sed "s/'/'\\\\''/g")"
+}
+
+oc_load_paths() {
+ local input="${1:-}"
+ local normalized
+
+ normalized=$(oc_normalize_install_path "$input") || return 1
+
+ OPENCLAW_INSTALL_PATH="$normalized"
+ if [ "$OPENCLAW_INSTALL_PATH" = "/" ]; then
+ OC_ROOT="/openclaw"
+ else
+ OC_ROOT="${OPENCLAW_INSTALL_PATH}/openclaw"
+ fi
+ NODE_BASE="${OC_ROOT}/node"
+ OC_GLOBAL="${OC_ROOT}/global"
+ OC_DATA="${OC_ROOT}/data"
+ CONFIG_FILE="${OC_DATA}/.openclaw/openclaw.json"
+
+ export OPENCLAW_INSTALL_PATH OC_ROOT NODE_BASE OC_GLOBAL OC_DATA CONFIG_FILE
+}
+
+oc_find_existing_path() {
+ local path="$1"
+ while [ -n "$path" ] && [ "$path" != "/" ]; do
+ [ -e "$path" ] && { printf '%s\n' "$path"; return 0; }
+ path=${path%/*}
+ done
+ printf '/\n'
+}
+
+oc_probe_writable_root() {
+ local base="$1"
+ local probe_parent
+ local probe_dir
+
+ probe_parent=$(oc_find_existing_path "$base")
+ [ -d "$probe_parent" ] || return 1
+ [ -w "$probe_parent" ] || return 1
+
+ probe_dir="${probe_parent}/.openclaw-write-test-$$"
+ if mkdir "$probe_dir" 2>/dev/null; then
+ rmdir "$probe_dir" 2>/dev/null || true
+ return 0
+ fi
+
+ return 1
+}
+
+oc_safe_openclaw_root() {
+ local root="${1:-}"
+ case "$root" in
+ */openclaw) ;;
+ *) return 1 ;;
+ esac
+ case "$root" in
+ /openclaw|/opt/openclaw|/mnt/*/openclaw|/media/*/openclaw|/srv/*/openclaw|/overlay/upper/opt/openclaw)
+ return 0
+ ;;
+ esac
+ return 1
+}
diff --git a/luci-app-openclaw/root/usr/share/openclaw/oc-config.sh b/luci-app-openclaw/root/usr/share/openclaw/oc-config.sh
index be613f072..1cb5b5a3f 100755
--- a/luci-app-openclaw/root/usr/share/openclaw/oc-config.sh
+++ b/luci-app-openclaw/root/usr/share/openclaw/oc-config.sh
@@ -33,10 +33,20 @@ get_pid_by_port() {
}
# ── 路径 (OpenWrt 适配,支持自定义安装路径) ──
-# 从 UCI 配置读取自定义路径,环境变量可覆盖
-# 用户配置的是基础路径,程序会在此路径下创建 openclaw 目录
-OC_BASE_PATH="${OC_INSTALL_PATH:-$(uci -q get openclaw.main.install_path 2>/dev/null || echo '/opt')}"
-OC_INSTALL_PATH="${OC_BASE_PATH}/openclaw"
+# 从 UCI 配置读取自定义路径,环境变量可覆盖。
+# 注意 OC_INSTALL_PATH 历史上被当作“基础路径”传入,统一解析后再展开到 openclaw 根目录。
+[ -r /usr/libexec/openclaw-paths.sh ] && . /usr/libexec/openclaw-paths.sh
+OC_CONFIGURED_PATH="${OC_INSTALL_PATH:-$(uci -q get openclaw.main.install_path 2>/dev/null || echo '/opt')}"
+if command -v oc_load_paths >/dev/null 2>&1 && oc_load_paths "$OC_CONFIGURED_PATH"; then
+ OC_INSTALL_PATH="$OC_ROOT"
+else
+ OC_BASE_PATH="${OC_CONFIGURED_PATH%/}"
+ OC_INSTALL_PATH="${OC_BASE_PATH}/openclaw"
+ NODE_BASE="${NODE_BASE:-${OC_INSTALL_PATH}/node}"
+ OC_GLOBAL="${OC_GLOBAL:-${OC_INSTALL_PATH}/global}"
+ OC_DATA="${OC_DATA:-${OC_INSTALL_PATH}/data}"
+ CONFIG_FILE="${OC_DATA}/.openclaw/openclaw.json"
+fi
NODE_BASE="${NODE_BASE:-${OC_INSTALL_PATH}/node}"
OC_GLOBAL="${OC_GLOBAL:-${OC_INSTALL_PATH}/global}"
OC_DATA="${OC_DATA:-${OC_INSTALL_PATH}/data}"
diff --git a/luci-app-openclaw/root/usr/share/openclaw/web-pty.js b/luci-app-openclaw/root/usr/share/openclaw/web-pty.js
index ff360cfe3..b1b86deac 100644
--- a/luci-app-openclaw/root/usr/share/openclaw/web-pty.js
+++ b/luci-app-openclaw/root/usr/share/openclaw/web-pty.js
@@ -19,10 +19,19 @@ const PORT = parseInt(process.env.OC_CONFIG_PORT || '18793', 10);
const HOST = process.env.OC_CONFIG_HOST || '0.0.0.0'; // token 认证保护,可安全绑定所有接口
// 从 UCI 读取安装路径,默认为 /opt/openclaw
const { execSync } = require('child_process');
+function normalizeInstallPath(raw) {
+ let value = String(raw || '').trim().replace(/\/+$/, '');
+ if (!value) value = '/opt';
+ if (!value.startsWith('/')) return '/opt';
+ if (/[\s'"`$;&|<>()]/.test(value)) return '/opt';
+ if (/^\/(proc|sys|dev|tmp|var|etc|usr|bin|sbin|lib|rom|overlay)(\/|$)/.test(value) || value === '/') return '/opt';
+ if (value.endsWith('/openclaw')) value = value.slice(0, -'/openclaw'.length) || '/opt';
+ return value;
+}
let installPath = '/opt/openclaw';
try {
const uciPath = execSync('uci -q get openclaw.main.install_path 2>/dev/null', { encoding: 'utf8', timeout: 3000 }).trim();
- if (uciPath) installPath = uciPath + '/openclaw';
+ if (uciPath) installPath = normalizeInstallPath(uciPath) + '/openclaw';
} catch {}
const NODE_BASE = process.env.NODE_BASE || installPath + '/node';
const OC_GLOBAL = process.env.OC_GLOBAL || installPath + '/global';
diff --git a/luci-app-openclaw/root/usr/share/rpcd/acl.d/luci-app-openclaw.json b/luci-app-openclaw/root/usr/share/rpcd/acl.d/luci-app-openclaw.json
index 9b77cf70f..2c06c05ee 100644
--- a/luci-app-openclaw/root/usr/share/rpcd/acl.d/luci-app-openclaw.json
+++ b/luci-app-openclaw/root/usr/share/rpcd/acl.d/luci-app-openclaw.json
@@ -1,11 +1,17 @@
{
"luci-app-openclaw": {
- "description": "Grant UCI access for luci-app-openclaw",
+ "description": "Grant access to the OpenClaw LuCI application",
"read": {
- "uci": [ "openclaw" ]
+ "uci": [ "openclaw" ],
+ "ubus": {
+ "service": [ "list" ]
+ }
},
"write": {
- "uci": [ "openclaw" ]
+ "uci": [ "openclaw" ],
+ "ubus": {
+ "service": [ "list", "set", "delete" ]
+ }
}
}
}
diff --git a/luci-app-openclaw/scripts/build_ipk.sh b/luci-app-openclaw/scripts/build_ipk.sh
index 70d5aa582..83942a041 100755
--- a/luci-app-openclaw/scripts/build_ipk.sh
+++ b/luci-app-openclaw/scripts/build_ipk.sh
@@ -51,10 +51,19 @@ mkdir -p "$DATA_DIR/usr/bin"
cp "$PKG_DIR/root/usr/bin/openclaw-env" "$DATA_DIR/usr/bin/"
chmod +x "$DATA_DIR/usr/bin/openclaw-env"
+# shared shell helpers
+mkdir -p "$DATA_DIR/usr/libexec"
+cp "$PKG_DIR/root/usr/libexec/"*.sh "$DATA_DIR/usr/libexec/"
+chmod +x "$DATA_DIR/usr/libexec/"*.sh
+
# LuCI controller
mkdir -p "$DATA_DIR/usr/lib/lua/luci/controller"
cp "$PKG_DIR/luasrc/controller/openclaw.lua" "$DATA_DIR/usr/lib/lua/luci/controller/"
+# shared Lua helpers
+mkdir -p "$DATA_DIR/usr/lib/lua/openclaw"
+cp "$PKG_DIR/luasrc/openclaw/"*.lua "$DATA_DIR/usr/lib/lua/openclaw/"
+
# LuCI CBI
mkdir -p "$DATA_DIR/usr/lib/lua/luci/model/cbi/openclaw"
cp "$PKG_DIR/luasrc/model/cbi/openclaw/"*.lua "$DATA_DIR/usr/lib/lua/luci/model/cbi/openclaw/"
@@ -63,6 +72,10 @@ cp "$PKG_DIR/luasrc/model/cbi/openclaw/"*.lua "$DATA_DIR/usr/lib/lua/luci/model/
mkdir -p "$DATA_DIR/usr/lib/lua/luci/view/openclaw"
cp "$PKG_DIR/luasrc/view/openclaw/"*.htm "$DATA_DIR/usr/lib/lua/luci/view/openclaw/"
+# rpcd ACL
+mkdir -p "$DATA_DIR/usr/share/rpcd/acl.d"
+cp "$PKG_DIR/root/usr/share/rpcd/acl.d/"*.json "$DATA_DIR/usr/share/rpcd/acl.d/"
+
# oc-config assets
mkdir -p "$DATA_DIR/usr/share/openclaw"
cp "$PKG_DIR/VERSION" "$DATA_DIR/usr/share/openclaw/VERSION"
@@ -78,12 +91,6 @@ mkdir -p "$DATA_DIR/etc/profile.d"
cp "$PKG_DIR/root/etc/profile.d/openclaw.sh" "$DATA_DIR/etc/profile.d/"
chmod +x "$DATA_DIR/etc/profile.d/openclaw.sh"
-# i18n (po2lmo 可选)
-mkdir -p "$DATA_DIR/usr/lib/lua/luci/i18n"
-if command -v po2lmo >/dev/null 2>&1 && [ -f "$PKG_DIR/po/zh-cn/openclaw.po" ]; then
- po2lmo "$PKG_DIR/po/zh-cn/openclaw.po" "$DATA_DIR/usr/lib/lua/luci/i18n/openclaw.zh-cn.lmo" 2>/dev/null || true
-fi
-
# 计算安装大小
INSTALLED_SIZE=$(du -sk "$DATA_DIR" | awk '{print $1}')
@@ -132,6 +139,7 @@ cat > "$CTRL_DIR/postinst" << 'EOF'
USER_BIND=$(sed -n "s/^\s*option\s\+bind\s\+['\"]\\?\\([^'\"]*\\)['\"]\\?.*/\\1/p" "$OLD_CONFIG" 2>/dev/null | tail -1)
USER_TOKEN=$(sed -n "s/^\s*option\s\+token\s\+['\"]\\?\\([^'\"]*\\)['\"]\\?.*/\\1/p" "$OLD_CONFIG" 2>/dev/null | tail -1)
USER_PTY_PORT=$(sed -n "s/^\s*option\s\+pty_port\s\+['\"]\\?\\([^'\"]*\\)['\"]\\?.*/\\1/p" "$OLD_CONFIG" 2>/dev/null | tail -1)
+ USER_INSTALL_PATH=$(sed -n "s/^\s*option\s\+install_path\s\+['\"]\\?\\([^'\"]*\\)['\"]\\?.*/\\1/p" "$OLD_CONFIG" 2>/dev/null | tail -1)
# 步骤2: 备份旧配置 (带时间戳)
BAK_FILE="/etc/config/openclaw.$(date +%Y%m%d%H%M%S).bak"
@@ -149,6 +157,7 @@ cat > "$CTRL_DIR/postinst" << 'EOF'
[ -n "$USER_BIND" ] && sed -i "s/^\(\s*option\s\+bind\s\+\).*/\\1'$USER_BIND'/" "$OLD_CONFIG" 2>/dev/null || true
[ -n "$USER_TOKEN" ] && sed -i "s/^\(\s*option\s\+token\s\+\).*/\\1'$USER_TOKEN'/" "$OLD_CONFIG" 2>/dev/null || true
[ -n "$USER_PTY_PORT" ] && sed -i "s/^\(\s*option\s\+pty_port\s\+\).*/\\1'$USER_PTY_PORT'/" "$OLD_CONFIG" 2>/dev/null || true
+ [ -n "$USER_INSTALL_PATH" ] && sed -i "s/^\(\s*option\s\+install_path\s\+\).*/\\1'$USER_INSTALL_PATH'/" "$OLD_CONFIG" 2>/dev/null || true
echo "配置合并完成,用户设置已保留"
fi
diff --git a/luci-app-openclaw/scripts/build_run.sh b/luci-app-openclaw/scripts/build_run.sh
index 2133a7483..acec47450 100755
--- a/luci-app-openclaw/scripts/build_run.sh
+++ b/luci-app-openclaw/scripts/build_run.sh
@@ -54,10 +54,19 @@ install_files() {
cp "$PKG_DIR/root/usr/bin/openclaw-env" "$dest/usr/bin/"
chmod +x "$dest/usr/bin/openclaw-env"
+ # shared shell helpers
+ mkdir -p "$dest/usr/libexec"
+ cp "$PKG_DIR/root/usr/libexec/"*.sh "$dest/usr/libexec/"
+ chmod +x "$dest/usr/libexec/"*.sh
+
# LuCI controller
mkdir -p "$dest/usr/lib/lua/luci/controller"
cp "$PKG_DIR/luasrc/controller/openclaw.lua" "$dest/usr/lib/lua/luci/controller/"
+ # shared Lua helpers
+ mkdir -p "$dest/usr/lib/lua/openclaw"
+ cp "$PKG_DIR/luasrc/openclaw/"*.lua "$dest/usr/lib/lua/openclaw/"
+
# LuCI CBI
mkdir -p "$dest/usr/lib/lua/luci/model/cbi/openclaw"
cp "$PKG_DIR/luasrc/model/cbi/openclaw/"*.lua "$dest/usr/lib/lua/luci/model/cbi/openclaw/"
@@ -66,6 +75,10 @@ install_files() {
mkdir -p "$dest/usr/lib/lua/luci/view/openclaw"
cp "$PKG_DIR/luasrc/view/openclaw/"*.htm "$dest/usr/lib/lua/luci/view/openclaw/"
+ # rpcd ACL
+ mkdir -p "$dest/usr/share/rpcd/acl.d"
+ cp "$PKG_DIR/root/usr/share/rpcd/acl.d/"*.json "$dest/usr/share/rpcd/acl.d/"
+
# oc-config assets
mkdir -p "$dest/usr/share/openclaw"
cp "$PKG_DIR/VERSION" "$dest/usr/share/openclaw/VERSION"
diff --git a/luci-app-openclaw/tests/test_openclaw_contracts.sh b/luci-app-openclaw/tests/test_openclaw_contracts.sh
new file mode 100755
index 000000000..7ca1e4baa
--- /dev/null
+++ b/luci-app-openclaw/tests/test_openclaw_contracts.sh
@@ -0,0 +1,41 @@
+#!/bin/sh
+set -eu
+
+fail() {
+ echo "FAIL: $1" >&2
+ exit 1
+}
+
+grep -q "OC_TESTED_VERSION=\"2026.5.12\"" root/usr/bin/openclaw-env || fail "tested OpenClaw version not pinned"
+grep -q "oc_assert_node_min_version" root/usr/bin/openclaw-env || fail "Node.js minimum version check missing"
+
+grep -q "wechat.htm" Makefile || fail "Makefile must install wechat.htm"
+grep -q "luci-app-openclaw.json" Makefile || fail "Makefile must install rpcd ACL"
+if grep -q "openclaw.zh-cn.lmo" Makefile; then
+ fail "main package must not install openclaw.zh-cn.lmo"
+fi
+
+if grep -q 'export HOME="$OC_DATA"' root/etc/profile.d/openclaw.sh; then
+ fail "profile must not export HOME globally"
+fi
+grep -q 'HOME="$OC_DATA"' root/etc/profile.d/openclaw.sh || fail "openclaw wrapper must inject HOME locally"
+
+if grep -q "chmod -R 777" luasrc/controller/openclaw.lua; then
+ fail "uninstall path must not chmod -R 777"
+fi
+grep -q "is_safe_openclaw_root" luasrc/controller/openclaw.lua || fail "uninstall safety check missing"
+grep -q "local q_install_path = shellquote(install_path)" luasrc/controller/openclaw.lua || fail "uninstall rm must shellquote install_path"
+grep -q "rm -rf \" .. q_install_path" luasrc/controller/openclaw.lua || fail "uninstall rm must use quoted install_path"
+
+grep -q "command -v python3" luasrc/controller/openclaw.lua || fail "wechat install must check python3"
+grep -q "ensure_openclaw_user" luasrc/controller/openclaw.lua || fail "wechat install must ensure openclaw user"
+grep -q "NPM_CONFIG_CACHE" luasrc/controller/openclaw.lua || fail "wechat install must set npm cache"
+grep -q "openclaw-weixin" root/etc/init.d/openclaw || fail "weixin channel migration missing"
+
+grep -q "var url = 'http://'" luasrc/view/openclaw/console.htm || fail "console must force HTTP gateway URL"
+grep -q "existing.src" luasrc/view/openclaw/console.htm || fail "console iframe must refresh token URL"
+
+grep -q "root/usr/libexec" scripts/build_ipk.sh || fail "ipk script must package shell helpers"
+grep -q "root/usr/libexec" scripts/build_run.sh || fail "run script must package shell helpers"
+
+echo "ok"
diff --git a/luci-app-openclaw/tests/test_openclaw_node.sh b/luci-app-openclaw/tests/test_openclaw_node.sh
new file mode 100755
index 000000000..e681e6c2c
--- /dev/null
+++ b/luci-app-openclaw/tests/test_openclaw_node.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+set -eu
+
+. ./root/usr/libexec/openclaw-node.sh
+
+fail() {
+ echo "FAIL: $1" >&2
+ exit 1
+}
+
+[ "$(oc_normalize_node_version v22.16.0)" = "22.16.0" ] || fail "normalize v"
+oc_node_version_ge 22.16.0 22.16.0 || fail "exact version"
+oc_node_version_ge 22.16.1 22.16.0 || fail "patch version"
+oc_node_version_ge 23.0.0 22.16.0 || fail "major version"
+if oc_node_version_ge 22.15.1 22.16.0; then
+ fail "older minor accepted"
+fi
+
+echo "ok"
diff --git a/luci-app-openclaw/tests/test_openclaw_paths.lua b/luci-app-openclaw/tests/test_openclaw_paths.lua
new file mode 100644
index 000000000..469b2f91f
--- /dev/null
+++ b/luci-app-openclaw/tests/test_openclaw_paths.lua
@@ -0,0 +1,32 @@
+package.path = "./luasrc/?.lua;./luasrc/?/?.lua;" .. package.path
+
+local paths = require "openclaw.paths"
+
+local function eq(actual, expected, label)
+ if actual ~= expected then
+ error(string.format("%s: expected %q, got %q", label, tostring(expected), tostring(actual)), 2)
+ end
+end
+
+local function check(input, expected_base, expected_root)
+ local derived = paths.derive_paths(input)
+ eq(derived.install_path, expected_base, "install_path")
+ eq(derived.oc_root, expected_root, "oc_root")
+ eq(derived.node_base, expected_root .. "/node", "node_base")
+ eq(derived.oc_global, expected_root .. "/global", "oc_global")
+ eq(derived.oc_data, expected_root .. "/data", "oc_data")
+end
+
+check(nil, "/opt", "/opt/openclaw")
+check("", "/opt", "/opt/openclaw")
+check("/mnt/data", "/mnt/data", "/mnt/data/openclaw")
+check("/mnt/data/openclaw", "/mnt/data", "/mnt/data/openclaw")
+check("/mnt/data/", "/mnt/data", "/mnt/data/openclaw")
+
+eq(paths.normalize_install_path("relative/path"), nil, "relative path rejected")
+eq(paths.normalize_install_path("/mnt/data bad"), nil, "space rejected")
+eq(paths.normalize_install_path("/"), nil, "root rejected")
+eq(paths.is_safe_openclaw_root("/mnt/data/openclaw"), true, "safe root")
+eq(paths.is_safe_openclaw_root("/mnt/data"), false, "unsafe root")
+
+print("ok")
diff --git a/luci-app-openclaw/tests/test_openclaw_paths.sh b/luci-app-openclaw/tests/test_openclaw_paths.sh
new file mode 100755
index 000000000..3a14dc044
--- /dev/null
+++ b/luci-app-openclaw/tests/test_openclaw_paths.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+set -eu
+
+. ./root/usr/libexec/openclaw-paths.sh
+
+fail() {
+ echo "FAIL: $1" >&2
+ exit 1
+}
+
+oc_load_paths "/mnt/data/openclaw"
+[ "$OPENCLAW_INSTALL_PATH" = "/mnt/data" ] || fail "strip trailing openclaw"
+[ "$OC_ROOT" = "/mnt/data/openclaw" ] || fail "derive root"
+
+if oc_normalize_install_path "relative/path" >/dev/null 2>&1; then
+ fail "relative path must be rejected"
+fi
+
+if oc_normalize_install_path "/mnt/data bad" >/dev/null 2>&1; then
+ fail "path with whitespace must be rejected"
+fi
+
+oc_safe_openclaw_root "/mnt/data/openclaw" || fail "safe root rejected"
+if oc_safe_openclaw_root "/mnt/data"; then
+ fail "non-openclaw root accepted"
+fi
+
+quoted=$(oc_quote "/mnt/a'b/openclaw")
+[ "$quoted" = "'/mnt/a'\\''b/openclaw'" ] || fail "shell quote"
+
+echo "ok"
diff --git a/luci-theme-aurora/.dev/package.json b/luci-theme-aurora/.dev/package.json
index 3a70caa1a..970b5bcd5 100644
--- a/luci-theme-aurora/.dev/package.json
+++ b/luci-theme-aurora/.dev/package.json
@@ -15,6 +15,7 @@
"tailwind-scrollbar": "^4.0.2",
"tailwindcss": "^4.1.11",
"terser": "^5.43.1",
+ "tw-animate-css": "^1.4.0",
"vite": "^7.1.1"
},
"packageManager": "pnpm@10.32.1+sha512.a706938f0e89ac1456b6563eab4edf1d1faf3368d1191fc5c59790e96dc918e4456ab2e67d613de1043d2e8c81f87303e6b40d4ffeca9df15ef1ad567348f2be"
diff --git a/luci-theme-aurora/.dev/pnpm-lock.yaml b/luci-theme-aurora/.dev/pnpm-lock.yaml
index 5591d2f1d..36bcc5e85 100644
--- a/luci-theme-aurora/.dev/pnpm-lock.yaml
+++ b/luci-theme-aurora/.dev/pnpm-lock.yaml
@@ -29,6 +29,9 @@ importers:
terser:
specifier: ^5.43.1
version: 5.46.0
+ tw-animate-css:
+ specifier: ^1.4.0
+ version: 1.4.0
vite:
specifier: ^7.1.1
version: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)
@@ -244,66 +247,79 @@ packages:
resolution: {integrity: sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==}
cpu: [arm]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-arm-musleabihf@4.57.1':
resolution: {integrity: sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==}
cpu: [arm]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-arm64-gnu@4.57.1':
resolution: {integrity: sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-arm64-musl@4.57.1':
resolution: {integrity: sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-loong64-gnu@4.57.1':
resolution: {integrity: sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==}
cpu: [loong64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-loong64-musl@4.57.1':
resolution: {integrity: sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==}
cpu: [loong64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-ppc64-gnu@4.57.1':
resolution: {integrity: sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==}
cpu: [ppc64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-ppc64-musl@4.57.1':
resolution: {integrity: sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==}
cpu: [ppc64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-riscv64-gnu@4.57.1':
resolution: {integrity: sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==}
cpu: [riscv64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-riscv64-musl@4.57.1':
resolution: {integrity: sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==}
cpu: [riscv64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-s390x-gnu@4.57.1':
resolution: {integrity: sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==}
cpu: [s390x]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-x64-gnu@4.57.1':
resolution: {integrity: sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-x64-musl@4.57.1':
resolution: {integrity: sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-openbsd-x64@4.57.1':
resolution: {integrity: sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==}
@@ -373,24 +389,28 @@ packages:
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@tailwindcss/oxide-linux-arm64-musl@4.1.18':
resolution: {integrity: sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@tailwindcss/oxide-linux-x64-gnu@4.1.18':
resolution: {integrity: sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@tailwindcss/oxide-linux-x64-musl@4.1.18':
resolution: {integrity: sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@tailwindcss/oxide-wasm32-wasi@4.1.18':
resolution: {integrity: sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==}
@@ -518,24 +538,28 @@ packages:
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
lightningcss-linux-arm64-musl@1.30.2:
resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
+ libc: [musl]
lightningcss-linux-x64-gnu@1.30.2:
resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
+ libc: [glibc]
lightningcss-linux-x64-musl@1.30.2:
resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
+ libc: [musl]
lightningcss-win32-arm64-msvc@1.30.2:
resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==}
@@ -679,6 +703,9 @@ packages:
resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
engines: {node: '>=12.0.0'}
+ tw-animate-css@1.4.0:
+ resolution: {integrity: sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==}
+
undici-types@7.16.0:
resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
@@ -1174,6 +1201,8 @@ snapshots:
fdir: 6.5.0(picomatch@4.0.3)
picomatch: 4.0.3
+ tw-animate-css@1.4.0: {}
+
undici-types@7.16.0: {}
vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0):
diff --git a/luci-theme-aurora/.dev/src/media/main.css b/luci-theme-aurora/.dev/src/media/main.css
index 4b5d1d53d..a0f4bfed8 100644
--- a/luci-theme-aurora/.dev/src/media/main.css
+++ b/luci-theme-aurora/.dev/src/media/main.css
@@ -11,6 +11,8 @@
nocompatible: true;
}
+@import "tw-animate-css";
+
:root {
--background: oklch(0.968 0.007 247.896);
--foreground: oklch(0.208 0.042 265.755);
@@ -75,6 +77,7 @@
--spacing: 0.25rem;
--container-max-width: 80rem;
+ --radius-base: 0.5rem;
}
[data-darkmode="true"] {
@@ -206,6 +209,15 @@
--spacing: var(--spacing);
--container-max-width: var(--container-max-width);
+
+ --radius-sm: calc(var(--radius-base) * 0.25);
+ --radius: calc(var(--radius-base) * 0.5);
+ --radius-md: calc(var(--radius-base) * 0.75);
+ --radius-lg: var(--radius-base);
+ --radius-xl: calc(var(--radius-base) * 1.5);
+ --radius-2xl: calc(var(--radius-base) * 2);
+ --radius-3xl: calc(var(--radius-base) * 3);
+ --radius-4xl: calc(var(--radius-base) * 4);
}
@layer base {
@@ -434,7 +446,7 @@
@apply max-w-max-width mx-auto min-h-[calc(100vh-4rem)] w-23/24 px-4 max-md:w-full max-md:px-3;
#view {
- @apply md:border-border/30 md:bg-page-bg md:hover:border-border/50 mx-0 w-full p-0 shadow-none transition-all duration-300 empty:hidden md:rounded-4xl md:border md:p-6 md:shadow-xl md:hover:shadow-2xl;
+ @apply animate-in fade-in-0 slide-in-from-top-2 fill-mode-both md:border-border/30 md:bg-page-bg md:hover:border-border/50 mx-0 w-full p-0 shadow-none transition-all duration-300 empty:hidden md:rounded-4xl md:border md:p-6 md:shadow-xl md:hover:shadow-2xl;
.cbi-title-section {
@apply mb-6 leading-relaxed max-md:mx-2 max-md:mb-3;
@@ -1949,7 +1961,7 @@
@apply relative inline-block pl-8!;
@apply before:absolute before:top-1/2 before:left-[6px] before:size-5 before:-translate-y-1/2 before:animate-spin before:bg-current before:[mask:url('@assets/icons/spinning.svg')_center/cover_no-repeat];
#view > & {
- @apply first:mx-auto first:grid first:min-h-[15vh] first:w-fit first:place-items-center first:max-md:min-h-dvh;
+ @apply first:mx-auto first:grid first:min-h-48 first:w-fit first:place-items-center first:max-md:min-h-[calc(100dvh-4rem)];
}
}
}
diff --git a/luci-theme-aurora/.gitignore b/luci-theme-aurora/.gitignore
index a06a1a0c6..ee766b2af 100644
--- a/luci-theme-aurora/.gitignore
+++ b/luci-theme-aurora/.gitignore
@@ -7,4 +7,7 @@ yarn.lock
.env
# System Configuration File
-.DS_Store
\ No newline at end of file
+.DS_Store
+
+# Superpowers AI workflow docs
+docs/superpowers/
\ No newline at end of file
diff --git a/luci-theme-aurora/Makefile b/luci-theme-aurora/Makefile
index 61eb12c5d..4ba91992d 100644
--- a/luci-theme-aurora/Makefile
+++ b/luci-theme-aurora/Makefile
@@ -8,8 +8,8 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=Aurora Theme (A modern browser theme built with Vite and Tailwind CSS)
LUCI_DEPENDS:=+luci-base
-PKG_VERSION:=0.11.5
-PKG_RELEASE:=8
+PKG_VERSION:=0.11.7
+PKG_RELEASE:=9
PKG_LICENSE:=Apache-2.0
LUCI_MINIFY_CSS:=
diff --git a/luci-theme-aurora/README.md b/luci-theme-aurora/README.md
index 705ba7a06..6832490da 100644
--- a/luci-theme-aurora/README.md
+++ b/luci-theme-aurora/README.md
@@ -19,16 +19,6 @@
-> [!NOTE]
-> **🤖 Exploring AI Workflows...**
->
-> Hey everyone — I've been pretty busy with work lately, so my time for Aurora has been limited. But I don't want the project to stall, so I've been exploring AI-assisted workflows to help pick up the slack, especially on the debugging side.
->
-> There's a backlog of open issues right now, and honestly, most of them are styling compatibility problems with third-party plugins. These aren't huge issues individually, but they're incredibly time-consuming to track down — you have to install the plugin, sometimes set up specific conditions on the router just to reproduce the problem.
->
-> The root cause is that LuCI only provides a basic set of web components. When plugin authors need more complex UI, they end up rolling their own HTML/CSS/JS with no shared conventions, so compatibility headaches are inevitable. With the sheer number of LuCI plugins out there, getting them all to play nicely is a massive undertaking — especially when some plugins don't even follow LuCI's own JS conventions.
->
-> So I'm bringing AI into the loop to handle these tedious but important tasks, and ideally automate as much of it as possible. If you have better ideas or suggestions, I'd love to hear them — come chat on [Discord](https://discord.gg/EBncRrzfTw).
## Features
@@ -80,36 +70,16 @@ OpenWrt 25.12+ and snapshots use `apk`; other versions use `opkg`:
## Contributing
-
-Development
+Aurora uses **Vite** and a modern front-end toolchain, and is experimenting with end-to-end AI integration across the full development workflow. See [Development Documentation](.dev/docs/DEVELOPMENT.md) to get started. Suggestions and PRs are always welcome.
-As we step into 2026, front-end toolchains have become mature and advanced, and modern browsers now support a wide range of exciting new features. Fully embracing the modern front-end ecosystem is at the core of the Aurora theme.
-
-Aurora uses Vite as the build tool.
-
-
-- During development, you can freely choose and integrate any CSS toolchain.
-- In production, multiple strategies are available to optimize bundled assets.
-- Most importantly, with the help of a local proxy server, style changes can be previewed in real time!
-
-
-For more development information, see Development Documentation.
-
-
-
-Community
-
-I've got a Discord server going - come hang out and chat! 👋 Join Discord
+[discord.gg/EBncRrzfTw](https://discord.gg/EBncRrzfTw)
## License & Credits
-This project is licensed under the Apache License 2.0.
+[Apache 2.0](LICENSE). Thanks to:
-The production build structure is based on the official OpenWrt theme
-[luci-theme-bootstrap](https://github.com/openwrt/luci/tree/master/themes/luci-theme-bootstrap).
-
-Visual style and some implementations are influenced by
-[Apple](https://www.apple.com/) and [Vercel](https://vercel.com/).
-
-The project is developed using a modern front-end stack, including
-[Vite](https://vitejs.dev/) and [Tailwind CSS](https://tailwindcss.com/).
+- [luci-theme-bootstrap](https://github.com/openwrt/luci/tree/master/themes/luci-theme-bootstrap)
+- [Vite](https://vitejs.dev/)
+- [Tailwind CSS](https://tailwindcss.com/)
+- [Claude Code](https://claude.ai/code)
+- [Apple](https://www.apple.com/) and [Vercel](https://vercel.com/) — design inspiration
diff --git a/luci-theme-aurora/README_zh.md b/luci-theme-aurora/README_zh.md
index 89cb5aa6f..f115e5db1 100644
--- a/luci-theme-aurora/README_zh.md
+++ b/luci-theme-aurora/README_zh.md
@@ -19,16 +19,6 @@
-> [!NOTE]
-> **🤖 AI 工作流探索中…**
->
-> 大家好,最近工作比较忙,能投入到 Aurora 主题的时间有限,但我不希望 Aurora 因此停滞不前,所以最近一直在研究 AI 工作流,希望借助 AI 来分担一部分工作,尤其是调试方面。
->
-> 目前主题积压了不少 issue,其实大部分都是第三方插件的样式兼容问题。这类问题说大不大,但调起来真的很耗时间——你得先装上对应的插件,有时候路由器还得满足特定条件才能复现。
->
-> 归根结底,LuCI 本身只提供了一套基础的 Web 组件,插件作者想实现更复杂的交互,就只能用 HTML + CSS + JS 自行实现,没有统一的规范,各种兼容问题在所难免。LuCI 插件数量庞大,要逐一做好兼容,工作量可想而知——更何况有些插件本身也没有按照 LuCI JS 的规范来开发。
->
-> 所以我希望引入 AI,把这些琐碎但繁重的任务交给它来完成,如果能实现自动化那就更理想了。如果你有更好的建议或想法,欢迎来 [Discord](https://discord.gg/EBncRrzfTw) 聊聊。
## 特性
@@ -81,33 +71,16 @@ OpenWrt 25.12+ 和 Snapshot 版本使用 `apk`;其他版本使用 `opkg`:
## 加入贡献
-
-关于开发
+Aurora 使用 **Vite** 与现代前端工具链构建,并尝试将 AI 融入开发全链路。详见[开发文档](.dev/docs/DEVELOPMENT.md)。欢迎提交建议或 PR。
-步入 2026 年,前端工具链已相当成熟先进,并且现代浏览器也支持了很多有趣的新特性。所以全面拥抱现代前端生态是 Aurora 主题的核心理念。
-
-Aurora 使用 Vite 作为构建工具。
-
-
-- 在开发过程中,您可以自由选择并集成任何 CSS 工具链。
-- 在生产环境中,提供多种策略来优化打包资源。
-- 最重要的是,借助于本地代理服务器,样式的修改可以实时预览!
-
-
-更多开发信息,请参阅 开发文档。
-
-
-
-社区
-
-我建立了一个 Discord 服务器 —— 欢迎来聊天!👋 加入 Discord
+[discord.gg/EBncRrzfTw](https://discord.gg/EBncRrzfTw)
## 许可与致谢
-本项目基于 Apache License 2.0 许可开源。
+[Apache 2.0](LICENSE)。致谢:
-生产构建结构基于官方 OpenWrt 主题 [luci-theme-bootstrap](https://github.com/openwrt/luci/tree/master/themes/luci-theme-bootstrap)。
-
-视觉风格和部分实现受到 [Apple](https://www.apple.com/) 和 [Vercel](https://vercel.com/) 的影响。
-
-本项目使用现代前端技术栈开发,包括 [Vite](https://vitejs.dev/) 和 [Tailwind CSS](https://tailwindcss.com/)。
+- [luci-theme-bootstrap](https://github.com/openwrt/luci/tree/master/themes/luci-theme-bootstrap)
+- [Vite](https://vitejs.dev/)
+- [Tailwind CSS](https://tailwindcss.com/)
+- [Claude Code](https://claude.ai/code)
+- [Apple](https://www.apple.com/) 和 [Vercel](https://vercel.com/) — 设计灵感
diff --git a/luci-theme-aurora/htdocs/luci-static/aurora/main.css b/luci-theme-aurora/htdocs/luci-static/aurora/main.css
index 3398f6443..6ebd32f33 100644
--- a/luci-theme-aurora/htdocs/luci-static/aurora/main.css
+++ b/luci-theme-aurora/htdocs/luci-static/aurora/main.css
@@ -1,2 +1,2 @@
/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */
-@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-leading:initial;--tw-font-weight:initial;--tw-duration:initial;--tw-tracking:initial;--tw-border-style:solid;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-ease:initial;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-content:"";--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-space-y-reverse:0;--tw-border-spacing-x:0;--tw-border-spacing-y:0}}:root,:host{--font-sans:var(--font-sans);--font-mono:var(--font-mono);--spacing:var(--spacing);--container-xs:20rem;--container-md:28rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25/1.875);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--radius-4xl:2rem;--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--blur-sm:8px;--blur-md:12px;--blur-lg:16px;--blur-xl:24px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--container-max-width:var(--container-max-width)}*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:not(html)::-webkit-scrollbar-track{background-color:var(--scrollbar-track);border-radius:var(--scrollbar-track-radius)}:not(html)::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:var(--scrollbar-thumb-radius)}:not(html)::-webkit-scrollbar-corner{background-color:var(--scrollbar-corner);border-radius:var(--scrollbar-corner-radius)}:not(html){scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb,initial)var(--scrollbar-track,initial)}:not(html)::-webkit-scrollbar{width:8px;height:8px;display:block}:not(html){--scrollbar-thumb:var(--foreground)}@supports (color:color-mix(in lab, red, red)){:not(html){--scrollbar-thumb:color-mix(in oklab,var(--foreground)70%,transparent)}}:not(html){--scrollbar-thumb-radius:9999px;--scrollbar-track:transparent}html::-webkit-scrollbar-track{background-color:var(--scrollbar-track);border-radius:var(--scrollbar-track-radius)}html::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:var(--scrollbar-thumb-radius)}html::-webkit-scrollbar-corner{background-color:var(--scrollbar-corner);border-radius:var(--scrollbar-corner-radius)}html{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb,initial)var(--scrollbar-track,initial)}html::-webkit-scrollbar{width:8px;height:8px;display:block}html{--scrollbar-thumb:var(--foreground)}@supports (color:color-mix(in lab, red, red)){html{--scrollbar-thumb:color-mix(in oklab,var(--foreground)70%,transparent)}}html{--scrollbar-thumb-radius:9999px;--scrollbar-track:var(--page-bg);background-color:var(--background);height:100%;font-family:var(--font-sans);position:relative}html body{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--foreground);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;background-color:#0000;flex-direction:column;transition-duration:.3s;display:flex;position:relative}html body.modal-overlay-active{height:100vh;overflow:hidden}h1,h2,h3,h4,h5,h6{font-family:var(--font-sans);--tw-leading:var(--leading-tight);line-height:var(--leading-tight);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight);color:var(--foreground)}h1{margin-bottom:calc(var(--spacing)*4);padding-left:calc(var(--spacing)*6);font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}@media not all and (min-width:48rem){h1{padding-left:calc(var(--spacing)*4);font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}}h2{margin-bottom:calc(var(--spacing)*4);padding-left:calc(var(--spacing)*5);font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}@media not all and (min-width:48rem){h2{margin-bottom:calc(var(--spacing)*2);padding-left:calc(var(--spacing)*4);font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}}h3{margin-bottom:calc(var(--spacing)*4);font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}@media not all and (min-width:48rem){h3{margin-bottom:calc(var(--spacing)*2);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}}h4{margin-bottom:calc(var(--spacing)*2);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}@media not all and (min-width:48rem){h4{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}h5{margin-bottom:calc(var(--spacing)*2);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}@media not all and (min-width:48rem){h5{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}h6{margin-bottom:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}@media not all and (min-width:48rem){h6{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}hr{border-style:var(--tw-border-style);border-width:0}strong{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}abbr{cursor:help}p{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);color:var(--default-foreground)}pre{border-radius:var(--radius-xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--secondary);display:block}@supports (color:color-mix(in lab, red, red)){pre{border-color:color-mix(in oklab,var(--secondary)60%,transparent)}}pre{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){pre{background-color:color-mix(in oklab,var(--secondary)60%,transparent)}}pre{padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);font-family:var(--font-mono);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);overflow-wrap:break-word;white-space:pre-wrap;color:var(--secondary-foreground)}code{background-color:var(--secondary);border-radius:.25rem}@supports (color:color-mix(in lab, red, red)){code{background-color:color-mix(in oklab,var(--secondary)80%,transparent)}}code{padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*1);font-family:var(--font-mono);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--secondary-foreground)}a{color:var(--link);text-decoration-line:none}@media (hover:hover){a:hover{text-decoration-line:underline}}var{font-family:var(--font-mono);color:var(--link)}small{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--default-foreground)}em{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--muted-foreground);font-style:italic}*{scrollbar-color:initial;scrollbar-width:initial}header{top:calc(var(--spacing)*0);z-index:60;margin-bottom:calc(var(--spacing)*2);background-color:var(--header-bg);position:sticky}header .header-content{height:calc(var(--spacing)*14);padding-inline:calc(var(--spacing)*6);padding-block:calc(var(--spacing)*3);justify-content:space-between;align-items:center;display:flex;position:relative}@media not all and (min-width:48rem){header .header-content{padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*2)}}[data-nav-type=mega-menu] :is(header) .desktop-menu-container{pointer-events:none;inset-inline:calc(var(--spacing)*0);top:calc(var(--spacing)*0);z-index:30;height:calc(var(--spacing)*0);background-color:var(--header-bg);width:100%;position:absolute;overflow:hidden}@supports (color:color-mix(in lab, red, red)){[data-nav-type=mega-menu] :is(header) .desktop-menu-container{background-color:color-mix(in oklab,var(--header-bg)40%,transparent)}}[data-nav-type=mega-menu] :is(header) .desktop-menu-container{opacity:0;--tw-backdrop-blur:blur(var(--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,);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;--tw-ease:var(--ease-in-out);transition-duration:.15s;transition-timing-function:var(--ease-in-out)}@media not all and (min-width:48rem){[data-nav-type=mega-menu] :is(header) .desktop-menu-container{display:none}}[data-nav-type=mega-menu] :is(header) .desktop-menu-container:where([data-darkmode=true],[data-darkmode=true] *){background-color:var(--header-bg)}@supports (color:color-mix(in lab, red, red)){[data-nav-type=mega-menu] :is(header) .desktop-menu-container:where([data-darkmode=true],[data-darkmode=true] *){background-color:color-mix(in oklab,var(--header-bg)90%,transparent)}}[data-nav-type=mega-menu] :is(header) .desktop-menu-container.active{pointer-events:auto;height:var(--mega-menu-height,0);opacity:1}header .brand{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight);color:var(--foreground);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;flex-shrink:0;text-decoration-line:none;transition-duration:.2s;display:inline-block}@media (hover:hover){header .brand:hover{--tw-translate-y:calc(var(--spacing)*-.5);translate:var(--tw-translate-x)var(--tw-translate-y);color:var(--primary)}}@media not all and (min-width:48rem){header .brand{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));flex:1;order:1}}header .nav{z-index:60;margin:calc(var(--spacing)*0);--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y);transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,);align-items:center;gap:calc(var(--spacing)*1);padding:calc(var(--spacing)*0);list-style-type:none;display:flex;position:absolute;left:50%}@media not all and (min-width:48rem){header .nav{display:none}}header .nav>li{position:relative}header .nav>li .menu{border-radius:var(--radius-xl);padding-inline:calc(var(--spacing)*3.5);padding-block:calc(var(--spacing)*1.5);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--foreground);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;text-decoration-line:none;transition-duration:.15s;display:block}header .nav>li .menu.menu-active{color:var(--foreground)}[data-nav-type=mega-menu] header .nav>li .menu.menu-active{text-underline-offset:4px;text-decoration-line:underline;text-decoration-thickness:2px}[data-nav-type=boxed-dropdown] header .nav>li .menu.menu-active{background-color:var(--header-interactive)}header .nav>li .desktop-nav{pointer-events:none;left:calc(var(--spacing)*0);z-index:40;padding-inline:calc(var(--spacing)*0);padding-top:calc(var(--spacing)*0);opacity:0;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;transition-duration:.15s}[data-nav-type=mega-menu] :is(header .nav>li .desktop-nav){top:calc(var(--spacing)*14);--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y);padding-bottom:calc(var(--spacing)*6);position:fixed;left:50%}[data-nav-type=boxed-dropdown] :is(header .nav>li .desktop-nav){margin-top:calc(var(--spacing)*2);min-width:calc(var(--spacing)*48);position:absolute;top:100%}header .nav>li .desktop-nav.active{pointer-events:auto;opacity:1}[data-nav-type=mega-menu] :is(header .nav>li .desktop-nav .desktop-nav-list){column-gap:calc(var(--spacing)*4);row-gap:calc(var(--spacing)*2);grid-template-columns:repeat(4,minmax(0,1fr));width:max-content;display:grid}[data-nav-type=boxed-dropdown] :is(header .nav>li .desktop-nav .desktop-nav-list){row-gap:calc(var(--spacing)*1);border-radius:var(--radius-3xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);background-color:color-mix(in oklab,var(--header-bg)90%,transparent);padding-block:calc(var(--spacing)*2);--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-backdrop-blur:blur(var(--blur-md));--tw-backdrop-saturate:saturate(150%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;flex-direction:column;transition-duration:.2s;display:flex}header .nav>li .desktop-nav .desktop-nav-list>li{margin:calc(var(--spacing)*0);list-style-type:none}header .nav>li .desktop-nav .desktop-nav-list>li>a{padding-inline:calc(var(--spacing)*4);white-space:nowrap;color:var(--foreground);text-decoration-line:none;display:block}[data-nav-type=mega-menu] :is(header .nav>li .desktop-nav .desktop-nav-list>li>a){padding-block:calc(var(--spacing)*3)}@media (hover:hover){[data-nav-type=mega-menu] :is(header .nav>li .desktop-nav .desktop-nav-list>li>a):hover{text-underline-offset:4px;text-decoration-line:underline;text-decoration-thickness:2px}}[data-nav-type=boxed-dropdown] :is(header .nav>li .desktop-nav .desktop-nav-list>li>a){margin-inline:calc(var(--spacing)*2);border-radius:var(--radius-xl);padding-block:calc(var(--spacing)*2)}@media (hover:hover){[data-nav-type=boxed-dropdown] :is(header .nav>li .desktop-nav .desktop-nav-list>li>a):hover{background-color:var(--header-interactive)}}@media not all and (min-width:48rem){header .mobile-controls{flex-shrink:0;order:9999;align-items:center;display:flex}}@media (min-width:48rem){header .mobile-controls{display:none}}@media not all and (min-width:48rem){header .mobile-controls .mobile-menu-toggle{margin-left:calc(var(--spacing)*5);cursor:pointer;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;transition-duration:.2s}@media (hover:hover){header .mobile-controls .mobile-menu-toggle:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}}header .mobile-controls .mobile-menu-toggle:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}}header .mobile-controls .mobile-menu-toggle svg{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}@media not all and (min-width:48rem){header .mobile-controls .mobile-menu-toggle svg{color:var(--foreground);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;transition-duration:.2s}header .mobile-controls .mobile-menu-toggle.active svg{rotate:180deg}}header #indicators{gap:calc(var(--spacing)*5);flex-direction:row-reverse;flex-shrink:0;display:flex}@media not all and (min-width:48rem){header #indicators{flex-shrink:0;order:2}}@media (min-width:48rem){header #indicators{gap:calc(var(--spacing)*8)}}header #indicators span[data-indicator]{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5);cursor:pointer;font-size:0}header #indicators span[data-indicator]:before{content:var(--tw-content);content:var(--tw-content);width:calc(var(--spacing)*5);height:calc(var(--spacing)*5);content:var(--tw-content);content:var(--tw-content);color:var(--foreground);background-color:currentColor;position:absolute}header #indicators span[data-indicator][data-indicator=media_error]:before{content:var(--tw-content);-webkit-mask:url("data:image/svg+xml,%3csvg%20width='800'%20height='800'%20viewBox='0%200%20800%20800'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M99.5149%20622.549C93.2144%20633.653%2093.4349%20634%20107.075%20634H651.912C665.537%20634%20665.757%20633.622%20659.473%20622.549L385.196%20138.236C378.99%20127.258%20379.998%20127.258%20373.792%20138.236L99.5149%20622.534V622.549ZM440.01%20107.161L714.303%20591.475C744.577%20644.978%20713.373%20697%20651.912%20697H107.075C45.5668%20697%2014.4423%20644.946%2044.7005%20591.506L318.977%20107.192C349.314%2053.5947%20409.705%2053.6105%20440.026%20107.192L440.01%20107.161ZM379.494%20586.75C383.631%20586.75%20387.728%20585.936%20391.551%20584.353C395.373%20582.77%20398.847%20580.45%20401.773%20577.525C404.698%20574.6%20407.019%20571.127%20408.603%20567.305C410.186%20563.483%20411.001%20559.387%20411.001%20555.25C411.001%20551.112%20410.186%20547.016%20408.603%20543.194C407.019%20539.372%20404.698%20535.899%20401.773%20532.974C398.847%20530.049%20395.373%20527.729%20391.551%20526.146C387.728%20524.563%20383.631%20523.749%20379.494%20523.749C371.14%20523.751%20363.128%20527.07%20357.221%20532.977C351.314%20538.885%20347.996%20546.896%20347.996%20555.25C347.996%20563.603%20351.314%20571.614%20357.221%20577.522C363.128%20583.429%20371.14%20586.748%20379.494%20586.75ZM347.991%20303.249V460.749C347.991%20469.104%20351.31%20477.116%20357.218%20483.023C363.126%20488.931%20371.139%20492.249%20379.494%20492.249C387.849%20492.249%20395.862%20488.931%20401.769%20483.023C407.677%20477.116%20410.996%20469.104%20410.996%20460.749V303.249C410.996%20294.894%20407.677%20286.882%20401.769%20280.975C395.862%20275.067%20387.849%20271.749%20379.494%20271.749C371.139%20271.749%20363.126%20275.067%20357.218%20280.975C351.31%20286.882%20347.991%20294.894%20347.991%20303.249Z'%20fill='%230F162B'/%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3csvg%20width='800'%20height='800'%20viewBox='0%200%20800%20800'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M99.5149%20622.549C93.2144%20633.653%2093.4349%20634%20107.075%20634H651.912C665.537%20634%20665.757%20633.622%20659.473%20622.549L385.196%20138.236C378.99%20127.258%20379.998%20127.258%20373.792%20138.236L99.5149%20622.534V622.549ZM440.01%20107.161L714.303%20591.475C744.577%20644.978%20713.373%20697%20651.912%20697H107.075C45.5668%20697%2014.4423%20644.946%2044.7005%20591.506L318.977%20107.192C349.314%2053.5947%20409.705%2053.6105%20440.026%20107.192L440.01%20107.161ZM379.494%20586.75C383.631%20586.75%20387.728%20585.936%20391.551%20584.353C395.373%20582.77%20398.847%20580.45%20401.773%20577.525C404.698%20574.6%20407.019%20571.127%20408.603%20567.305C410.186%20563.483%20411.001%20559.387%20411.001%20555.25C411.001%20551.112%20410.186%20547.016%20408.603%20543.194C407.019%20539.372%20404.698%20535.899%20401.773%20532.974C398.847%20530.049%20395.373%20527.729%20391.551%20526.146C387.728%20524.563%20383.631%20523.749%20379.494%20523.749C371.14%20523.751%20363.128%20527.07%20357.221%20532.977C351.314%20538.885%20347.996%20546.896%20347.996%20555.25C347.996%20563.603%20351.314%20571.614%20357.221%20577.522C363.128%20583.429%20371.14%20586.748%20379.494%20586.75ZM347.991%20303.249V460.749C347.991%20469.104%20351.31%20477.116%20357.218%20483.023C363.126%20488.931%20371.139%20492.249%20379.494%20492.249C387.849%20492.249%20395.862%20488.931%20401.769%20483.023C407.677%20477.116%20410.996%20469.104%20410.996%20460.749V303.249C410.996%20294.894%20407.677%20286.882%20401.769%20280.975C395.862%20275.067%20387.849%20271.749%20379.494%20271.749C371.139%20271.749%20363.126%20275.067%20357.218%20280.975C351.31%20286.882%20347.991%20294.894%20347.991%20303.249Z'%20fill='%230F162B'/%3e%3c/svg%3e") 50%/cover no-repeat}header #indicators span[data-indicator][data-indicator=poll-status][data-style=active]:before{content:var(--tw-content);-webkit-mask:url("data:image/svg+xml,%3csvg%20width='800'%20height='800'%20viewBox='0%200%20800%20800'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M201.032%20123.921C202.67%20122.913%20204.182%20121.936%20205.537%20121.023C257.614%2085.7368%20319.094%2066.9154%20382%2067.0003C555.974%2067.0003%20697%20208.026%20697%20382C697.086%20440.93%20680.568%20498.691%20649.34%20548.666C648.405%20550.159%20647.097%20551.383%20645.545%20552.216C643.993%20553.05%20642.25%20553.465%20640.489%20553.42C638.728%20553.376%20637.009%20552.873%20635.501%20551.962C633.993%20551.051%20632.748%20549.763%20631.889%20548.225L552.509%20405.404C551.176%20403.007%20550.492%20400.303%20550.525%20397.56C550.558%20394.817%20551.307%20392.13%20552.698%20389.765C554.089%20387.401%20556.073%20385.44%20558.454%20384.078C560.836%20382.716%20563.531%20382%20566.275%20382H634C634.01%20335.412%20621.106%20289.734%20596.72%20250.038C572.334%20210.343%20537.422%20178.184%20495.861%20157.135C454.3%20136.085%20407.718%20126.968%20361.288%20130.797C314.858%20134.626%20270.398%20151.251%20232.847%20178.825C229.627%20181.188%20225.94%20182.839%20222.032%20183.668C218.124%20184.497%20214.085%20184.485%20210.182%20183.633C206.279%20182.781%20202.602%20181.108%20199.395%20178.726C196.189%20176.344%20193.525%20173.307%20191.582%20169.816L189.818%20166.666C185.825%20159.468%20184.763%20151.007%20186.852%20143.044C188.941%20135.082%20194.02%20128.232%20201.032%20123.921ZM558.715%20642.82C506.586%20678.213%20445.009%20697.092%20382%20697C208.025%20697%2067%20555.974%2067%20382C67%20322.969%2083.254%20267.718%20111.478%20220.5C112.696%20218.456%20114.432%20216.77%20116.509%20215.61C118.587%20214.45%20120.933%20213.858%20123.312%20213.893C125.691%20213.928%20128.019%20214.589%20130.061%20215.81C132.103%20217.03%20133.788%20218.768%20134.945%20220.846L211.49%20358.595C212.824%20360.993%20213.508%20363.697%20213.474%20366.44C213.441%20369.183%20212.692%20371.87%20211.302%20374.235C209.911%20376.599%20207.926%20378.56%20205.545%20379.922C203.164%20381.284%20200.468%20382%20197.725%20382H130C129.999%20428.603%20142.921%20474.294%20167.33%20513.993C191.739%20553.693%20226.679%20585.846%20268.265%20606.879C309.852%20627.913%20356.457%20637.002%20402.9%20633.137C449.342%20629.272%20493.803%20612.604%20531.341%20584.986C534.645%20582.52%20538.43%20580.775%20542.451%20579.865C546.472%20578.954%20550.64%20578.898%20554.684%20579.7C558.728%20580.501%20562.558%20582.143%20565.928%20584.519C569.297%20586.894%20572.131%20589.951%20574.244%20593.491C578.821%20601.138%20580.227%20610.272%20578.161%20618.941C576.095%20627.61%20570.721%20635.129%20563.188%20639.89C561.702%20640.833%20560.232%20641.799%20558.778%20642.788L558.715%20642.82Z'%20fill='%230F162B'/%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3csvg%20width='800'%20height='800'%20viewBox='0%200%20800%20800'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M201.032%20123.921C202.67%20122.913%20204.182%20121.936%20205.537%20121.023C257.614%2085.7368%20319.094%2066.9154%20382%2067.0003C555.974%2067.0003%20697%20208.026%20697%20382C697.086%20440.93%20680.568%20498.691%20649.34%20548.666C648.405%20550.159%20647.097%20551.383%20645.545%20552.216C643.993%20553.05%20642.25%20553.465%20640.489%20553.42C638.728%20553.376%20637.009%20552.873%20635.501%20551.962C633.993%20551.051%20632.748%20549.763%20631.889%20548.225L552.509%20405.404C551.176%20403.007%20550.492%20400.303%20550.525%20397.56C550.558%20394.817%20551.307%20392.13%20552.698%20389.765C554.089%20387.401%20556.073%20385.44%20558.454%20384.078C560.836%20382.716%20563.531%20382%20566.275%20382H634C634.01%20335.412%20621.106%20289.734%20596.72%20250.038C572.334%20210.343%20537.422%20178.184%20495.861%20157.135C454.3%20136.085%20407.718%20126.968%20361.288%20130.797C314.858%20134.626%20270.398%20151.251%20232.847%20178.825C229.627%20181.188%20225.94%20182.839%20222.032%20183.668C218.124%20184.497%20214.085%20184.485%20210.182%20183.633C206.279%20182.781%20202.602%20181.108%20199.395%20178.726C196.189%20176.344%20193.525%20173.307%20191.582%20169.816L189.818%20166.666C185.825%20159.468%20184.763%20151.007%20186.852%20143.044C188.941%20135.082%20194.02%20128.232%20201.032%20123.921ZM558.715%20642.82C506.586%20678.213%20445.009%20697.092%20382%20697C208.025%20697%2067%20555.974%2067%20382C67%20322.969%2083.254%20267.718%20111.478%20220.5C112.696%20218.456%20114.432%20216.77%20116.509%20215.61C118.587%20214.45%20120.933%20213.858%20123.312%20213.893C125.691%20213.928%20128.019%20214.589%20130.061%20215.81C132.103%20217.03%20133.788%20218.768%20134.945%20220.846L211.49%20358.595C212.824%20360.993%20213.508%20363.697%20213.474%20366.44C213.441%20369.183%20212.692%20371.87%20211.302%20374.235C209.911%20376.599%20207.926%20378.56%20205.545%20379.922C203.164%20381.284%20200.468%20382%20197.725%20382H130C129.999%20428.603%20142.921%20474.294%20167.33%20513.993C191.739%20553.693%20226.679%20585.846%20268.265%20606.879C309.852%20627.913%20356.457%20637.002%20402.9%20633.137C449.342%20629.272%20493.803%20612.604%20531.341%20584.986C534.645%20582.52%20538.43%20580.775%20542.451%20579.865C546.472%20578.954%20550.64%20578.898%20554.684%20579.7C558.728%20580.501%20562.558%20582.143%20565.928%20584.519C569.297%20586.894%20572.131%20589.951%20574.244%20593.491C578.821%20601.138%20580.227%20610.272%20578.161%20618.941C576.095%20627.61%20570.721%20635.129%20563.188%20639.89C561.702%20640.833%20560.232%20641.799%20558.778%20642.788L558.715%20642.82Z'%20fill='%230F162B'/%3e%3c/svg%3e") 50%/cover no-repeat}header #indicators span[data-indicator][data-indicator=poll-status][data-style=inactive]:before{content:var(--tw-content);-webkit-mask:url("data:image/svg+xml,%3csvg%20width='800'%20height='800'%20viewBox='0%200%20800%20800'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M571.418%20595.528C580.7%20609.514%20576.962%20628.288%20563.018%20637.696C533.911%20657.268%20510.181%20670.456%20491.868%20677.302C456.716%20690.382%20419.502%20697.054%20381.995%20697C354.694%20697%20328.234%20693.514%20302.949%20687.004L335.962%20629.8C396.485%20641.014%20459.864%20629.8%20513.289%20597.124L530.089%20586.708C536.769%20582.478%20544.84%20581.032%20552.573%20582.681C560.306%20584.329%20567.086%20588.941%20571.46%20595.528H571.418ZM509.803%2094.006C529.123%20102.574%20547.477%20113.074%20564.53%20125.212L250.869%20668.482C231.733%20659.714%20213.526%20649.048%20196.52%20636.646L509.761%2094.006H509.803ZM381.995%2067C409.295%2067%20435.839%2070.486%20461.082%2076.996L427.985%20134.284L422.063%20133.234C371.12%20125.021%20318.883%20132.645%20272.412%20155.075C225.941%20177.505%20187.476%20213.659%20162.214%20258.653C136.953%20303.647%20126.112%20355.311%20131.158%20406.664C136.204%20458.017%20156.893%20506.583%20190.43%20545.8L157.459%20602.92C113.918%20558.666%2084.4251%20502.532%2072.6843%20441.57C60.9436%20380.609%2067.4788%20317.537%2091.469%20260.277C115.459%20203.018%20155.835%20154.123%20207.524%20119.736C259.213%2085.349%20319.912%2067.0021%20381.995%2067ZM606.572%20161.08C664.623%20219.944%20697.117%20299.327%20697%20382C697.058%20427.158%20687.374%20471.797%20668.607%20512.872C664.536%20521.456%20660.05%20529.838%20655.167%20537.988C653.67%20540.539%20651.526%20542.649%20648.952%20544.106C646.378%20545.563%20643.465%20546.315%20640.508%20546.285C637.55%20546.255%20634.653%20545.445%20632.109%20543.936C629.564%20542.428%20627.464%20540.274%20626.019%20537.694L609.932%20508.714L553.357%20406.948C551.939%20404.39%20551.212%20401.505%20551.251%20398.581C551.289%20395.656%20552.09%20392.791%20553.575%20390.271C555.06%20387.751%20557.177%20385.662%20559.717%20384.212C562.258%20382.761%20565.132%20381.998%20568.058%20382H633.999C634.02%20321.959%20612.568%20263.891%20573.518%20218.284L606.572%20161.122V161.08Z'%20fill='%230F162B'/%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3csvg%20width='800'%20height='800'%20viewBox='0%200%20800%20800'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M571.418%20595.528C580.7%20609.514%20576.962%20628.288%20563.018%20637.696C533.911%20657.268%20510.181%20670.456%20491.868%20677.302C456.716%20690.382%20419.502%20697.054%20381.995%20697C354.694%20697%20328.234%20693.514%20302.949%20687.004L335.962%20629.8C396.485%20641.014%20459.864%20629.8%20513.289%20597.124L530.089%20586.708C536.769%20582.478%20544.84%20581.032%20552.573%20582.681C560.306%20584.329%20567.086%20588.941%20571.46%20595.528H571.418ZM509.803%2094.006C529.123%20102.574%20547.477%20113.074%20564.53%20125.212L250.869%20668.482C231.733%20659.714%20213.526%20649.048%20196.52%20636.646L509.761%2094.006H509.803ZM381.995%2067C409.295%2067%20435.839%2070.486%20461.082%2076.996L427.985%20134.284L422.063%20133.234C371.12%20125.021%20318.883%20132.645%20272.412%20155.075C225.941%20177.505%20187.476%20213.659%20162.214%20258.653C136.953%20303.647%20126.112%20355.311%20131.158%20406.664C136.204%20458.017%20156.893%20506.583%20190.43%20545.8L157.459%20602.92C113.918%20558.666%2084.4251%20502.532%2072.6843%20441.57C60.9436%20380.609%2067.4788%20317.537%2091.469%20260.277C115.459%20203.018%20155.835%20154.123%20207.524%20119.736C259.213%2085.349%20319.912%2067.0021%20381.995%2067ZM606.572%20161.08C664.623%20219.944%20697.117%20299.327%20697%20382C697.058%20427.158%20687.374%20471.797%20668.607%20512.872C664.536%20521.456%20660.05%20529.838%20655.167%20537.988C653.67%20540.539%20651.526%20542.649%20648.952%20544.106C646.378%20545.563%20643.465%20546.315%20640.508%20546.285C637.55%20546.255%20634.653%20545.445%20632.109%20543.936C629.564%20542.428%20627.464%20540.274%20626.019%20537.694L609.932%20508.714L553.357%20406.948C551.939%20404.39%20551.212%20401.505%20551.251%20398.581C551.289%20395.656%20552.09%20392.791%20553.575%20390.271C555.06%20387.751%20557.177%20385.662%20559.717%20384.212C562.258%20382.761%20565.132%20381.998%20568.058%20382H633.999C634.02%20321.959%20612.568%20263.891%20573.518%20218.284L606.572%20161.122V161.08Z'%20fill='%230F162B'/%3e%3c/svg%3e") 50%/cover no-repeat}header #indicators span[data-indicator][data-indicator=uci-changes]{position:relative}header #indicators span[data-indicator][data-indicator=uci-changes]:before{content:var(--tw-content);-webkit-mask:url("data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1758476543825'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='17352'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M439.594667%2085.333333h144.810666a70.4%2070.4%200%200%201%2070.101334%2060.970667l5.802666%2044.8a17.066667%2017.066667%200%200%200%208.192%2012.458667l38.058667%2022.528a17.066667%2017.066667%200%200%200%2015.146667%201.109333l46.848-19.2a71.082667%2071.082667%200%200%201%2088.021333%2029.226667l72.405333%20122.069333c18.218667%2030.72%2010.069333%2069.973333-18.688%2091.221333l-45.184%2033.408a17.066667%2017.066667%200%200%200-6.912%2013.696v28.757334a17.066667%2017.066667%200%200%200%206.912%2013.696l45.226667%2033.408c28.714667%2021.205333%2036.864%2060.458667%2018.645333%2091.221333l-72.405333%20122.026667a71.082667%2071.082667%200%200%201-88.021333%2029.226666l-46.848-19.2a17.066667%2017.066667%200%200%200-15.146667%201.152l-38.058667%2022.528a17.066667%2017.066667%200%200%200-8.192%2012.501334l-5.802666%2044.8A70.4%2070.4%200%200%201%20584.405333%20938.666667h-144.810666a70.4%2070.4%200%200%201-70.101334-60.970667l-5.802666-44.8a17.066667%2017.066667%200%200%200-8.192-12.458667l-38.058667-22.528a17.066667%2017.066667%200%200%200-15.146667-1.109333l-46.848%2019.2a71.082667%2071.082667%200%200%201-88.021333-29.226667l-72.405333-122.069333a69.290667%2069.290667%200%200%201%2018.688-91.221333l45.184-33.408a17.066667%2017.066667%200%200%200%206.912-13.696v-28.757334a17.066667%2017.066667%200%200%200-6.912-13.696l-45.226667-33.408a69.290667%2069.290667%200%200%201-18.645333-91.221333l72.405333-122.026667a71.082667%2071.082667%200%200%201%2088.021333-29.226666l46.848%2019.2a17.066667%2017.066667%200%200%200%2015.146667-1.152l38.058667-22.528a17.066667%2017.066667%200%200%200%208.192-12.501334l5.802666-44.8A70.4%2070.4%200%200%201%20439.594667%2085.333333z%20m1.024%20130.688a75.818667%2075.818667%200%200%201-36.821334%2055.466667l-51.712%2030.464a76.970667%2076.970667%200%200%201-67.925333%204.906667l-35.328-14.336a17.066667%2017.066667%200%200%200-21.077333%207.04L178.645333%20381.738667a17.066667%2017.066667%200%200%200%204.565334%2022.528l33.066666%2024.277333c19.541333%2014.293333%2031.018667%2036.906667%2031.018667%2061.013333v44.885334c0%2024.106667-11.52%2046.72-31.018667%2061.013333l-33.066666%2024.277333a17.066667%2017.066667%200%200%200-4.565334%2022.528l49.066667%2082.176a17.066667%2017.066667%200%200%200%2021.12%207.04l35.328-14.336a76.970667%2076.970667%200%200%201%2067.925333%204.906667l51.712%2030.421333c20.224%2011.946667%2033.792%2032.384%2036.821334%2055.509334l4.010666%2030.506666a17.066667%2017.066667%200%200%200%2016.896%2014.848h100.949334a17.066667%2017.066667%200%200%200%2016.896-14.848l4.010666-30.506666c2.986667-23.125333%2016.597333-43.605333%2036.821334-55.466667l51.712-30.464a76.970667%2076.970667%200%200%201%2067.925333-4.906667l35.328%2014.336a17.066667%2017.066667%200%200%200%2021.077333-7.04l49.109334-82.176a17.066667%2017.066667%200%200%200-4.565334-22.528l-33.066666-24.277333a75.648%2075.648%200%200%201-31.018667-61.013333v-44.885334c0-24.106667%2011.52-46.72%2031.018667-61.013333l33.066666-24.277333a17.066667%2017.066667%200%200%200%204.565334-22.528l-49.066667-82.176a17.066667%2017.066667%200%200%200-21.12-7.04l-35.328%2014.336c-22.186667%209.045333-47.317333%207.210667-67.925333-4.906667l-51.712-30.421333a75.818667%2075.818667%200%200%201-36.821334-55.509334l-4.010666-30.506666A17.066667%2017.066667%200%200%200%20562.474667%20170.666667h-100.949334a17.066667%2017.066667%200%200%200-16.896%2014.848l-4.010666%2030.506666zM682.666667%20512a42.666667%2042.666667%200%200%201-85.333334%200%2085.333333%2085.333333%200%201%200-85.333333%2085.333333%2042.666667%2042.666667%200%200%201%200%2085.333334%20170.666667%20170.666667%200%201%201%20170.666667-170.666667z'%20fill='%230f162b'%20p-id='17353'%3e%3c/path%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1758476543825'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='17352'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M439.594667%2085.333333h144.810666a70.4%2070.4%200%200%201%2070.101334%2060.970667l5.802666%2044.8a17.066667%2017.066667%200%200%200%208.192%2012.458667l38.058667%2022.528a17.066667%2017.066667%200%200%200%2015.146667%201.109333l46.848-19.2a71.082667%2071.082667%200%200%201%2088.021333%2029.226667l72.405333%20122.069333c18.218667%2030.72%2010.069333%2069.973333-18.688%2091.221333l-45.184%2033.408a17.066667%2017.066667%200%200%200-6.912%2013.696v28.757334a17.066667%2017.066667%200%200%200%206.912%2013.696l45.226667%2033.408c28.714667%2021.205333%2036.864%2060.458667%2018.645333%2091.221333l-72.405333%20122.026667a71.082667%2071.082667%200%200%201-88.021333%2029.226666l-46.848-19.2a17.066667%2017.066667%200%200%200-15.146667%201.152l-38.058667%2022.528a17.066667%2017.066667%200%200%200-8.192%2012.501334l-5.802666%2044.8A70.4%2070.4%200%200%201%20584.405333%20938.666667h-144.810666a70.4%2070.4%200%200%201-70.101334-60.970667l-5.802666-44.8a17.066667%2017.066667%200%200%200-8.192-12.458667l-38.058667-22.528a17.066667%2017.066667%200%200%200-15.146667-1.109333l-46.848%2019.2a71.082667%2071.082667%200%200%201-88.021333-29.226667l-72.405333-122.069333a69.290667%2069.290667%200%200%201%2018.688-91.221333l45.184-33.408a17.066667%2017.066667%200%200%200%206.912-13.696v-28.757334a17.066667%2017.066667%200%200%200-6.912-13.696l-45.226667-33.408a69.290667%2069.290667%200%200%201-18.645333-91.221333l72.405333-122.026667a71.082667%2071.082667%200%200%201%2088.021333-29.226666l46.848%2019.2a17.066667%2017.066667%200%200%200%2015.146667-1.152l38.058667-22.528a17.066667%2017.066667%200%200%200%208.192-12.501334l5.802666-44.8A70.4%2070.4%200%200%201%20439.594667%2085.333333z%20m1.024%20130.688a75.818667%2075.818667%200%200%201-36.821334%2055.466667l-51.712%2030.464a76.970667%2076.970667%200%200%201-67.925333%204.906667l-35.328-14.336a17.066667%2017.066667%200%200%200-21.077333%207.04L178.645333%20381.738667a17.066667%2017.066667%200%200%200%204.565334%2022.528l33.066666%2024.277333c19.541333%2014.293333%2031.018667%2036.906667%2031.018667%2061.013333v44.885334c0%2024.106667-11.52%2046.72-31.018667%2061.013333l-33.066666%2024.277333a17.066667%2017.066667%200%200%200-4.565334%2022.528l49.066667%2082.176a17.066667%2017.066667%200%200%200%2021.12%207.04l35.328-14.336a76.970667%2076.970667%200%200%201%2067.925333%204.906667l51.712%2030.421333c20.224%2011.946667%2033.792%2032.384%2036.821334%2055.509334l4.010666%2030.506666a17.066667%2017.066667%200%200%200%2016.896%2014.848h100.949334a17.066667%2017.066667%200%200%200%2016.896-14.848l4.010666-30.506666c2.986667-23.125333%2016.597333-43.605333%2036.821334-55.466667l51.712-30.464a76.970667%2076.970667%200%200%201%2067.925333-4.906667l35.328%2014.336a17.066667%2017.066667%200%200%200%2021.077333-7.04l49.109334-82.176a17.066667%2017.066667%200%200%200-4.565334-22.528l-33.066666-24.277333a75.648%2075.648%200%200%201-31.018667-61.013333v-44.885334c0-24.106667%2011.52-46.72%2031.018667-61.013333l33.066666-24.277333a17.066667%2017.066667%200%200%200%204.565334-22.528l-49.066667-82.176a17.066667%2017.066667%200%200%200-21.12-7.04l-35.328%2014.336c-22.186667%209.045333-47.317333%207.210667-67.925333-4.906667l-51.712-30.421333a75.818667%2075.818667%200%200%201-36.821334-55.509334l-4.010666-30.506666A17.066667%2017.066667%200%200%200%20562.474667%20170.666667h-100.949334a17.066667%2017.066667%200%200%200-16.896%2014.848l-4.010666%2030.506666zM682.666667%20512a42.666667%2042.666667%200%200%201-85.333334%200%2085.333333%2085.333333%200%201%200-85.333333%2085.333333%2042.666667%2042.666667%200%200%201%200%2085.333334%20170.666667%20170.666667%200%201%201%20170.666667-170.666667z'%20fill='%230f162b'%20p-id='17353'%3e%3c/path%3e%3c/svg%3e") 50%/cover no-repeat}header #indicators span[data-indicator][data-indicator=uci-changes][data-count]:not([data-count="0"]):after{content:var(--tw-content);content:var(--tw-content);top:calc(var(--spacing)*-.5);content:var(--tw-content);right:calc(var(--spacing)*-.5);content:var(--tw-content);z-index:10;content:var(--tw-content);content:var(--tw-content);min-height:calc(var(--spacing)*3);content:var(--tw-content);min-width:calc(var(--spacing)*3);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);background-color:var(--accent);content:var(--tw-content);padding-inline:calc(var(--spacing)*.5);content:var(--tw-content);content:var(--tw-content);--tw-leading:1;content:var(--tw-content);--tw-font-weight:var(--font-weight-bold);font-size:8px;line-height:1;font-weight:var(--font-weight-bold);content:var(--tw-content);color:var(--accent-foreground);content:var(--tw-content);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-content:attr(data-count);content:var(--tw-content);border-radius:3.40282e38px;justify-content:center;align-items:center;display:flex;position:absolute}#maincontent{width:95.8333%;min-height:calc(100vh - 4rem);max-width:var(--container-max-width);padding-inline:calc(var(--spacing)*4);margin-inline:auto}@media not all and (min-width:48rem){#maincontent{width:100%;padding-inline:calc(var(--spacing)*3)}}#maincontent #view{margin-inline:calc(var(--spacing)*0);width:100%;padding:calc(var(--spacing)*0);--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;transition-duration:.3s}#maincontent #view:empty{display:none}@media (min-width:48rem){#maincontent #view{border-radius:var(--radius-4xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){#maincontent #view{border-color:color-mix(in oklab,var(--border)30%,transparent)}}#maincontent #view{background-color:var(--page-bg);padding:calc(var(--spacing)*6);--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media (hover:hover){#maincontent #view:hover{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){#maincontent #view:hover{border-color:color-mix(in oklab,var(--border)50%,transparent)}}#maincontent #view:hover{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}}#maincontent #view .cbi-title-section{margin-bottom:calc(var(--spacing)*6);--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}@media not all and (min-width:48rem){#maincontent #view .cbi-title-section{margin-inline:calc(var(--spacing)*2);margin-bottom:calc(var(--spacing)*3)}}#maincontent #view .controls{margin:calc(var(--spacing)*2);align-items:center;gap:calc(var(--spacing)*3);flex-wrap:wrap;display:flex}@media not all and (min-width:48rem){#maincontent #view .controls{margin:calc(var(--spacing)*1);gap:calc(var(--spacing)*2)}}#maincontent #view .controls label input[type=radio],#maincontent #view .controls label input[type=checkbox]{margin-right:calc(var(--spacing)*1);vertical-align:middle}#maincontent #view #content_syslog{margin:calc(var(--spacing)*2)}@media not all and (min-width:48rem){#maincontent #view #content_syslog{margin:calc(var(--spacing)*1)}}#maincontent #view #content_syslog>div{align-items:baseline;column-gap:calc(var(--spacing)*2);flex-wrap:wrap;display:flex}@media not all and (min-width:48rem){#maincontent #view #content_syslog>div{column-gap:calc(var(--spacing)*1.5)}#maincontent #view #content_syslog>div>.cbi-input-select,#maincontent #view #content_syslog>div>.cbi-input-text{min-width:calc(var(--spacing)*45)}}#maincontent #view div[style]>svg:where([data-darkmode=true],[data-darkmode=true] *){background-color:var(--page-bg)!important}#maincontent #view div[style]>svg line[style]:where([data-darkmode=true],[data-darkmode=true] *){stroke:var(--foreground)!important}#maincontent .cbi-map-descr,#maincontent .cbi-section-descr{margin-bottom:calc(var(--spacing)*6);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);color:var(--muted-foreground)}@media not all and (min-width:48rem){#maincontent .cbi-map-descr,#maincontent .cbi-section-descr{margin-inline:calc(var(--spacing)*2);margin-bottom:calc(var(--spacing)*3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}#maincontent .cbi-page-actions{margin-top:calc(var(--spacing)*6);justify-content:flex-end;align-items:center;gap:calc(var(--spacing)*3);border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--border);flex-wrap:wrap;display:flex}@supports (color:color-mix(in lab, red, red)){#maincontent .cbi-page-actions{border-color:color-mix(in oklab,var(--border)50%,transparent)}}#maincontent .cbi-page-actions{padding-top:calc(var(--spacing)*4)}@media not all and (min-width:48rem){#maincontent .cbi-page-actions{margin-inline:calc(var(--spacing)*2);margin-top:calc(var(--spacing)*4);gap:calc(var(--spacing)*2);padding-top:calc(var(--spacing)*3)}}#maincontent .zone-forwards{align-items:flex-start;gap:calc(var(--spacing)*3);--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);display:flex}#maincontent .zone-forwards>span{margin-top:calc(var(--spacing)*1.5);color:var(--muted-foreground)}#maincontent .zone-forwards .zone-dest{align-items:flex-start;gap:calc(var(--spacing)*2);flex-direction:column;display:flex}#maincontent #syslog,#maincontent #log_textarea{width:100%;font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}#maincontent #syslog{border-radius:var(--radius-3xl);border-style:var(--tw-border-style);background-color:var(--terminal-bg);padding:calc(var(--spacing)*6);color:var(--terminal-foreground);--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-width:1px}@media not all and (min-width:48rem){#maincontent #syslog{padding:calc(var(--spacing)*3)}}footer{margin-top:calc(var(--spacing)*2);min-height:calc(var(--spacing)*16);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--secondary-foreground);flex-wrap:wrap;justify-content:space-between;align-items:center;display:flex}footer a{color:var(--primary)}footer span{text-align:center;display:inline-block}footer .breadcrumb{align-items:center;gap:calc(var(--spacing)*1);background-color:var(--page-bg);border-radius:3.40282e38px;display:flex}@supports (color:color-mix(in lab, red, red)){footer .breadcrumb{background-color:color-mix(in oklab,var(--page-bg)60%,transparent)}}footer .breadcrumb{padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;transition-duration:.2s}@media (hover:hover){footer .breadcrumb:hover{background-color:var(--page-bg)}@supports (color:color-mix(in lab, red, red)){footer .breadcrumb:hover{background-color:color-mix(in oklab,var(--page-bg)80%,transparent)}}footer .breadcrumb:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}footer .breadcrumb li{list-style-type:none}footer .breadcrumb li.active a{color:var(--default-foreground)}.control-group{margin-top:calc(var(--spacing)*1)}.control-group,.cbi-page-actions>div,.cbi-section-actions>div{align-items:center;gap:calc(var(--spacing)*2);flex-flow:row;display:flex}@media not all and (min-width:48rem){.control-group,.cbi-page-actions>div,.cbi-section-actions>div{gap:calc(var(--spacing)*1);flex-wrap:wrap}}.theme-switcher{align-items:center;gap:calc(var(--spacing)*0);background-color:var(--page-bg);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;border-radius:3.40282e38px;transition-duration:.3s;display:inline-flex;position:relative}@media not all and (min-width:48rem){.theme-switcher{padding-block:calc(var(--spacing)*.5)}}.theme-switcher{border-style:var(--tw-border-style);border-width:1px;border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.theme-switcher{border-color:color-mix(in oklab,var(--border)70%,transparent)}}.theme-switcher:before{content:var(--tw-content);content:var(--tw-content);top:calc(var(--spacing)*1);content:var(--tw-content);left:calc(var(--spacing)*1);content:var(--tw-content);z-index:0;content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);background-color:var(--border);border-radius:3.40282e38px;width:calc(33.333% - .5rem);height:calc(100% - .5rem);position:absolute}@supports (color:color-mix(in lab, red, red)){.theme-switcher:before{background-color:color-mix(in oklab,var(--border)50%,transparent)}}.theme-switcher:before{content:var(--tw-content);--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);content:var(--tw-content);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);content:var(--tw-content);--tw-ring-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.theme-switcher:before{--tw-ring-color:color-mix(in oklab,var(--border)60%,transparent)}}.theme-switcher:before{content:var(--tw-content);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));content:var(--tw-content);--tw-duration:.3s;transition-duration:.3s}@media not all and (min-width:48rem){footer .theme-switcher{display:none}}.theme-switcher .theme-option{z-index:10;cursor:pointer;justify-content:center;align-items:center;gap:calc(var(--spacing)*1.5);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;border-radius:3.40282e38px;transition-duration:.3s;display:flex;position:relative}@media (hover:hover){.theme-switcher .theme-option:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}}.theme-switcher .theme-option:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.theme-switcher .theme-option input[type=radio]{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.theme-switcher .theme-option .theme-icon{color:var(--muted-foreground);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;justify-content:center;align-items:center;transition-duration:.3s;display:flex}.theme-switcher .theme-option .theme-icon svg{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;transition-duration:.3s}.theme-switcher .theme-option .theme-label{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--muted-foreground);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;transition-duration:.3s;display:none}.theme-switcher .theme-option.active .theme-icon{color:var(--foreground)}.theme-switcher .theme-option.active .theme-icon svg{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.theme-switcher .theme-option.active .theme-label,.theme-switcher .theme-option:hover:not(.active) .theme-icon,.theme-switcher .theme-option:hover:not(.active) .theme-label{color:var(--foreground)}.theme-switcher:has(.theme-option[data-theme=device].active):before{content:var(--tw-content);--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.theme-switcher:has(.theme-option[data-theme=light].active):before{content:var(--tw-content);--tw-translate-x:calc(100% + .5rem);translate:var(--tw-translate-x)var(--tw-translate-y)}.theme-switcher:has(.theme-option[data-theme=dark].active):before{content:var(--tw-content);--tw-translate-x:calc(200% + 1rem);translate:var(--tw-translate-x)var(--tw-translate-y)}.floating-toolbar{right:calc(var(--spacing)*4);bottom:calc(var(--spacing)*4);z-index:40;flex-direction:column;align-items:center;display:flex;position:fixed}@media not all and (min-width:48rem){.floating-toolbar{right:calc(var(--spacing)*3);bottom:calc(var(--spacing)*3)}}.floating-toolbar .toolbar-list{visibility:visible;margin-bottom:calc(var(--spacing)*2);transform-origin:bottom;opacity:1;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.4s;--tw-ease:var(--ease-in-out);transition-duration:.4s;transition-timing-function:var(--ease-in-out);grid-template-rows:1fr;display:grid}@media not all and (min-width:48rem){.floating-toolbar .toolbar-list{margin-bottom:calc(var(--spacing)*1.5)}}.floating-toolbar .toolbar-list .toolbar-list-inner{min-height:calc(var(--spacing)*0);align-items:center;gap:calc(var(--spacing)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);border-radius:3.40282e38px;flex-direction:column;display:flex;overflow:hidden}@supports (color:color-mix(in lab, red, red)){.floating-toolbar .toolbar-list .toolbar-list-inner{border-color:color-mix(in oklab,var(--border)70%,transparent)}}.floating-toolbar .toolbar-list .toolbar-list-inner{background-color:var(--page-bg)}@supports (color:color-mix(in lab, red, red)){.floating-toolbar .toolbar-list .toolbar-list-inner{background-color:color-mix(in oklab,var(--page-bg)90%,transparent)}}.floating-toolbar .toolbar-list .toolbar-list-inner{padding:calc(var(--spacing)*1);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media not all and (min-width:48rem){.floating-toolbar .toolbar-list .toolbar-list-inner{gap:calc(var(--spacing)*1.5);padding:calc(var(--spacing)*.5)}}.floating-toolbar .toolbar-btn{height:calc(var(--spacing)*10);width:calc(var(--spacing)*10);cursor:pointer;padding:calc(var(--spacing)*2);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;--tw-ease:var(--ease-in-out);transition-duration:.3s;transition-timing-function:var(--ease-in-out);border-radius:3.40282e38px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.floating-toolbar .toolbar-btn:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}@media not all and (min-width:48rem){.floating-toolbar .toolbar-btn{height:calc(var(--spacing)*9);width:calc(var(--spacing)*9);padding:calc(var(--spacing)*1.5)}}.floating-toolbar .toolbar-btn .icon{height:calc(var(--spacing)*5);width:calc(var(--spacing)*5);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;--tw-ease:var(--ease-in-out);transition-duration:.3s;transition-timing-function:var(--ease-in-out);flex-shrink:0}@media not all and (min-width:48rem){.floating-toolbar .toolbar-btn .icon{height:calc(var(--spacing)*4);width:calc(var(--spacing)*4)}}.floating-toolbar .toolbar-btn:not(.toggle){text-decoration-line:none}@media (hover:hover){.floating-toolbar .toolbar-btn:not(.toggle):hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y);background-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.floating-toolbar .toolbar-btn:not(.toggle):hover{background-color:color-mix(in oklab,var(--border)40%,transparent)}}}.floating-toolbar .toolbar-btn:not(.toggle) .icon{object-fit:contain}.floating-toolbar .toolbar-btn:not(.toggle) .icon:where([data-darkmode=true],[data-darkmode=true] *){--tw-invert:invert(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.floating-toolbar .toolbar-btn.toggle{border-style:var(--tw-border-style);background-color:var(--page-bg);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-width:0}.floating-toolbar .toolbar-btn.toggle .icon{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.4s;--tw-ease:var(--ease-out);transition-duration:.4s;transition-timing-function:var(--ease-out)}.floating-toolbar.collapsed .toolbar-list{pointer-events:none;visibility:hidden;margin-bottom:calc(var(--spacing)*0);--tw-translate-y:calc(var(--spacing)*2);translate:var(--tw-translate-x)var(--tw-translate-y);--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x)var(--tw-scale-y);opacity:0;grid-template-rows:0fr}.floating-toolbar.collapsed .toolbar-btn:not(.toggle){--tw-scale-x:50%;--tw-scale-y:50%;--tw-scale-z:50%;scale:var(--tw-scale-x)var(--tw-scale-y);opacity:0}.floating-toolbar.collapsed .toolbar-btn.toggle .icon{rotate:45deg}button,.btn,.cbi-button{cursor:pointer;justify-content:center;align-items:center;gap:calc(var(--spacing)*1.5);border-radius:var(--radius-2xl);border-style:var(--tw-border-style);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;border-width:1px;transition-duration:.2s;display:inline-flex}@media not all and (min-width:48rem){button,.btn,.cbi-button{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}}:is(button,.btn,.cbi-button)[disabled]{cursor:not-allowed;opacity:.4}:is(button,.btn,.cbi-button)[disabled]:where([data-darkmode=true],[data-darkmode=true] *){opacity:.3}.td :is(button,.btn,.cbi-button){white-space:nowrap;flex:none;width:auto;display:inline-flex}@media not all and (min-width:48rem){.td :is(button,.btn,.cbi-button){min-height:calc(var(--spacing)*9);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.btn,.cbi-button,.cbi-button-default,.cbi-button-download,.cbi-button-find,.cbi-button-link,.cbi-button-up,.cbi-button-down{border-color:var(--secondary);background-color:var(--secondary);color:var(--secondary-foreground)}@media (hover:hover){:is(.btn,.cbi-button,.cbi-button-default,.cbi-button-download,.cbi-button-find,.cbi-button-link,.cbi-button-up,.cbi-button-down):hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){:is(.btn,.cbi-button,.cbi-button-default,.cbi-button-download,.cbi-button-find,.cbi-button-link,.cbi-button-up,.cbi-button-down):hover{background-color:color-mix(in oklab,var(--secondary)90%,transparent)}}}.drag-handle{border-color:var(--muted);background-color:var(--muted);color:var(--muted-foreground)}@media (hover:hover){.drag-handle:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.drag-handle:hover{background-color:color-mix(in oklab,var(--muted)90%,transparent)}}}.btn.primary,.cbi-button-action,.cbi-button-apply,.cbi-button-reload,.cbi-button-add,.cbi-button-edit{border-color:var(--primary);background-color:var(--primary);color:var(--primary-foreground)}@media (hover:hover){:is(.btn.primary,.cbi-button-action,.cbi-button-apply,.cbi-button-reload,.cbi-button-add,.cbi-button-edit):hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){:is(.btn.primary,.cbi-button-action,.cbi-button-apply,.cbi-button-reload,.cbi-button-add,.cbi-button-edit):hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}}.cbi-button-positive,.cbi-button-fieldadd,.cbi-button-save{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.cbi-button-positive,.cbi-button-fieldadd,.cbi-button-save{border-color:color-mix(in oklab,var(--primary)25%,transparent)}}.cbi-button-positive,.cbi-button-fieldadd,.cbi-button-save{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.cbi-button-positive,.cbi-button-fieldadd,.cbi-button-save{background-color:color-mix(in oklab,var(--primary)25%,transparent)}}.cbi-button-positive,.cbi-button-fieldadd,.cbi-button-save{color:var(--primary)}@media (hover:hover){:is(.cbi-button-positive,.cbi-button-fieldadd,.cbi-button-save):hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){:is(.cbi-button-positive,.cbi-button-fieldadd,.cbi-button-save):hover{background-color:color-mix(in oklab,var(--primary)30%,transparent)}}}.cbi-button-negative,.cbi-section-remove .cbi-button,.cbi-button-reset,.cbi-button-remove{border-color:var(--destructive);background-color:var(--destructive);color:var(--destructive-foreground)}@media (hover:hover){:is(.cbi-button-negative,.cbi-section-remove .cbi-button,.cbi-button-reset,.cbi-button-remove):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){:is(.cbi-button-negative,.cbi-section-remove .cbi-button,.cbi-button-reset,.cbi-button-remove):hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}}input:disabled{cursor:not-allowed;opacity:.4}input:disabled:where([data-darkmode=true],[data-darkmode=true] *){opacity:.3}input[type=text],input[type=password],.cbi-input-text,.cbi-input{border-radius:var(--radius-2xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);position:relative}@supports (color:color-mix(in lab, red, red)){input[type=text],input[type=password],.cbi-input-text,.cbi-input{border-color:color-mix(in oklab,var(--border)70%,transparent)}}input[type=text],input[type=password],.cbi-input-text,.cbi-input{background-color:var(--page-bg);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--foreground)}:is(input[type=text],input[type=password],.cbi-input-text,.cbi-input)::placeholder{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){:is(input[type=text],input[type=password],.cbi-input-text,.cbi-input)::placeholder{color:color-mix(in oklab,var(--muted-foreground)70%,transparent)}}input[type=text],input[type=password],.cbi-input-text,.cbi-input{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;transition-duration:.2s}:is(input[type=text],input[type=password],.cbi-input-text,.cbi-input):focus{border-color:var(--primary);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){:is(input[type=text],input[type=password],.cbi-input-text,.cbi-input):focus{--tw-ring-color:color-mix(in oklab,var(--primary)20%,transparent)}}:is(input[type=text],input[type=password],.cbi-input-text,.cbi-input):focus{--tw-outline-style:none;outline-style:none}.table.cbi-section-table :is(input[type=text],input[type=password],.cbi-input-text,.cbi-input){width:100%}.cbi-input-text{min-width:calc(var(--spacing)*20)}@media not all and (min-width:48rem){.cbi-input-text{min-width:calc(var(--spacing)*14)}}#localtime{min-width:calc(var(--spacing)*70)}input[type=radio],input[type=checkbox]{margin-right:calc(var(--spacing)*3);height:calc(var(--spacing)*4);width:calc(var(--spacing)*4);cursor:pointer;appearance:none;display:inline-block;position:relative}:is(input[type=radio],input[type=checkbox]):before{content:var(--tw-content);content:var(--tw-content);top:calc(var(--spacing)*0);content:var(--tw-content);left:calc(var(--spacing)*0);content:var(--tw-content);height:calc(var(--spacing)*4);content:var(--tw-content);width:calc(var(--spacing)*4);content:var(--tw-content);border-style:var(--tw-border-style);content:var(--tw-content);border-width:1px;border-color:var(--border);position:absolute}@supports (color:color-mix(in lab, red, red)){:is(input[type=radio],input[type=checkbox]):before{border-color:color-mix(in oklab,var(--border)70%,transparent)}}:is(input[type=radio],input[type=checkbox]):before{content:var(--tw-content);background-color:var(--page-bg);content:var(--tw-content);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));content:var(--tw-content);--tw-duration:.2s;transition-duration:.2s}:is(input[type=radio],input[type=checkbox]):after{content:var(--tw-content);content:var(--tw-content);top:calc(var(--spacing)*.5);content:var(--tw-content);left:calc(var(--spacing)*.5);content:var(--tw-content);height:calc(var(--spacing)*3);content:var(--tw-content);width:calc(var(--spacing)*3);content:var(--tw-content);background-color:var(--input-checked);content:var(--tw-content);opacity:0;content:var(--tw-content);transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));content:var(--tw-content);--tw-duration:.2s;transition-duration:.2s;position:absolute}:is(input[type=radio],input[type=checkbox]):checked:before{content:var(--tw-content);border-color:var(--primary);content:var(--tw-content);background-color:var(--primary)}:is(input[type=radio],input[type=checkbox]):checked:after{content:var(--tw-content);opacity:1}@media (hover:hover){:is(input[type=radio],input[type=checkbox]):hover:before{content:var(--tw-content);border-color:var(--border)}}:is(input[type=radio],input[type=checkbox]):focus:before{content:var(--tw-content);border-color:var(--primary);content:var(--tw-content);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);content:var(--tw-content);--tw-ring-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){:is(input[type=radio],input[type=checkbox]):focus:before{--tw-ring-color:color-mix(in oklab,var(--primary)20%,transparent)}}:is(input[type=radio],input[type=checkbox]):focus:before{content:var(--tw-content);--tw-outline-style:none;outline-style:none}:is(input[type=radio],input[type=checkbox]):disabled{cursor:not-allowed}input[type=radio]:before{content:var(--tw-content);border-radius:3.40282e38px}input[type=radio]:after{content:var(--tw-content);-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='currentColor'%3e%3ccircle%20cx='12'%20cy='12'%20r='6'/%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='currentColor'%3e%3ccircle%20cx='12'%20cy='12'%20r='6'/%3e%3c/svg%3e") 50%/cover no-repeat}input[type=checkbox]:before{content:var(--tw-content);border-radius:.25rem}input[type=checkbox]:after{content:var(--tw-content);-webkit-mask:url("data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1760890864667'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='18898'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M918.8%2083.7c-43.5-30.3-104-19.5-134.6%2024.1l-425.8%20606-127-135.7c-36.4-38.9-98.1-41.1-137-4.8-39%2036.2-41.1%2097.7-4.7%20136.6l206.5%20220.7c4.7%205%209.8%209.4%2015.1%2013.1%200.7%200.5%201.4%201%202.2%201.5%2043.5%2030.3%20104%2019.5%20134.6-24.1l494-703.2c30.7-43.5%2020.1-103.9-23.3-134.2z'%20fill='%230f162b'%20p-id='18899'%3e%3c/path%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1760890864667'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='18898'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M918.8%2083.7c-43.5-30.3-104-19.5-134.6%2024.1l-425.8%20606-127-135.7c-36.4-38.9-98.1-41.1-137-4.8-39%2036.2-41.1%2097.7-4.7%20136.6l206.5%20220.7c4.7%205%209.8%209.4%2015.1%2013.1%200.7%200.5%201.4%201%202.2%201.5%2043.5%2030.3%20104%2019.5%20134.6-24.1l494-703.2c30.7-43.5%2020.1-103.9-23.3-134.2z'%20fill='%230f162b'%20p-id='18899'%3e%3c/path%3e%3c/svg%3e") 50%/cover no-repeat}.cbi-checkbox{align-items:center;display:inline-flex;position:relative}textarea{min-height:calc(var(--spacing)*24);resize:vertical;border-radius:var(--radius-2xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);width:100%}@supports (color:color-mix(in lab, red, red)){textarea{border-color:color-mix(in oklab,var(--border)70%,transparent)}}textarea{background-color:var(--page-bg);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--foreground)}textarea::placeholder{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){textarea::placeholder{color:color-mix(in oklab,var(--muted-foreground)70%,transparent)}}textarea{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;transition-duration:.2s}textarea:focus{border-color:var(--primary);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){textarea:focus{--tw-ring-color:color-mix(in oklab,var(--primary)20%,transparent)}}textarea:focus{--tw-outline-style:none;outline-style:none}textarea[disabled]{cursor:not-allowed;opacity:.4}textarea[disabled]:where([data-darkmode=true],[data-darkmode=true] *){opacity:.3}select{appearance:none;border-radius:var(--radius-2xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){select{border-color:color-mix(in oklab,var(--border)70%,transparent)}}select{background-color:var(--page-bg);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);padding-right:calc(var(--spacing)*10);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--foreground);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;transition-duration:.2s}select:focus{border-color:var(--primary);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){select:focus{--tw-ring-color:color-mix(in oklab,var(--primary)20%,transparent)}}select:focus{--tw-outline-style:none;outline-style:none}select{background-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M5.22%208.22a.75.75%200%200%201%201.06%200L10%2011.94l3.72-3.72a.75.75%200%201%201%201.06%201.06l-4.25%204.25a.75.75%200%200%201-1.06%200L5.22%209.28a.75.75%200%200%201%200-1.06'%20clip-rule='evenodd'/%3e%3c/svg%3e");background-position:right .75rem center;background-repeat:no-repeat;background-size:16px}select:where([data-darkmode=true],[data-darkmode=true] *){background-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20width='24'%20height='24'%20fill='%23ffffff'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M5.22%208.22a.75.75%200%200%201%201.06%200L10%2011.94l3.72-3.72a.75.75%200%201%201%201.06%201.06l-4.25%204.25a.75.75%200%200%201-1.06%200L5.22%209.28a.75.75%200%200%201%200-1.06'%20clip-rule='evenodd'/%3e%3c/svg%3e")}select[disabled]{cursor:not-allowed;opacity:.4}select[disabled]:where([data-darkmode=true],[data-darkmode=true] *){opacity:.3}.cbi-dropdown{min-width:fit-content;max-width:100%;height:fit-content;padding:calc(var(--spacing)*0);white-space:nowrap;--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;flex-shrink:0;align-items:center;transition-duration:.2s;display:inline-flex}.cbi-dropdown[disabled]{pointer-events:none;opacity:.4}.cbi-dropdown[disabled]:where([data-darkmode=true],[data-darkmode=true] *){opacity:.3}.cbi-dropdown:not(.btn):not(.cbi-button){border-radius:var(--radius-2xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.cbi-dropdown:not(.btn):not(.cbi-button){border-color:color-mix(in oklab,var(--border)70%,transparent)}}.cbi-dropdown:not(.btn):not(.cbi-button){background-color:var(--page-bg)}.cbi-dropdown:not(.btn):not(.cbi-button)>ul>li[placeholder]{display:none}.cbi-dropdown>ul{margin:calc(var(--spacing)*0);align-items:center;gap:calc(var(--spacing)*.5);flex-wrap:nowrap;flex:1;list-style-type:none;display:flex;overflow:hidden}@media not all and (min-width:48rem){.cbi-dropdown>ul{flex-wrap:wrap}}.cbi-dropdown>ul>li{margin:calc(var(--spacing)*0);align-items:center;gap:calc(var(--spacing)*1);padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*1.5);list-style-type:none;display:none;overflow:hidden}.cbi-dropdown>ul>li[display]{display:flex!important}.cbi-dropdown>ul>li .hide-open{display:block}.cbi-dropdown>ul>li .hide-close{display:none}.cbi-dropdown>ul>li>form{pointer-events:none;display:none}.cbi-dropdown>ul>li>label{align-items:center;gap:calc(var(--spacing)*2);display:flex}.cbi-dropdown>ul>li img{height:calc(var(--spacing)*5);width:calc(var(--spacing)*5);vertical-align:middle;flex:none}.cbi-dropdown>ul>li span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cbi-dropdown>ul.dropdown{left:calc(var(--spacing)*0);z-index:60;border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);width:fit-content;min-width:100%;position:absolute;overflow-y:auto}@supports (color:color-mix(in lab, red, red)){.cbi-dropdown>ul.dropdown{border-color:color-mix(in oklab,var(--border)60%,transparent)}}.cbi-dropdown>ul.dropdown{background-color:var(--page-bg)}@supports (color:color-mix(in lab, red, red)){.cbi-dropdown>ul.dropdown{background-color:color-mix(in oklab,var(--page-bg)95%,transparent)}}.cbi-dropdown>ul.dropdown{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.cbi-dropdown>ul.dropdown>li{min-height:calc(var(--spacing)*9);cursor:pointer;width:100%;padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--muted-foreground)}@media (hover:hover){.cbi-dropdown>ul.dropdown>li:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.cbi-dropdown>ul.dropdown>li:hover{background-color:color-mix(in oklab,var(--primary)15%,transparent)}}}.cbi-dropdown>ul.preview{display:none}.cbi-dropdown[empty]>ul{max-width:1px;max-height:1px}.cbi-dropdown[empty]>ul>li,.cbi-dropdown[optional][open]>ul.dropdown>li[placeholder]{display:block}.cbi-dropdown[open]{border-color:var(--primary);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--primary);position:relative}@supports (color:color-mix(in lab, red, red)){.cbi-dropdown[open]{--tw-ring-color:color-mix(in oklab,var(--primary)20%,transparent)}}.cbi-dropdown[open]>ul.dropdown{width:auto;max-width:none;display:block}.cbi-dropdown[open]>ul.dropdown>li{display:flex}.cbi-dropdown[open]>ul.dropdown>li[selected]{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.cbi-dropdown[open]>ul.dropdown>li[selected]{background-color:color-mix(in oklab,var(--primary)20%,transparent)}}.cbi-dropdown[open]>ul.dropdown>li[selected]{color:var(--primary)}.cbi-dropdown[open]>ul.dropdown>li[unselectable]{opacity:.4}.cbi-dropdown[open]>ul.dropdown>li[unselectable]:where([data-darkmode=true],[data-darkmode=true] *){opacity:.3}.cbi-dropdown[open]>ul.dropdown>li .hide-open{display:none}.cbi-dropdown[open]>ul.dropdown>li .hide-close{display:block}.cbi-dropdown[open]>ul.preview{display:flex}:is(.cbi-dropdown[multiple][more],.cbi-dropdown[multiple][empty])>.more{padding-inline:calc(var(--spacing)*2.5);padding-block:calc(var(--spacing)*1.5);flex:none;display:flex}.cbi-dropdown[multiple][open]>ul.dropdown>li>form{align-items:center;display:flex}.cbi-dropdown[multiple]>ul>li>label{display:flex}.cbi-dropdown>.open{cursor:pointer;border-left-style:var(--tw-border-style);border-left-width:1px;border-color:var(--border);flex:none;justify-content:center;align-items:center;display:flex}@supports (color:color-mix(in lab, red, red)){.cbi-dropdown>.open{border-color:color-mix(in oklab,var(--border)70%,transparent)}}.cbi-dropdown>.open{padding-inline:calc(var(--spacing)*2.5);padding-block:calc(var(--spacing)*.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:currentColor}.cbi-dropdown>.more{display:none}.cbi-tooltip{z-index:110;max-width:var(--container-xs);--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y);transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,);border-radius:var(--radius-xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);position:absolute}@supports (color:color-mix(in lab, red, red)){.cbi-tooltip{border-color:color-mix(in oklab,var(--border)60%,transparent)}}.cbi-tooltip{background-color:var(--tooltip-bg);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));overflow-wrap:normal;word-break:normal;white-space:normal;color:var(--foreground);opacity:0;--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-backdrop-blur:blur(var(--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,);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;--tw-ease:var(--ease-out);transition-duration:.3s;transition-timing-function:var(--ease-out)}.cbi-tooltip.error{border-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.cbi-tooltip.error{border-color:color-mix(in oklab,var(--error)40%,transparent)}}.cbi-tooltip.error{background-color:var(--error);color:var(--error-foreground)}.cbi-tooltip.success{border-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.cbi-tooltip.success{border-color:color-mix(in oklab,var(--success)40%,transparent)}}.cbi-tooltip.success{background-color:var(--success);color:var(--success-foreground)}.cbi-tooltip.info{border-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.cbi-tooltip.info{border-color:color-mix(in oklab,var(--info)40%,transparent)}}.cbi-tooltip.info{background-color:var(--info);color:var(--info-foreground)}.cbi-tooltip.notice{border-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.cbi-tooltip.notice{border-color:color-mix(in oklab,var(--warning)40%,transparent)}}.cbi-tooltip.notice{background-color:var(--warning);color:var(--warning-foreground)}.cbi-tooltip-container,[data-tooltip]{cursor:help;white-space:nowrap;text-underline-offset:2px;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;text-decoration-line:underline;text-decoration-style:dotted;text-decoration-color:currentColor;transition-duration:.2s;display:inline-block;position:relative}:is(.cbi-tooltip-container,[data-tooltip]) .cbi-tooltip{visibility:hidden;--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y);transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,);opacity:0;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;--tw-ease:var(--ease-out);transition-duration:.3s;transition-timing-function:var(--ease-out)}:is(.cbi-tooltip-container,[data-tooltip]):hover .cbi-tooltip{visibility:visible;--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y);opacity:1}.alert-message{top:calc(var(--spacing)*14);z-index:40;margin-bottom:calc(var(--spacing)*4);border-radius:var(--radius-4xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--default);position:sticky}@supports (color:color-mix(in lab, red, red)){.alert-message{border-color:color-mix(in oklab,var(--default)30%,transparent)}}.alert-message{background-color:var(--default);padding:calc(var(--spacing)*6);color:var(--default-foreground)}@media not all and (min-width:48rem){.alert-message{margin-inline:calc(var(--spacing)*0);margin-bottom:calc(var(--spacing)*3);border-radius:var(--radius-3xl);padding:calc(var(--spacing)*4)}}.alert-message.modal{position:static;top:auto}.modal .alert-message{margin-bottom:calc(var(--spacing)*0)}.login-shell .alert-message{margin-bottom:calc(var(--spacing)*0);border-radius:var(--radius-2xl);padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*2.5);text-align:center;font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}@media not all and (min-width:48rem){.login-shell .alert-message{padding-inline:calc(var(--spacing)*.5)}}.alert-message.success{border-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.alert-message.success{border-color:color-mix(in oklab,var(--success)30%,transparent)}}.alert-message.success{background-color:var(--success);color:var(--success-foreground)}.alert-message.info{border-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.alert-message.info{border-color:color-mix(in oklab,var(--info)30%,transparent)}}.alert-message.info{background-color:var(--info);color:var(--info-foreground)}.alert-message.warning,.alert-message.notice{border-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.alert-message.warning,.alert-message.notice{border-color:color-mix(in oklab,var(--warning)30%,transparent)}}.alert-message.warning,.alert-message.notice{background-color:var(--warning);color:var(--warning-foreground)}.alert-message.error,.alert-message.danger{border-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.alert-message.error,.alert-message.danger{border-color:color-mix(in oklab,var(--error)30%,transparent)}}.alert-message.error,.alert-message.danger{background-color:var(--error);color:var(--error-foreground)}.alert-message h4,.alert-message h5,.alert-message pre,.alert-message ul,.alert-message li,.alert-message p{border-style:var(--tw-border-style);color:inherit;background-color:#0000;border-width:0}.alert-message h4{margin-bottom:calc(var(--spacing)*2);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}@media not all and (min-width:48rem){.alert-message h4{margin-bottom:calc(var(--spacing)*1.5);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}.alert-message p{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}@media not all and (min-width:48rem){.alert-message p{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.alert-message .right{margin-top:calc(var(--spacing)*4)}@media not all and (min-width:48rem){.alert-message .right{margin-top:calc(var(--spacing)*3)}}.cbi-progressbar{height:calc(var(--spacing)*3.5);cursor:help;background-color:var(--secondary);border-radius:3.40282e38px;width:100%;position:relative;overflow:hidden}.cbi-progressbar:before{content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y);content:var(--tw-content);--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y);content:var(--tw-content);border-radius:var(--radius-2xl);content:var(--tw-content);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));content:var(--tw-content);white-space:nowrap;content:var(--tw-content);color:var(--foreground);--tw-content:attr(title);content:var(--tw-content);position:absolute;top:50%;left:50%}@media not all and (min-width:48rem){.cbi-progressbar{height:calc(var(--spacing)*4);border-radius:var(--radius-2xl)}.cbi-progressbar:before{content:var(--tw-content);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));content:var(--tw-content);--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}}@media not all and (min-width:40rem){[data-page=admin-system-package-manager] .cbi-progressbar:before{content:var(--tw-content);font-size:10px}}.cbi-progressbar>div{--tw-gradient-position:to right;height:100%}@supports (background-image:linear-gradient(in lab, red, red)){.cbi-progressbar>div{--tw-gradient-position:to right in oklab}}.cbi-progressbar>div{background-image:linear-gradient(var(--tw-gradient-stops));--tw-gradient-from:var(--progress-bar-start);--tw-gradient-to:var(--progress-bar-end);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position));transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;transition-duration:.3s}.label{background-color:var(--default);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold);color:var(--default-foreground);text-transform:uppercase;border-radius:3.40282e38px}.label.important{background-color:var(--info);color:var(--info-foreground)}.label.warning{background-color:var(--error);color:var(--error-foreground)}.label.success{background-color:var(--success);color:var(--success-foreground)}.label.notice{background-color:var(--warning);color:var(--warning-foreground)}.zonebadge{align-items:center;gap:calc(var(--spacing)*1.5);border-style:var(--tw-border-style);border-width:1px;border-color:var(--secondary);background-color:var(--secondary);padding-inline:calc(var(--spacing)*1);padding-block:calc(var(--spacing)*1.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--secondary-foreground);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;border-radius:3.40282e38px;transition-duration:.2s;display:inline-flex;overflow:visible}@media (hover:hover){.zonebadge:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media not all and (min-width:48rem){.zonebadge{gap:calc(var(--spacing)*1);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}.zonebadge[style*=--zone-color-rgb]{background-color:rgb(var(--zone-color-rgb),.7)!important}.zonebadge[style*=--zone-color-rgb] em{color:var(--default-foreground)}.cbi-dropdown .zonebadge{border-radius:var(--radius-xl);padding-inline:calc(var(--spacing)*1);padding-block:calc(var(--spacing)*.5)}.ifacebadge{cursor:default;align-items:center;gap:calc(var(--spacing)*2);border-radius:var(--radius-2xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);background-color:var(--label-surface);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--default-foreground);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;flex-wrap:wrap;transition-duration:.2s;display:inline-flex}@media (hover:hover){.ifacebadge:hover{border-color:var(--border);background-color:var(--label-surface);--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media not all and (min-width:48rem){.ifacebadge{gap:calc(var(--spacing)*1.5);padding-inline:calc(var(--spacing)*2.5);padding-block:calc(var(--spacing)*1.5);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}.cbi-dropdown .ifacebadge,.cbi-tooltip .ifacebadge{flex-wrap:nowrap}.zonebadge>.ifacebadge,.cbi-dropdown .ifacebadge{border-radius:var(--radius-2xl);padding-inline:calc(var(--spacing)*1.5);padding-block:calc(var(--spacing)*0)}:is(.zonebadge>.ifacebadge,.cbi-dropdown .ifacebadge) img{margin-right:calc(var(--spacing)*1);width:calc(var(--spacing)*4)}.ifacebadge>img{width:calc(var(--spacing)*5);flex-shrink:0;align-self:center}@media not all and (min-width:48rem){.ifacebadge>img{width:calc(var(--spacing)*4)}}.ifacebadge>span>.nowrap{margin-bottom:calc(var(--spacing)*1.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));display:inline-block}@media not all and (min-width:48rem){.ifacebadge>span>.nowrap{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}.ifacebadge.ifacebadge-active{border-color:var(--primary);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.ifacebadge.large{min-width:200px;padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*3);flex:1}@media not all and (min-width:48rem){.ifacebadge.large{min-width:180px;padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2.5)}}.cbi-section{margin-bottom:calc(var(--spacing)*3);border-radius:var(--radius-2xl);padding:calc(var(--spacing)*5);overflow:visible}@media not all and (min-width:48rem){.cbi-section{padding:calc(var(--spacing)*3)}}.cbi-section[data-tab-title]{margin:calc(var(--spacing)*0);padding:calc(var(--spacing)*0)}.cbi-section[data-tab-active=true]{margin-bottom:calc(var(--spacing)*3);padding:calc(var(--spacing)*5)}@media not all and (min-width:48rem){.cbi-section[data-tab-active=true]{padding:calc(var(--spacing)*3)}}#maincontent .cbi-section{border-style:var(--tw-border-style);border-width:1px;border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){#maincontent .cbi-section{border-color:color-mix(in oklab,var(--border)30%,transparent)}}#maincontent .cbi-section{background-color:var(--panel-bg);--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media (hover:hover){#maincontent .cbi-section:hover{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){#maincontent .cbi-section:hover{border-color:color-mix(in oklab,var(--border)50%,transparent)}}#maincontent .cbi-section:hover{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.cbi-section>.cbi-title{justify-content:space-between;align-items:flex-start;display:flex}.cbi-section>.cbi-title>h3{flex:1}.cbi-section>.cbi-title>h3 .label[data-clickable]{background-color:var(--label-surface);color:var(--foreground);width:calc(var(--spacing)*7);height:calc(var(--spacing)*7);cursor:pointer;padding:calc(var(--spacing)*0);justify-content:center;align-items:center;display:inline-flex}.cbi-section>.cbi-title>h3 .label[data-clickable]:before{content:var(--tw-content);width:calc(var(--spacing)*4);height:calc(var(--spacing)*4);content:var(--tw-content);content:var(--tw-content);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));content:var(--tw-content);--tw-duration:.3s;background-color:currentColor;transition-duration:.3s}@media (hover:hover){.cbi-section>.cbi-title>h3 .label[data-clickable]:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.cbi-section>.cbi-title>h3 .label[data-clickable]:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}@media not all and (min-width:48rem){.cbi-section>.cbi-title>h3 .label[data-clickable]{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}}.cbi-section>.cbi-title>h3 span[data-indicator=poll-status]{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5);cursor:pointer;font-size:0;position:relative}.cbi-section>.cbi-title>h3 span[data-indicator=poll-status]:before{content:var(--tw-content);content:var(--tw-content);width:calc(var(--spacing)*5);height:calc(var(--spacing)*5);content:var(--tw-content);content:var(--tw-content);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));content:var(--tw-content);--tw-duration:.3s;content:var(--tw-content);--tw-ease:var(--ease-out);transition-duration:.3s;transition-timing-function:var(--ease-out);background-color:currentColor;position:absolute}@media (hover:hover){.cbi-section>.cbi-title>h3 span[data-indicator=poll-status]:hover:before{content:var(--tw-content);--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}}.cbi-section>.cbi-title>h3 span[data-indicator=poll-status]:active:before{content:var(--tw-content);--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.cbi-section>.cbi-title>h3 span[data-indicator=poll-status][data-style=active]:before{content:var(--tw-content);content:var(--tw-content);rotate:none;-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M8.22%205.22a.75.75%200%200%201%201.06%200l4.25%204.25a.75.75%200%200%201%200%201.06l-4.25%204.25a.75.75%200%200%201-1.06-1.06L11.94%2010L8.22%206.28a.75.75%200%200%201%200-1.06'%20clip-rule='evenodd'/%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M8.22%205.22a.75.75%200%200%201%201.06%200l4.25%204.25a.75.75%200%200%201%200%201.06l-4.25%204.25a.75.75%200%200%201-1.06-1.06L11.94%2010L8.22%206.28a.75.75%200%200%201%200-1.06'%20clip-rule='evenodd'/%3e%3c/svg%3e") 50%/cover no-repeat}.cbi-section>.cbi-title>h3 span[data-indicator=poll-status][data-style=inactive]:before{content:var(--tw-content);content:var(--tw-content);rotate:90deg;-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M8.22%205.22a.75.75%200%200%201%201.06%200l4.25%204.25a.75.75%200%200%201%200%201.06l-4.25%204.25a.75.75%200%200%201-1.06-1.06L11.94%2010L8.22%206.28a.75.75%200%200%201%200-1.06'%20clip-rule='evenodd'/%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M8.22%205.22a.75.75%200%200%201%201.06%200l4.25%204.25a.75.75%200%200%201%200%201.06l-4.25%204.25a.75.75%200%200%201-1.06-1.06L11.94%2010L8.22%206.28a.75.75%200%200%201%200-1.06'%20clip-rule='evenodd'/%3e%3c/svg%3e") 50%/cover no-repeat}.cbi-section legend{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.cbi-section h3{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.cbi-section h3{border-color:color-mix(in oklab,var(--border)50%,transparent)}}.cbi-section h3{padding-bottom:calc(var(--spacing)*4);color:var(--foreground)}@media not all and (min-width:48rem){.cbi-section h3{margin-inline:calc(var(--spacing)*0);padding-bottom:calc(var(--spacing)*2)}.cbi-section div[style*=display\:grid]{gap:calc(var(--spacing)*3);grid-template-columns:repeat(2,minmax(0,1fr))!important}}.cbi-section .network-status-table{margin-bottom:calc(var(--spacing)*3);justify-content:space-around;gap:calc(var(--spacing)*4);flex-wrap:wrap;display:flex}@media not all and (min-width:48rem){.cbi-section .network-status-table{flex-direction:column}}.cbi-section .cbi-section-create{margin-top:calc(var(--spacing)*6);align-items:center;gap:calc(var(--spacing)*3);flex-wrap:wrap;display:flex}@media not all and (min-width:48rem){.cbi-section .cbi-section-create{margin-inline:calc(var(--spacing)*0);margin-top:calc(var(--spacing)*5);align-items:stretch;gap:calc(var(--spacing)*3);flex-direction:column}}.cbi-section .cbi-section-create>div{flex:none}@media not all and (min-width:48rem){.cbi-section .cbi-section-create>div{flex:1;width:100%}}.ifacebox{min-width:calc(var(--spacing)*40);border-radius:var(--radius-2xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);background-color:var(--panel-bg);flex-direction:column;align-items:stretch;display:inline-flex;position:relative;overflow:visible}@supports (color:color-mix(in lab, red, red)){.ifacebox{background-color:color-mix(in oklab,var(--panel-bg)95%,transparent)}}.ifacebox{text-align:center;font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));--tw-leading:calc(var(--spacing)*5);line-height:calc(var(--spacing)*5);--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media (hover:hover){.ifacebox:hover{border-color:var(--border);--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media not all and (min-width:48rem){.ifacebox{min-width:calc(var(--spacing)*30);border-radius:var(--radius-3xl);border-color:var(--border);flex:1}@supports (color:color-mix(in lab, red, red)){.ifacebox{border-color:color-mix(in oklab,var(--border)70%,transparent)}}.ifacebox{background-color:var(--panel-bg)}@supports (color:color-mix(in lab, red, red)){.ifacebox{background-color:color-mix(in oklab,var(--panel-bg)98%,transparent)}}.ifacebox{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}td .ifacebox{flex-direction:row}}.ifacebox .ifacebox-head{border-top-left-radius:var(--radius-2xl);border-top-right-radius:var(--radius-2xl);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--border);background-color:var(--label-surface);width:100%;padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*3);text-align:center;--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight);color:var(--foreground);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;transition-duration:.2s}@media not all and (min-width:48rem){.ifacebox .ifacebox-head{border-top-left-radius:var(--radius-3xl);border-top-right-radius:var(--radius-3xl);border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.ifacebox .ifacebox-head{border-color:color-mix(in oklab,var(--border)80%,transparent)}}.ifacebox .ifacebox-head{padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:calc(var(--spacing)*5);line-height:calc(var(--spacing)*5);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}}.ifacebox .ifacebox-head[style*=--zone-color-rgb]{background-color:rgb(var(--zone-color-rgb),.75)!important}@media not all and (min-width:48rem){td :is(.ifacebox .ifacebox-head){border-top-left-radius:var(--radius-3xl);border-bottom-left-radius:var(--radius-3xl);border-right-style:var(--tw-border-style);border-right-width:1px;border-bottom-style:var(--tw-border-style);border-bottom-width:0;border-top-right-radius:0;flex-shrink:0;justify-content:center;align-items:center;width:auto;display:flex}}.ifacebox .ifacebox-head.cbi-tooltip-container{background-color:#0000;position:static}.ifacebox .ifacebox-head.cbi-tooltip-container .cbi-tooltip{bottom:calc(var(--spacing)*0);left:calc(var(--spacing)*0)}.ifacebox .ifacebox-head.active{border-color:var(--primary);background-color:var(--primary);color:var(--primary-foreground)}.ifacebox .ifacebox-body{justify-content:space-around;align-items:center;gap:calc(var(--spacing)*2);border-bottom-right-radius:var(--radius-2xl);border-bottom-left-radius:var(--radius-2xl);width:100%;padding:calc(var(--spacing)*4);text-align:center;color:var(--default-foreground);flex-direction:column;flex:1;display:flex}@media not all and (min-width:48rem){.ifacebox .ifacebox-body{border-bottom-right-radius:var(--radius-3xl);border-bottom-left-radius:var(--radius-3xl)}td :is(.ifacebox .ifacebox-body){border-top-right-radius:var(--radius-3xl);border-bottom-right-radius:var(--radius-3xl);padding-block:calc(var(--spacing)*2);padding-right:calc(var(--spacing)*2);padding-left:calc(var(--spacing)*4);border-bottom-left-radius:0;flex-direction:row}}:where(.ifacebox .ifacebox-body>span>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}.ifacebox .ifacebox-body>span{color:var(--foreground)}@media not all and (min-width:48rem){:where(.ifacebox .ifacebox-body>span>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}.ifacebox .ifacebox-body>span{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:calc(var(--spacing)*5);line-height:calc(var(--spacing)*5)}}.network-status-table :is(.ifacebox .ifacebox-body>span){width:100%}.ifacebox .ifacebox-body>span .cbi-tooltip-container+.cbi-tooltip-container{margin-left:calc(var(--spacing)*2)}@media not all and (min-width:48rem){.ifacebox .ifacebox-body>span .cbi-tooltip-container+.cbi-tooltip-container{margin-left:calc(var(--spacing)*1.5)}}.ifacebox .ifacebox-body>span .cbi-tooltip{transition-delay:.2s}.ifacebox .ifacebox-body>span .nowrap{display:inline-block}.ifacebox .ifacebox-body>span>.nowrap:not(:last-child){margin-bottom:calc(var(--spacing)*4)}@media not all and (min-width:48rem){.ifacebox .ifacebox-body>span>.nowrap:not(:last-child){margin-bottom:calc(var(--spacing)*3)}}.ifacebox .ifacebox-body>span img{width:calc(var(--spacing)*6);flex-shrink:0}@media not all and (min-width:48rem){.ifacebox .ifacebox-body>span img{width:calc(var(--spacing)*5)}}.ifacebox .ifacebox-body>div{flex-wrap:wrap;width:100%;display:flex}:where(.ifacebox .ifacebox-body>div>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2.5)*calc(1 - var(--tw-space-y-reverse)))}@media not all and (min-width:48rem){:where(.ifacebox .ifacebox-body>div>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}td :is(.ifacebox .ifacebox-body>div){flex:1;width:auto}:where(td :is(.ifacebox .ifacebox-body>div)>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}}.ifacebox .ifacebox-body>div .ifacebadge{flex:1}.ifacebox .ifacebox-body .cbi-tooltip-container{cursor:help;color:var(--foreground);justify-content:center;align-items:center;display:inline-flex;position:static}.ifacebox .ifacebox-body .cbi-tooltip-container .cbi-tooltip{bottom:calc(var(--spacing)*0)}@media (min-width:48rem){.ifacebox .ifacebox-body .cbi-tooltip-container .cbi-tooltip{left:calc(var(--spacing)*0)}}.ifacebox .ifacebox-body .cbi-tooltip-container .cbi-tooltip .nowrap{white-space:nowrap}.ifacebox .ifacebox-body small{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-leading:calc(var(--spacing)*4);line-height:calc(var(--spacing)*4);display:block}@media not all and (min-width:48rem){td :is(.ifacebox .ifacebox-body small){margin-top:calc(var(--spacing)*0)}}#modal_overlay{pointer-events:none;top:calc(var(--spacing)*0);bottom:calc(var(--spacing)*0);background-color:#0000;display:none;position:fixed;overflow:auto}.modal-overlay-active #modal_overlay{pointer-events:auto;inset:calc(var(--spacing)*0);right:calc(var(--spacing)*0);left:calc(var(--spacing)*0);z-index:100;background-color:var(--overlay-base);grid-template-columns:repeat(1,minmax(0,1fr));place-items:center;display:grid}@supports (color:color-mix(in lab, red, red)){.modal-overlay-active #modal_overlay{background-color:color-mix(in oklab,var(--overlay-base)70%,transparent)}}.modal-overlay-active #modal_overlay{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}#modal_overlay>.modal{width:var(--container-5xl);gap:calc(var(--spacing)*4);border-radius:var(--radius-3xl);border-style:var(--tw-border-style);border-width:1px;border-color:color-mix(in oklab,var(--border)70%,transparent);background-color:var(--page-bg);padding:calc(var(--spacing)*6);overflow-wrap:break-word;white-space:normal;--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-backdrop-blur:blur(var(--blur-lg));--tw-backdrop-saturate:saturate(150%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);flex-direction:column;display:flex}@media not all and (min-width:48rem){#modal_overlay>.modal{gap:calc(var(--spacing)*3);width:100%;padding:calc(var(--spacing)*4)}}#modal_overlay>.modal h4{margin-bottom:calc(var(--spacing)*0);text-align:center}#modal_overlay>.modal h4 em{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--primary)}#modal_overlay>.modal h5{margin-block:calc(var(--spacing)*3);color:var(--foreground)}#modal_overlay>.modal p{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);color:var(--default-foreground)}#modal_overlay>.modal>ul{border-radius:var(--radius-2xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);overflow:auto}@supports (color:color-mix(in lab, red, red)){#modal_overlay>.modal>ul{border-color:color-mix(in oklab,var(--border)60%,transparent)}}#modal_overlay>.modal>ul{background-color:var(--page-bg)}@supports (color:color-mix(in lab, red, red)){#modal_overlay>.modal>ul{background-color:color-mix(in oklab,var(--page-bg)60%,transparent)}}#modal_overlay>.modal>ul{padding:calc(var(--spacing)*3)}#modal_overlay>.modal label.btn{border-style:var(--tw-border-style);border-width:1px;border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){#modal_overlay>.modal label.btn{border-color:color-mix(in oklab,var(--border)60%,transparent)}}#modal_overlay>.modal label.btn{background-color:var(--page-bg)}@supports (color:color-mix(in lab, red, red)){#modal_overlay>.modal label.btn{background-color:color-mix(in oklab,var(--page-bg)60%,transparent)}}#modal_overlay>.modal label.btn{color:var(--foreground)}@media (hover:hover){#modal_overlay>.modal label.btn:hover{border-color:var(--border)}}#modal_overlay>.modal pre{overflow:auto}#modal_overlay>.modal pre.errors{border-color:var(--error)}@supports (color:color-mix(in lab, red, red)){#modal_overlay>.modal pre.errors{border-color:color-mix(in oklab,var(--error)60%,transparent)}}#modal_overlay>.modal pre.errors{background-color:var(--error)}@supports (color:color-mix(in lab, red, red)){#modal_overlay>.modal pre.errors{background-color:color-mix(in oklab,var(--error)20%,transparent)}}#modal_overlay>.modal pre.errors{color:var(--error-foreground)}#modal_overlay>.modal pre+pre{margin-top:calc(var(--spacing)*3)}#modal_overlay>.modal .button-row,#modal_overlay>.modal div.left,#modal_overlay>.modal div.right{gap:calc(var(--spacing)*3);border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--border);flex-shrink:0;display:flex}@supports (color:color-mix(in lab, red, red)){#modal_overlay>.modal .button-row,#modal_overlay>.modal div.left,#modal_overlay>.modal div.right{border-color:color-mix(in oklab,var(--border)40%,transparent)}}#modal_overlay>.modal .button-row,#modal_overlay>.modal div.left,#modal_overlay>.modal div.right{padding:calc(var(--spacing)*4)}@media not all and (min-width:48rem){#modal_overlay>.modal .button-row,#modal_overlay>.modal div.left,#modal_overlay>.modal div.right{gap:calc(var(--spacing)*1.5);padding:calc(var(--spacing)*2.5)}}#modal_overlay>.modal div.left{justify-content:flex-start}#modal_overlay>.modal .button-row,#modal_overlay>.modal div.right{justify-content:flex-end}#modal_overlay>.modal.uci-dialog ins,#modal_overlay>.modal.uci-dialog del,#modal_overlay>.modal.uci-dialog var{font-family:var(--font-mono);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);font-style:normal;text-decoration-line:none}#modal_overlay>.modal.uci-dialog ins{border-style:var(--tw-border-style);border-width:1px;border-color:var(--success);background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){#modal_overlay>.modal.uci-dialog ins{background-color:color-mix(in oklab,var(--success)80%,transparent)}}#modal_overlay>.modal.uci-dialog ins{color:var(--success-foreground)}#modal_overlay>.modal.uci-dialog del{border-style:var(--tw-border-style);border-width:1px;border-color:var(--error);background-color:var(--error)}@supports (color:color-mix(in lab, red, red)){#modal_overlay>.modal.uci-dialog del{background-color:color-mix(in oklab,var(--error)80%,transparent)}}#modal_overlay>.modal.uci-dialog del{color:var(--error-foreground)}#modal_overlay>.modal.uci-dialog var{border-style:var(--tw-border-style);border-width:1px;border-color:var(--info);background-color:var(--info)}@supports (color:color-mix(in lab, red, red)){#modal_overlay>.modal.uci-dialog var{background-color:color-mix(in oklab,var(--info)80%,transparent)}}#modal_overlay>.modal.uci-dialog var{color:var(--info-foreground)}#modal_overlay>.modal.uci-dialog .uci-change-legend{margin-top:calc(var(--spacing)*4);gap:calc(var(--spacing)*3);border-radius:var(--radius-2xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}@supports (color:color-mix(in lab, red, red)){#modal_overlay>.modal.uci-dialog .uci-change-legend{border-color:color-mix(in oklab,var(--border)60%,transparent)}}#modal_overlay>.modal.uci-dialog .uci-change-legend{background-color:var(--page-bg)}@supports (color:color-mix(in lab, red, red)){#modal_overlay>.modal.uci-dialog .uci-change-legend{background-color:color-mix(in oklab,var(--page-bg)60%,transparent)}}#modal_overlay>.modal.uci-dialog .uci-change-legend{padding:calc(var(--spacing)*4)}@media not all and (min-width:48rem){#modal_overlay>.modal.uci-dialog .uci-change-legend{gap:calc(var(--spacing)*2);padding:calc(var(--spacing)*3);grid-template-columns:repeat(1,minmax(0,1fr))}}#modal_overlay>.modal.uci-dialog .uci-change-legend .uci-change-legend-label{align-items:center;gap:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--foreground);display:flex}#modal_overlay>.modal.uci-dialog .uci-change-legend .uci-change-legend-label ins,#modal_overlay>.modal.uci-dialog .uci-change-legend .uci-change-legend-label del,#modal_overlay>.modal.uci-dialog .uci-change-legend .uci-change-legend-label var{height:calc(var(--spacing)*6);min-width:calc(var(--spacing)*6);border-radius:var(--radius-lg);padding-inline:calc(var(--spacing)*2);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);justify-content:center;align-items:center;display:flex}#modal_overlay>.modal.uci-dialog .uci-change-legend .uci-change-legend-label var ins,#modal_overlay>.modal.uci-dialog .uci-change-legend .uci-change-legend-label var del{margin-left:calc(var(--spacing)*1);height:calc(var(--spacing)*4);min-width:calc(var(--spacing)*4);padding-inline:calc(var(--spacing)*1)}#modal_overlay>.modal.uci-dialog .uci-change-list{margin-top:calc(var(--spacing)*4)}:where(#modal_overlay>.modal.uci-dialog .uci-change-list>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}#modal_overlay>.modal.uci-dialog .uci-change-list h5{margin-top:calc(var(--spacing)*6);margin-bottom:calc(var(--spacing)*2);border-radius:var(--radius-xl);background-color:var(--default);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--default-foreground)}#modal_overlay>.modal.uci-dialog .uci-change-list h5:first-child{margin-top:calc(var(--spacing)*0)}#modal_overlay>.modal.uci-dialog .uci-change-list ins,#modal_overlay>.modal.uci-dialog .uci-change-list del{border-radius:var(--radius-xl);padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));display:block}:is(#modal_overlay>.modal.uci-dialog .uci-change-list ins,#modal_overlay>.modal.uci-dialog .uci-change-list del) strong{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}#modal_overlay>.modal.uci-dialog .uci-change-list var{border-radius:var(--radius-lg);padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*1);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));display:inline-block}#modal_overlay>.modal.uci-dialog .uci-change-list var ins,#modal_overlay>.modal.uci-dialog .uci-change-list var del{margin-left:calc(var(--spacing)*1);padding-inline:calc(var(--spacing)*1.5);padding-block:calc(var(--spacing)*.5);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));display:inline-block}@media not all and (min-width:48rem){.mobile-menu-overlay{visibility:hidden;inset:calc(var(--spacing)*0);z-index:60;background-color:var(--overlay-base);position:fixed}@supports (color:color-mix(in lab, red, red)){.mobile-menu-overlay{background-color:color-mix(in oklab,var(--overlay-base)60%,transparent)}}.mobile-menu-overlay{opacity:0;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;transition-duration:.3s}}@media (min-width:48rem){.mobile-menu-overlay{display:none}}@media not all and (min-width:48rem){.mobile-menu-overlay.mobile-menu-open{visibility:visible;opacity:1;--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.mobile-menu-overlay.mobile-menu-open .mobile-nav{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.mobile-menu-overlay .mobile-nav{top:calc(var(--spacing)*0);right:calc(var(--spacing)*0);height:100%;width:calc(var(--spacing)*80);--tw-translate-x:100%;translate:var(--tw-translate-x)var(--tw-translate-y);background-color:var(--page-bg);--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-backdrop-blur:blur(var(--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,);--tw-backdrop-saturate:saturate(150%);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;flex-direction:column;transition-duration:.3s;display:flex;position:absolute}.mobile-menu-overlay .mobile-nav .mobile-nav-header{padding:calc(var(--spacing)*6);padding-bottom:calc(var(--spacing)*4);justify-content:space-between;align-items:center;display:flex}.mobile-menu-overlay .mobile-nav .mobile-nav-header .mobile-nav-title{margin:calc(var(--spacing)*0);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--foreground)}.mobile-menu-overlay .mobile-nav .mobile-nav-header .mobile-nav-close{cursor:pointer;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;transition-duration:.2s}@media (hover:hover){.mobile-menu-overlay .mobile-nav .mobile-nav-header .mobile-nav-close:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}}.mobile-menu-overlay .mobile-nav .mobile-nav-header .mobile-nav-close:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}}.mobile-menu-overlay .mobile-nav .mobile-nav-header .mobile-nav-close svg{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}@media not all and (min-width:48rem){.mobile-menu-overlay .mobile-nav .mobile-nav-header .mobile-nav-close svg{color:var(--foreground);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;transition-duration:.2s}.mobile-menu-overlay .mobile-nav .mobile-nav-list{margin:calc(var(--spacing)*0);gap:calc(var(--spacing)*0);padding:calc(var(--spacing)*0);padding-inline:calc(var(--spacing)*6);flex-direction:column;flex:1;list-style-type:none;display:flex;overflow-y:auto}.mobile-menu-overlay .mobile-nav .mobile-nav-list .mobile-nav-item .mobile-nav-link{width:100%;padding-inline:calc(var(--spacing)*0);padding-block:calc(var(--spacing)*4);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--default-foreground);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;align-items:center;text-decoration-line:none;transition-duration:.3s;display:flex}@media (hover:hover){.mobile-menu-overlay .mobile-nav .mobile-nav-list .mobile-nav-item .mobile-nav-link:hover{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y);color:var(--foreground)}}.mobile-menu-overlay .mobile-nav .mobile-nav-list .mobile-nav-item .mobile-nav-submenu{margin:calc(var(--spacing)*0);padding:calc(var(--spacing)*0);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;--tw-ease:var(--ease-in-out);transition-duration:.3s;transition-timing-function:var(--ease-in-out);list-style-type:none;overflow:hidden}.mobile-menu-overlay .mobile-nav .mobile-nav-list .mobile-nav-item .mobile-nav-submenu .mobile-nav-subitem{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.mobile-menu-overlay .mobile-nav .mobile-nav-list .mobile-nav-item .mobile-nav-submenu .mobile-nav-subitem{border-color:color-mix(in oklab,var(--border)20%,transparent)}}.mobile-menu-overlay .mobile-nav .mobile-nav-list .mobile-nav-item .mobile-nav-submenu .mobile-nav-subitem:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.mobile-menu-overlay .mobile-nav .mobile-nav-list .mobile-nav-item .mobile-nav-submenu .mobile-nav-subitem .mobile-nav-sublink{width:100%;padding-block:calc(var(--spacing)*3);padding-right:calc(var(--spacing)*0);padding-left:calc(var(--spacing)*4);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--default-foreground);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;align-items:center;text-decoration-line:none;transition-duration:.3s;display:flex}@media (hover:hover){.mobile-menu-overlay .mobile-nav .mobile-nav-list .mobile-nav-item .mobile-nav-submenu .mobile-nav-subitem .mobile-nav-sublink:hover{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y);color:var(--foreground)}}}[data-nav-type=mega-menu] .desktop-menu-overlay{pointer-events:none;inset:calc(var(--spacing)*0);z-index:50;background-color:var(--overlay-base);position:fixed}@supports (color:color-mix(in lab, red, red)){[data-nav-type=mega-menu] .desktop-menu-overlay{background-color:color-mix(in oklab,var(--overlay-base)35%,transparent)}}[data-nav-type=mega-menu] .desktop-menu-overlay{opacity:0;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;transition-duration:.3s}@media not all and (min-width:48rem){[data-nav-type=mega-menu] .desktop-menu-overlay{display:none}}[data-nav-type=mega-menu] .desktop-menu-overlay.active{pointer-events:auto;opacity:1;--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}table.table,.table{margin-bottom:calc(var(--spacing)*3);border-collapse:separate;--tw-border-spacing-x:calc(var(--spacing)*0);--tw-border-spacing-y:calc(var(--spacing)*0);width:100%;border-spacing:var(--tw-border-spacing-x)var(--tw-border-spacing-y);border-radius:var(--radius-2xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);overflow:visible}@media not all and (min-width:48rem){table.table,.table{margin-inline:calc(var(--spacing)*0);border-style:var(--tw-border-style);background-color:var(--panel-bg);border-width:0;width:100%;display:block;overflow:visible}@supports (color:color-mix(in lab, red, red)){table.table,.table{background-color:color-mix(in oklab,var(--panel-bg)98%,transparent)}}table.table,.table{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}:is(table.table,.table)[width="100%"]{width:100%}:is(table.table,.table)[width="33%"]{width:33.3333%}:is(table.table,.table) .cbi-section-table-titles{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}:is(:is(table.table,.table) .cbi-section-table-titles.named,:is(table.table,.table) .cbi-section-table-descr.named,:is(table.table,.table) .cbi-section-table-row[data-title]):before{content:var(--tw-content);content:var(--tw-content);border-color:var(--border);content:var(--tw-content);padding-inline:calc(var(--spacing)*3);content:var(--tw-content);padding-block:calc(var(--spacing)*3);content:var(--tw-content);vertical-align:middle;content:var(--tw-content);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));content:var(--tw-content);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-content:attr(data-title);content:var(--tw-content);content:var(--tw-content);display:table-cell}@media not all and (min-width:48rem){:is(:is(table.table,.table) .cbi-section-table-titles.named,:is(table.table,.table) .cbi-section-table-descr.named,:is(table.table,.table) .cbi-section-table-row[data-title]):before{padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));flex:0 0 100%;display:flex}}:is(:is(table.table,.table) .cbi-section-table-titles.named,:is(table.table,.table) .cbi-section-table-descr.named,:is(table.table,.table) .cbi-section-table-row[data-title]):before{content:var(--tw-content)}@media (min-width:48rem){:is(:is(table.table,.table) .cbi-section-table-titles.named,:is(table.table,.table) .cbi-section-table-descr.named,:is(table.table,.table) .cbi-section-table-row[data-title]):before{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}}:is(:is(:is(table.table,.table) .cbi-section-table-titles.named,:is(table.table,.table) .cbi-section-table-descr.named,:is(table.table,.table) .cbi-section-table-row[data-title]):not([data-title]),:is(:is(table.table,.table) .cbi-section-table-titles.named,:is(table.table,.table) .cbi-section-table-descr.named,:is(table.table,.table) .cbi-section-table-row[data-title]):has(td.cbi-section-table-titles)):before{content:var(--tw-content);--tw-content:none;content:none}:is(table.table,.table) .cbi-section-table-titles.named:before{content:var(--tw-content);background-color:var(--label-surface);content:var(--tw-content)}@media not all and (min-width:48rem){:is(table.table,.table) .cbi-section-table-titles.named:before{background-color:var(--label-surface)}}:is(table.table,.table) .cbi-section-table-titles.named:before{content:var(--tw-content)}@media (min-width:48rem){:is(table.table,.table) .cbi-section-table-titles.named:before{border-top-left-radius:var(--radius-2xl)}}@media not all and (min-width:48rem){:is(table.table,.table) tbody,:is(table.table,.table) .tbody{display:block}}:is(table.table,.table) tr,:is(table.table,.table) .tr{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;transition-duration:.2s}@media (hover:hover){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):hover{background-color:var(--label-surface)}}@media not all and (min-width:48rem){:is(table.table,.table) tr,:is(table.table,.table) .tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--border);padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*2);flex-wrap:wrap;display:flex}:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):has(.cbi-progressbar){justify-content:center;align-items:center;display:flex}}@media (min-width:48rem){:is(:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):first-child:not([data-title]) .th,:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):first-child:not([data-title]) .td):first-child{border-top-left-radius:var(--radius-2xl)}:is(:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):first-child .th,:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):first-child .td):last-child{border-top-right-radius:var(--radius-2xl)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):last-child{border-bottom-right-radius:var(--radius-2xl);border-bottom-left-radius:var(--radius-2xl)}}:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):last-child[data-title]:before{content:var(--tw-content);border-bottom-left-radius:var(--radius-2xl);content:var(--tw-content);border-bottom-style:var(--tw-border-style);border-bottom-width:0}:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):last-child .td{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):last-child .td:first-child{border-bottom-left-radius:var(--radius-2xl)}:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):last-child .td:last-child{border-bottom-right-radius:var(--radius-2xl)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr).table-titles,:is(:is(table.table,.table) tr,:is(table.table,.table) .tr).cbi-section-table-titles,:is(:is(table.table,.table) tr,:is(table.table,.table) .tr).cbi-section-table-descr{display:none}:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):first-child:not(.table-titles,.cbi-section-table-titles,.cbi-section-table-descr),:is(:is(table.table,.table) tr,:is(table.table,.table) .tr).table-titles+.tr,:is(:is(table.table,.table) tr,:is(table.table,.table) .tr).cbi-section-table-titles+.tr,:is(:is(table.table,.table) tr,:is(table.table,.table) .tr).cbi-section-table-descr+.tr{border-top-left-radius:var(--radius-2xl);border-top-right-radius:var(--radius-2xl)}}:is(:is(table.table,.table) tr,:is(table.table,.table) .tr).cbi-rowstyle-1{background-color:var(--panel-bg)}:is(:is(table.table,.table) tr,:is(table.table,.table) .tr).cbi-rowstyle-2{background-color:var(--label-surface)}@supports (color:color-mix(in lab, red, red)){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr).cbi-rowstyle-2{background-color:color-mix(in oklab,var(--label-surface)50%,transparent)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-1{flex:2rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-1{width:calc(var(--spacing)*20);max-width:calc(var(--spacing)*28)}}:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-2{white-space:normal}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-2{flex:2 2 4rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-2{width:calc(var(--spacing)*32);max-width:calc(var(--spacing)*40)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-3{flex:3 3 6rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-3{width:calc(var(--spacing)*44);max-width:calc(var(--spacing)*52)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-4{flex:4 4 8rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-4{width:calc(var(--spacing)*56);max-width:calc(var(--spacing)*64)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-5{flex:5 5 10rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-5{width:calc(var(--spacing)*68);max-width:calc(var(--spacing)*76)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-6{flex:6 6 12rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-6{width:calc(var(--spacing)*80);max-width:calc(var(--spacing)*88)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-7{flex:7 7 14rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-7{width:calc(var(--spacing)*92);max-width:calc(var(--spacing)*100)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-8{flex:8 8 16rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-8{width:calc(var(--spacing)*104);max-width:calc(var(--spacing)*112)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-9{flex:9 9 18rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-9{width:calc(var(--spacing)*116);max-width:calc(var(--spacing)*124)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-10{flex:0 0 100%;max-width:calc(100vw - 40px)}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-10{width:calc(var(--spacing)*128);max-width:calc(var(--spacing)*136)}}:is(table.table,.table) th,:is(table.table,.table) .th{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--border);background-color:var(--label-surface);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*3);text-align:left;font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}@media not all and (min-width:48rem){:is(table.table,.table) th,:is(table.table,.table) .th{border-style:var(--tw-border-style);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));border-width:0;flex:50%}}#cbi-samba4 :is(:is(table.table,.table) th,:is(table.table,.table) .th){padding-inline:calc(var(--spacing)*.5);padding-block:calc(var(--spacing)*1.5)}:is(:is(table.table,.table) th,:is(table.table,.table) .th)[width="100%"]{width:100%}@media not all and (min-width:48rem){:is(:is(table.table,.table) th,:is(table.table,.table) .th)[width="100%"]{flex:0 0 100%}}:is(:is(table.table,.table) th,:is(table.table,.table) .th)[width="33%"]{width:33.3333%}@media not all and (min-width:48rem){:is(:is(table.table,.table) th,:is(table.table,.table) .th)[width="33%"]{flex:0 0 33.333%}}:is(:is(table.table,.table) th,:is(table.table,.table) .th)[data-sortable-row=true]{cursor:pointer;-webkit-user-select:none;user-select:none}:is(:is(table.table,.table) th,:is(table.table,.table) .th)[data-sortable-row=true]:after{content:var(--tw-content);margin-left:calc(var(--spacing)*.5);content:var(--tw-content);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}@media (hover:hover){:is(:is(table.table,.table) th,:is(table.table,.table) .th)[data-sortable-row=true]:hover{background-color:var(--label-surface)}}:is(:is(table.table,.table) th,:is(table.table,.table) .th)[data-sortable-row=true][data-sort-direction=asc]:after{--tw-content:"▲";content:var(--tw-content)}:is(:is(table.table,.table) th,:is(table.table,.table) .th)[data-sortable-row=true][data-sort-direction=desc]:after{--tw-content:"▼";content:var(--tw-content)}:is(table.table,.table)[id*=status_leases] .td{max-width:calc(var(--spacing)*62)}@media not all and (min-width:48rem){:is(table.table,.table)[id*=status_leases] .td{max-width:100%}}:is(table.table,.table) td,:is(table.table,.table) .td{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--border);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*3);vertical-align:middle;font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));overflow-wrap:break-word;white-space:normal;display:table-cell}@media not all and (min-width:48rem){:is(table.table,.table) td,:is(table.table,.table) .td{border-style:var(--tw-border-style);padding-inline:calc(var(--spacing)*1);padding-block:calc(var(--spacing)*1);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));border-width:0;flex:50%}}:is(:is(table.table,.table) td,:is(table.table,.table) .td):before{content:var(--tw-content);--tw-content:attr(data-title);content:var(--tw-content);content:var(--tw-content);display:none}@media not all and (min-width:48rem){:is(:is(table.table,.table) td,:is(table.table,.table) .td):before{margin-bottom:calc(var(--spacing)*1);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);display:block}}:is(:is(table.table,.table) td,:is(table.table,.table) .td):before{content:var(--tw-content)}@media not all and (min-width:48rem){:is(:is(table.table,.table) td,:is(table.table,.table) .td):before{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}}#cbi-samba4 :is(:is(table.table,.table) td,:is(table.table,.table) .td){padding-inline:calc(var(--spacing)*.5);padding-block:calc(var(--spacing)*1.5)}[data-page=admin-system-mounts] :is(:is(table.table,.table) td,:is(table.table,.table) .td){max-width:calc(var(--spacing)*104)}@media not all and (min-width:48rem){[data-page=admin-system-mounts] :is(:is(table.table,.table) td,:is(table.table,.table) .td){max-width:100%}#wifi_assoclist_table :is(:is(table.table,.table) td,:is(table.table,.table) .td){padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);flex:0 0 100%}}#wifi_assoclist_table :is(:is(table.table,.table) td,:is(table.table,.table) .td):before{content:var(--tw-content)}@media not all and (min-width:48rem){#wifi_assoclist_table :is(:is(table.table,.table) td,:is(table.table,.table) .td):before{margin-bottom:calc(var(--spacing)*1.5)}}:is(:is(table.table,.table) td,:is(table.table,.table) .td)>input[type=text],:is(:is(table.table,.table) td,:is(table.table,.table) .td)>input[type=password],:is(:is(table.table,.table) td,:is(table.table,.table) .td)>select,:is(:is(table.table,.table) td,:is(table.table,.table) .td)>.cbi-dropdown:not(.btn):not(.cbi-button){width:100%}:is(:is(table.table,.table) td,:is(table.table,.table) .td).cbi-value-field{word-break:break-all}@media not all and (min-width:48rem){:is(:is(table.table,.table) td,:is(table.table,.table) .td).cbi-section-actions{flex:0 0 100%}:is(:is(table.table,.table) td,:is(table.table,.table) .td).cbi-section-actions>div{width:100%}:is(:is(table.table,.table) td,:is(table.table,.table) .td).cbi-section-actions>div>.cbi-button{flex:1}:is(:is(table.table,.table) td,:is(table.table,.table) .td)>.cbi-button{width:100%}}:is(:is(table.table,.table) td,:is(table.table,.table) .td)[width="100%"]{width:100%}@media not all and (min-width:48rem){:is(:is(table.table,.table) td,:is(table.table,.table) .td)[width="100%"]{flex:0 0 100%}}:is(:is(table.table,.table) td,:is(table.table,.table) .td)[width="33%"]{width:33.3333%}@media not all and (min-width:48rem){:is(:is(table.table,.table) td,:is(table.table,.table) .td)[width="33%"]{flex:0 0 33.333%}[data-page=admin-network-network] :is(:is(table.table,.table) td,:is(table.table,.table) .td)[data-name=_ifacebox],[data-page=admin-network-network] :is(:is(table.table,.table) td,:is(table.table,.table) .td)[data-name=_ifacestat]{flex-basis:100%}}.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell{width:auto!important}.cbi-input-invalid,.cbi-value-error{border-color:var(--error)!important}@supports (color:color-mix(in lab, red, red)){.cbi-input-invalid,.cbi-value-error{border-color:color-mix(in oklab,var(--error)70%,transparent)!important}}:is(.cbi-input-invalid,.cbi-value-error):focus{--tw-ring-color:var(--error)!important}@supports (color:color-mix(in lab, red, red)){:is(.cbi-input-invalid,.cbi-value-error):focus{--tw-ring-color:color-mix(in oklab,var(--error)40%,transparent)!important}}.cbi-value{gap:calc(var(--spacing)*6);padding-block:calc(var(--spacing)*1.5);flex-flow:wrap;display:flex}@media not all and (min-width:48rem){.cbi-value{gap:calc(var(--spacing)*1.5);padding-block:calc(var(--spacing)*1);flex-direction:column}}.cbi-value.hidden{display:none}.cbi-value+.cbi-value{margin-top:calc(var(--spacing)*3)}@media not all and (min-width:48rem){.cbi-value+.cbi-value{margin-top:calc(var(--spacing)*2)}}.cbi-value>.cbi-value-title{padding-top:calc(var(--spacing)*1);text-align:right;--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}@media not all and (min-width:48rem){.cbi-value>.cbi-value-title{text-align:left;width:auto}}@media (min-width:48rem){.cbi-value>.cbi-value-title{flex:0 0 12rem}}.cbi-value>.cbi-value-field{flex:1;max-width:100%}.cbi-value>.cbi-value-field:has(>.cbi-dropdown[disabled]){cursor:not-allowed}.cbi-value>.cbi-value-field .cbi-value-description{margin-top:calc(var(--spacing)*1);padding-left:calc(var(--spacing)*4);--tw-leading:1;overflow-wrap:break-word;color:var(--muted-foreground);line-height:1;position:relative}.cbi-value>.cbi-value-field .cbi-value-description:not(:empty):before{content:var(--tw-content);content:var(--tw-content);left:calc(var(--spacing)*-.5);content:var(--tw-content);content:var(--tw-content);width:calc(var(--spacing)*4);height:calc(var(--spacing)*4);content:var(--tw-content);background-color:var(--info-foreground);content:var(--tw-content);display:inline-block;position:absolute;-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2016%2016'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M15%208A7%207%200%201%201%201%208a7%207%200%200%201%2014%200M9%205a1%201%200%201%201-2%200a1%201%200%200%201%202%200M6.75%208a.75.75%200%200%200%200%201.5h.75v1.75a.75.75%200%200%200%201.5%200v-2.5A.75.75%200%200%200%208.25%208z'%20clip-rule='evenodd'/%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2016%2016'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M15%208A7%207%200%201%201%201%208a7%207%200%200%201%2014%200M9%205a1%201%200%201%201-2%200a1%201%200%200%201%202%200M6.75%208a.75.75%200%200%200%200%201.5h.75v1.75a.75.75%200%200%200%201.5%200v-2.5A.75.75%200%200%200%208.25%208z'%20clip-rule='evenodd'/%3e%3c/svg%3e") 50%/cover no-repeat}.cbi-value>.cbi-section,.cbi-value>.cbi-tblsection{width:100%}.cbi-dynlist{width:max-content;max-width:calc(var(--spacing)*120);align-items:flex-start;gap:calc(var(--spacing)*3);flex-direction:column;display:inline-flex}@media not all and (min-width:48rem){.cbi-dynlist{max-width:100%!important}}.cbi-dynlist .item{pointer-events:auto;cursor:move;align-items:flex-start;gap:calc(var(--spacing)*2);border-radius:var(--radius-2xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);flex-direction:column;align-self:stretch;display:inline-flex;position:relative;overflow:hidden}@supports (color:color-mix(in lab, red, red)){.cbi-dynlist .item{border-color:color-mix(in oklab,var(--border)40%,transparent)}}.cbi-dynlist .item{background-color:var(--panel-bg);padding-block:calc(var(--spacing)*3);padding-right:calc(var(--spacing)*10);padding-left:calc(var(--spacing)*4);word-break:break-all;--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;-webkit-user-select:text;user-select:text;transition-duration:.2s}@media not all and (min-width:48rem){.cbi-dynlist .item{width:100%;padding-block:calc(var(--spacing)*2.5);padding-right:calc(var(--spacing)*8);padding-left:calc(var(--spacing)*3)}}.cbi-dynlist .item:after{content:var(--tw-content);content:var(--tw-content);top:calc(var(--spacing)*2.5);content:var(--tw-content);right:calc(var(--spacing)*2);content:var(--tw-content);content:var(--tw-content);height:calc(var(--spacing)*6);content:var(--tw-content);width:calc(var(--spacing)*6);content:var(--tw-content);content:var(--tw-content);cursor:pointer;content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);border-radius:var(--radius-xl);content:var(--tw-content);background-color:var(--muted);content:var(--tw-content);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));content:var(--tw-content);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);content:var(--tw-content);color:var(--muted-foreground);--tw-content:"×";content:var(--tw-content);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex;position:absolute}.cbi-dynlist .item.dragging{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y);cursor:grabbing;opacity:.5;--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.cbi-dynlist .item.drag-over{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y);border-color:color-mix(in oklab,var(--primary)60%,transparent);background-color:color-mix(in oklab,var(--primary)5%,transparent);--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:color-mix(in oklab,var(--primary)30%,transparent)}.cbi-dynlist .item>span,.cbi-dynlist .item>code{pointer-events:none;border-radius:var(--radius-lg);width:100%;font-family:var(--font-mono);--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.cbi-dynlist .placeholder{word-break:break-all}.cbi-dynlist .add-item{align-items:center;gap:calc(var(--spacing)*1.5);border-radius:var(--radius-2xl);border-style:var(--tw-border-style);--tw-border-style:dashed;border-style:dashed;border-width:1px;border-color:var(--border);align-self:stretch;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.cbi-dynlist .add-item{border-color:color-mix(in oklab,var(--border)70%,transparent)}}.cbi-dynlist .add-item{padding-inline:calc(var(--spacing)*1);padding-block:calc(var(--spacing)*1);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;background-color:#0000;transition-duration:.2s}@media (hover:hover){.cbi-dynlist .add-item:hover{border-color:var(--border);background-color:var(--page-bg)}@supports (color:color-mix(in lab, red, red)){.cbi-dynlist .add-item:hover{background-color:color-mix(in oklab,var(--page-bg)50%,transparent)}}}.cbi-dynlist .add-item>input{min-width:calc(var(--spacing)*61);flex:1}.cbi-dynlist .add-item>.cbi-button{min-height:calc(var(--spacing)*6);min-width:calc(var(--spacing)*6);cursor:pointer;border-radius:var(--radius-xl);padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*0);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.cbi-dynlist .add-item>.cbi-button:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.cbi-tabmenu{margin-bottom:calc(var(--spacing)*1);align-items:center;gap:calc(var(--spacing)*1);border-radius:var(--radius-4xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);display:flex;overflow-x:auto}@supports (color:color-mix(in lab, red, red)){.cbi-tabmenu{border-color:color-mix(in oklab,var(--border)60%,transparent)}}.cbi-tabmenu{background-color:var(--label-surface);padding:calc(var(--spacing)*1)}.cbi-tabmenu li{margin:calc(var(--spacing)*0);flex-shrink:0;min-width:fit-content;list-style-type:none;position:relative}.cbi-tabmenu li[data-errors]:after{content:var(--tw-content);content:var(--tw-content);top:calc(var(--spacing)*-.5);content:var(--tw-content);right:calc(var(--spacing)*-1.5);content:var(--tw-content);z-index:20;content:var(--tw-content);content:var(--tw-content);min-height:calc(var(--spacing)*4);content:var(--tw-content);min-width:calc(var(--spacing)*4);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);background-color:var(--accent);content:var(--tw-content);padding-inline:calc(var(--spacing)*1.5);content:var(--tw-content);padding-block:calc(var(--spacing)*.5);content:var(--tw-content);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));content:var(--tw-content);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);content:var(--tw-content);color:var(--accent-foreground);--tw-content:attr(data-errors);content:var(--tw-content);border-radius:3.40282e38px;justify-content:center;align-items:center;display:inline-flex;position:absolute}.cbi-tabmenu li[data-errors]>a{border-style:var(--tw-border-style);border-width:1px;border-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.cbi-tabmenu li[data-errors]>a{border-color:color-mix(in oklab,var(--error)50%,transparent)}}.cbi-tabmenu li>a{border-radius:var(--radius-4xl);padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*2);text-align:center;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);white-space:nowrap;color:var(--muted-foreground);text-decoration-line:none;display:block}@media (hover:hover){.cbi-tabmenu li>a:hover{color:var(--foreground)}}.cbi-tabmenu li.cbi-tab a{background-color:var(--foreground);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--page-bg);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}[data-tab-title]{visibility:hidden;height:calc(var(--spacing)*0);overflow:hidden}[data-tab-active=true]{visibility:visible;height:auto;overflow:visible}#tabmenu{margin-bottom:calc(var(--spacing)*8);width:100%}.tabs{align-items:center;gap:calc(var(--spacing)*0);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--border);display:flex;position:relative;overflow-x:auto}.tabs a{padding-inline:calc(var(--spacing)*8);padding-block:calc(var(--spacing)*4);text-align:center;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);white-space:nowrap;color:var(--muted-foreground);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;transition-duration:.2s;display:block}@media (hover:hover){.tabs a:hover{color:var(--foreground);text-decoration-line:none}}.tabs>li.active{border-bottom-style:var(--tw-border-style);border-bottom-width:2px;border-color:var(--foreground)}.tabs>li.active>a{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--foreground)}.cbi-section-node-tabbed{margin-top:calc(var(--spacing)*6)}.login-screen{min-height:100dvh;padding-inline:calc(var(--spacing)*5);justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.login-screen .login-shell{z-index:10;width:100%;max-width:var(--container-md);align-items:stretch;gap:calc(var(--spacing)*6);flex-direction:column;display:flex;position:relative}.login-screen .login-shell .login-card{border-radius:var(--radius-4xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);background-color:var(--panel-bg);padding:calc(var(--spacing)*10);--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-backdrop-blur:blur(var(--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,);position:relative;overflow:hidden}@media not all and (min-width:48rem){.login-screen .login-shell .login-card{border-radius:var(--radius-3xl);padding:calc(var(--spacing)*6)}}.login-screen .login-shell .login-card .login-brand{align-items:center;gap:calc(var(--spacing)*4);display:flex}.login-screen .login-shell .login-card .login-brand .login-logo{height:calc(var(--spacing)*12);width:calc(var(--spacing)*12);border-radius:var(--radius-2xl);background-color:var(--primary);justify-content:center;align-items:center;display:flex}@supports (color:color-mix(in lab, red, red)){.login-screen .login-shell .login-card .login-brand .login-logo{background-color:color-mix(in oklab,var(--primary)15%,transparent)}}.login-screen .login-shell .login-card .login-brand .login-logo{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.login-screen .login-shell .login-card .login-brand .login-logo{--tw-ring-color:color-mix(in oklab,var(--primary)20%,transparent)}}.login-screen .login-shell .login-card .login-brand .login-logo img{height:calc(var(--spacing)*6);width:calc(var(--spacing)*6)}.login-screen .login-shell .login-card .login-brand .login-title{gap:calc(var(--spacing)*1);flex-direction:column;display:flex}.login-screen .login-shell .login-card .login-brand .login-title .login-hostname{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight);color:var(--foreground)}.login-screen .login-shell .login-card .login-brand .login-title .login-subtitle{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--default-foreground)}.login-screen .login-shell .login-card .login-divider{margin-block:calc(var(--spacing)*6);--tw-gradient-position:to right;width:100%;height:1px}@supports (background-image:linear-gradient(in lab, red, red)){.login-screen .login-shell .login-card .login-divider{--tw-gradient-position:to right in oklab}}.login-screen .login-shell .login-card .login-divider{background-image:linear-gradient(var(--tw-gradient-stops));--tw-gradient-from:transparent;--tw-gradient-via:var(--border);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position));--tw-gradient-to:transparent}@media (min-width:48rem){.login-screen .login-shell .login-card .login-divider{margin-block:calc(var(--spacing)*8)}}.login-screen .login-shell .login-card .login-form{gap:calc(var(--spacing)*6);flex-direction:column;display:flex}@media (min-width:48rem){.login-screen .login-shell .login-card .login-form{gap:calc(var(--spacing)*4)}}.login-screen .login-shell .login-card .login-form .login-fields{gap:calc(var(--spacing)*4);flex-direction:column;display:flex}@media (min-width:48rem){.login-screen .login-shell .login-card .login-form .login-fields{gap:calc(var(--spacing)*5)}}.login-screen .login-shell .login-card .login-form .login-fields .login-field{gap:calc(var(--spacing)*2);flex-direction:column;display:flex}.login-screen .login-shell .login-card .login-form .login-fields .login-field .login-label{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--default-foreground);text-transform:uppercase}.login-screen .login-shell .login-card .login-form .login-fields .login-field .login-input{border-radius:var(--radius-2xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);background-color:var(--panel-bg)}@supports (color:color-mix(in lab, red, red)){.login-screen .login-shell .login-card .login-form .login-fields .login-field .login-input{background-color:color-mix(in oklab,var(--panel-bg)70%,transparent)}}.login-screen .login-shell .login-card .login-form .login-fields .login-field .login-input{padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2.5);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));color:var(--foreground)}.login-screen .login-shell .login-card .login-form .login-fields .login-field .login-input:focus{border-color:var(--primary)}@media (min-width:48rem){.login-screen .login-shell .login-card .login-form .login-actions{padding-top:calc(var(--spacing)*4)}}.login-screen .login-shell .login-card .login-form .login-actions .login-submit{width:100%;padding-block:calc(var(--spacing)*2.5);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.login-screen .login-shell .login-footer{bottom:calc(var(--spacing)*0);--tw-translate-x:calc(calc(1/2*100%)*-1);width:calc(100% - 1.25rem);translate:var(--tw-translate-x)var(--tw-translate-y);padding-bottom:calc(var(--spacing)*4);text-align:center;color:var(--muted-foreground);position:fixed;left:50%}@media not all and (min-width:48rem){.login-screen .login-shell .login-footer{padding-bottom:calc(var(--spacing)*3)}}.login-screen .login-shell .login-footer p{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));white-space:normal}.login-screen .login-shell .login-footer p a{color:var(--primary)}@media (hover:hover){.login-screen .login-shell .login-footer p a:hover{color:var(--primary)}}.collapse{visibility:collapse}.fixed{position:fixed}.static{position:static}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.scrollbar::-webkit-scrollbar-track{background-color:var(--scrollbar-track);border-radius:var(--scrollbar-track-radius)}.scrollbar::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:var(--scrollbar-thumb-radius)}.scrollbar::-webkit-scrollbar-corner{background-color:var(--scrollbar-corner);border-radius:var(--scrollbar-corner-radius)}.scrollbar{scrollbar-width:auto;scrollbar-color:var(--scrollbar-thumb,initial)var(--scrollbar-track,initial)}.scrollbar::-webkit-scrollbar{width:var(--scrollbar-width,16px);height:var(--scrollbar-height,16px);display:block}.hidden{display:none}.table{display:table}.underline{text-decoration-line:underline}@media (min-width:48rem){.left{text-align:left!important}}.left:not(td){text-align:left!important}@media (min-width:48rem){.right{text-align:right!important}}.right:not(td){text-align:right!important}@media (min-width:48rem){.top{vertical-align:top!important}}.top:not(td){vertical-align:top!important}@media (min-width:48rem){.bottom{vertical-align:bottom!important}}.bottom:not(td){vertical-align:bottom!important}@media (min-width:48rem){.center{text-align:center!important}}.center:not(td){text-align:center!important}@media (min-width:48rem){.middle{vertical-align:middle!important}}.middle:not(td){vertical-align:middle!important}@media (min-width:48rem){.nowrap:not(span){white-space:nowrap}}.nowrap:not(span):not(td){white-space:nowrap}.spinning{display:inline-block;position:relative;padding-left:calc(var(--spacing)*8)!important}.spinning:before{content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);width:calc(var(--spacing)*5);height:calc(var(--spacing)*5);content:var(--tw-content);--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y);content:var(--tw-content);animation:var(--animate-spin);content:var(--tw-content);content:var(--tw-content);background-color:currentColor;position:absolute;top:50%;left:6px;-webkit-mask:url("data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1758357645269'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='7610'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M512%2085.333333c235.648%200%20426.666667%20191.018667%20426.666667%20426.666667s-191.018667%20426.666667-426.666667%20426.666667S85.333333%20747.648%2085.333333%20512%20276.352%2085.333333%20512%2085.333333z%20m0%20128a298.666667%20298.666667%200%201%200%200%20597.333334%20298.666667%20298.666667%200%200%200%200-597.333334z'%20fill='%23000000'%20fill-opacity='.05'%20p-id='7611'%3e%3c/path%3e%3cpath%20d='M813.696%20813.696c166.613333-166.613333%20166.613333-436.778667%200-603.392-166.613333-166.613333-436.778667-166.613333-603.392%200A64%2064%200%200%200%20300.8%20300.8a298.666667%20298.666667%200%201%201%20422.4%20422.4%2064%2064%200%200%200%2090.496%2090.496z'%20fill='%23000000'%20p-id='7612'%3e%3c/path%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1758357645269'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='7610'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M512%2085.333333c235.648%200%20426.666667%20191.018667%20426.666667%20426.666667s-191.018667%20426.666667-426.666667%20426.666667S85.333333%20747.648%2085.333333%20512%20276.352%2085.333333%20512%2085.333333z%20m0%20128a298.666667%20298.666667%200%201%200%200%20597.333334%20298.666667%20298.666667%200%200%200%200-597.333334z'%20fill='%23000000'%20fill-opacity='.05'%20p-id='7611'%3e%3c/path%3e%3cpath%20d='M813.696%20813.696c166.613333-166.613333%20166.613333-436.778667%200-603.392-166.613333-166.613333-436.778667-166.613333-603.392%200A64%2064%200%200%200%20300.8%20300.8a298.666667%20298.666667%200%201%201%20422.4%20422.4%2064%2064%200%200%200%2090.496%2090.496z'%20fill='%23000000'%20p-id='7612'%3e%3c/path%3e%3c/svg%3e") 50%/cover no-repeat}#view>.spinning:first-child{place-items:center;width:fit-content;min-height:15vh;margin-inline:auto;display:grid}@media not all and (min-width:48rem){#view>.spinning:first-child{min-height:100dvh}}:root{--background:#f1f5f9;--foreground:#0f172b;--primary:#46a3d1;--primary-foreground:#fff;--secondary:#e2e8f0;--secondary-foreground:#314158;--muted:#f5f5f5;--muted-foreground:#45556c;--destructive:#ffe2df;--destructive-foreground:#6c1517;--accent:#ee343b;--accent-foreground:#fff1f0;--default:#f5f5f5;--default-foreground:#171717;--info:#d3f1ff;--info-foreground:#003f60;--warning:#fbeec9;--warning-foreground:#582f02;--success:#cff6e0;--success-foreground:#003d2a;--error:#ffe2df;--error-foreground:#6c1517;--border:#e4e4e4;--link:#ec6cff;--input-checked:#fff;--label-surface:oklch(from var(--panel-bg)calc(l - .02)c h);--terminal-bg:#1a2029;--terminal-foreground:#fff;--overlay-base:#000;--progress-bar-start:#46a3d1;--progress-bar-end:#4fc3c7;--header-bg:oklch(from var(--background)l c h);--header-interactive:oklch(from var(--header-bg)calc(l - .12)c h);--page-bg:#fff;--panel-bg:#fff;--tooltip-bg:oklch(from var(--page-bg)calc(l - .015)c h);--font-sans:"Lato",ui-sans-serif,system-ui,sans-serif;--font-mono:ui-monospace,"SF Mono",Menlo,Monaco,Consolas,monospace;--spacing:.25rem;--container-max-width:80rem}@supports (color:lab(0% 0 0)){:root{--background:lab(96.286% -.852436 -2.46847);--foreground:lab(7.78673% 1.82345 -15.0537);--primary:lab(63.0437% -17.6746 -32.0381);--primary-foreground:lab(100% 0 0);--secondary:lab(91.7353% -.998765 -4.76968);--secondary-foreground:lab(26.9569% -1.47016 -15.6993);--muted:lab(96.52% -.0000298023 .0000119209);--muted-foreground:lab(35.5623% -1.74978 -15.4316);--destructive:lab(92.5749% 15.3735 8.32583);--destructive-foreground:lab(23.385% 37.9736 23.5817);--accent:lab(53.6853% 69.6775 43.7724);--accent-foreground:lab(96.3359% 6.12152 3.29586);--default:lab(96.52% -.0000298023 .0000119209);--default-foreground:lab(7.78201% -.0000149012 0);--info:lab(93.2141% -10.1735 -14.3943);--info-foreground:lab(24.4811% -7.8918 -24.9024);--warning:lab(94.421% .545532 19.5962);--warning-foreground:lab(24.2528% 17.0621 33.1082);--success:lab(93.715% -16.1219 6.39679);--success-foreground:lab(22.3041% -31.6825 8.84454);--error:lab(92.5749% 15.3735 8.32583);--error-foreground:lab(23.385% 37.9736 23.5817);--border:lab(90.72% .0000298023 -.0000119209);--link:lab(66.1178% 66.0652 -52.4733);--input-checked:lab(100% 0 0);--terminal-bg:lab(11.7506% -.5823 -7.27103);--terminal-foreground:lab(100% 0 0);--overlay-base:lab(0% 0 0);--progress-bar-start:lab(63.0437% -17.6746 -32.0381);--progress-bar-end:lab(72.4424% -32.9195 -12.3464);--page-bg:lab(100% 0 0);--panel-bg:lab(100% 0 0)}}[data-darkmode=true]{--background:#003c38;--foreground:#f1f5f9;--primary:#00958e;--primary-foreground:#fff;--secondary:#314158;--secondary-foreground:#e5e7eb;--muted:#38414f;--muted-foreground:#90a1b9;--destructive:#460809;--destructive-foreground:#ffc6c0;--accent:#6c1517;--accent-foreground:#ffc6c0;--default:#27272a80;--default-foreground:#f9f9ff;--info:#024a7080;--info-foreground:#b0e0f8;--warning:#7b330680;--warning-foreground:#fee685;--success:#004e3b80;--success-foreground:#aff8d0;--error:#8b083680;--error-foreground:#ffc6c0;--border:#364358;--link:#a685ff;--input-checked:#fff;--label-surface:oklch(from var(--panel-bg)calc(l + .04)c h);--terminal-bg:#0a121f;--terminal-foreground:#fff;--overlay-base:#000;--progress-bar-start:#065f46;--progress-bar-end:#009b94;--header-bg:oklch(from var(--page-bg)l c h);--header-interactive:oklch(from var(--header-bg)calc(l + .24)c h);--page-bg:#101828;--panel-bg:#1d293d;--tooltip-bg:oklch(from var(--page-bg)calc(l + .06)c h)}@supports (color:lab(0% 0 0)){[data-darkmode=true]{--background:lab(21.8032% -20.1655 -3.35968);--foreground:lab(96.286% -.852436 -2.46847);--primary:lab(55.0978% -44.5567 -7.62978);--primary-foreground:lab(100% 0 0);--secondary:lab(26.9569% -1.47016 -15.6993);--secondary-foreground:lab(91.6229% -.159115 -2.26791);--muted:lab(27.1597% -.911355 -9.48523);--muted-foreground:lab(65.5349% -2.25151 -14.5072);--destructive:lab(13.003% 29.04 16.7519);--destructive-foreground:lab(84.7556% 43.3341 25.2722);--accent:lab(23.385% 37.9736 23.5817);--accent-foreground:lab(84.7347% 43.595 24.3042);--default:lab(15.7305% .613764 -2.16959/.5);--default-foreground:lab(98.1732% .982702 -3.63715);--info:lab(29.1959% -8.34689 -28.2453/.5);--info-foreground:lab(86.2797% -12.0086 -17.1909);--warning:lab(31.2288% 30.2627 40.0378/.5);--warning-foreground:lab(91.7203% -.505269 49.9084);--success:lab(28.8637% -26.9249 5.45986/.5);--success-foreground:lab(91.9265% -29.2737 11.5846);--error:lab(29.7104% 51.514 12.6253/.5);--error-foreground:lab(84.7347% 43.595 24.3042);--border:lab(27.8781% -.856712 -14.804);--link:lab(62.8239% 34.9159 -60.0512);--input-checked:lab(100% 0 0);--terminal-bg:lab(5.13221% -.0256523 -9.94164);--terminal-foreground:lab(100% 0 0);--overlay-base:lab(0% 0 0);--progress-bar-start:lab(35.2336% -29.9851 7.30804);--progress-bar-end:lab(57.6867% -49.5425 -9.29472);--page-bg:lab(8.11897% .811279 -12.254);--panel-bg:lab(16.132% -.318035 -14.6672)}}@media not all and (min-width:48rem){.diag-style{gap:calc(var(--spacing)*4);grid-template-columns:repeat(1,minmax(0,1fr));display:grid}}.diag-style>div{align-items:center;gap:calc(var(--spacing)*2);flex-direction:column;display:flex}@media not all and (min-width:48rem){.diag-style>div{gap:calc(var(--spacing)*1);width:100%!important}}#file-manager-container{overflow:auto}#file-manager-container #status-bar{border-style:var(--tw-border-style);background-color:var(--page-bg);border-width:0}[data-page=admin-statistics-graphs] [data-plugin] img:where([data-darkmode=true],[data-darkmode=true] *){--tw-hue-rotate:hue-rotate(150deg);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,);--tw-invert:invert(100%)}@media not all and (min-width:48rem){[data-name=bridge-vlan]>div{overflow:visible!important}}[data-page=admin-services-openclash-config] .sub_div img{height:calc(var(--spacing)*5);width:calc(var(--spacing)*5)}@media not all and (min-width:48rem){[data-page=admin-services-openclash-settings] .cbi-value-field .cbi-input-select{width:100%!important}}.Dashboard>.section-content .dashboard-bg.tr{border-radius:0}.Dashboard>.section-content .dashboard-bg{background-color:var(--panel-bg)}@supports (color:color-mix(in lab, red, red)){.Dashboard>.section-content .dashboard-bg{background-color:color-mix(in oklab,var(--panel-bg)95%,transparent)}}.Dashboard>.section-content .dashboard-bg:not(.tr){border-style:var(--tw-border-style);border-width:1px;border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.Dashboard>.section-content .dashboard-bg:not(.tr){border-color:color-mix(in oklab,var(--border)40%,transparent)}}.Dashboard>.section-content .dashboard-bg:not(.tr){--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media (hover:hover){.Dashboard>.section-content .dashboard-bg:not(.tr):hover{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.Dashboard>.section-content .dashboard-bg:not(.tr):hover{border-color:color-mix(in oklab,var(--border)50%,transparent)}}.Dashboard>.section-content .dashboard-bg:not(.tr):hover{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media not all and (min-width:48rem){.Dashboard>.section-content .dashboard-bg{background-color:var(--panel-bg)}@supports (color:color-mix(in lab, red, red)){.Dashboard>.section-content .dashboard-bg{background-color:color-mix(in oklab,var(--panel-bg)98%,transparent)}}.Dashboard>.section-content .dashboard-bg:not(.tr){border-style:var(--tw-border-style);border-width:1px;border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.Dashboard>.section-content .dashboard-bg:not(.tr){border-color:color-mix(in oklab,var(--border)30%,transparent)}}}.Dashboard>.section-content .title img[src*=\.svg]:where([data-darkmode=true],[data-darkmode=true] *){--tw-invert:invert(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.Dashboard>.section-content .title h3{border-style:var(--tw-border-style);padding-bottom:calc(var(--spacing)*4);color:var(--foreground);border-width:0}@media not all and (min-width:48rem){.Dashboard>.section-content .title h3{margin-inline:calc(var(--spacing)*0);padding-bottom:calc(var(--spacing)*2)}}.Dashboard>.section-content .router-status-wifi .wifi-info .devices-info .tr .td:nth-child(3){top:calc(var(--spacing)*0);width:100%;padding-inline:calc(var(--spacing)*0);position:relative}@media not all and (min-width:48rem){.Dashboard>.section-content .router-status-wifi .wifi-info .devices-info .tr .td{flex:50%}}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-spacing-x{syntax:"";inherits:false;initial-value:0}@property --tw-border-spacing-y{syntax:"";inherits:false;initial-value:0}@keyframes spin{to{transform:rotate(360deg)}}
+@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0;--tw-leading:initial;--tw-font-weight:initial;--tw-duration:initial;--tw-tracking:initial;--tw-border-style:solid;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-ease:initial;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-content:"";--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-space-y-reverse:0;--tw-border-spacing-x:0;--tw-border-spacing-y:0}}:root,:host{--font-sans:var(--font-sans);--font-mono:var(--font-mono);--spacing:var(--spacing);--container-xs:20rem;--container-md:28rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25/1.875);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--blur-sm:8px;--blur-md:12px;--blur-lg:16px;--blur-xl:24px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--container-max-width:var(--container-max-width)}*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:not(html)::-webkit-scrollbar-track{background-color:var(--scrollbar-track);border-radius:var(--scrollbar-track-radius)}:not(html)::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:var(--scrollbar-thumb-radius)}:not(html)::-webkit-scrollbar-corner{background-color:var(--scrollbar-corner);border-radius:var(--scrollbar-corner-radius)}:not(html){scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb,initial)var(--scrollbar-track,initial)}:not(html)::-webkit-scrollbar{width:8px;height:8px;display:block}:not(html){--scrollbar-thumb:var(--foreground)}@supports (color:color-mix(in lab, red, red)){:not(html){--scrollbar-thumb:color-mix(in oklab,var(--foreground)70%,transparent)}}:not(html){--scrollbar-thumb-radius:9999px;--scrollbar-track:transparent}html::-webkit-scrollbar-track{background-color:var(--scrollbar-track);border-radius:var(--scrollbar-track-radius)}html::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:var(--scrollbar-thumb-radius)}html::-webkit-scrollbar-corner{background-color:var(--scrollbar-corner);border-radius:var(--scrollbar-corner-radius)}html{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb,initial)var(--scrollbar-track,initial)}html::-webkit-scrollbar{width:8px;height:8px;display:block}html{--scrollbar-thumb:var(--foreground)}@supports (color:color-mix(in lab, red, red)){html{--scrollbar-thumb:color-mix(in oklab,var(--foreground)70%,transparent)}}html{--scrollbar-thumb-radius:9999px;--scrollbar-track:var(--page-bg);background-color:var(--background);height:100%;font-family:var(--font-sans);position:relative}html body{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--foreground);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;background-color:#0000;flex-direction:column;transition-duration:.3s;display:flex;position:relative}html body.modal-overlay-active{height:100vh;overflow:hidden}h1,h2,h3,h4,h5,h6{font-family:var(--font-sans);--tw-leading:var(--leading-tight);line-height:var(--leading-tight);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight);color:var(--foreground)}h1{margin-bottom:calc(var(--spacing)*4);padding-left:calc(var(--spacing)*6);font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}@media not all and (min-width:48rem){h1{padding-left:calc(var(--spacing)*4);font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}}h2{margin-bottom:calc(var(--spacing)*4);padding-left:calc(var(--spacing)*5);font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}@media not all and (min-width:48rem){h2{margin-bottom:calc(var(--spacing)*2);padding-left:calc(var(--spacing)*4);font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}}h3{margin-bottom:calc(var(--spacing)*4);font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}@media not all and (min-width:48rem){h3{margin-bottom:calc(var(--spacing)*2);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}}h4{margin-bottom:calc(var(--spacing)*2);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}@media not all and (min-width:48rem){h4{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}h5{margin-bottom:calc(var(--spacing)*2);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}@media not all and (min-width:48rem){h5{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}h6{margin-bottom:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}@media not all and (min-width:48rem){h6{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}hr{border-style:var(--tw-border-style);border-width:0}strong{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}abbr{cursor:help}p{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);color:var(--default-foreground)}pre{border-radius:calc(var(--radius-base)*1.5);border-style:var(--tw-border-style);border-width:1px;border-color:var(--secondary);display:block}@supports (color:color-mix(in lab, red, red)){pre{border-color:color-mix(in oklab,var(--secondary)60%,transparent)}}pre{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){pre{background-color:color-mix(in oklab,var(--secondary)60%,transparent)}}pre{padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);font-family:var(--font-mono);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);overflow-wrap:break-word;white-space:pre-wrap;color:var(--secondary-foreground)}code{border-radius:calc(var(--radius-base)*.5);background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){code{background-color:color-mix(in oklab,var(--secondary)80%,transparent)}}code{padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*1);font-family:var(--font-mono);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--secondary-foreground)}a{color:var(--link);text-decoration-line:none}@media (hover:hover){a:hover{text-decoration-line:underline}}var{font-family:var(--font-mono);color:var(--link)}small{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--default-foreground)}em{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--muted-foreground);font-style:italic}*{scrollbar-color:initial;scrollbar-width:initial}header{top:calc(var(--spacing)*0);z-index:60;margin-bottom:calc(var(--spacing)*2);background-color:var(--header-bg);position:sticky}header .header-content{height:calc(var(--spacing)*14);padding-inline:calc(var(--spacing)*6);padding-block:calc(var(--spacing)*3);justify-content:space-between;align-items:center;display:flex;position:relative}@media not all and (min-width:48rem){header .header-content{padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*2)}}[data-nav-type=mega-menu] :is(header) .desktop-menu-container{pointer-events:none;inset-inline:calc(var(--spacing)*0);top:calc(var(--spacing)*0);z-index:30;height:calc(var(--spacing)*0);background-color:var(--header-bg);width:100%;position:absolute;overflow:hidden}@supports (color:color-mix(in lab, red, red)){[data-nav-type=mega-menu] :is(header) .desktop-menu-container{background-color:color-mix(in oklab,var(--header-bg)40%,transparent)}}[data-nav-type=mega-menu] :is(header) .desktop-menu-container{opacity:0;--tw-backdrop-blur:blur(var(--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,);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;--tw-ease:var(--ease-in-out);transition-duration:.15s;transition-timing-function:var(--ease-in-out)}@media not all and (min-width:48rem){[data-nav-type=mega-menu] :is(header) .desktop-menu-container{display:none}}[data-nav-type=mega-menu] :is(header) .desktop-menu-container:where([data-darkmode=true],[data-darkmode=true] *){background-color:var(--header-bg)}@supports (color:color-mix(in lab, red, red)){[data-nav-type=mega-menu] :is(header) .desktop-menu-container:where([data-darkmode=true],[data-darkmode=true] *){background-color:color-mix(in oklab,var(--header-bg)90%,transparent)}}[data-nav-type=mega-menu] :is(header) .desktop-menu-container.active{pointer-events:auto;height:var(--mega-menu-height,0);opacity:1}header .brand{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight);color:var(--foreground);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;flex-shrink:0;text-decoration-line:none;transition-duration:.2s;display:inline-block}@media (hover:hover){header .brand:hover{--tw-translate-y:calc(var(--spacing)*-.5);translate:var(--tw-translate-x)var(--tw-translate-y);color:var(--primary)}}@media not all and (min-width:48rem){header .brand{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));flex:1;order:1}}header .nav{z-index:60;margin:calc(var(--spacing)*0);--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y);transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,);align-items:center;gap:calc(var(--spacing)*1);padding:calc(var(--spacing)*0);list-style-type:none;display:flex;position:absolute;left:50%}@media not all and (min-width:48rem){header .nav{display:none}}header .nav>li{position:relative}header .nav>li .menu{border-radius:calc(var(--radius-base)*1.5);padding-inline:calc(var(--spacing)*3.5);padding-block:calc(var(--spacing)*1.5);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--foreground);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;text-decoration-line:none;transition-duration:.15s;display:block}header .nav>li .menu.menu-active{color:var(--foreground)}[data-nav-type=mega-menu] header .nav>li .menu.menu-active{text-underline-offset:4px;text-decoration-line:underline;text-decoration-thickness:2px}[data-nav-type=boxed-dropdown] header .nav>li .menu.menu-active{background-color:var(--header-interactive)}header .nav>li .desktop-nav{pointer-events:none;left:calc(var(--spacing)*0);z-index:40;padding-inline:calc(var(--spacing)*0);padding-top:calc(var(--spacing)*0);opacity:0;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;transition-duration:.15s}[data-nav-type=mega-menu] :is(header .nav>li .desktop-nav){top:calc(var(--spacing)*14);--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y);padding-bottom:calc(var(--spacing)*6);position:fixed;left:50%}[data-nav-type=boxed-dropdown] :is(header .nav>li .desktop-nav){margin-top:calc(var(--spacing)*2);min-width:calc(var(--spacing)*48);position:absolute;top:100%}header .nav>li .desktop-nav.active{pointer-events:auto;opacity:1}[data-nav-type=mega-menu] :is(header .nav>li .desktop-nav .desktop-nav-list){column-gap:calc(var(--spacing)*4);row-gap:calc(var(--spacing)*2);grid-template-columns:repeat(4,minmax(0,1fr));width:max-content;display:grid}[data-nav-type=boxed-dropdown] :is(header .nav>li .desktop-nav .desktop-nav-list){row-gap:calc(var(--spacing)*1);border-radius:calc(var(--radius-base)*3);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);background-color:color-mix(in oklab,var(--header-bg)90%,transparent);padding-block:calc(var(--spacing)*2);--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-backdrop-blur:blur(var(--blur-md));--tw-backdrop-saturate:saturate(150%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;flex-direction:column;transition-duration:.2s;display:flex}header .nav>li .desktop-nav .desktop-nav-list>li{margin:calc(var(--spacing)*0);list-style-type:none}header .nav>li .desktop-nav .desktop-nav-list>li>a{padding-inline:calc(var(--spacing)*4);white-space:nowrap;color:var(--foreground);text-decoration-line:none;display:block}[data-nav-type=mega-menu] :is(header .nav>li .desktop-nav .desktop-nav-list>li>a){padding-block:calc(var(--spacing)*3)}@media (hover:hover){[data-nav-type=mega-menu] :is(header .nav>li .desktop-nav .desktop-nav-list>li>a):hover{text-underline-offset:4px;text-decoration-line:underline;text-decoration-thickness:2px}}[data-nav-type=boxed-dropdown] :is(header .nav>li .desktop-nav .desktop-nav-list>li>a){margin-inline:calc(var(--spacing)*2);border-radius:calc(var(--radius-base)*1.5);padding-block:calc(var(--spacing)*2)}@media (hover:hover){[data-nav-type=boxed-dropdown] :is(header .nav>li .desktop-nav .desktop-nav-list>li>a):hover{background-color:var(--header-interactive)}}@media not all and (min-width:48rem){header .mobile-controls{flex-shrink:0;order:9999;align-items:center;display:flex}}@media (min-width:48rem){header .mobile-controls{display:none}}@media not all and (min-width:48rem){header .mobile-controls .mobile-menu-toggle{margin-left:calc(var(--spacing)*5);cursor:pointer;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;transition-duration:.2s}@media (hover:hover){header .mobile-controls .mobile-menu-toggle:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}}header .mobile-controls .mobile-menu-toggle:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}}header .mobile-controls .mobile-menu-toggle svg{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}@media not all and (min-width:48rem){header .mobile-controls .mobile-menu-toggle svg{color:var(--foreground);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;transition-duration:.2s}header .mobile-controls .mobile-menu-toggle.active svg{rotate:180deg}}header #indicators{gap:calc(var(--spacing)*5);flex-direction:row-reverse;flex-shrink:0;display:flex}@media not all and (min-width:48rem){header #indicators{flex-shrink:0;order:2}}@media (min-width:48rem){header #indicators{gap:calc(var(--spacing)*8)}}header #indicators span[data-indicator]{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5);cursor:pointer;font-size:0}header #indicators span[data-indicator]:before{content:var(--tw-content);content:var(--tw-content);width:calc(var(--spacing)*5);height:calc(var(--spacing)*5);content:var(--tw-content);content:var(--tw-content);color:var(--foreground);background-color:currentColor;position:absolute}header #indicators span[data-indicator][data-indicator=media_error]:before{content:var(--tw-content);-webkit-mask:url("data:image/svg+xml,%3csvg%20width='800'%20height='800'%20viewBox='0%200%20800%20800'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M99.5149%20622.549C93.2144%20633.653%2093.4349%20634%20107.075%20634H651.912C665.537%20634%20665.757%20633.622%20659.473%20622.549L385.196%20138.236C378.99%20127.258%20379.998%20127.258%20373.792%20138.236L99.5149%20622.534V622.549ZM440.01%20107.161L714.303%20591.475C744.577%20644.978%20713.373%20697%20651.912%20697H107.075C45.5668%20697%2014.4423%20644.946%2044.7005%20591.506L318.977%20107.192C349.314%2053.5947%20409.705%2053.6105%20440.026%20107.192L440.01%20107.161ZM379.494%20586.75C383.631%20586.75%20387.728%20585.936%20391.551%20584.353C395.373%20582.77%20398.847%20580.45%20401.773%20577.525C404.698%20574.6%20407.019%20571.127%20408.603%20567.305C410.186%20563.483%20411.001%20559.387%20411.001%20555.25C411.001%20551.112%20410.186%20547.016%20408.603%20543.194C407.019%20539.372%20404.698%20535.899%20401.773%20532.974C398.847%20530.049%20395.373%20527.729%20391.551%20526.146C387.728%20524.563%20383.631%20523.749%20379.494%20523.749C371.14%20523.751%20363.128%20527.07%20357.221%20532.977C351.314%20538.885%20347.996%20546.896%20347.996%20555.25C347.996%20563.603%20351.314%20571.614%20357.221%20577.522C363.128%20583.429%20371.14%20586.748%20379.494%20586.75ZM347.991%20303.249V460.749C347.991%20469.104%20351.31%20477.116%20357.218%20483.023C363.126%20488.931%20371.139%20492.249%20379.494%20492.249C387.849%20492.249%20395.862%20488.931%20401.769%20483.023C407.677%20477.116%20410.996%20469.104%20410.996%20460.749V303.249C410.996%20294.894%20407.677%20286.882%20401.769%20280.975C395.862%20275.067%20387.849%20271.749%20379.494%20271.749C371.139%20271.749%20363.126%20275.067%20357.218%20280.975C351.31%20286.882%20347.991%20294.894%20347.991%20303.249Z'%20fill='%230F162B'/%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3csvg%20width='800'%20height='800'%20viewBox='0%200%20800%20800'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M99.5149%20622.549C93.2144%20633.653%2093.4349%20634%20107.075%20634H651.912C665.537%20634%20665.757%20633.622%20659.473%20622.549L385.196%20138.236C378.99%20127.258%20379.998%20127.258%20373.792%20138.236L99.5149%20622.534V622.549ZM440.01%20107.161L714.303%20591.475C744.577%20644.978%20713.373%20697%20651.912%20697H107.075C45.5668%20697%2014.4423%20644.946%2044.7005%20591.506L318.977%20107.192C349.314%2053.5947%20409.705%2053.6105%20440.026%20107.192L440.01%20107.161ZM379.494%20586.75C383.631%20586.75%20387.728%20585.936%20391.551%20584.353C395.373%20582.77%20398.847%20580.45%20401.773%20577.525C404.698%20574.6%20407.019%20571.127%20408.603%20567.305C410.186%20563.483%20411.001%20559.387%20411.001%20555.25C411.001%20551.112%20410.186%20547.016%20408.603%20543.194C407.019%20539.372%20404.698%20535.899%20401.773%20532.974C398.847%20530.049%20395.373%20527.729%20391.551%20526.146C387.728%20524.563%20383.631%20523.749%20379.494%20523.749C371.14%20523.751%20363.128%20527.07%20357.221%20532.977C351.314%20538.885%20347.996%20546.896%20347.996%20555.25C347.996%20563.603%20351.314%20571.614%20357.221%20577.522C363.128%20583.429%20371.14%20586.748%20379.494%20586.75ZM347.991%20303.249V460.749C347.991%20469.104%20351.31%20477.116%20357.218%20483.023C363.126%20488.931%20371.139%20492.249%20379.494%20492.249C387.849%20492.249%20395.862%20488.931%20401.769%20483.023C407.677%20477.116%20410.996%20469.104%20410.996%20460.749V303.249C410.996%20294.894%20407.677%20286.882%20401.769%20280.975C395.862%20275.067%20387.849%20271.749%20379.494%20271.749C371.139%20271.749%20363.126%20275.067%20357.218%20280.975C351.31%20286.882%20347.991%20294.894%20347.991%20303.249Z'%20fill='%230F162B'/%3e%3c/svg%3e") 50%/cover no-repeat}header #indicators span[data-indicator][data-indicator=poll-status][data-style=active]:before{content:var(--tw-content);-webkit-mask:url("data:image/svg+xml,%3csvg%20width='800'%20height='800'%20viewBox='0%200%20800%20800'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M201.032%20123.921C202.67%20122.913%20204.182%20121.936%20205.537%20121.023C257.614%2085.7368%20319.094%2066.9154%20382%2067.0003C555.974%2067.0003%20697%20208.026%20697%20382C697.086%20440.93%20680.568%20498.691%20649.34%20548.666C648.405%20550.159%20647.097%20551.383%20645.545%20552.216C643.993%20553.05%20642.25%20553.465%20640.489%20553.42C638.728%20553.376%20637.009%20552.873%20635.501%20551.962C633.993%20551.051%20632.748%20549.763%20631.889%20548.225L552.509%20405.404C551.176%20403.007%20550.492%20400.303%20550.525%20397.56C550.558%20394.817%20551.307%20392.13%20552.698%20389.765C554.089%20387.401%20556.073%20385.44%20558.454%20384.078C560.836%20382.716%20563.531%20382%20566.275%20382H634C634.01%20335.412%20621.106%20289.734%20596.72%20250.038C572.334%20210.343%20537.422%20178.184%20495.861%20157.135C454.3%20136.085%20407.718%20126.968%20361.288%20130.797C314.858%20134.626%20270.398%20151.251%20232.847%20178.825C229.627%20181.188%20225.94%20182.839%20222.032%20183.668C218.124%20184.497%20214.085%20184.485%20210.182%20183.633C206.279%20182.781%20202.602%20181.108%20199.395%20178.726C196.189%20176.344%20193.525%20173.307%20191.582%20169.816L189.818%20166.666C185.825%20159.468%20184.763%20151.007%20186.852%20143.044C188.941%20135.082%20194.02%20128.232%20201.032%20123.921ZM558.715%20642.82C506.586%20678.213%20445.009%20697.092%20382%20697C208.025%20697%2067%20555.974%2067%20382C67%20322.969%2083.254%20267.718%20111.478%20220.5C112.696%20218.456%20114.432%20216.77%20116.509%20215.61C118.587%20214.45%20120.933%20213.858%20123.312%20213.893C125.691%20213.928%20128.019%20214.589%20130.061%20215.81C132.103%20217.03%20133.788%20218.768%20134.945%20220.846L211.49%20358.595C212.824%20360.993%20213.508%20363.697%20213.474%20366.44C213.441%20369.183%20212.692%20371.87%20211.302%20374.235C209.911%20376.599%20207.926%20378.56%20205.545%20379.922C203.164%20381.284%20200.468%20382%20197.725%20382H130C129.999%20428.603%20142.921%20474.294%20167.33%20513.993C191.739%20553.693%20226.679%20585.846%20268.265%20606.879C309.852%20627.913%20356.457%20637.002%20402.9%20633.137C449.342%20629.272%20493.803%20612.604%20531.341%20584.986C534.645%20582.52%20538.43%20580.775%20542.451%20579.865C546.472%20578.954%20550.64%20578.898%20554.684%20579.7C558.728%20580.501%20562.558%20582.143%20565.928%20584.519C569.297%20586.894%20572.131%20589.951%20574.244%20593.491C578.821%20601.138%20580.227%20610.272%20578.161%20618.941C576.095%20627.61%20570.721%20635.129%20563.188%20639.89C561.702%20640.833%20560.232%20641.799%20558.778%20642.788L558.715%20642.82Z'%20fill='%230F162B'/%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3csvg%20width='800'%20height='800'%20viewBox='0%200%20800%20800'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M201.032%20123.921C202.67%20122.913%20204.182%20121.936%20205.537%20121.023C257.614%2085.7368%20319.094%2066.9154%20382%2067.0003C555.974%2067.0003%20697%20208.026%20697%20382C697.086%20440.93%20680.568%20498.691%20649.34%20548.666C648.405%20550.159%20647.097%20551.383%20645.545%20552.216C643.993%20553.05%20642.25%20553.465%20640.489%20553.42C638.728%20553.376%20637.009%20552.873%20635.501%20551.962C633.993%20551.051%20632.748%20549.763%20631.889%20548.225L552.509%20405.404C551.176%20403.007%20550.492%20400.303%20550.525%20397.56C550.558%20394.817%20551.307%20392.13%20552.698%20389.765C554.089%20387.401%20556.073%20385.44%20558.454%20384.078C560.836%20382.716%20563.531%20382%20566.275%20382H634C634.01%20335.412%20621.106%20289.734%20596.72%20250.038C572.334%20210.343%20537.422%20178.184%20495.861%20157.135C454.3%20136.085%20407.718%20126.968%20361.288%20130.797C314.858%20134.626%20270.398%20151.251%20232.847%20178.825C229.627%20181.188%20225.94%20182.839%20222.032%20183.668C218.124%20184.497%20214.085%20184.485%20210.182%20183.633C206.279%20182.781%20202.602%20181.108%20199.395%20178.726C196.189%20176.344%20193.525%20173.307%20191.582%20169.816L189.818%20166.666C185.825%20159.468%20184.763%20151.007%20186.852%20143.044C188.941%20135.082%20194.02%20128.232%20201.032%20123.921ZM558.715%20642.82C506.586%20678.213%20445.009%20697.092%20382%20697C208.025%20697%2067%20555.974%2067%20382C67%20322.969%2083.254%20267.718%20111.478%20220.5C112.696%20218.456%20114.432%20216.77%20116.509%20215.61C118.587%20214.45%20120.933%20213.858%20123.312%20213.893C125.691%20213.928%20128.019%20214.589%20130.061%20215.81C132.103%20217.03%20133.788%20218.768%20134.945%20220.846L211.49%20358.595C212.824%20360.993%20213.508%20363.697%20213.474%20366.44C213.441%20369.183%20212.692%20371.87%20211.302%20374.235C209.911%20376.599%20207.926%20378.56%20205.545%20379.922C203.164%20381.284%20200.468%20382%20197.725%20382H130C129.999%20428.603%20142.921%20474.294%20167.33%20513.993C191.739%20553.693%20226.679%20585.846%20268.265%20606.879C309.852%20627.913%20356.457%20637.002%20402.9%20633.137C449.342%20629.272%20493.803%20612.604%20531.341%20584.986C534.645%20582.52%20538.43%20580.775%20542.451%20579.865C546.472%20578.954%20550.64%20578.898%20554.684%20579.7C558.728%20580.501%20562.558%20582.143%20565.928%20584.519C569.297%20586.894%20572.131%20589.951%20574.244%20593.491C578.821%20601.138%20580.227%20610.272%20578.161%20618.941C576.095%20627.61%20570.721%20635.129%20563.188%20639.89C561.702%20640.833%20560.232%20641.799%20558.778%20642.788L558.715%20642.82Z'%20fill='%230F162B'/%3e%3c/svg%3e") 50%/cover no-repeat}header #indicators span[data-indicator][data-indicator=poll-status][data-style=inactive]:before{content:var(--tw-content);-webkit-mask:url("data:image/svg+xml,%3csvg%20width='800'%20height='800'%20viewBox='0%200%20800%20800'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M571.418%20595.528C580.7%20609.514%20576.962%20628.288%20563.018%20637.696C533.911%20657.268%20510.181%20670.456%20491.868%20677.302C456.716%20690.382%20419.502%20697.054%20381.995%20697C354.694%20697%20328.234%20693.514%20302.949%20687.004L335.962%20629.8C396.485%20641.014%20459.864%20629.8%20513.289%20597.124L530.089%20586.708C536.769%20582.478%20544.84%20581.032%20552.573%20582.681C560.306%20584.329%20567.086%20588.941%20571.46%20595.528H571.418ZM509.803%2094.006C529.123%20102.574%20547.477%20113.074%20564.53%20125.212L250.869%20668.482C231.733%20659.714%20213.526%20649.048%20196.52%20636.646L509.761%2094.006H509.803ZM381.995%2067C409.295%2067%20435.839%2070.486%20461.082%2076.996L427.985%20134.284L422.063%20133.234C371.12%20125.021%20318.883%20132.645%20272.412%20155.075C225.941%20177.505%20187.476%20213.659%20162.214%20258.653C136.953%20303.647%20126.112%20355.311%20131.158%20406.664C136.204%20458.017%20156.893%20506.583%20190.43%20545.8L157.459%20602.92C113.918%20558.666%2084.4251%20502.532%2072.6843%20441.57C60.9436%20380.609%2067.4788%20317.537%2091.469%20260.277C115.459%20203.018%20155.835%20154.123%20207.524%20119.736C259.213%2085.349%20319.912%2067.0021%20381.995%2067ZM606.572%20161.08C664.623%20219.944%20697.117%20299.327%20697%20382C697.058%20427.158%20687.374%20471.797%20668.607%20512.872C664.536%20521.456%20660.05%20529.838%20655.167%20537.988C653.67%20540.539%20651.526%20542.649%20648.952%20544.106C646.378%20545.563%20643.465%20546.315%20640.508%20546.285C637.55%20546.255%20634.653%20545.445%20632.109%20543.936C629.564%20542.428%20627.464%20540.274%20626.019%20537.694L609.932%20508.714L553.357%20406.948C551.939%20404.39%20551.212%20401.505%20551.251%20398.581C551.289%20395.656%20552.09%20392.791%20553.575%20390.271C555.06%20387.751%20557.177%20385.662%20559.717%20384.212C562.258%20382.761%20565.132%20381.998%20568.058%20382H633.999C634.02%20321.959%20612.568%20263.891%20573.518%20218.284L606.572%20161.122V161.08Z'%20fill='%230F162B'/%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3csvg%20width='800'%20height='800'%20viewBox='0%200%20800%20800'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M571.418%20595.528C580.7%20609.514%20576.962%20628.288%20563.018%20637.696C533.911%20657.268%20510.181%20670.456%20491.868%20677.302C456.716%20690.382%20419.502%20697.054%20381.995%20697C354.694%20697%20328.234%20693.514%20302.949%20687.004L335.962%20629.8C396.485%20641.014%20459.864%20629.8%20513.289%20597.124L530.089%20586.708C536.769%20582.478%20544.84%20581.032%20552.573%20582.681C560.306%20584.329%20567.086%20588.941%20571.46%20595.528H571.418ZM509.803%2094.006C529.123%20102.574%20547.477%20113.074%20564.53%20125.212L250.869%20668.482C231.733%20659.714%20213.526%20649.048%20196.52%20636.646L509.761%2094.006H509.803ZM381.995%2067C409.295%2067%20435.839%2070.486%20461.082%2076.996L427.985%20134.284L422.063%20133.234C371.12%20125.021%20318.883%20132.645%20272.412%20155.075C225.941%20177.505%20187.476%20213.659%20162.214%20258.653C136.953%20303.647%20126.112%20355.311%20131.158%20406.664C136.204%20458.017%20156.893%20506.583%20190.43%20545.8L157.459%20602.92C113.918%20558.666%2084.4251%20502.532%2072.6843%20441.57C60.9436%20380.609%2067.4788%20317.537%2091.469%20260.277C115.459%20203.018%20155.835%20154.123%20207.524%20119.736C259.213%2085.349%20319.912%2067.0021%20381.995%2067ZM606.572%20161.08C664.623%20219.944%20697.117%20299.327%20697%20382C697.058%20427.158%20687.374%20471.797%20668.607%20512.872C664.536%20521.456%20660.05%20529.838%20655.167%20537.988C653.67%20540.539%20651.526%20542.649%20648.952%20544.106C646.378%20545.563%20643.465%20546.315%20640.508%20546.285C637.55%20546.255%20634.653%20545.445%20632.109%20543.936C629.564%20542.428%20627.464%20540.274%20626.019%20537.694L609.932%20508.714L553.357%20406.948C551.939%20404.39%20551.212%20401.505%20551.251%20398.581C551.289%20395.656%20552.09%20392.791%20553.575%20390.271C555.06%20387.751%20557.177%20385.662%20559.717%20384.212C562.258%20382.761%20565.132%20381.998%20568.058%20382H633.999C634.02%20321.959%20612.568%20263.891%20573.518%20218.284L606.572%20161.122V161.08Z'%20fill='%230F162B'/%3e%3c/svg%3e") 50%/cover no-repeat}header #indicators span[data-indicator][data-indicator=uci-changes]{position:relative}header #indicators span[data-indicator][data-indicator=uci-changes]:before{content:var(--tw-content);-webkit-mask:url("data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1758476543825'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='17352'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M439.594667%2085.333333h144.810666a70.4%2070.4%200%200%201%2070.101334%2060.970667l5.802666%2044.8a17.066667%2017.066667%200%200%200%208.192%2012.458667l38.058667%2022.528a17.066667%2017.066667%200%200%200%2015.146667%201.109333l46.848-19.2a71.082667%2071.082667%200%200%201%2088.021333%2029.226667l72.405333%20122.069333c18.218667%2030.72%2010.069333%2069.973333-18.688%2091.221333l-45.184%2033.408a17.066667%2017.066667%200%200%200-6.912%2013.696v28.757334a17.066667%2017.066667%200%200%200%206.912%2013.696l45.226667%2033.408c28.714667%2021.205333%2036.864%2060.458667%2018.645333%2091.221333l-72.405333%20122.026667a71.082667%2071.082667%200%200%201-88.021333%2029.226666l-46.848-19.2a17.066667%2017.066667%200%200%200-15.146667%201.152l-38.058667%2022.528a17.066667%2017.066667%200%200%200-8.192%2012.501334l-5.802666%2044.8A70.4%2070.4%200%200%201%20584.405333%20938.666667h-144.810666a70.4%2070.4%200%200%201-70.101334-60.970667l-5.802666-44.8a17.066667%2017.066667%200%200%200-8.192-12.458667l-38.058667-22.528a17.066667%2017.066667%200%200%200-15.146667-1.109333l-46.848%2019.2a71.082667%2071.082667%200%200%201-88.021333-29.226667l-72.405333-122.069333a69.290667%2069.290667%200%200%201%2018.688-91.221333l45.184-33.408a17.066667%2017.066667%200%200%200%206.912-13.696v-28.757334a17.066667%2017.066667%200%200%200-6.912-13.696l-45.226667-33.408a69.290667%2069.290667%200%200%201-18.645333-91.221333l72.405333-122.026667a71.082667%2071.082667%200%200%201%2088.021333-29.226666l46.848%2019.2a17.066667%2017.066667%200%200%200%2015.146667-1.152l38.058667-22.528a17.066667%2017.066667%200%200%200%208.192-12.501334l5.802666-44.8A70.4%2070.4%200%200%201%20439.594667%2085.333333z%20m1.024%20130.688a75.818667%2075.818667%200%200%201-36.821334%2055.466667l-51.712%2030.464a76.970667%2076.970667%200%200%201-67.925333%204.906667l-35.328-14.336a17.066667%2017.066667%200%200%200-21.077333%207.04L178.645333%20381.738667a17.066667%2017.066667%200%200%200%204.565334%2022.528l33.066666%2024.277333c19.541333%2014.293333%2031.018667%2036.906667%2031.018667%2061.013333v44.885334c0%2024.106667-11.52%2046.72-31.018667%2061.013333l-33.066666%2024.277333a17.066667%2017.066667%200%200%200-4.565334%2022.528l49.066667%2082.176a17.066667%2017.066667%200%200%200%2021.12%207.04l35.328-14.336a76.970667%2076.970667%200%200%201%2067.925333%204.906667l51.712%2030.421333c20.224%2011.946667%2033.792%2032.384%2036.821334%2055.509334l4.010666%2030.506666a17.066667%2017.066667%200%200%200%2016.896%2014.848h100.949334a17.066667%2017.066667%200%200%200%2016.896-14.848l4.010666-30.506666c2.986667-23.125333%2016.597333-43.605333%2036.821334-55.466667l51.712-30.464a76.970667%2076.970667%200%200%201%2067.925333-4.906667l35.328%2014.336a17.066667%2017.066667%200%200%200%2021.077333-7.04l49.109334-82.176a17.066667%2017.066667%200%200%200-4.565334-22.528l-33.066666-24.277333a75.648%2075.648%200%200%201-31.018667-61.013333v-44.885334c0-24.106667%2011.52-46.72%2031.018667-61.013333l33.066666-24.277333a17.066667%2017.066667%200%200%200%204.565334-22.528l-49.066667-82.176a17.066667%2017.066667%200%200%200-21.12-7.04l-35.328%2014.336c-22.186667%209.045333-47.317333%207.210667-67.925333-4.906667l-51.712-30.421333a75.818667%2075.818667%200%200%201-36.821334-55.509334l-4.010666-30.506666A17.066667%2017.066667%200%200%200%20562.474667%20170.666667h-100.949334a17.066667%2017.066667%200%200%200-16.896%2014.848l-4.010666%2030.506666zM682.666667%20512a42.666667%2042.666667%200%200%201-85.333334%200%2085.333333%2085.333333%200%201%200-85.333333%2085.333333%2042.666667%2042.666667%200%200%201%200%2085.333334%20170.666667%20170.666667%200%201%201%20170.666667-170.666667z'%20fill='%230f162b'%20p-id='17353'%3e%3c/path%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1758476543825'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='17352'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M439.594667%2085.333333h144.810666a70.4%2070.4%200%200%201%2070.101334%2060.970667l5.802666%2044.8a17.066667%2017.066667%200%200%200%208.192%2012.458667l38.058667%2022.528a17.066667%2017.066667%200%200%200%2015.146667%201.109333l46.848-19.2a71.082667%2071.082667%200%200%201%2088.021333%2029.226667l72.405333%20122.069333c18.218667%2030.72%2010.069333%2069.973333-18.688%2091.221333l-45.184%2033.408a17.066667%2017.066667%200%200%200-6.912%2013.696v28.757334a17.066667%2017.066667%200%200%200%206.912%2013.696l45.226667%2033.408c28.714667%2021.205333%2036.864%2060.458667%2018.645333%2091.221333l-72.405333%20122.026667a71.082667%2071.082667%200%200%201-88.021333%2029.226666l-46.848-19.2a17.066667%2017.066667%200%200%200-15.146667%201.152l-38.058667%2022.528a17.066667%2017.066667%200%200%200-8.192%2012.501334l-5.802666%2044.8A70.4%2070.4%200%200%201%20584.405333%20938.666667h-144.810666a70.4%2070.4%200%200%201-70.101334-60.970667l-5.802666-44.8a17.066667%2017.066667%200%200%200-8.192-12.458667l-38.058667-22.528a17.066667%2017.066667%200%200%200-15.146667-1.109333l-46.848%2019.2a71.082667%2071.082667%200%200%201-88.021333-29.226667l-72.405333-122.069333a69.290667%2069.290667%200%200%201%2018.688-91.221333l45.184-33.408a17.066667%2017.066667%200%200%200%206.912-13.696v-28.757334a17.066667%2017.066667%200%200%200-6.912-13.696l-45.226667-33.408a69.290667%2069.290667%200%200%201-18.645333-91.221333l72.405333-122.026667a71.082667%2071.082667%200%200%201%2088.021333-29.226666l46.848%2019.2a17.066667%2017.066667%200%200%200%2015.146667-1.152l38.058667-22.528a17.066667%2017.066667%200%200%200%208.192-12.501334l5.802666-44.8A70.4%2070.4%200%200%201%20439.594667%2085.333333z%20m1.024%20130.688a75.818667%2075.818667%200%200%201-36.821334%2055.466667l-51.712%2030.464a76.970667%2076.970667%200%200%201-67.925333%204.906667l-35.328-14.336a17.066667%2017.066667%200%200%200-21.077333%207.04L178.645333%20381.738667a17.066667%2017.066667%200%200%200%204.565334%2022.528l33.066666%2024.277333c19.541333%2014.293333%2031.018667%2036.906667%2031.018667%2061.013333v44.885334c0%2024.106667-11.52%2046.72-31.018667%2061.013333l-33.066666%2024.277333a17.066667%2017.066667%200%200%200-4.565334%2022.528l49.066667%2082.176a17.066667%2017.066667%200%200%200%2021.12%207.04l35.328-14.336a76.970667%2076.970667%200%200%201%2067.925333%204.906667l51.712%2030.421333c20.224%2011.946667%2033.792%2032.384%2036.821334%2055.509334l4.010666%2030.506666a17.066667%2017.066667%200%200%200%2016.896%2014.848h100.949334a17.066667%2017.066667%200%200%200%2016.896-14.848l4.010666-30.506666c2.986667-23.125333%2016.597333-43.605333%2036.821334-55.466667l51.712-30.464a76.970667%2076.970667%200%200%201%2067.925333-4.906667l35.328%2014.336a17.066667%2017.066667%200%200%200%2021.077333-7.04l49.109334-82.176a17.066667%2017.066667%200%200%200-4.565334-22.528l-33.066666-24.277333a75.648%2075.648%200%200%201-31.018667-61.013333v-44.885334c0-24.106667%2011.52-46.72%2031.018667-61.013333l33.066666-24.277333a17.066667%2017.066667%200%200%200%204.565334-22.528l-49.066667-82.176a17.066667%2017.066667%200%200%200-21.12-7.04l-35.328%2014.336c-22.186667%209.045333-47.317333%207.210667-67.925333-4.906667l-51.712-30.421333a75.818667%2075.818667%200%200%201-36.821334-55.509334l-4.010666-30.506666A17.066667%2017.066667%200%200%200%20562.474667%20170.666667h-100.949334a17.066667%2017.066667%200%200%200-16.896%2014.848l-4.010666%2030.506666zM682.666667%20512a42.666667%2042.666667%200%200%201-85.333334%200%2085.333333%2085.333333%200%201%200-85.333333%2085.333333%2042.666667%2042.666667%200%200%201%200%2085.333334%20170.666667%20170.666667%200%201%201%20170.666667-170.666667z'%20fill='%230f162b'%20p-id='17353'%3e%3c/path%3e%3c/svg%3e") 50%/cover no-repeat}header #indicators span[data-indicator][data-indicator=uci-changes][data-count]:not([data-count="0"]):after{content:var(--tw-content);content:var(--tw-content);top:calc(var(--spacing)*-.5);content:var(--tw-content);right:calc(var(--spacing)*-.5);content:var(--tw-content);z-index:10;content:var(--tw-content);content:var(--tw-content);min-height:calc(var(--spacing)*3);content:var(--tw-content);min-width:calc(var(--spacing)*3);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);background-color:var(--accent);content:var(--tw-content);padding-inline:calc(var(--spacing)*.5);content:var(--tw-content);content:var(--tw-content);--tw-leading:1;content:var(--tw-content);--tw-font-weight:var(--font-weight-bold);font-size:8px;line-height:1;font-weight:var(--font-weight-bold);content:var(--tw-content);color:var(--accent-foreground);content:var(--tw-content);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-content:attr(data-count);content:var(--tw-content);border-radius:3.40282e38px;justify-content:center;align-items:center;display:flex;position:absolute}#maincontent{width:95.8333%;min-height:calc(100vh - 4rem);max-width:var(--container-max-width);padding-inline:calc(var(--spacing)*4);margin-inline:auto}@media not all and (min-width:48rem){#maincontent{width:100%;padding-inline:calc(var(--spacing)*3)}}#maincontent #view{margin-inline:calc(var(--spacing)*0);width:100%;animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);padding:calc(var(--spacing)*0);--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;--tw-enter-opacity:0;--tw-animation-fill-mode:both;--tw-enter-translate-y:calc(2*var(--spacing)*-1);transition-duration:.3s;animation-fill-mode:both}#maincontent #view:empty{display:none}@media (min-width:48rem){#maincontent #view{border-radius:calc(var(--radius-base)*4);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){#maincontent #view{border-color:color-mix(in oklab,var(--border)30%,transparent)}}#maincontent #view{background-color:var(--page-bg);padding:calc(var(--spacing)*6);--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media (hover:hover){#maincontent #view:hover{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){#maincontent #view:hover{border-color:color-mix(in oklab,var(--border)50%,transparent)}}#maincontent #view:hover{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}}#maincontent #view .cbi-title-section{margin-bottom:calc(var(--spacing)*6);--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}@media not all and (min-width:48rem){#maincontent #view .cbi-title-section{margin-inline:calc(var(--spacing)*2);margin-bottom:calc(var(--spacing)*3)}}#maincontent #view .controls{margin:calc(var(--spacing)*2);align-items:center;gap:calc(var(--spacing)*3);flex-wrap:wrap;display:flex}@media not all and (min-width:48rem){#maincontent #view .controls{margin:calc(var(--spacing)*1);gap:calc(var(--spacing)*2)}}#maincontent #view .controls label input[type=radio],#maincontent #view .controls label input[type=checkbox]{margin-right:calc(var(--spacing)*1);vertical-align:middle}#maincontent #view #content_syslog{margin:calc(var(--spacing)*2)}@media not all and (min-width:48rem){#maincontent #view #content_syslog{margin:calc(var(--spacing)*1)}}#maincontent #view #content_syslog>div{align-items:baseline;column-gap:calc(var(--spacing)*2);flex-wrap:wrap;display:flex}@media not all and (min-width:48rem){#maincontent #view #content_syslog>div{column-gap:calc(var(--spacing)*1.5)}#maincontent #view #content_syslog>div>.cbi-input-select,#maincontent #view #content_syslog>div>.cbi-input-text{min-width:calc(var(--spacing)*45)}}#maincontent #view div[style]>svg:where([data-darkmode=true],[data-darkmode=true] *){background-color:var(--page-bg)!important}#maincontent #view div[style]>svg line[style]:where([data-darkmode=true],[data-darkmode=true] *){stroke:var(--foreground)!important}#maincontent .cbi-map-descr,#maincontent .cbi-section-descr{margin-bottom:calc(var(--spacing)*6);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);color:var(--muted-foreground)}@media not all and (min-width:48rem){#maincontent .cbi-map-descr,#maincontent .cbi-section-descr{margin-inline:calc(var(--spacing)*2);margin-bottom:calc(var(--spacing)*3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}#maincontent .cbi-page-actions{margin-top:calc(var(--spacing)*6);justify-content:flex-end;align-items:center;gap:calc(var(--spacing)*3);border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--border);flex-wrap:wrap;display:flex}@supports (color:color-mix(in lab, red, red)){#maincontent .cbi-page-actions{border-color:color-mix(in oklab,var(--border)50%,transparent)}}#maincontent .cbi-page-actions{padding-top:calc(var(--spacing)*4)}@media not all and (min-width:48rem){#maincontent .cbi-page-actions{margin-inline:calc(var(--spacing)*2);margin-top:calc(var(--spacing)*4);gap:calc(var(--spacing)*2);padding-top:calc(var(--spacing)*3)}}#maincontent .zone-forwards{align-items:flex-start;gap:calc(var(--spacing)*3);--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);display:flex}#maincontent .zone-forwards>span{margin-top:calc(var(--spacing)*1.5);color:var(--muted-foreground)}#maincontent .zone-forwards .zone-dest{align-items:flex-start;gap:calc(var(--spacing)*2);flex-direction:column;display:flex}#maincontent #syslog,#maincontent #log_textarea{width:100%;font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}#maincontent #syslog{border-radius:calc(var(--radius-base)*3);border-style:var(--tw-border-style);background-color:var(--terminal-bg);padding:calc(var(--spacing)*6);color:var(--terminal-foreground);--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-width:1px}@media not all and (min-width:48rem){#maincontent #syslog{padding:calc(var(--spacing)*3)}}footer{margin-top:calc(var(--spacing)*2);min-height:calc(var(--spacing)*16);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--secondary-foreground);flex-wrap:wrap;justify-content:space-between;align-items:center;display:flex}footer a{color:var(--primary)}footer span{text-align:center;display:inline-block}footer .breadcrumb{align-items:center;gap:calc(var(--spacing)*1);background-color:var(--page-bg);border-radius:3.40282e38px;display:flex}@supports (color:color-mix(in lab, red, red)){footer .breadcrumb{background-color:color-mix(in oklab,var(--page-bg)60%,transparent)}}footer .breadcrumb{padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;transition-duration:.2s}@media (hover:hover){footer .breadcrumb:hover{background-color:var(--page-bg)}@supports (color:color-mix(in lab, red, red)){footer .breadcrumb:hover{background-color:color-mix(in oklab,var(--page-bg)80%,transparent)}}footer .breadcrumb:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}footer .breadcrumb li{list-style-type:none}footer .breadcrumb li.active a{color:var(--default-foreground)}.control-group{margin-top:calc(var(--spacing)*1)}.control-group,.cbi-page-actions>div,.cbi-section-actions>div{align-items:center;gap:calc(var(--spacing)*2);flex-flow:row;display:flex}@media not all and (min-width:48rem){.control-group,.cbi-page-actions>div,.cbi-section-actions>div{gap:calc(var(--spacing)*1);flex-wrap:wrap}}.theme-switcher{align-items:center;gap:calc(var(--spacing)*0);background-color:var(--page-bg);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;border-radius:3.40282e38px;transition-duration:.3s;display:inline-flex;position:relative}@media not all and (min-width:48rem){.theme-switcher{padding-block:calc(var(--spacing)*.5)}}.theme-switcher{border-style:var(--tw-border-style);border-width:1px;border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.theme-switcher{border-color:color-mix(in oklab,var(--border)70%,transparent)}}.theme-switcher:before{content:var(--tw-content);content:var(--tw-content);top:calc(var(--spacing)*1);content:var(--tw-content);left:calc(var(--spacing)*1);content:var(--tw-content);z-index:0;content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);background-color:var(--border);border-radius:3.40282e38px;width:calc(33.333% - .5rem);height:calc(100% - .5rem);position:absolute}@supports (color:color-mix(in lab, red, red)){.theme-switcher:before{background-color:color-mix(in oklab,var(--border)50%,transparent)}}.theme-switcher:before{content:var(--tw-content);--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);content:var(--tw-content);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);content:var(--tw-content);--tw-ring-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.theme-switcher:before{--tw-ring-color:color-mix(in oklab,var(--border)60%,transparent)}}.theme-switcher:before{content:var(--tw-content);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));content:var(--tw-content);--tw-duration:.3s;transition-duration:.3s}@media not all and (min-width:48rem){footer .theme-switcher{display:none}}.theme-switcher .theme-option{z-index:10;cursor:pointer;justify-content:center;align-items:center;gap:calc(var(--spacing)*1.5);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;border-radius:3.40282e38px;transition-duration:.3s;display:flex;position:relative}@media (hover:hover){.theme-switcher .theme-option:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}}.theme-switcher .theme-option:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.theme-switcher .theme-option input[type=radio]{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.theme-switcher .theme-option .theme-icon{color:var(--muted-foreground);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;justify-content:center;align-items:center;transition-duration:.3s;display:flex}.theme-switcher .theme-option .theme-icon svg{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;transition-duration:.3s}.theme-switcher .theme-option .theme-label{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--muted-foreground);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;transition-duration:.3s;display:none}.theme-switcher .theme-option.active .theme-icon{color:var(--foreground)}.theme-switcher .theme-option.active .theme-icon svg{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.theme-switcher .theme-option.active .theme-label,.theme-switcher .theme-option:hover:not(.active) .theme-icon,.theme-switcher .theme-option:hover:not(.active) .theme-label{color:var(--foreground)}.theme-switcher:has(.theme-option[data-theme=device].active):before{content:var(--tw-content);--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.theme-switcher:has(.theme-option[data-theme=light].active):before{content:var(--tw-content);--tw-translate-x:calc(100% + .5rem);translate:var(--tw-translate-x)var(--tw-translate-y)}.theme-switcher:has(.theme-option[data-theme=dark].active):before{content:var(--tw-content);--tw-translate-x:calc(200% + 1rem);translate:var(--tw-translate-x)var(--tw-translate-y)}.floating-toolbar{right:calc(var(--spacing)*4);bottom:calc(var(--spacing)*4);z-index:40;flex-direction:column;align-items:center;display:flex;position:fixed}@media not all and (min-width:48rem){.floating-toolbar{right:calc(var(--spacing)*3);bottom:calc(var(--spacing)*3)}}.floating-toolbar .toolbar-list{visibility:visible;margin-bottom:calc(var(--spacing)*2);transform-origin:bottom;opacity:1;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.4s;--tw-ease:var(--ease-in-out);transition-duration:.4s;transition-timing-function:var(--ease-in-out);grid-template-rows:1fr;display:grid}@media not all and (min-width:48rem){.floating-toolbar .toolbar-list{margin-bottom:calc(var(--spacing)*1.5)}}.floating-toolbar .toolbar-list .toolbar-list-inner{min-height:calc(var(--spacing)*0);align-items:center;gap:calc(var(--spacing)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);border-radius:3.40282e38px;flex-direction:column;display:flex;overflow:hidden}@supports (color:color-mix(in lab, red, red)){.floating-toolbar .toolbar-list .toolbar-list-inner{border-color:color-mix(in oklab,var(--border)70%,transparent)}}.floating-toolbar .toolbar-list .toolbar-list-inner{background-color:var(--page-bg)}@supports (color:color-mix(in lab, red, red)){.floating-toolbar .toolbar-list .toolbar-list-inner{background-color:color-mix(in oklab,var(--page-bg)90%,transparent)}}.floating-toolbar .toolbar-list .toolbar-list-inner{padding:calc(var(--spacing)*1);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media not all and (min-width:48rem){.floating-toolbar .toolbar-list .toolbar-list-inner{gap:calc(var(--spacing)*1.5);padding:calc(var(--spacing)*.5)}}.floating-toolbar .toolbar-btn{height:calc(var(--spacing)*10);width:calc(var(--spacing)*10);cursor:pointer;padding:calc(var(--spacing)*2);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;--tw-ease:var(--ease-in-out);transition-duration:.3s;transition-timing-function:var(--ease-in-out);border-radius:3.40282e38px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.floating-toolbar .toolbar-btn:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}@media not all and (min-width:48rem){.floating-toolbar .toolbar-btn{height:calc(var(--spacing)*9);width:calc(var(--spacing)*9);padding:calc(var(--spacing)*1.5)}}.floating-toolbar .toolbar-btn .icon{height:calc(var(--spacing)*5);width:calc(var(--spacing)*5);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;--tw-ease:var(--ease-in-out);transition-duration:.3s;transition-timing-function:var(--ease-in-out);flex-shrink:0}@media not all and (min-width:48rem){.floating-toolbar .toolbar-btn .icon{height:calc(var(--spacing)*4);width:calc(var(--spacing)*4)}}.floating-toolbar .toolbar-btn:not(.toggle){text-decoration-line:none}@media (hover:hover){.floating-toolbar .toolbar-btn:not(.toggle):hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y);background-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.floating-toolbar .toolbar-btn:not(.toggle):hover{background-color:color-mix(in oklab,var(--border)40%,transparent)}}}.floating-toolbar .toolbar-btn:not(.toggle) .icon{object-fit:contain}.floating-toolbar .toolbar-btn:not(.toggle) .icon:where([data-darkmode=true],[data-darkmode=true] *){--tw-invert:invert(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.floating-toolbar .toolbar-btn.toggle{border-style:var(--tw-border-style);background-color:var(--page-bg);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-width:0}.floating-toolbar .toolbar-btn.toggle .icon{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.4s;--tw-ease:var(--ease-out);transition-duration:.4s;transition-timing-function:var(--ease-out)}.floating-toolbar.collapsed .toolbar-list{pointer-events:none;visibility:hidden;margin-bottom:calc(var(--spacing)*0);--tw-translate-y:calc(var(--spacing)*2);translate:var(--tw-translate-x)var(--tw-translate-y);--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x)var(--tw-scale-y);opacity:0;grid-template-rows:0fr}.floating-toolbar.collapsed .toolbar-btn:not(.toggle){--tw-scale-x:50%;--tw-scale-y:50%;--tw-scale-z:50%;scale:var(--tw-scale-x)var(--tw-scale-y);opacity:0}.floating-toolbar.collapsed .toolbar-btn.toggle .icon{rotate:45deg}button,.btn,.cbi-button{cursor:pointer;justify-content:center;align-items:center;gap:calc(var(--spacing)*1.5);border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;border-width:1px;transition-duration:.2s;display:inline-flex}@media not all and (min-width:48rem){button,.btn,.cbi-button{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}}:is(button,.btn,.cbi-button)[disabled]{cursor:not-allowed;opacity:.4}:is(button,.btn,.cbi-button)[disabled]:where([data-darkmode=true],[data-darkmode=true] *){opacity:.3}.td :is(button,.btn,.cbi-button){white-space:nowrap;flex:none;width:auto;display:inline-flex}@media not all and (min-width:48rem){.td :is(button,.btn,.cbi-button){min-height:calc(var(--spacing)*9);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.btn,.cbi-button,.cbi-button-default,.cbi-button-download,.cbi-button-find,.cbi-button-link,.cbi-button-up,.cbi-button-down{border-color:var(--secondary);background-color:var(--secondary);color:var(--secondary-foreground)}@media (hover:hover){:is(.btn,.cbi-button,.cbi-button-default,.cbi-button-download,.cbi-button-find,.cbi-button-link,.cbi-button-up,.cbi-button-down):hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){:is(.btn,.cbi-button,.cbi-button-default,.cbi-button-download,.cbi-button-find,.cbi-button-link,.cbi-button-up,.cbi-button-down):hover{background-color:color-mix(in oklab,var(--secondary)90%,transparent)}}}.drag-handle{border-color:var(--muted);background-color:var(--muted);color:var(--muted-foreground)}@media (hover:hover){.drag-handle:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.drag-handle:hover{background-color:color-mix(in oklab,var(--muted)90%,transparent)}}}.btn.primary,.cbi-button-action,.cbi-button-apply,.cbi-button-reload,.cbi-button-add,.cbi-button-edit{border-color:var(--primary);background-color:var(--primary);color:var(--primary-foreground)}@media (hover:hover){:is(.btn.primary,.cbi-button-action,.cbi-button-apply,.cbi-button-reload,.cbi-button-add,.cbi-button-edit):hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){:is(.btn.primary,.cbi-button-action,.cbi-button-apply,.cbi-button-reload,.cbi-button-add,.cbi-button-edit):hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}}.cbi-button-positive,.cbi-button-fieldadd,.cbi-button-save{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.cbi-button-positive,.cbi-button-fieldadd,.cbi-button-save{border-color:color-mix(in oklab,var(--primary)25%,transparent)}}.cbi-button-positive,.cbi-button-fieldadd,.cbi-button-save{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.cbi-button-positive,.cbi-button-fieldadd,.cbi-button-save{background-color:color-mix(in oklab,var(--primary)25%,transparent)}}.cbi-button-positive,.cbi-button-fieldadd,.cbi-button-save{color:var(--primary)}@media (hover:hover){:is(.cbi-button-positive,.cbi-button-fieldadd,.cbi-button-save):hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){:is(.cbi-button-positive,.cbi-button-fieldadd,.cbi-button-save):hover{background-color:color-mix(in oklab,var(--primary)30%,transparent)}}}.cbi-button-negative,.cbi-section-remove .cbi-button,.cbi-button-reset,.cbi-button-remove{border-color:var(--destructive);background-color:var(--destructive);color:var(--destructive-foreground)}@media (hover:hover){:is(.cbi-button-negative,.cbi-section-remove .cbi-button,.cbi-button-reset,.cbi-button-remove):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){:is(.cbi-button-negative,.cbi-section-remove .cbi-button,.cbi-button-reset,.cbi-button-remove):hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}}input:disabled{cursor:not-allowed;opacity:.4}input:disabled:where([data-darkmode=true],[data-darkmode=true] *){opacity:.3}input[type=text],input[type=password],.cbi-input-text,.cbi-input{border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);position:relative}@supports (color:color-mix(in lab, red, red)){input[type=text],input[type=password],.cbi-input-text,.cbi-input{border-color:color-mix(in oklab,var(--border)70%,transparent)}}input[type=text],input[type=password],.cbi-input-text,.cbi-input{background-color:var(--page-bg);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--foreground)}:is(input[type=text],input[type=password],.cbi-input-text,.cbi-input)::placeholder{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){:is(input[type=text],input[type=password],.cbi-input-text,.cbi-input)::placeholder{color:color-mix(in oklab,var(--muted-foreground)70%,transparent)}}input[type=text],input[type=password],.cbi-input-text,.cbi-input{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;transition-duration:.2s}:is(input[type=text],input[type=password],.cbi-input-text,.cbi-input):focus{border-color:var(--primary);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){:is(input[type=text],input[type=password],.cbi-input-text,.cbi-input):focus{--tw-ring-color:color-mix(in oklab,var(--primary)20%,transparent)}}:is(input[type=text],input[type=password],.cbi-input-text,.cbi-input):focus{--tw-outline-style:none;outline-style:none}.table.cbi-section-table :is(input[type=text],input[type=password],.cbi-input-text,.cbi-input){width:100%}.cbi-input-text{min-width:calc(var(--spacing)*20)}@media not all and (min-width:48rem){.cbi-input-text{min-width:calc(var(--spacing)*14)}}#localtime{min-width:calc(var(--spacing)*70)}input[type=radio],input[type=checkbox]{margin-right:calc(var(--spacing)*3);height:calc(var(--spacing)*4);width:calc(var(--spacing)*4);cursor:pointer;appearance:none;display:inline-block;position:relative}:is(input[type=radio],input[type=checkbox]):before{content:var(--tw-content);content:var(--tw-content);top:calc(var(--spacing)*0);content:var(--tw-content);left:calc(var(--spacing)*0);content:var(--tw-content);height:calc(var(--spacing)*4);content:var(--tw-content);width:calc(var(--spacing)*4);content:var(--tw-content);border-style:var(--tw-border-style);content:var(--tw-content);border-width:1px;border-color:var(--border);position:absolute}@supports (color:color-mix(in lab, red, red)){:is(input[type=radio],input[type=checkbox]):before{border-color:color-mix(in oklab,var(--border)70%,transparent)}}:is(input[type=radio],input[type=checkbox]):before{content:var(--tw-content);background-color:var(--page-bg);content:var(--tw-content);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));content:var(--tw-content);--tw-duration:.2s;transition-duration:.2s}:is(input[type=radio],input[type=checkbox]):after{content:var(--tw-content);content:var(--tw-content);top:calc(var(--spacing)*.5);content:var(--tw-content);left:calc(var(--spacing)*.5);content:var(--tw-content);height:calc(var(--spacing)*3);content:var(--tw-content);width:calc(var(--spacing)*3);content:var(--tw-content);background-color:var(--input-checked);content:var(--tw-content);opacity:0;content:var(--tw-content);transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));content:var(--tw-content);--tw-duration:.2s;transition-duration:.2s;position:absolute}:is(input[type=radio],input[type=checkbox]):checked:before{content:var(--tw-content);border-color:var(--primary);content:var(--tw-content);background-color:var(--primary)}:is(input[type=radio],input[type=checkbox]):checked:after{content:var(--tw-content);opacity:1}@media (hover:hover){:is(input[type=radio],input[type=checkbox]):hover:before{content:var(--tw-content);border-color:var(--border)}}:is(input[type=radio],input[type=checkbox]):focus:before{content:var(--tw-content);border-color:var(--primary);content:var(--tw-content);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);content:var(--tw-content);--tw-ring-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){:is(input[type=radio],input[type=checkbox]):focus:before{--tw-ring-color:color-mix(in oklab,var(--primary)20%,transparent)}}:is(input[type=radio],input[type=checkbox]):focus:before{content:var(--tw-content);--tw-outline-style:none;outline-style:none}:is(input[type=radio],input[type=checkbox]):disabled{cursor:not-allowed}input[type=radio]:before{content:var(--tw-content);border-radius:3.40282e38px}input[type=radio]:after{content:var(--tw-content);-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='currentColor'%3e%3ccircle%20cx='12'%20cy='12'%20r='6'/%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='currentColor'%3e%3ccircle%20cx='12'%20cy='12'%20r='6'/%3e%3c/svg%3e") 50%/cover no-repeat}input[type=checkbox]:before{content:var(--tw-content);border-radius:calc(var(--radius-base)*.5)}input[type=checkbox]:after{content:var(--tw-content);-webkit-mask:url("data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1760890864667'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='18898'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M918.8%2083.7c-43.5-30.3-104-19.5-134.6%2024.1l-425.8%20606-127-135.7c-36.4-38.9-98.1-41.1-137-4.8-39%2036.2-41.1%2097.7-4.7%20136.6l206.5%20220.7c4.7%205%209.8%209.4%2015.1%2013.1%200.7%200.5%201.4%201%202.2%201.5%2043.5%2030.3%20104%2019.5%20134.6-24.1l494-703.2c30.7-43.5%2020.1-103.9-23.3-134.2z'%20fill='%230f162b'%20p-id='18899'%3e%3c/path%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1760890864667'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='18898'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M918.8%2083.7c-43.5-30.3-104-19.5-134.6%2024.1l-425.8%20606-127-135.7c-36.4-38.9-98.1-41.1-137-4.8-39%2036.2-41.1%2097.7-4.7%20136.6l206.5%20220.7c4.7%205%209.8%209.4%2015.1%2013.1%200.7%200.5%201.4%201%202.2%201.5%2043.5%2030.3%20104%2019.5%20134.6-24.1l494-703.2c30.7-43.5%2020.1-103.9-23.3-134.2z'%20fill='%230f162b'%20p-id='18899'%3e%3c/path%3e%3c/svg%3e") 50%/cover no-repeat}.cbi-checkbox{align-items:center;display:inline-flex;position:relative}textarea{min-height:calc(var(--spacing)*24);resize:vertical;border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);width:100%}@supports (color:color-mix(in lab, red, red)){textarea{border-color:color-mix(in oklab,var(--border)70%,transparent)}}textarea{background-color:var(--page-bg);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--foreground)}textarea::placeholder{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){textarea::placeholder{color:color-mix(in oklab,var(--muted-foreground)70%,transparent)}}textarea{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;transition-duration:.2s}textarea:focus{border-color:var(--primary);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){textarea:focus{--tw-ring-color:color-mix(in oklab,var(--primary)20%,transparent)}}textarea:focus{--tw-outline-style:none;outline-style:none}textarea[disabled]{cursor:not-allowed;opacity:.4}textarea[disabled]:where([data-darkmode=true],[data-darkmode=true] *){opacity:.3}select{appearance:none;border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){select{border-color:color-mix(in oklab,var(--border)70%,transparent)}}select{background-color:var(--page-bg);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);padding-right:calc(var(--spacing)*10);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--foreground);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;transition-duration:.2s}select:focus{border-color:var(--primary);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){select:focus{--tw-ring-color:color-mix(in oklab,var(--primary)20%,transparent)}}select:focus{--tw-outline-style:none;outline-style:none}select{background-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M5.22%208.22a.75.75%200%200%201%201.06%200L10%2011.94l3.72-3.72a.75.75%200%201%201%201.06%201.06l-4.25%204.25a.75.75%200%200%201-1.06%200L5.22%209.28a.75.75%200%200%201%200-1.06'%20clip-rule='evenodd'/%3e%3c/svg%3e");background-position:right .75rem center;background-repeat:no-repeat;background-size:16px}select:where([data-darkmode=true],[data-darkmode=true] *){background-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20width='24'%20height='24'%20fill='%23ffffff'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M5.22%208.22a.75.75%200%200%201%201.06%200L10%2011.94l3.72-3.72a.75.75%200%201%201%201.06%201.06l-4.25%204.25a.75.75%200%200%201-1.06%200L5.22%209.28a.75.75%200%200%201%200-1.06'%20clip-rule='evenodd'/%3e%3c/svg%3e")}select[disabled]{cursor:not-allowed;opacity:.4}select[disabled]:where([data-darkmode=true],[data-darkmode=true] *){opacity:.3}.cbi-dropdown{min-width:fit-content;max-width:100%;height:fit-content;padding:calc(var(--spacing)*0);white-space:nowrap;--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;flex-shrink:0;align-items:center;transition-duration:.2s;display:inline-flex}.cbi-dropdown[disabled]{pointer-events:none;opacity:.4}.cbi-dropdown[disabled]:where([data-darkmode=true],[data-darkmode=true] *){opacity:.3}.cbi-dropdown:not(.btn):not(.cbi-button){border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.cbi-dropdown:not(.btn):not(.cbi-button){border-color:color-mix(in oklab,var(--border)70%,transparent)}}.cbi-dropdown:not(.btn):not(.cbi-button){background-color:var(--page-bg)}.cbi-dropdown:not(.btn):not(.cbi-button)>ul>li[placeholder]{display:none}.cbi-dropdown>ul{margin:calc(var(--spacing)*0);align-items:center;gap:calc(var(--spacing)*.5);flex-wrap:nowrap;flex:1;list-style-type:none;display:flex;overflow:hidden}@media not all and (min-width:48rem){.cbi-dropdown>ul{flex-wrap:wrap}}.cbi-dropdown>ul>li{margin:calc(var(--spacing)*0);align-items:center;gap:calc(var(--spacing)*1);padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*1.5);list-style-type:none;display:none;overflow:hidden}.cbi-dropdown>ul>li[display]{display:flex!important}.cbi-dropdown>ul>li .hide-open{display:block}.cbi-dropdown>ul>li .hide-close{display:none}.cbi-dropdown>ul>li>form{pointer-events:none;display:none}.cbi-dropdown>ul>li>label{align-items:center;gap:calc(var(--spacing)*2);display:flex}.cbi-dropdown>ul>li img{height:calc(var(--spacing)*5);width:calc(var(--spacing)*5);vertical-align:middle;flex:none}.cbi-dropdown>ul>li span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cbi-dropdown>ul.dropdown{left:calc(var(--spacing)*0);z-index:60;border-radius:var(--radius-base);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);width:fit-content;min-width:100%;position:absolute;overflow-y:auto}@supports (color:color-mix(in lab, red, red)){.cbi-dropdown>ul.dropdown{border-color:color-mix(in oklab,var(--border)60%,transparent)}}.cbi-dropdown>ul.dropdown{background-color:var(--page-bg)}@supports (color:color-mix(in lab, red, red)){.cbi-dropdown>ul.dropdown{background-color:color-mix(in oklab,var(--page-bg)95%,transparent)}}.cbi-dropdown>ul.dropdown{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.cbi-dropdown>ul.dropdown>li{min-height:calc(var(--spacing)*9);cursor:pointer;width:100%;padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--muted-foreground)}@media (hover:hover){.cbi-dropdown>ul.dropdown>li:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.cbi-dropdown>ul.dropdown>li:hover{background-color:color-mix(in oklab,var(--primary)15%,transparent)}}}.cbi-dropdown>ul.preview{display:none}.cbi-dropdown[empty]>ul{max-width:1px;max-height:1px}.cbi-dropdown[empty]>ul>li,.cbi-dropdown[optional][open]>ul.dropdown>li[placeholder]{display:block}.cbi-dropdown[open]{border-color:var(--primary);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--primary);position:relative}@supports (color:color-mix(in lab, red, red)){.cbi-dropdown[open]{--tw-ring-color:color-mix(in oklab,var(--primary)20%,transparent)}}.cbi-dropdown[open]>ul.dropdown{width:auto;max-width:none;display:block}.cbi-dropdown[open]>ul.dropdown>li{display:flex}.cbi-dropdown[open]>ul.dropdown>li[selected]{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.cbi-dropdown[open]>ul.dropdown>li[selected]{background-color:color-mix(in oklab,var(--primary)20%,transparent)}}.cbi-dropdown[open]>ul.dropdown>li[selected]{color:var(--primary)}.cbi-dropdown[open]>ul.dropdown>li[unselectable]{opacity:.4}.cbi-dropdown[open]>ul.dropdown>li[unselectable]:where([data-darkmode=true],[data-darkmode=true] *){opacity:.3}.cbi-dropdown[open]>ul.dropdown>li .hide-open{display:none}.cbi-dropdown[open]>ul.dropdown>li .hide-close{display:block}.cbi-dropdown[open]>ul.preview{display:flex}:is(.cbi-dropdown[multiple][more],.cbi-dropdown[multiple][empty])>.more{padding-inline:calc(var(--spacing)*2.5);padding-block:calc(var(--spacing)*1.5);flex:none;display:flex}.cbi-dropdown[multiple][open]>ul.dropdown>li>form{align-items:center;display:flex}.cbi-dropdown[multiple]>ul>li>label{display:flex}.cbi-dropdown>.open{cursor:pointer;border-left-style:var(--tw-border-style);border-left-width:1px;border-color:var(--border);flex:none;justify-content:center;align-items:center;display:flex}@supports (color:color-mix(in lab, red, red)){.cbi-dropdown>.open{border-color:color-mix(in oklab,var(--border)70%,transparent)}}.cbi-dropdown>.open{padding-inline:calc(var(--spacing)*2.5);padding-block:calc(var(--spacing)*.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:currentColor}.cbi-dropdown>.more{display:none}.cbi-tooltip{z-index:110;max-width:var(--container-xs);--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y);transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,);border-radius:calc(var(--radius-base)*1.5);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);position:absolute}@supports (color:color-mix(in lab, red, red)){.cbi-tooltip{border-color:color-mix(in oklab,var(--border)60%,transparent)}}.cbi-tooltip{background-color:var(--tooltip-bg);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));overflow-wrap:normal;word-break:normal;white-space:normal;color:var(--foreground);opacity:0;--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-backdrop-blur:blur(var(--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,);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;--tw-ease:var(--ease-out);transition-duration:.3s;transition-timing-function:var(--ease-out)}.cbi-tooltip.error{border-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.cbi-tooltip.error{border-color:color-mix(in oklab,var(--error)40%,transparent)}}.cbi-tooltip.error{background-color:var(--error);color:var(--error-foreground)}.cbi-tooltip.success{border-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.cbi-tooltip.success{border-color:color-mix(in oklab,var(--success)40%,transparent)}}.cbi-tooltip.success{background-color:var(--success);color:var(--success-foreground)}.cbi-tooltip.info{border-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.cbi-tooltip.info{border-color:color-mix(in oklab,var(--info)40%,transparent)}}.cbi-tooltip.info{background-color:var(--info);color:var(--info-foreground)}.cbi-tooltip.notice{border-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.cbi-tooltip.notice{border-color:color-mix(in oklab,var(--warning)40%,transparent)}}.cbi-tooltip.notice{background-color:var(--warning);color:var(--warning-foreground)}.cbi-tooltip-container,[data-tooltip]{cursor:help;white-space:nowrap;text-underline-offset:2px;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;text-decoration-line:underline;text-decoration-style:dotted;text-decoration-color:currentColor;transition-duration:.2s;display:inline-block;position:relative}:is(.cbi-tooltip-container,[data-tooltip]) .cbi-tooltip{visibility:hidden;--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y);transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,);opacity:0;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;--tw-ease:var(--ease-out);transition-duration:.3s;transition-timing-function:var(--ease-out)}:is(.cbi-tooltip-container,[data-tooltip]):hover .cbi-tooltip{visibility:visible;--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y);opacity:1}.alert-message{top:calc(var(--spacing)*14);z-index:40;margin-bottom:calc(var(--spacing)*4);border-radius:calc(var(--radius-base)*4);border-style:var(--tw-border-style);border-width:1px;border-color:var(--default);position:sticky}@supports (color:color-mix(in lab, red, red)){.alert-message{border-color:color-mix(in oklab,var(--default)30%,transparent)}}.alert-message{background-color:var(--default);padding:calc(var(--spacing)*6);color:var(--default-foreground)}@media not all and (min-width:48rem){.alert-message{margin-inline:calc(var(--spacing)*0);margin-bottom:calc(var(--spacing)*3);border-radius:calc(var(--radius-base)*3);padding:calc(var(--spacing)*4)}}.alert-message.modal{position:static;top:auto}.modal .alert-message{margin-bottom:calc(var(--spacing)*0)}.login-shell .alert-message{margin-bottom:calc(var(--spacing)*0);border-radius:calc(var(--radius-base)*2);padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*2.5);text-align:center;font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}@media not all and (min-width:48rem){.login-shell .alert-message{padding-inline:calc(var(--spacing)*.5)}}.alert-message.success{border-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.alert-message.success{border-color:color-mix(in oklab,var(--success)30%,transparent)}}.alert-message.success{background-color:var(--success);color:var(--success-foreground)}.alert-message.info{border-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.alert-message.info{border-color:color-mix(in oklab,var(--info)30%,transparent)}}.alert-message.info{background-color:var(--info);color:var(--info-foreground)}.alert-message.warning,.alert-message.notice{border-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.alert-message.warning,.alert-message.notice{border-color:color-mix(in oklab,var(--warning)30%,transparent)}}.alert-message.warning,.alert-message.notice{background-color:var(--warning);color:var(--warning-foreground)}.alert-message.error,.alert-message.danger{border-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.alert-message.error,.alert-message.danger{border-color:color-mix(in oklab,var(--error)30%,transparent)}}.alert-message.error,.alert-message.danger{background-color:var(--error);color:var(--error-foreground)}.alert-message h4,.alert-message h5,.alert-message pre,.alert-message ul,.alert-message li,.alert-message p{border-style:var(--tw-border-style);color:inherit;background-color:#0000;border-width:0}.alert-message h4{margin-bottom:calc(var(--spacing)*2);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}@media not all and (min-width:48rem){.alert-message h4{margin-bottom:calc(var(--spacing)*1.5);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}.alert-message p{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}@media not all and (min-width:48rem){.alert-message p{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.alert-message .right{margin-top:calc(var(--spacing)*4)}@media not all and (min-width:48rem){.alert-message .right{margin-top:calc(var(--spacing)*3)}}.cbi-progressbar{height:calc(var(--spacing)*3.5);cursor:help;background-color:var(--secondary);border-radius:3.40282e38px;width:100%;position:relative;overflow:hidden}.cbi-progressbar:before{content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y);content:var(--tw-content);--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y);content:var(--tw-content);border-radius:calc(var(--radius-base)*2);content:var(--tw-content);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));content:var(--tw-content);white-space:nowrap;content:var(--tw-content);color:var(--foreground);--tw-content:attr(title);content:var(--tw-content);position:absolute;top:50%;left:50%}@media not all and (min-width:48rem){.cbi-progressbar{height:calc(var(--spacing)*4);border-radius:calc(var(--radius-base)*2)}.cbi-progressbar:before{content:var(--tw-content);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));content:var(--tw-content);--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}}@media not all and (min-width:40rem){[data-page=admin-system-package-manager] .cbi-progressbar:before{content:var(--tw-content);font-size:10px}}.cbi-progressbar>div{--tw-gradient-position:to right;height:100%}@supports (background-image:linear-gradient(in lab, red, red)){.cbi-progressbar>div{--tw-gradient-position:to right in oklab}}.cbi-progressbar>div{background-image:linear-gradient(var(--tw-gradient-stops));--tw-gradient-from:var(--progress-bar-start);--tw-gradient-to:var(--progress-bar-end);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position));transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;transition-duration:.3s}.label{background-color:var(--default);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold);color:var(--default-foreground);text-transform:uppercase;border-radius:3.40282e38px}.label.important{background-color:var(--info);color:var(--info-foreground)}.label.warning{background-color:var(--error);color:var(--error-foreground)}.label.success{background-color:var(--success);color:var(--success-foreground)}.label.notice{background-color:var(--warning);color:var(--warning-foreground)}.zonebadge{align-items:center;gap:calc(var(--spacing)*1.5);border-style:var(--tw-border-style);border-width:1px;border-color:var(--secondary);background-color:var(--secondary);padding-inline:calc(var(--spacing)*1);padding-block:calc(var(--spacing)*1.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--secondary-foreground);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;border-radius:3.40282e38px;transition-duration:.2s;display:inline-flex;overflow:visible}@media (hover:hover){.zonebadge:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media not all and (min-width:48rem){.zonebadge{gap:calc(var(--spacing)*1);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}.zonebadge[style*=--zone-color-rgb]{background-color:rgb(var(--zone-color-rgb),.7)!important}.zonebadge[style*=--zone-color-rgb] em{color:var(--default-foreground)}.cbi-dropdown .zonebadge{border-radius:calc(var(--radius-base)*1.5);padding-inline:calc(var(--spacing)*1);padding-block:calc(var(--spacing)*.5)}.ifacebadge{cursor:default;align-items:center;gap:calc(var(--spacing)*2);border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);background-color:var(--label-surface);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--default-foreground);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;flex-wrap:wrap;transition-duration:.2s;display:inline-flex}@media (hover:hover){.ifacebadge:hover{border-color:var(--border);background-color:var(--label-surface);--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media not all and (min-width:48rem){.ifacebadge{gap:calc(var(--spacing)*1.5);padding-inline:calc(var(--spacing)*2.5);padding-block:calc(var(--spacing)*1.5);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}.cbi-dropdown .ifacebadge,.cbi-tooltip .ifacebadge{flex-wrap:nowrap}.zonebadge>.ifacebadge,.cbi-dropdown .ifacebadge{border-radius:calc(var(--radius-base)*2);padding-inline:calc(var(--spacing)*1.5);padding-block:calc(var(--spacing)*0)}:is(.zonebadge>.ifacebadge,.cbi-dropdown .ifacebadge) img{margin-right:calc(var(--spacing)*1);width:calc(var(--spacing)*4)}.ifacebadge>img{width:calc(var(--spacing)*5);flex-shrink:0;align-self:center}@media not all and (min-width:48rem){.ifacebadge>img{width:calc(var(--spacing)*4)}}.ifacebadge>span>.nowrap{margin-bottom:calc(var(--spacing)*1.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));display:inline-block}@media not all and (min-width:48rem){.ifacebadge>span>.nowrap{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}.ifacebadge.ifacebadge-active{border-color:var(--primary);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.ifacebadge.large{min-width:200px;padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*3);flex:1}@media not all and (min-width:48rem){.ifacebadge.large{min-width:180px;padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2.5)}}.cbi-section{margin-bottom:calc(var(--spacing)*3);border-radius:calc(var(--radius-base)*2);padding:calc(var(--spacing)*5);overflow:visible}@media not all and (min-width:48rem){.cbi-section{padding:calc(var(--spacing)*3)}}.cbi-section[data-tab-title]{margin:calc(var(--spacing)*0);padding:calc(var(--spacing)*0)}.cbi-section[data-tab-active=true]{margin-bottom:calc(var(--spacing)*3);padding:calc(var(--spacing)*5)}@media not all and (min-width:48rem){.cbi-section[data-tab-active=true]{padding:calc(var(--spacing)*3)}}#maincontent .cbi-section{border-style:var(--tw-border-style);border-width:1px;border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){#maincontent .cbi-section{border-color:color-mix(in oklab,var(--border)30%,transparent)}}#maincontent .cbi-section{background-color:var(--panel-bg);--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media (hover:hover){#maincontent .cbi-section:hover{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){#maincontent .cbi-section:hover{border-color:color-mix(in oklab,var(--border)50%,transparent)}}#maincontent .cbi-section:hover{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.cbi-section>.cbi-title{justify-content:space-between;align-items:flex-start;display:flex}.cbi-section>.cbi-title>h3{flex:1}.cbi-section>.cbi-title>h3 .label[data-clickable]{background-color:var(--label-surface);color:var(--foreground);width:calc(var(--spacing)*7);height:calc(var(--spacing)*7);cursor:pointer;padding:calc(var(--spacing)*0);justify-content:center;align-items:center;display:inline-flex}.cbi-section>.cbi-title>h3 .label[data-clickable]:before{content:var(--tw-content);width:calc(var(--spacing)*4);height:calc(var(--spacing)*4);content:var(--tw-content);content:var(--tw-content);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));content:var(--tw-content);--tw-duration:.3s;background-color:currentColor;transition-duration:.3s}@media (hover:hover){.cbi-section>.cbi-title>h3 .label[data-clickable]:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.cbi-section>.cbi-title>h3 .label[data-clickable]:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}@media not all and (min-width:48rem){.cbi-section>.cbi-title>h3 .label[data-clickable]{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}}.cbi-section>.cbi-title>h3 span[data-indicator=poll-status]{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5);cursor:pointer;font-size:0;position:relative}.cbi-section>.cbi-title>h3 span[data-indicator=poll-status]:before{content:var(--tw-content);content:var(--tw-content);width:calc(var(--spacing)*5);height:calc(var(--spacing)*5);content:var(--tw-content);content:var(--tw-content);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));content:var(--tw-content);--tw-duration:.3s;content:var(--tw-content);--tw-ease:var(--ease-out);transition-duration:.3s;transition-timing-function:var(--ease-out);background-color:currentColor;position:absolute}@media (hover:hover){.cbi-section>.cbi-title>h3 span[data-indicator=poll-status]:hover:before{content:var(--tw-content);--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}}.cbi-section>.cbi-title>h3 span[data-indicator=poll-status]:active:before{content:var(--tw-content);--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.cbi-section>.cbi-title>h3 span[data-indicator=poll-status][data-style=active]:before{content:var(--tw-content);content:var(--tw-content);rotate:none;-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M8.22%205.22a.75.75%200%200%201%201.06%200l4.25%204.25a.75.75%200%200%201%200%201.06l-4.25%204.25a.75.75%200%200%201-1.06-1.06L11.94%2010L8.22%206.28a.75.75%200%200%201%200-1.06'%20clip-rule='evenodd'/%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M8.22%205.22a.75.75%200%200%201%201.06%200l4.25%204.25a.75.75%200%200%201%200%201.06l-4.25%204.25a.75.75%200%200%201-1.06-1.06L11.94%2010L8.22%206.28a.75.75%200%200%201%200-1.06'%20clip-rule='evenodd'/%3e%3c/svg%3e") 50%/cover no-repeat}.cbi-section>.cbi-title>h3 span[data-indicator=poll-status][data-style=inactive]:before{content:var(--tw-content);content:var(--tw-content);rotate:90deg;-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M8.22%205.22a.75.75%200%200%201%201.06%200l4.25%204.25a.75.75%200%200%201%200%201.06l-4.25%204.25a.75.75%200%200%201-1.06-1.06L11.94%2010L8.22%206.28a.75.75%200%200%201%200-1.06'%20clip-rule='evenodd'/%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M8.22%205.22a.75.75%200%200%201%201.06%200l4.25%204.25a.75.75%200%200%201%200%201.06l-4.25%204.25a.75.75%200%200%201-1.06-1.06L11.94%2010L8.22%206.28a.75.75%200%200%201%200-1.06'%20clip-rule='evenodd'/%3e%3c/svg%3e") 50%/cover no-repeat}.cbi-section legend{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.cbi-section h3{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.cbi-section h3{border-color:color-mix(in oklab,var(--border)50%,transparent)}}.cbi-section h3{padding-bottom:calc(var(--spacing)*4);color:var(--foreground)}@media not all and (min-width:48rem){.cbi-section h3{margin-inline:calc(var(--spacing)*0);padding-bottom:calc(var(--spacing)*2)}.cbi-section div[style*=display\:grid]{gap:calc(var(--spacing)*3);grid-template-columns:repeat(2,minmax(0,1fr))!important}}.cbi-section .network-status-table{margin-bottom:calc(var(--spacing)*3);justify-content:space-around;gap:calc(var(--spacing)*4);flex-wrap:wrap;display:flex}@media not all and (min-width:48rem){.cbi-section .network-status-table{flex-direction:column}}.cbi-section .cbi-section-create{margin-top:calc(var(--spacing)*6);align-items:center;gap:calc(var(--spacing)*3);flex-wrap:wrap;display:flex}@media not all and (min-width:48rem){.cbi-section .cbi-section-create{margin-inline:calc(var(--spacing)*0);margin-top:calc(var(--spacing)*5);align-items:stretch;gap:calc(var(--spacing)*3);flex-direction:column}}.cbi-section .cbi-section-create>div{flex:none}@media not all and (min-width:48rem){.cbi-section .cbi-section-create>div{flex:1;width:100%}}.ifacebox{min-width:calc(var(--spacing)*40);border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);background-color:var(--panel-bg);flex-direction:column;align-items:stretch;display:inline-flex;position:relative;overflow:visible}@supports (color:color-mix(in lab, red, red)){.ifacebox{background-color:color-mix(in oklab,var(--panel-bg)95%,transparent)}}.ifacebox{text-align:center;font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));--tw-leading:calc(var(--spacing)*5);line-height:calc(var(--spacing)*5);--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media (hover:hover){.ifacebox:hover{border-color:var(--border);--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media not all and (min-width:48rem){.ifacebox{min-width:calc(var(--spacing)*30);border-radius:calc(var(--radius-base)*3);border-color:var(--border);flex:1}@supports (color:color-mix(in lab, red, red)){.ifacebox{border-color:color-mix(in oklab,var(--border)70%,transparent)}}.ifacebox{background-color:var(--panel-bg)}@supports (color:color-mix(in lab, red, red)){.ifacebox{background-color:color-mix(in oklab,var(--panel-bg)98%,transparent)}}.ifacebox{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}td .ifacebox{flex-direction:row}}.ifacebox .ifacebox-head{border-top-left-radius:calc(var(--radius-base)*2);border-top-right-radius:calc(var(--radius-base)*2);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--border);background-color:var(--label-surface);width:100%;padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*3);text-align:center;--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight);color:var(--foreground);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;transition-duration:.2s}@media not all and (min-width:48rem){.ifacebox .ifacebox-head{border-top-left-radius:calc(var(--radius-base)*3);border-top-right-radius:calc(var(--radius-base)*3);border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.ifacebox .ifacebox-head{border-color:color-mix(in oklab,var(--border)80%,transparent)}}.ifacebox .ifacebox-head{padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:calc(var(--spacing)*5);line-height:calc(var(--spacing)*5);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}}.ifacebox .ifacebox-head[style*=--zone-color-rgb]{background-color:rgb(var(--zone-color-rgb),.75)!important}@media not all and (min-width:48rem){td :is(.ifacebox .ifacebox-head){border-top-left-radius:calc(var(--radius-base)*3);border-bottom-left-radius:calc(var(--radius-base)*3);border-right-style:var(--tw-border-style);border-right-width:1px;border-bottom-style:var(--tw-border-style);border-bottom-width:0;border-top-right-radius:0;flex-shrink:0;justify-content:center;align-items:center;width:auto;display:flex}}.ifacebox .ifacebox-head.cbi-tooltip-container{background-color:#0000;position:static}.ifacebox .ifacebox-head.cbi-tooltip-container .cbi-tooltip{bottom:calc(var(--spacing)*0);left:calc(var(--spacing)*0)}.ifacebox .ifacebox-head.active{border-color:var(--primary);background-color:var(--primary);color:var(--primary-foreground)}.ifacebox .ifacebox-body{justify-content:space-around;align-items:center;gap:calc(var(--spacing)*2);border-bottom-right-radius:calc(var(--radius-base)*2);border-bottom-left-radius:calc(var(--radius-base)*2);width:100%;padding:calc(var(--spacing)*4);text-align:center;color:var(--default-foreground);flex-direction:column;flex:1;display:flex}@media not all and (min-width:48rem){.ifacebox .ifacebox-body{border-bottom-right-radius:calc(var(--radius-base)*3);border-bottom-left-radius:calc(var(--radius-base)*3)}td :is(.ifacebox .ifacebox-body){border-top-right-radius:calc(var(--radius-base)*3);border-bottom-right-radius:calc(var(--radius-base)*3);padding-block:calc(var(--spacing)*2);padding-right:calc(var(--spacing)*2);padding-left:calc(var(--spacing)*4);border-bottom-left-radius:0;flex-direction:row}}:where(.ifacebox .ifacebox-body>span>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}.ifacebox .ifacebox-body>span{color:var(--foreground)}@media not all and (min-width:48rem){:where(.ifacebox .ifacebox-body>span>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}.ifacebox .ifacebox-body>span{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:calc(var(--spacing)*5);line-height:calc(var(--spacing)*5)}}.network-status-table :is(.ifacebox .ifacebox-body>span){width:100%}.ifacebox .ifacebox-body>span .cbi-tooltip-container+.cbi-tooltip-container{margin-left:calc(var(--spacing)*2)}@media not all and (min-width:48rem){.ifacebox .ifacebox-body>span .cbi-tooltip-container+.cbi-tooltip-container{margin-left:calc(var(--spacing)*1.5)}}.ifacebox .ifacebox-body>span .cbi-tooltip{--tw-animation-delay:.2s;transition-delay:.2s;animation-delay:.2s}.ifacebox .ifacebox-body>span .nowrap{display:inline-block}.ifacebox .ifacebox-body>span>.nowrap:not(:last-child){margin-bottom:calc(var(--spacing)*4)}@media not all and (min-width:48rem){.ifacebox .ifacebox-body>span>.nowrap:not(:last-child){margin-bottom:calc(var(--spacing)*3)}}.ifacebox .ifacebox-body>span img{width:calc(var(--spacing)*6);flex-shrink:0}@media not all and (min-width:48rem){.ifacebox .ifacebox-body>span img{width:calc(var(--spacing)*5)}}.ifacebox .ifacebox-body>div{flex-wrap:wrap;width:100%;display:flex}:where(.ifacebox .ifacebox-body>div>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2.5)*calc(1 - var(--tw-space-y-reverse)))}@media not all and (min-width:48rem){:where(.ifacebox .ifacebox-body>div>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}td :is(.ifacebox .ifacebox-body>div){flex:1;width:auto}:where(td :is(.ifacebox .ifacebox-body>div)>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}}.ifacebox .ifacebox-body>div .ifacebadge{flex:1}.ifacebox .ifacebox-body .cbi-tooltip-container{cursor:help;color:var(--foreground);justify-content:center;align-items:center;display:inline-flex;position:static}.ifacebox .ifacebox-body .cbi-tooltip-container .cbi-tooltip{bottom:calc(var(--spacing)*0)}@media (min-width:48rem){.ifacebox .ifacebox-body .cbi-tooltip-container .cbi-tooltip{left:calc(var(--spacing)*0)}}.ifacebox .ifacebox-body .cbi-tooltip-container .cbi-tooltip .nowrap{white-space:nowrap}.ifacebox .ifacebox-body small{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-leading:calc(var(--spacing)*4);line-height:calc(var(--spacing)*4);display:block}@media not all and (min-width:48rem){td :is(.ifacebox .ifacebox-body small){margin-top:calc(var(--spacing)*0)}}#modal_overlay{pointer-events:none;top:calc(var(--spacing)*0);bottom:calc(var(--spacing)*0);background-color:#0000;display:none;position:fixed;overflow:auto}.modal-overlay-active #modal_overlay{pointer-events:auto;inset:calc(var(--spacing)*0);right:calc(var(--spacing)*0);left:calc(var(--spacing)*0);z-index:100;background-color:var(--overlay-base);grid-template-columns:repeat(1,minmax(0,1fr));place-items:center;display:grid}@supports (color:color-mix(in lab, red, red)){.modal-overlay-active #modal_overlay{background-color:color-mix(in oklab,var(--overlay-base)70%,transparent)}}.modal-overlay-active #modal_overlay{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}#modal_overlay>.modal{width:var(--container-5xl);gap:calc(var(--spacing)*4);border-radius:calc(var(--radius-base)*3);border-style:var(--tw-border-style);border-width:1px;border-color:color-mix(in oklab,var(--border)70%,transparent);background-color:var(--page-bg);padding:calc(var(--spacing)*6);overflow-wrap:break-word;white-space:normal;--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-backdrop-blur:blur(var(--blur-lg));--tw-backdrop-saturate:saturate(150%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);flex-direction:column;display:flex}@media not all and (min-width:48rem){#modal_overlay>.modal{gap:calc(var(--spacing)*3);width:100%;padding:calc(var(--spacing)*4)}}#modal_overlay>.modal h4{margin-bottom:calc(var(--spacing)*0);text-align:center}#modal_overlay>.modal h4 em{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--primary)}#modal_overlay>.modal h5{margin-block:calc(var(--spacing)*3);color:var(--foreground)}#modal_overlay>.modal p{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);color:var(--default-foreground)}#modal_overlay>.modal>ul{border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);overflow:auto}@supports (color:color-mix(in lab, red, red)){#modal_overlay>.modal>ul{border-color:color-mix(in oklab,var(--border)60%,transparent)}}#modal_overlay>.modal>ul{background-color:var(--page-bg)}@supports (color:color-mix(in lab, red, red)){#modal_overlay>.modal>ul{background-color:color-mix(in oklab,var(--page-bg)60%,transparent)}}#modal_overlay>.modal>ul{padding:calc(var(--spacing)*3)}#modal_overlay>.modal label.btn{border-style:var(--tw-border-style);border-width:1px;border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){#modal_overlay>.modal label.btn{border-color:color-mix(in oklab,var(--border)60%,transparent)}}#modal_overlay>.modal label.btn{background-color:var(--page-bg)}@supports (color:color-mix(in lab, red, red)){#modal_overlay>.modal label.btn{background-color:color-mix(in oklab,var(--page-bg)60%,transparent)}}#modal_overlay>.modal label.btn{color:var(--foreground)}@media (hover:hover){#modal_overlay>.modal label.btn:hover{border-color:var(--border)}}#modal_overlay>.modal pre{overflow:auto}#modal_overlay>.modal pre.errors{border-color:var(--error)}@supports (color:color-mix(in lab, red, red)){#modal_overlay>.modal pre.errors{border-color:color-mix(in oklab,var(--error)60%,transparent)}}#modal_overlay>.modal pre.errors{background-color:var(--error)}@supports (color:color-mix(in lab, red, red)){#modal_overlay>.modal pre.errors{background-color:color-mix(in oklab,var(--error)20%,transparent)}}#modal_overlay>.modal pre.errors{color:var(--error-foreground)}#modal_overlay>.modal pre+pre{margin-top:calc(var(--spacing)*3)}#modal_overlay>.modal .button-row,#modal_overlay>.modal div.left,#modal_overlay>.modal div.right{gap:calc(var(--spacing)*3);border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--border);flex-shrink:0;display:flex}@supports (color:color-mix(in lab, red, red)){#modal_overlay>.modal .button-row,#modal_overlay>.modal div.left,#modal_overlay>.modal div.right{border-color:color-mix(in oklab,var(--border)40%,transparent)}}#modal_overlay>.modal .button-row,#modal_overlay>.modal div.left,#modal_overlay>.modal div.right{padding:calc(var(--spacing)*4)}@media not all and (min-width:48rem){#modal_overlay>.modal .button-row,#modal_overlay>.modal div.left,#modal_overlay>.modal div.right{gap:calc(var(--spacing)*1.5);padding:calc(var(--spacing)*2.5)}}#modal_overlay>.modal div.left{justify-content:flex-start}#modal_overlay>.modal .button-row,#modal_overlay>.modal div.right{justify-content:flex-end}#modal_overlay>.modal.uci-dialog ins,#modal_overlay>.modal.uci-dialog del,#modal_overlay>.modal.uci-dialog var{font-family:var(--font-mono);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);font-style:normal;text-decoration-line:none}#modal_overlay>.modal.uci-dialog ins{border-style:var(--tw-border-style);border-width:1px;border-color:var(--success);background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){#modal_overlay>.modal.uci-dialog ins{background-color:color-mix(in oklab,var(--success)80%,transparent)}}#modal_overlay>.modal.uci-dialog ins{color:var(--success-foreground)}#modal_overlay>.modal.uci-dialog del{border-style:var(--tw-border-style);border-width:1px;border-color:var(--error);background-color:var(--error)}@supports (color:color-mix(in lab, red, red)){#modal_overlay>.modal.uci-dialog del{background-color:color-mix(in oklab,var(--error)80%,transparent)}}#modal_overlay>.modal.uci-dialog del{color:var(--error-foreground)}#modal_overlay>.modal.uci-dialog var{border-style:var(--tw-border-style);border-width:1px;border-color:var(--info);background-color:var(--info)}@supports (color:color-mix(in lab, red, red)){#modal_overlay>.modal.uci-dialog var{background-color:color-mix(in oklab,var(--info)80%,transparent)}}#modal_overlay>.modal.uci-dialog var{color:var(--info-foreground)}#modal_overlay>.modal.uci-dialog .uci-change-legend{margin-top:calc(var(--spacing)*4);gap:calc(var(--spacing)*3);border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}@supports (color:color-mix(in lab, red, red)){#modal_overlay>.modal.uci-dialog .uci-change-legend{border-color:color-mix(in oklab,var(--border)60%,transparent)}}#modal_overlay>.modal.uci-dialog .uci-change-legend{background-color:var(--page-bg)}@supports (color:color-mix(in lab, red, red)){#modal_overlay>.modal.uci-dialog .uci-change-legend{background-color:color-mix(in oklab,var(--page-bg)60%,transparent)}}#modal_overlay>.modal.uci-dialog .uci-change-legend{padding:calc(var(--spacing)*4)}@media not all and (min-width:48rem){#modal_overlay>.modal.uci-dialog .uci-change-legend{gap:calc(var(--spacing)*2);padding:calc(var(--spacing)*3);grid-template-columns:repeat(1,minmax(0,1fr))}}#modal_overlay>.modal.uci-dialog .uci-change-legend .uci-change-legend-label{align-items:center;gap:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--foreground);display:flex}#modal_overlay>.modal.uci-dialog .uci-change-legend .uci-change-legend-label ins,#modal_overlay>.modal.uci-dialog .uci-change-legend .uci-change-legend-label del,#modal_overlay>.modal.uci-dialog .uci-change-legend .uci-change-legend-label var{height:calc(var(--spacing)*6);min-width:calc(var(--spacing)*6);border-radius:var(--radius-base);padding-inline:calc(var(--spacing)*2);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);justify-content:center;align-items:center;display:flex}#modal_overlay>.modal.uci-dialog .uci-change-legend .uci-change-legend-label var ins,#modal_overlay>.modal.uci-dialog .uci-change-legend .uci-change-legend-label var del{margin-left:calc(var(--spacing)*1);height:calc(var(--spacing)*4);min-width:calc(var(--spacing)*4);padding-inline:calc(var(--spacing)*1)}#modal_overlay>.modal.uci-dialog .uci-change-list{margin-top:calc(var(--spacing)*4)}:where(#modal_overlay>.modal.uci-dialog .uci-change-list>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}#modal_overlay>.modal.uci-dialog .uci-change-list h5{margin-top:calc(var(--spacing)*6);margin-bottom:calc(var(--spacing)*2);border-radius:calc(var(--radius-base)*1.5);background-color:var(--default);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--default-foreground)}#modal_overlay>.modal.uci-dialog .uci-change-list h5:first-child{margin-top:calc(var(--spacing)*0)}#modal_overlay>.modal.uci-dialog .uci-change-list ins,#modal_overlay>.modal.uci-dialog .uci-change-list del{border-radius:calc(var(--radius-base)*1.5);padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));display:block}:is(#modal_overlay>.modal.uci-dialog .uci-change-list ins,#modal_overlay>.modal.uci-dialog .uci-change-list del) strong{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}#modal_overlay>.modal.uci-dialog .uci-change-list var{border-radius:var(--radius-base);padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*1);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));display:inline-block}#modal_overlay>.modal.uci-dialog .uci-change-list var ins,#modal_overlay>.modal.uci-dialog .uci-change-list var del{margin-left:calc(var(--spacing)*1);padding-inline:calc(var(--spacing)*1.5);padding-block:calc(var(--spacing)*.5);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));display:inline-block}@media not all and (min-width:48rem){.mobile-menu-overlay{visibility:hidden;inset:calc(var(--spacing)*0);z-index:60;background-color:var(--overlay-base);position:fixed}@supports (color:color-mix(in lab, red, red)){.mobile-menu-overlay{background-color:color-mix(in oklab,var(--overlay-base)60%,transparent)}}.mobile-menu-overlay{opacity:0;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;transition-duration:.3s}}@media (min-width:48rem){.mobile-menu-overlay{display:none}}@media not all and (min-width:48rem){.mobile-menu-overlay.mobile-menu-open{visibility:visible;opacity:1;--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.mobile-menu-overlay.mobile-menu-open .mobile-nav{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.mobile-menu-overlay .mobile-nav{top:calc(var(--spacing)*0);right:calc(var(--spacing)*0);height:100%;width:calc(var(--spacing)*80);--tw-translate-x:100%;translate:var(--tw-translate-x)var(--tw-translate-y);background-color:var(--page-bg);--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-backdrop-blur:blur(var(--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,);--tw-backdrop-saturate:saturate(150%);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;flex-direction:column;transition-duration:.3s;display:flex;position:absolute}.mobile-menu-overlay .mobile-nav .mobile-nav-header{padding:calc(var(--spacing)*6);padding-bottom:calc(var(--spacing)*4);justify-content:space-between;align-items:center;display:flex}.mobile-menu-overlay .mobile-nav .mobile-nav-header .mobile-nav-title{margin:calc(var(--spacing)*0);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--foreground)}.mobile-menu-overlay .mobile-nav .mobile-nav-header .mobile-nav-close{cursor:pointer;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;transition-duration:.2s}@media (hover:hover){.mobile-menu-overlay .mobile-nav .mobile-nav-header .mobile-nav-close:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}}.mobile-menu-overlay .mobile-nav .mobile-nav-header .mobile-nav-close:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}}.mobile-menu-overlay .mobile-nav .mobile-nav-header .mobile-nav-close svg{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}@media not all and (min-width:48rem){.mobile-menu-overlay .mobile-nav .mobile-nav-header .mobile-nav-close svg{color:var(--foreground);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;transition-duration:.2s}.mobile-menu-overlay .mobile-nav .mobile-nav-list{margin:calc(var(--spacing)*0);gap:calc(var(--spacing)*0);padding:calc(var(--spacing)*0);padding-inline:calc(var(--spacing)*6);flex-direction:column;flex:1;list-style-type:none;display:flex;overflow-y:auto}.mobile-menu-overlay .mobile-nav .mobile-nav-list .mobile-nav-item .mobile-nav-link{width:100%;padding-inline:calc(var(--spacing)*0);padding-block:calc(var(--spacing)*4);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--default-foreground);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;align-items:center;text-decoration-line:none;transition-duration:.3s;display:flex}@media (hover:hover){.mobile-menu-overlay .mobile-nav .mobile-nav-list .mobile-nav-item .mobile-nav-link:hover{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y);color:var(--foreground)}}.mobile-menu-overlay .mobile-nav .mobile-nav-list .mobile-nav-item .mobile-nav-submenu{margin:calc(var(--spacing)*0);padding:calc(var(--spacing)*0);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;--tw-ease:var(--ease-in-out);transition-duration:.3s;transition-timing-function:var(--ease-in-out);list-style-type:none;overflow:hidden}.mobile-menu-overlay .mobile-nav .mobile-nav-list .mobile-nav-item .mobile-nav-submenu .mobile-nav-subitem{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.mobile-menu-overlay .mobile-nav .mobile-nav-list .mobile-nav-item .mobile-nav-submenu .mobile-nav-subitem{border-color:color-mix(in oklab,var(--border)20%,transparent)}}.mobile-menu-overlay .mobile-nav .mobile-nav-list .mobile-nav-item .mobile-nav-submenu .mobile-nav-subitem:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.mobile-menu-overlay .mobile-nav .mobile-nav-list .mobile-nav-item .mobile-nav-submenu .mobile-nav-subitem .mobile-nav-sublink{width:100%;padding-block:calc(var(--spacing)*3);padding-right:calc(var(--spacing)*0);padding-left:calc(var(--spacing)*4);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--default-foreground);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;align-items:center;text-decoration-line:none;transition-duration:.3s;display:flex}@media (hover:hover){.mobile-menu-overlay .mobile-nav .mobile-nav-list .mobile-nav-item .mobile-nav-submenu .mobile-nav-subitem .mobile-nav-sublink:hover{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y);color:var(--foreground)}}}[data-nav-type=mega-menu] .desktop-menu-overlay{pointer-events:none;inset:calc(var(--spacing)*0);z-index:50;background-color:var(--overlay-base);position:fixed}@supports (color:color-mix(in lab, red, red)){[data-nav-type=mega-menu] .desktop-menu-overlay{background-color:color-mix(in oklab,var(--overlay-base)35%,transparent)}}[data-nav-type=mega-menu] .desktop-menu-overlay{opacity:0;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;transition-duration:.3s}@media not all and (min-width:48rem){[data-nav-type=mega-menu] .desktop-menu-overlay{display:none}}[data-nav-type=mega-menu] .desktop-menu-overlay.active{pointer-events:auto;opacity:1;--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}table.table,.table{margin-bottom:calc(var(--spacing)*3);border-collapse:separate;--tw-border-spacing-x:calc(var(--spacing)*0);--tw-border-spacing-y:calc(var(--spacing)*0);width:100%;border-spacing:var(--tw-border-spacing-x)var(--tw-border-spacing-y);border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);overflow:visible}@media not all and (min-width:48rem){table.table,.table{margin-inline:calc(var(--spacing)*0);border-style:var(--tw-border-style);background-color:var(--panel-bg);border-width:0;width:100%;display:block;overflow:visible}@supports (color:color-mix(in lab, red, red)){table.table,.table{background-color:color-mix(in oklab,var(--panel-bg)98%,transparent)}}table.table,.table{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}:is(table.table,.table)[width="100%"]{width:100%}:is(table.table,.table)[width="33%"]{width:33.3333%}:is(table.table,.table) .cbi-section-table-titles{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}:is(:is(table.table,.table) .cbi-section-table-titles.named,:is(table.table,.table) .cbi-section-table-descr.named,:is(table.table,.table) .cbi-section-table-row[data-title]):before{content:var(--tw-content);content:var(--tw-content);border-color:var(--border);content:var(--tw-content);padding-inline:calc(var(--spacing)*3);content:var(--tw-content);padding-block:calc(var(--spacing)*3);content:var(--tw-content);vertical-align:middle;content:var(--tw-content);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));content:var(--tw-content);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-content:attr(data-title);content:var(--tw-content);content:var(--tw-content);display:table-cell}@media not all and (min-width:48rem){:is(:is(table.table,.table) .cbi-section-table-titles.named,:is(table.table,.table) .cbi-section-table-descr.named,:is(table.table,.table) .cbi-section-table-row[data-title]):before{padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));flex:0 0 100%;display:flex}}:is(:is(table.table,.table) .cbi-section-table-titles.named,:is(table.table,.table) .cbi-section-table-descr.named,:is(table.table,.table) .cbi-section-table-row[data-title]):before{content:var(--tw-content)}@media (min-width:48rem){:is(:is(table.table,.table) .cbi-section-table-titles.named,:is(table.table,.table) .cbi-section-table-descr.named,:is(table.table,.table) .cbi-section-table-row[data-title]):before{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}}:is(:is(:is(table.table,.table) .cbi-section-table-titles.named,:is(table.table,.table) .cbi-section-table-descr.named,:is(table.table,.table) .cbi-section-table-row[data-title]):not([data-title]),:is(:is(table.table,.table) .cbi-section-table-titles.named,:is(table.table,.table) .cbi-section-table-descr.named,:is(table.table,.table) .cbi-section-table-row[data-title]):has(td.cbi-section-table-titles)):before{content:var(--tw-content);--tw-content:none;content:none}:is(table.table,.table) .cbi-section-table-titles.named:before{content:var(--tw-content);background-color:var(--label-surface);content:var(--tw-content)}@media not all and (min-width:48rem){:is(table.table,.table) .cbi-section-table-titles.named:before{background-color:var(--label-surface)}}:is(table.table,.table) .cbi-section-table-titles.named:before{content:var(--tw-content)}@media (min-width:48rem){:is(table.table,.table) .cbi-section-table-titles.named:before{border-top-left-radius:calc(var(--radius-base)*2)}}@media not all and (min-width:48rem){:is(table.table,.table) tbody,:is(table.table,.table) .tbody{display:block}}:is(table.table,.table) tr,:is(table.table,.table) .tr{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;transition-duration:.2s}@media (hover:hover){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):hover{background-color:var(--label-surface)}}@media not all and (min-width:48rem){:is(table.table,.table) tr,:is(table.table,.table) .tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--border);padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*2);flex-wrap:wrap;display:flex}:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):has(.cbi-progressbar){justify-content:center;align-items:center;display:flex}}@media (min-width:48rem){:is(:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):first-child:not([data-title]) .th,:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):first-child:not([data-title]) .td):first-child{border-top-left-radius:calc(var(--radius-base)*2)}:is(:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):first-child .th,:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):first-child .td):last-child{border-top-right-radius:calc(var(--radius-base)*2)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):last-child{border-bottom-right-radius:calc(var(--radius-base)*2);border-bottom-left-radius:calc(var(--radius-base)*2)}}:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):last-child[data-title]:before{content:var(--tw-content);border-bottom-left-radius:calc(var(--radius-base)*2);content:var(--tw-content);border-bottom-style:var(--tw-border-style);border-bottom-width:0}:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):last-child .td{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):last-child .td:first-child{border-bottom-left-radius:calc(var(--radius-base)*2)}:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):last-child .td:last-child{border-bottom-right-radius:calc(var(--radius-base)*2)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr).table-titles,:is(:is(table.table,.table) tr,:is(table.table,.table) .tr).cbi-section-table-titles,:is(:is(table.table,.table) tr,:is(table.table,.table) .tr).cbi-section-table-descr{display:none}:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):first-child:not(.table-titles,.cbi-section-table-titles,.cbi-section-table-descr),:is(:is(table.table,.table) tr,:is(table.table,.table) .tr).table-titles+.tr,:is(:is(table.table,.table) tr,:is(table.table,.table) .tr).cbi-section-table-titles+.tr,:is(:is(table.table,.table) tr,:is(table.table,.table) .tr).cbi-section-table-descr+.tr{border-top-left-radius:calc(var(--radius-base)*2);border-top-right-radius:calc(var(--radius-base)*2)}}:is(:is(table.table,.table) tr,:is(table.table,.table) .tr).cbi-rowstyle-1{background-color:var(--panel-bg)}:is(:is(table.table,.table) tr,:is(table.table,.table) .tr).cbi-rowstyle-2{background-color:var(--label-surface)}@supports (color:color-mix(in lab, red, red)){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr).cbi-rowstyle-2{background-color:color-mix(in oklab,var(--label-surface)50%,transparent)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-1{flex:2rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-1{width:calc(var(--spacing)*20);max-width:calc(var(--spacing)*28)}}:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-2{white-space:normal}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-2{flex:2 2 4rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-2{width:calc(var(--spacing)*32);max-width:calc(var(--spacing)*40)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-3{flex:3 3 6rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-3{width:calc(var(--spacing)*44);max-width:calc(var(--spacing)*52)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-4{flex:4 4 8rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-4{width:calc(var(--spacing)*56);max-width:calc(var(--spacing)*64)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-5{flex:5 5 10rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-5{width:calc(var(--spacing)*68);max-width:calc(var(--spacing)*76)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-6{flex:6 6 12rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-6{width:calc(var(--spacing)*80);max-width:calc(var(--spacing)*88)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-7{flex:7 7 14rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-7{width:calc(var(--spacing)*92);max-width:calc(var(--spacing)*100)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-8{flex:8 8 16rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-8{width:calc(var(--spacing)*104);max-width:calc(var(--spacing)*112)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-9{flex:9 9 18rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-9{width:calc(var(--spacing)*116);max-width:calc(var(--spacing)*124)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-10{flex:0 0 100%;max-width:calc(100vw - 40px)}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-10{width:calc(var(--spacing)*128);max-width:calc(var(--spacing)*136)}}:is(table.table,.table) th,:is(table.table,.table) .th{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--border);background-color:var(--label-surface);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*3);text-align:left;font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}@media not all and (min-width:48rem){:is(table.table,.table) th,:is(table.table,.table) .th{border-style:var(--tw-border-style);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));border-width:0;flex:50%}}#cbi-samba4 :is(:is(table.table,.table) th,:is(table.table,.table) .th){padding-inline:calc(var(--spacing)*.5);padding-block:calc(var(--spacing)*1.5)}:is(:is(table.table,.table) th,:is(table.table,.table) .th)[width="100%"]{width:100%}@media not all and (min-width:48rem){:is(:is(table.table,.table) th,:is(table.table,.table) .th)[width="100%"]{flex:0 0 100%}}:is(:is(table.table,.table) th,:is(table.table,.table) .th)[width="33%"]{width:33.3333%}@media not all and (min-width:48rem){:is(:is(table.table,.table) th,:is(table.table,.table) .th)[width="33%"]{flex:0 0 33.333%}}:is(:is(table.table,.table) th,:is(table.table,.table) .th)[data-sortable-row=true]{cursor:pointer;-webkit-user-select:none;user-select:none}:is(:is(table.table,.table) th,:is(table.table,.table) .th)[data-sortable-row=true]:after{content:var(--tw-content);margin-left:calc(var(--spacing)*.5);content:var(--tw-content);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}@media (hover:hover){:is(:is(table.table,.table) th,:is(table.table,.table) .th)[data-sortable-row=true]:hover{background-color:var(--label-surface)}}:is(:is(table.table,.table) th,:is(table.table,.table) .th)[data-sortable-row=true][data-sort-direction=asc]:after{--tw-content:"▲";content:var(--tw-content)}:is(:is(table.table,.table) th,:is(table.table,.table) .th)[data-sortable-row=true][data-sort-direction=desc]:after{--tw-content:"▼";content:var(--tw-content)}:is(table.table,.table)[id*=status_leases] .td{max-width:calc(var(--spacing)*62)}@media not all and (min-width:48rem){:is(table.table,.table)[id*=status_leases] .td{max-width:100%}}:is(table.table,.table) td,:is(table.table,.table) .td{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--border);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*3);vertical-align:middle;font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));overflow-wrap:break-word;white-space:normal;display:table-cell}@media not all and (min-width:48rem){:is(table.table,.table) td,:is(table.table,.table) .td{border-style:var(--tw-border-style);padding-inline:calc(var(--spacing)*1);padding-block:calc(var(--spacing)*1);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));border-width:0;flex:50%}}:is(:is(table.table,.table) td,:is(table.table,.table) .td):before{content:var(--tw-content);--tw-content:attr(data-title);content:var(--tw-content);content:var(--tw-content);display:none}@media not all and (min-width:48rem){:is(:is(table.table,.table) td,:is(table.table,.table) .td):before{margin-bottom:calc(var(--spacing)*1);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);display:block}}:is(:is(table.table,.table) td,:is(table.table,.table) .td):before{content:var(--tw-content)}@media not all and (min-width:48rem){:is(:is(table.table,.table) td,:is(table.table,.table) .td):before{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}}#cbi-samba4 :is(:is(table.table,.table) td,:is(table.table,.table) .td){padding-inline:calc(var(--spacing)*.5);padding-block:calc(var(--spacing)*1.5)}[data-page=admin-system-mounts] :is(:is(table.table,.table) td,:is(table.table,.table) .td){max-width:calc(var(--spacing)*104)}@media not all and (min-width:48rem){[data-page=admin-system-mounts] :is(:is(table.table,.table) td,:is(table.table,.table) .td){max-width:100%}#wifi_assoclist_table :is(:is(table.table,.table) td,:is(table.table,.table) .td){padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);flex:0 0 100%}}#wifi_assoclist_table :is(:is(table.table,.table) td,:is(table.table,.table) .td):before{content:var(--tw-content)}@media not all and (min-width:48rem){#wifi_assoclist_table :is(:is(table.table,.table) td,:is(table.table,.table) .td):before{margin-bottom:calc(var(--spacing)*1.5)}}:is(:is(table.table,.table) td,:is(table.table,.table) .td)>input[type=text],:is(:is(table.table,.table) td,:is(table.table,.table) .td)>input[type=password],:is(:is(table.table,.table) td,:is(table.table,.table) .td)>select,:is(:is(table.table,.table) td,:is(table.table,.table) .td)>.cbi-dropdown:not(.btn):not(.cbi-button){width:100%}:is(:is(table.table,.table) td,:is(table.table,.table) .td).cbi-value-field{word-break:break-all}@media not all and (min-width:48rem){:is(:is(table.table,.table) td,:is(table.table,.table) .td).cbi-section-actions{flex:0 0 100%}:is(:is(table.table,.table) td,:is(table.table,.table) .td).cbi-section-actions>div{width:100%}:is(:is(table.table,.table) td,:is(table.table,.table) .td).cbi-section-actions>div>.cbi-button{flex:1}:is(:is(table.table,.table) td,:is(table.table,.table) .td)>.cbi-button{width:100%}}:is(:is(table.table,.table) td,:is(table.table,.table) .td)[width="100%"]{width:100%}@media not all and (min-width:48rem){:is(:is(table.table,.table) td,:is(table.table,.table) .td)[width="100%"]{flex:0 0 100%}}:is(:is(table.table,.table) td,:is(table.table,.table) .td)[width="33%"]{width:33.3333%}@media not all and (min-width:48rem){:is(:is(table.table,.table) td,:is(table.table,.table) .td)[width="33%"]{flex:0 0 33.333%}[data-page=admin-network-network] :is(:is(table.table,.table) td,:is(table.table,.table) .td)[data-name=_ifacebox],[data-page=admin-network-network] :is(:is(table.table,.table) td,:is(table.table,.table) .td)[data-name=_ifacestat]{flex-basis:100%}}.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell{width:auto!important}.cbi-input-invalid,.cbi-value-error{border-color:var(--error)!important}@supports (color:color-mix(in lab, red, red)){.cbi-input-invalid,.cbi-value-error{border-color:color-mix(in oklab,var(--error)70%,transparent)!important}}:is(.cbi-input-invalid,.cbi-value-error):focus{--tw-ring-color:var(--error)!important}@supports (color:color-mix(in lab, red, red)){:is(.cbi-input-invalid,.cbi-value-error):focus{--tw-ring-color:color-mix(in oklab,var(--error)40%,transparent)!important}}.cbi-value{gap:calc(var(--spacing)*6);padding-block:calc(var(--spacing)*1.5);flex-flow:wrap;display:flex}@media not all and (min-width:48rem){.cbi-value{gap:calc(var(--spacing)*1.5);padding-block:calc(var(--spacing)*1);flex-direction:column}}.cbi-value.hidden{display:none}.cbi-value+.cbi-value{margin-top:calc(var(--spacing)*3)}@media not all and (min-width:48rem){.cbi-value+.cbi-value{margin-top:calc(var(--spacing)*2)}}.cbi-value>.cbi-value-title{padding-top:calc(var(--spacing)*1);text-align:right;--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}@media not all and (min-width:48rem){.cbi-value>.cbi-value-title{text-align:left;width:auto}}@media (min-width:48rem){.cbi-value>.cbi-value-title{flex:0 0 12rem}}.cbi-value>.cbi-value-field{flex:1;max-width:100%}.cbi-value>.cbi-value-field:has(>.cbi-dropdown[disabled]){cursor:not-allowed}.cbi-value>.cbi-value-field .cbi-value-description{margin-top:calc(var(--spacing)*1);padding-left:calc(var(--spacing)*4);--tw-leading:1;overflow-wrap:break-word;color:var(--muted-foreground);line-height:1;position:relative}.cbi-value>.cbi-value-field .cbi-value-description:not(:empty):before{content:var(--tw-content);content:var(--tw-content);left:calc(var(--spacing)*-.5);content:var(--tw-content);content:var(--tw-content);width:calc(var(--spacing)*4);height:calc(var(--spacing)*4);content:var(--tw-content);background-color:var(--info-foreground);content:var(--tw-content);display:inline-block;position:absolute;-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2016%2016'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M15%208A7%207%200%201%201%201%208a7%207%200%200%201%2014%200M9%205a1%201%200%201%201-2%200a1%201%200%200%201%202%200M6.75%208a.75.75%200%200%200%200%201.5h.75v1.75a.75.75%200%200%200%201.5%200v-2.5A.75.75%200%200%200%208.25%208z'%20clip-rule='evenodd'/%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2016%2016'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M15%208A7%207%200%201%201%201%208a7%207%200%200%201%2014%200M9%205a1%201%200%201%201-2%200a1%201%200%200%201%202%200M6.75%208a.75.75%200%200%200%200%201.5h.75v1.75a.75.75%200%200%200%201.5%200v-2.5A.75.75%200%200%200%208.25%208z'%20clip-rule='evenodd'/%3e%3c/svg%3e") 50%/cover no-repeat}.cbi-value>.cbi-section,.cbi-value>.cbi-tblsection{width:100%}.cbi-dynlist{width:max-content;max-width:calc(var(--spacing)*120);align-items:flex-start;gap:calc(var(--spacing)*3);flex-direction:column;display:inline-flex}@media not all and (min-width:48rem){.cbi-dynlist{max-width:100%!important}}.cbi-dynlist .item{pointer-events:auto;cursor:move;align-items:flex-start;gap:calc(var(--spacing)*2);border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);flex-direction:column;align-self:stretch;display:inline-flex;position:relative;overflow:hidden}@supports (color:color-mix(in lab, red, red)){.cbi-dynlist .item{border-color:color-mix(in oklab,var(--border)40%,transparent)}}.cbi-dynlist .item{background-color:var(--panel-bg);padding-block:calc(var(--spacing)*3);padding-right:calc(var(--spacing)*10);padding-left:calc(var(--spacing)*4);word-break:break-all;--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;-webkit-user-select:text;user-select:text;transition-duration:.2s}@media not all and (min-width:48rem){.cbi-dynlist .item{width:100%;padding-block:calc(var(--spacing)*2.5);padding-right:calc(var(--spacing)*8);padding-left:calc(var(--spacing)*3)}}.cbi-dynlist .item:after{content:var(--tw-content);content:var(--tw-content);top:calc(var(--spacing)*2.5);content:var(--tw-content);right:calc(var(--spacing)*2);content:var(--tw-content);content:var(--tw-content);height:calc(var(--spacing)*6);content:var(--tw-content);width:calc(var(--spacing)*6);content:var(--tw-content);content:var(--tw-content);cursor:pointer;content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);border-radius:calc(var(--radius-base)*1.5);content:var(--tw-content);background-color:var(--muted);content:var(--tw-content);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));content:var(--tw-content);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);content:var(--tw-content);color:var(--muted-foreground);--tw-content:"×";content:var(--tw-content);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex;position:absolute}.cbi-dynlist .item.dragging{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y);cursor:grabbing;opacity:.5;--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.cbi-dynlist .item.drag-over{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y);border-color:color-mix(in oklab,var(--primary)60%,transparent);background-color:color-mix(in oklab,var(--primary)5%,transparent);--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:color-mix(in oklab,var(--primary)30%,transparent)}.cbi-dynlist .item>span,.cbi-dynlist .item>code{pointer-events:none;border-radius:var(--radius-base);width:100%;font-family:var(--font-mono);--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.cbi-dynlist .placeholder{word-break:break-all}.cbi-dynlist .add-item{align-items:center;gap:calc(var(--spacing)*1.5);border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);--tw-border-style:dashed;border-style:dashed;border-width:1px;border-color:var(--border);align-self:stretch;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.cbi-dynlist .add-item{border-color:color-mix(in oklab,var(--border)70%,transparent)}}.cbi-dynlist .add-item{padding-inline:calc(var(--spacing)*1);padding-block:calc(var(--spacing)*1);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;background-color:#0000;transition-duration:.2s}@media (hover:hover){.cbi-dynlist .add-item:hover{border-color:var(--border);background-color:var(--page-bg)}@supports (color:color-mix(in lab, red, red)){.cbi-dynlist .add-item:hover{background-color:color-mix(in oklab,var(--page-bg)50%,transparent)}}}.cbi-dynlist .add-item>input{min-width:calc(var(--spacing)*61);flex:1}.cbi-dynlist .add-item>.cbi-button{min-height:calc(var(--spacing)*6);min-width:calc(var(--spacing)*6);cursor:pointer;border-radius:calc(var(--radius-base)*1.5);padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*0);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.cbi-dynlist .add-item>.cbi-button:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.cbi-tabmenu{margin-bottom:calc(var(--spacing)*1);align-items:center;gap:calc(var(--spacing)*1);border-radius:calc(var(--radius-base)*4);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);display:flex;overflow-x:auto}@supports (color:color-mix(in lab, red, red)){.cbi-tabmenu{border-color:color-mix(in oklab,var(--border)60%,transparent)}}.cbi-tabmenu{background-color:var(--label-surface);padding:calc(var(--spacing)*1)}.cbi-tabmenu li{margin:calc(var(--spacing)*0);flex-shrink:0;min-width:fit-content;list-style-type:none;position:relative}.cbi-tabmenu li[data-errors]:after{content:var(--tw-content);content:var(--tw-content);top:calc(var(--spacing)*-.5);content:var(--tw-content);right:calc(var(--spacing)*-1.5);content:var(--tw-content);z-index:20;content:var(--tw-content);content:var(--tw-content);min-height:calc(var(--spacing)*4);content:var(--tw-content);min-width:calc(var(--spacing)*4);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);background-color:var(--accent);content:var(--tw-content);padding-inline:calc(var(--spacing)*1.5);content:var(--tw-content);padding-block:calc(var(--spacing)*.5);content:var(--tw-content);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));content:var(--tw-content);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);content:var(--tw-content);color:var(--accent-foreground);--tw-content:attr(data-errors);content:var(--tw-content);border-radius:3.40282e38px;justify-content:center;align-items:center;display:inline-flex;position:absolute}.cbi-tabmenu li[data-errors]>a{border-style:var(--tw-border-style);border-width:1px;border-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.cbi-tabmenu li[data-errors]>a{border-color:color-mix(in oklab,var(--error)50%,transparent)}}.cbi-tabmenu li>a{border-radius:calc(var(--radius-base)*4);padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*2);text-align:center;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);white-space:nowrap;color:var(--muted-foreground);text-decoration-line:none;display:block}@media (hover:hover){.cbi-tabmenu li>a:hover{color:var(--foreground)}}.cbi-tabmenu li.cbi-tab a{background-color:var(--foreground);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--page-bg);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}[data-tab-title]{visibility:hidden;height:calc(var(--spacing)*0);overflow:hidden}[data-tab-active=true]{visibility:visible;height:auto;overflow:visible}#tabmenu{margin-bottom:calc(var(--spacing)*8);width:100%}.tabs{align-items:center;gap:calc(var(--spacing)*0);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--border);display:flex;position:relative;overflow-x:auto}.tabs a{padding-inline:calc(var(--spacing)*8);padding-block:calc(var(--spacing)*4);text-align:center;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);white-space:nowrap;color:var(--muted-foreground);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;transition-duration:.2s;display:block}@media (hover:hover){.tabs a:hover{color:var(--foreground);text-decoration-line:none}}.tabs>li.active{border-bottom-style:var(--tw-border-style);border-bottom-width:2px;border-color:var(--foreground)}.tabs>li.active>a{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--foreground)}.cbi-section-node-tabbed{margin-top:calc(var(--spacing)*6)}.login-screen{min-height:100dvh;padding-inline:calc(var(--spacing)*5);justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.login-screen .login-shell{z-index:10;width:100%;max-width:var(--container-md);align-items:stretch;gap:calc(var(--spacing)*6);flex-direction:column;display:flex;position:relative}.login-screen .login-shell .login-card{border-radius:calc(var(--radius-base)*4);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);background-color:var(--panel-bg);padding:calc(var(--spacing)*10);--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-backdrop-blur:blur(var(--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,);position:relative;overflow:hidden}@media not all and (min-width:48rem){.login-screen .login-shell .login-card{border-radius:calc(var(--radius-base)*3);padding:calc(var(--spacing)*6)}}.login-screen .login-shell .login-card .login-brand{align-items:center;gap:calc(var(--spacing)*4);display:flex}.login-screen .login-shell .login-card .login-brand .login-logo{height:calc(var(--spacing)*12);width:calc(var(--spacing)*12);border-radius:calc(var(--radius-base)*2);background-color:var(--primary);justify-content:center;align-items:center;display:flex}@supports (color:color-mix(in lab, red, red)){.login-screen .login-shell .login-card .login-brand .login-logo{background-color:color-mix(in oklab,var(--primary)15%,transparent)}}.login-screen .login-shell .login-card .login-brand .login-logo{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.login-screen .login-shell .login-card .login-brand .login-logo{--tw-ring-color:color-mix(in oklab,var(--primary)20%,transparent)}}.login-screen .login-shell .login-card .login-brand .login-logo img{height:calc(var(--spacing)*6);width:calc(var(--spacing)*6)}.login-screen .login-shell .login-card .login-brand .login-title{gap:calc(var(--spacing)*1);flex-direction:column;display:flex}.login-screen .login-shell .login-card .login-brand .login-title .login-hostname{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight);color:var(--foreground)}.login-screen .login-shell .login-card .login-brand .login-title .login-subtitle{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--default-foreground)}.login-screen .login-shell .login-card .login-divider{margin-block:calc(var(--spacing)*6);--tw-gradient-position:to right;width:100%;height:1px}@supports (background-image:linear-gradient(in lab, red, red)){.login-screen .login-shell .login-card .login-divider{--tw-gradient-position:to right in oklab}}.login-screen .login-shell .login-card .login-divider{background-image:linear-gradient(var(--tw-gradient-stops));--tw-gradient-from:transparent;--tw-gradient-via:var(--border);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position));--tw-gradient-to:transparent}@media (min-width:48rem){.login-screen .login-shell .login-card .login-divider{margin-block:calc(var(--spacing)*8)}}.login-screen .login-shell .login-card .login-form{gap:calc(var(--spacing)*6);flex-direction:column;display:flex}@media (min-width:48rem){.login-screen .login-shell .login-card .login-form{gap:calc(var(--spacing)*4)}}.login-screen .login-shell .login-card .login-form .login-fields{gap:calc(var(--spacing)*4);flex-direction:column;display:flex}@media (min-width:48rem){.login-screen .login-shell .login-card .login-form .login-fields{gap:calc(var(--spacing)*5)}}.login-screen .login-shell .login-card .login-form .login-fields .login-field{gap:calc(var(--spacing)*2);flex-direction:column;display:flex}.login-screen .login-shell .login-card .login-form .login-fields .login-field .login-label{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--default-foreground);text-transform:uppercase}.login-screen .login-shell .login-card .login-form .login-fields .login-field .login-input{border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);background-color:var(--panel-bg)}@supports (color:color-mix(in lab, red, red)){.login-screen .login-shell .login-card .login-form .login-fields .login-field .login-input{background-color:color-mix(in oklab,var(--panel-bg)70%,transparent)}}.login-screen .login-shell .login-card .login-form .login-fields .login-field .login-input{padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2.5);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));color:var(--foreground)}.login-screen .login-shell .login-card .login-form .login-fields .login-field .login-input:focus{border-color:var(--primary)}@media (min-width:48rem){.login-screen .login-shell .login-card .login-form .login-actions{padding-top:calc(var(--spacing)*4)}}.login-screen .login-shell .login-card .login-form .login-actions .login-submit{width:100%;padding-block:calc(var(--spacing)*2.5);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.login-screen .login-shell .login-footer{bottom:calc(var(--spacing)*0);--tw-translate-x:calc(calc(1/2*100%)*-1);width:calc(100% - 1.25rem);translate:var(--tw-translate-x)var(--tw-translate-y);padding-bottom:calc(var(--spacing)*4);text-align:center;color:var(--muted-foreground);position:fixed;left:50%}@media not all and (min-width:48rem){.login-screen .login-shell .login-footer{padding-bottom:calc(var(--spacing)*3)}}.login-screen .login-shell .login-footer p{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));white-space:normal}.login-screen .login-shell .login-footer p a{color:var(--primary)}@media (hover:hover){.login-screen .login-shell .login-footer p a:hover{color:var(--primary)}}.collapse{visibility:collapse}.fixed{position:fixed}.static{position:static}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.scrollbar::-webkit-scrollbar-track{background-color:var(--scrollbar-track);border-radius:var(--scrollbar-track-radius)}.scrollbar::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:var(--scrollbar-thumb-radius)}.scrollbar::-webkit-scrollbar-corner{background-color:var(--scrollbar-corner);border-radius:var(--scrollbar-corner-radius)}.scrollbar{scrollbar-width:auto;scrollbar-color:var(--scrollbar-thumb,initial)var(--scrollbar-track,initial)}.scrollbar::-webkit-scrollbar{width:var(--scrollbar-width,16px);height:var(--scrollbar-height,16px);display:block}.hidden{display:none}.table{display:table}.underline{text-decoration-line:underline}@media (min-width:48rem){.left{text-align:left!important}}.left:not(td){text-align:left!important}@media (min-width:48rem){.right{text-align:right!important}}.right:not(td){text-align:right!important}@media (min-width:48rem){.top{vertical-align:top!important}}.top:not(td){vertical-align:top!important}@media (min-width:48rem){.bottom{vertical-align:bottom!important}}.bottom:not(td){vertical-align:bottom!important}@media (min-width:48rem){.center{text-align:center!important}}.center:not(td){text-align:center!important}@media (min-width:48rem){.middle{vertical-align:middle!important}}.middle:not(td){vertical-align:middle!important}@media (min-width:48rem){.nowrap:not(span){white-space:nowrap}}.nowrap:not(span):not(td){white-space:nowrap}.spinning{display:inline-block;position:relative;padding-left:calc(var(--spacing)*8)!important}.spinning:before{content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);width:calc(var(--spacing)*5);height:calc(var(--spacing)*5);content:var(--tw-content);--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y);content:var(--tw-content);animation:var(--animate-spin);content:var(--tw-content);content:var(--tw-content);background-color:currentColor;position:absolute;top:50%;left:6px;-webkit-mask:url("data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1758357645269'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='7610'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M512%2085.333333c235.648%200%20426.666667%20191.018667%20426.666667%20426.666667s-191.018667%20426.666667-426.666667%20426.666667S85.333333%20747.648%2085.333333%20512%20276.352%2085.333333%20512%2085.333333z%20m0%20128a298.666667%20298.666667%200%201%200%200%20597.333334%20298.666667%20298.666667%200%200%200%200-597.333334z'%20fill='%23000000'%20fill-opacity='.05'%20p-id='7611'%3e%3c/path%3e%3cpath%20d='M813.696%20813.696c166.613333-166.613333%20166.613333-436.778667%200-603.392-166.613333-166.613333-436.778667-166.613333-603.392%200A64%2064%200%200%200%20300.8%20300.8a298.666667%20298.666667%200%201%201%20422.4%20422.4%2064%2064%200%200%200%2090.496%2090.496z'%20fill='%23000000'%20p-id='7612'%3e%3c/path%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1758357645269'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='7610'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M512%2085.333333c235.648%200%20426.666667%20191.018667%20426.666667%20426.666667s-191.018667%20426.666667-426.666667%20426.666667S85.333333%20747.648%2085.333333%20512%20276.352%2085.333333%20512%2085.333333z%20m0%20128a298.666667%20298.666667%200%201%200%200%20597.333334%20298.666667%20298.666667%200%200%200%200-597.333334z'%20fill='%23000000'%20fill-opacity='.05'%20p-id='7611'%3e%3c/path%3e%3cpath%20d='M813.696%20813.696c166.613333-166.613333%20166.613333-436.778667%200-603.392-166.613333-166.613333-436.778667-166.613333-603.392%200A64%2064%200%200%200%20300.8%20300.8a298.666667%20298.666667%200%201%201%20422.4%20422.4%2064%2064%200%200%200%2090.496%2090.496z'%20fill='%23000000'%20p-id='7612'%3e%3c/path%3e%3c/svg%3e") 50%/cover no-repeat}#view>.spinning:first-child{min-height:calc(var(--spacing)*48);place-items:center;width:fit-content;margin-inline:auto;display:grid}@media not all and (min-width:48rem){#view>.spinning:first-child{min-height:calc(100dvh - 4rem)}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--background:#f1f5f9;--foreground:#0f172b;--primary:#46a3d1;--primary-foreground:#fff;--secondary:#e2e8f0;--secondary-foreground:#314158;--muted:#f5f5f5;--muted-foreground:#45556c;--destructive:#ffe2df;--destructive-foreground:#6c1517;--accent:#ee343b;--accent-foreground:#fff1f0;--default:#f5f5f5;--default-foreground:#171717;--info:#d3f1ff;--info-foreground:#003f60;--warning:#fbeec9;--warning-foreground:#582f02;--success:#cff6e0;--success-foreground:#003d2a;--error:#ffe2df;--error-foreground:#6c1517;--border:#e4e4e4;--link:#ec6cff;--input-checked:#fff;--label-surface:oklch(from var(--panel-bg)calc(l - .02)c h);--terminal-bg:#1a2029;--terminal-foreground:#fff;--overlay-base:#000;--progress-bar-start:#46a3d1;--progress-bar-end:#4fc3c7;--header-bg:oklch(from var(--background)l c h);--header-interactive:oklch(from var(--header-bg)calc(l - .12)c h);--page-bg:#fff;--panel-bg:#fff;--tooltip-bg:oklch(from var(--page-bg)calc(l - .015)c h);--font-sans:"Lato",ui-sans-serif,system-ui,sans-serif;--font-mono:ui-monospace,"SF Mono",Menlo,Monaco,Consolas,monospace;--spacing:.25rem;--container-max-width:80rem;--radius-base:.5rem}@supports (color:lab(0% 0 0)){:root{--background:lab(96.286% -.852436 -2.46847);--foreground:lab(7.78673% 1.82345 -15.0537);--primary:lab(63.0437% -17.6746 -32.0381);--primary-foreground:lab(100% 0 0);--secondary:lab(91.7353% -.998765 -4.76968);--secondary-foreground:lab(26.9569% -1.47016 -15.6993);--muted:lab(96.52% -.0000298023 .0000119209);--muted-foreground:lab(35.5623% -1.74978 -15.4316);--destructive:lab(92.5749% 15.3735 8.32583);--destructive-foreground:lab(23.385% 37.9736 23.5817);--accent:lab(53.6853% 69.6775 43.7724);--accent-foreground:lab(96.3359% 6.12152 3.29586);--default:lab(96.52% -.0000298023 .0000119209);--default-foreground:lab(7.78201% -.0000149012 0);--info:lab(93.2141% -10.1735 -14.3943);--info-foreground:lab(24.4811% -7.8918 -24.9024);--warning:lab(94.421% .545532 19.5962);--warning-foreground:lab(24.2528% 17.0621 33.1082);--success:lab(93.715% -16.1219 6.39679);--success-foreground:lab(22.3041% -31.6825 8.84454);--error:lab(92.5749% 15.3735 8.32583);--error-foreground:lab(23.385% 37.9736 23.5817);--border:lab(90.72% .0000298023 -.0000119209);--link:lab(66.1178% 66.0652 -52.4733);--input-checked:lab(100% 0 0);--terminal-bg:lab(11.7506% -.5823 -7.27103);--terminal-foreground:lab(100% 0 0);--overlay-base:lab(0% 0 0);--progress-bar-start:lab(63.0437% -17.6746 -32.0381);--progress-bar-end:lab(72.4424% -32.9195 -12.3464);--page-bg:lab(100% 0 0);--panel-bg:lab(100% 0 0)}}[data-darkmode=true]{--background:#003c38;--foreground:#f1f5f9;--primary:#00958e;--primary-foreground:#fff;--secondary:#314158;--secondary-foreground:#e5e7eb;--muted:#38414f;--muted-foreground:#90a1b9;--destructive:#460809;--destructive-foreground:#ffc6c0;--accent:#6c1517;--accent-foreground:#ffc6c0;--default:#27272a80;--default-foreground:#f9f9ff;--info:#024a7080;--info-foreground:#b0e0f8;--warning:#7b330680;--warning-foreground:#fee685;--success:#004e3b80;--success-foreground:#aff8d0;--error:#8b083680;--error-foreground:#ffc6c0;--border:#364358;--link:#a685ff;--input-checked:#fff;--label-surface:oklch(from var(--panel-bg)calc(l + .04)c h);--terminal-bg:#0a121f;--terminal-foreground:#fff;--overlay-base:#000;--progress-bar-start:#065f46;--progress-bar-end:#009b94;--header-bg:oklch(from var(--page-bg)l c h);--header-interactive:oklch(from var(--header-bg)calc(l + .24)c h);--page-bg:#101828;--panel-bg:#1d293d;--tooltip-bg:oklch(from var(--page-bg)calc(l + .06)c h)}@supports (color:lab(0% 0 0)){[data-darkmode=true]{--background:lab(21.8032% -20.1655 -3.35968);--foreground:lab(96.286% -.852436 -2.46847);--primary:lab(55.0978% -44.5567 -7.62978);--primary-foreground:lab(100% 0 0);--secondary:lab(26.9569% -1.47016 -15.6993);--secondary-foreground:lab(91.6229% -.159115 -2.26791);--muted:lab(27.1597% -.911355 -9.48523);--muted-foreground:lab(65.5349% -2.25151 -14.5072);--destructive:lab(13.003% 29.04 16.7519);--destructive-foreground:lab(84.7556% 43.3341 25.2722);--accent:lab(23.385% 37.9736 23.5817);--accent-foreground:lab(84.7347% 43.595 24.3042);--default:lab(15.7305% .613764 -2.16959/.5);--default-foreground:lab(98.1732% .982702 -3.63715);--info:lab(29.1959% -8.34689 -28.2453/.5);--info-foreground:lab(86.2797% -12.0086 -17.1909);--warning:lab(31.2288% 30.2627 40.0378/.5);--warning-foreground:lab(91.7203% -.505269 49.9084);--success:lab(28.8637% -26.9249 5.45986/.5);--success-foreground:lab(91.9265% -29.2737 11.5846);--error:lab(29.7104% 51.514 12.6253/.5);--error-foreground:lab(84.7347% 43.595 24.3042);--border:lab(27.8781% -.856712 -14.804);--link:lab(62.8239% 34.9159 -60.0512);--input-checked:lab(100% 0 0);--terminal-bg:lab(5.13221% -.0256523 -9.94164);--terminal-foreground:lab(100% 0 0);--overlay-base:lab(0% 0 0);--progress-bar-start:lab(35.2336% -29.9851 7.30804);--progress-bar-end:lab(57.6867% -49.5425 -9.29472);--page-bg:lab(8.11897% .811279 -12.254);--panel-bg:lab(16.132% -.318035 -14.6672)}}@media not all and (min-width:48rem){.diag-style{gap:calc(var(--spacing)*4);grid-template-columns:repeat(1,minmax(0,1fr));display:grid}}.diag-style>div{align-items:center;gap:calc(var(--spacing)*2);flex-direction:column;display:flex}@media not all and (min-width:48rem){.diag-style>div{gap:calc(var(--spacing)*1);width:100%!important}}#file-manager-container{overflow:auto}#file-manager-container #status-bar{border-style:var(--tw-border-style);background-color:var(--page-bg);border-width:0}[data-page=admin-statistics-graphs] [data-plugin] img:where([data-darkmode=true],[data-darkmode=true] *){--tw-hue-rotate:hue-rotate(150deg);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,);--tw-invert:invert(100%)}@media not all and (min-width:48rem){[data-name=bridge-vlan]>div{overflow:visible!important}}[data-page=admin-services-openclash-config] .sub_div img{height:calc(var(--spacing)*5);width:calc(var(--spacing)*5)}@media not all and (min-width:48rem){[data-page=admin-services-openclash-settings] .cbi-value-field .cbi-input-select{width:100%!important}}.Dashboard>.section-content .dashboard-bg.tr{border-radius:0}.Dashboard>.section-content .dashboard-bg{background-color:var(--panel-bg)}@supports (color:color-mix(in lab, red, red)){.Dashboard>.section-content .dashboard-bg{background-color:color-mix(in oklab,var(--panel-bg)95%,transparent)}}.Dashboard>.section-content .dashboard-bg:not(.tr){border-style:var(--tw-border-style);border-width:1px;border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.Dashboard>.section-content .dashboard-bg:not(.tr){border-color:color-mix(in oklab,var(--border)40%,transparent)}}.Dashboard>.section-content .dashboard-bg:not(.tr){--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media (hover:hover){.Dashboard>.section-content .dashboard-bg:not(.tr):hover{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.Dashboard>.section-content .dashboard-bg:not(.tr):hover{border-color:color-mix(in oklab,var(--border)50%,transparent)}}.Dashboard>.section-content .dashboard-bg:not(.tr):hover{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media not all and (min-width:48rem){.Dashboard>.section-content .dashboard-bg{background-color:var(--panel-bg)}@supports (color:color-mix(in lab, red, red)){.Dashboard>.section-content .dashboard-bg{background-color:color-mix(in oklab,var(--panel-bg)98%,transparent)}}.Dashboard>.section-content .dashboard-bg:not(.tr){border-style:var(--tw-border-style);border-width:1px;border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.Dashboard>.section-content .dashboard-bg:not(.tr){border-color:color-mix(in oklab,var(--border)30%,transparent)}}}.Dashboard>.section-content .title img[src*=\.svg]:where([data-darkmode=true],[data-darkmode=true] *){--tw-invert:invert(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.Dashboard>.section-content .title h3{border-style:var(--tw-border-style);padding-bottom:calc(var(--spacing)*4);color:var(--foreground);border-width:0}@media not all and (min-width:48rem){.Dashboard>.section-content .title h3{margin-inline:calc(var(--spacing)*0);padding-bottom:calc(var(--spacing)*2)}}.Dashboard>.section-content .router-status-wifi .wifi-info .devices-info .tr .td:nth-child(3){top:calc(var(--spacing)*0);width:100%;padding-inline:calc(var(--spacing)*0);position:relative}@media not all and (min-width:48rem){.Dashboard>.section-content .router-status-wifi .wifi-info .devices-info .tr .td{flex:50%}}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-spacing-x{syntax:"";inherits:false;initial-value:0}@property --tw-border-spacing-y{syntax:"";inherits:false;initial-value:0}@keyframes spin{to{transform:rotate(360deg)}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}