@charset "UTF-8";
/* =========================================================
   黔农明珠供应链平台 · PC 公共样式 main.css（任务 2）
   内容：主题变量 → 重置与排版 → 外壳（waike-）→ 通用组件（ty-）
   规则：页面 CSS 只用变量，不写死主色；页面专属样式写 css/<页面拼音>.css
   ========================================================= */

/* =========================
主题变量开始
========================= */
:root { --ziti-zhongwen: "PingFang SC", "Microsoft YaHei", "微软雅黑", "HarmonyOS Sans SC", "Source Han Sans SC", "Noto Sans CJK SC", "Heiti SC", "SimHei", system-ui, sans-serif; --ziti-shuzi: "DIN Alternate", "Bahnschrift", "Roboto", var(--ziti-zhongwen); }
:root { --zi-biaoti: #1D2129; --zi-zhengwen: #4E5969; --zi-fuzhu: #86909C; --zi-jinyong: #C9CDD4; --xian: #E5E6EB; --xian-qian: #F2F3F5; --di-ye: #F5F7FA; --di-ka: #FFFFFF; --di-biaotou: #F7F8FA; --di-yiji: #F2F3F7; --di-yeqian: #F5F6F7; --yiji-zi: var(--zi-fuzhu); --yiji-zi-xuanting: var(--zi-zhengwen); --yiji-di-xuanting: rgba(255, 255, 255, .6); }
:root { --tone-pending: #B45309; --tone-pending-di: #FFF7E6; --tone-processing: #2563EB; --tone-processing-di: #EAF2FF; --tone-success: #1F8A3B; --tone-success-di: #E9F7EE; --tone-danger: #D92D20; --tone-danger-di: #FEECEC; --tone-muted: #6B7280; --tone-muted-di: #F2F3F5; --tone-frozen: #5B6B8C; --tone-frozen-di: #EEF1F6; }
:root { --se-hupo: #F5A524; --se-qinglv: #14B8A6; --se-lan: #3B82F6; --se-fen: #EC4899; --se-cheng: #F97316; --se-zi: #8B5CF6; --se-shiban: #64748B; --se-yingshou: #3B82F6; --se-yingfu: #F97316; }
:root { --kpi-1-di: #EAF2FF; --kpi-1: #2F6FED; --kpi-2-di: #E9F7EE; --kpi-2: #2E9E4F; --kpi-3-di: #FFF1E6; --kpi-3: #F97316; --kpi-4-di: #F1EDFF; --kpi-4: #6E56CF; --kpi-5-di: #FFEEF2; --kpi-5: #E11D48; --kpi-6-di: #E6F7F6; --kpi-6: #0D9488; }
:root { --yinying-ka: 0 1px 2px rgba(16, 24, 40, .04), 0 4px 16px rgba(16, 24, 40, .06); --yinying-fu: 0 6px 24px rgba(16, 24, 40, .12), 0 2px 6px rgba(16, 24, 40, .06); --yuanjiao: 6px; --yuanjiao-ka: 10px; --donghua: 150ms ease; --donghua-xiala: 120ms ease; }
:root, [data-theme="green"] { --zhu: #3BA655; --zhu-liang: #6BC761; --zhu-shen: #1F6F37; --zhu-mo: #0F3D2A; --zhu-qian: #EEF8F0; --zhu-qian2: #DDF1E2; --dian: #FF7A1A; --di-ye: #F4F7F5; }
[data-theme="red"] { --zhu: #D7263D; --zhu-liang: #F4606E; --zhu-shen: #A31621; --zhu-mo: #5C0F18; --zhu-qian: #FFF1F2; --zhu-qian2: #FFE0E3; --dian: #E8B04B; --dian-jifen: #F08A1C; }
[data-theme="blue"] { --zhu: #2F6FED; --zhu-liang: #5B9CFF; --zhu-shen: #1B4DB1; --zhu-mo: #0F2A5C; --zhu-qian: #EEF4FF; --zhu-qian2: #DCE8FF; --dian: #FF7A1A; --tone-processing: #0E7C8C; --tone-processing-di: #E6F7F9; }
[data-theme="forest"] { --zhu: #2F8060; --zhu-liang: #4A9A78; --zhu-shen: #0B633F; --zhu-mo: #053015; --zhu-qian: #EEF5EF; --zhu-qian2: #DCEADF; --dian: #F5A524; --di-ye: #F5F7F3; --di-yiji: #E6EFE6; --yiji-zi: #4A6B57; --yiji-zi-xuanting: #053015; --yiji-zi-xuanzhong: #053015; --zi-biaoti: #053015; --kpi-4: #9A6B38; --kpi-4-di: #F6EFE6; }
/* 超管后台（data-privileged）：取标志标准绿 #053015 做一级栏深底 + 反白标志，正文区中性灰白，按钮与链接用标志绿，点缀金色；不用浅绿大面积铺底 */
[data-theme="forest"][data-privileged="1"] { --zhu: #0E4F2E; --zhu-liang: #1D6B43; --zhu-shen: #053015; --zhu-mo: #053015; --zhu-qian: #EEF1EE; --zhu-qian2: #DCE3DD; --dian: #B8893B; --di-ye: #F4F5F2; --di-biaotou: #F7F8F6; --di-yiji: linear-gradient(180deg, #0A4128 0%, #053015 100%); --yiji-zi: rgba(255, 255, 255, .7); --yiji-zi-xuanting: #fff; --yiji-di-xuanting: rgba(255, 255, 255, .1); --yiji-zi-xuanzhong: #053015; --zi-biaoti: #12261A; }
[data-privileged="1"] .waike-yiji-xiang.is-xuanzhong { background: #fff; box-shadow: 0 2px 10px rgba(0, 0, 0, .18); }
[data-privileged="1"] .waike-yiji-zhankai:hover { background: rgba(255, 255, 255, .12); color: #fff; }
[data-privileged="1"] .waike-erji-xiang.is-xuanzhong { background: #F1F3F0; color: #053015; box-shadow: inset 3px 0 0 #B8893B; }
[data-privileged="1"] .waike-tequan { background: #FBF6EA; color: #8A5A12; border-bottom-color: #EFE2C3; }
[data-theme] { --zhu-jianbian: linear-gradient(135deg, var(--zhu-liang), var(--zhu)); --zhu-touming: color-mix(in srgb, var(--zhu) 16%, transparent); --hang-xuanting: color-mix(in srgb, var(--zhu-qian) 30%, transparent); }
/* =========================
主题变量结束
========================= */

/* =========================
重置与排版开始
========================= */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; font-family: var(--ziti-zhongwen); font-size: 14px; line-height: 22px; color: var(--zi-zhengwen); background: var(--di-ye); -webkit-font-smoothing: antialiased; }
h1, h2, h3, h4, h5, h6, p, ul, ol, dl, dd, figure { margin: 0; padding: 0; }
ul, ol { list-style: none; }
a { color: var(--zhu); text-decoration: none; transition: color var(--donghua); }
a:hover { color: var(--zhu-shen); }
img { max-width: 100%; vertical-align: middle; border: 0; }
button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; }
table { border-collapse: collapse; border-spacing: 0; }
[hidden] { display: none !important; }
:focus { outline: none; }
:focus-visible { outline: 2px solid var(--zhu); outline-offset: 2px; border-radius: 4px; }
::selection { background: var(--zhu-qian2); color: var(--zi-biaoti); }
* { scrollbar-width: thin; scrollbar-color: #D4D7DE transparent; }
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-thumb { background: #D4D7DE; border-radius: 8px; border: 2px solid transparent; background-clip: padding-box; }
::-webkit-scrollbar-thumb:hover { background-color: #B8BCC6; }
::-webkit-scrollbar-track { background: transparent; }
.ty-shuzi { font-family: var(--ziti-shuzi); font-variant-numeric: tabular-nums; }
.ty-zhuse { color: var(--zhu); }
.ty-fuzhu { color: var(--zi-fuzhu); font-size: 13px; }
.ty-jine { font-family: var(--ziti-shuzi); font-variant-numeric: tabular-nums; white-space: nowrap; }
.ty-jine--qiangdiao { font-size: 24px; line-height: 32px; font-weight: 700; color: var(--zi-biaoti); }
.ty-jine--jiage { color: var(--dian); font-weight: 600; }
.ty-shengluehao { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ty-pingmu-du { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.ty-tupian-que { background: var(--xian-qian) !important; color: transparent !important; min-width: 24px; min-height: 24px; object-position: -9999px; }
/* =========================
重置与排版结束
========================= */

/* =========================
外壳整体开始
========================= */
.waike { display: flex; min-height: 100vh; }
.waike-cebian { position: sticky; top: 0; height: 100vh; display: flex; flex-shrink: 0; z-index: 30; }
.waike-zhuti { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.waike-dingbu { position: sticky; top: 0; z-index: 20; }
.waike-neirong { flex: 1; padding: 20px; min-width: 0; animation: ty-danru 150ms ease; }
.waike-zhezhao { display: none; }
/* =========================
外壳整体结束
========================= */

/* =========================
外壳一级栏开始
========================= */
.waike-yiji { width: 80px; background: var(--di-yiji); display: flex; flex-direction: column; align-items: center; padding: 16px 0 12px; }
.waike-yiji-logo { display: flex; width: 48px; height: 48px; align-items: center; justify-content: center; margin-bottom: 16px; }
.waike-yiji-liebiao { flex: 1; width: 100%; overflow-y: auto; overflow-x: hidden; display: flex; flex-direction: column; align-items: center; gap: 4px; scrollbar-width: none; }
.waike-yiji-liebiao::-webkit-scrollbar { display: none; }
.waike-yiji-xiang { width: 64px; height: 64px; border: 0; background: transparent; border-radius: 10px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; color: var(--yiji-zi); transition: background var(--donghua), color var(--donghua), box-shadow var(--donghua); position: relative; }
.waike-yiji-xiang i { font-size: 22px; --fa-secondary-opacity: .35; }
.waike-yiji-xiang span { font-size: 12px; line-height: 16px; max-width: 60px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.waike-yiji-xiang:hover { color: var(--yiji-zi-xuanting); background: var(--yiji-di-xuanting); }
.waike-yiji-xiang.is-xuanzhong { background: #fff; color: var(--yiji-zi-xuanzhong, var(--zhu)); box-shadow: 0 1px 2px rgba(16, 24, 40, .06), 0 2px 8px rgba(16, 24, 40, .06); font-weight: 600; }
.waike-yiji-xiang.is-xuanzhong i { --fa-secondary-opacity: .4; }
.waike-yiji-zhankai { display: none; width: 40px; height: 32px; border: 0; background: transparent; color: var(--yiji-zi); border-radius: 6px; margin-top: 8px; }
.waike-yiji-zhankai:hover { background: #fff; color: var(--zhu); }
.waike.is-shouqi .waike-yiji-zhankai { display: block; }
/* =========================
外壳一级栏结束
========================= */

/* =========================
外壳二级栏开始
========================= */
.waike-erji { width: 176px; background: #fff; border-left: 1px solid var(--xian); display: flex; flex-direction: column; }
.waike-erji-tou { padding: 20px 16px 16px 24px; }
.waike-erji-mingcheng { font-size: 15px; line-height: 22px; font-weight: 600; color: var(--zi-biaoti); white-space: nowrap; }
.waike-erji-fubiaoti { font-size: 12px; line-height: 18px; color: var(--zi-fuzhu); margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.waike-erji-ti { flex: 1; overflow-y: auto; padding: 4px 12px 12px; }
.waike-erji-zu { display: flex; flex-direction: column; gap: 4px; animation: ty-danru 150ms ease; }
.waike-erji-fenzu { font-size: 12px; line-height: 18px; color: var(--zi-fuzhu); padding: 12px 12px 4px; }
.waike-erji-xiang { display: flex; align-items: center; height: 40px; padding: 0 12px; border-radius: 8px; font-size: 14px; color: var(--zi-zhengwen); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; transition: background var(--donghua), color var(--donghua); }
.waike-erji-xiang:hover { background: var(--di-biaotou); color: var(--zi-biaoti); }
.waike-erji-xiang.is-xuanzhong { background: var(--zhu-qian); color: var(--zhu-shen); font-weight: 600; }
.waike-erji-kong { padding: 12px; font-size: 13px; color: var(--zi-fuzhu); }
.waike-erji-shouqi { display: flex; align-items: center; gap: 8px; height: 48px; margin: 0 12px 12px; padding: 0 12px; border: 0; border-top: 1px solid var(--xian-qian); background: transparent; color: var(--zi-fuzhu); font-size: 13px; }
.waike-erji-shouqi:hover { color: var(--zhu); }
.waike.is-shouqi .waike-erji { display: none; }
.waike-fuceng { position: fixed; left: 84px; z-index: 40; width: 176px; background: #fff; border-radius: 10px; box-shadow: var(--yinying-fu); padding: 8px; animation: ty-xiala-chu 120ms ease; }
.waike-fuceng-biaoti { font-size: 12px; color: var(--zi-fuzhu); padding: 4px 12px 6px; }
/* =========================
外壳二级栏结束
========================= */

/* =========================
外壳特权条开始
========================= */
.waike-tequan { height: 32px; display: flex; align-items: center; gap: 8px; padding: 0 20px; background: #FFF7E6; color: #B45309; font-size: 13px; border-bottom: 1px solid #FCE7C3; }
.waike-tequan i { font-size: 14px; }
.waike-tequan-shijian { margin-left: auto; font-family: var(--ziti-shuzi); font-variant-numeric: tabular-nums; }
.waike-tequan.is-jijiang { background: #FEECEC; color: #D92D20; border-bottom-color: #FBD5D2; }
/* =========================
外壳特权条结束
========================= */

/* =========================
外壳顶栏开始
========================= */
.waike-dinglan { height: 56px; background: #fff; border-bottom: 1px solid var(--xian); display: flex; align-items: center; gap: 16px; padding: 0 20px 0 12px; }
.waike-dinglan-anniu { position: relative; width: 36px; height: 36px; border: 0; border-radius: 8px; background: transparent; color: var(--zi-zhengwen); display: inline-flex; align-items: center; justify-content: center; font-size: 17px; flex-shrink: 0; transition: background var(--donghua), color var(--donghua); }
.waike-dinglan-anniu:hover { background: var(--di-biaotou); color: var(--zhu); }
.waike-dinglan-jiaobiao { position: absolute; top: 3px; right: 2px; min-width: 16px; height: 16px; padding: 0 4px; border-radius: 8px; background: #F04438; color: #fff; font-size: 12px; line-height: 16px; font-weight: 600; text-align: center; font-family: var(--ziti-shuzi); box-shadow: 0 0 0 2px #fff; }
.waike-mianbaoxie { display: flex; align-items: center; min-width: 0; font-size: 14px; color: var(--zi-fuzhu); white-space: nowrap; overflow: hidden; }
.waike-mianbaoxie > * + *::before { content: "/"; margin: 0 8px; color: var(--zi-jinyong); }
.waike-mianbaoxie a { color: var(--zi-fuzhu); }
.waike-mianbaoxie a:hover { color: var(--zhu); }
.waike-mianbaoxie > :last-child { color: var(--zi-biaoti); font-weight: 500; }
.waike-dinglan-kongbai { flex: 1; min-width: 0; }
.waike-sousuo { position: relative; width: 320px; flex-shrink: 1; min-width: 160px; }
.waike-sousuo-kuang { display: flex; align-items: center; height: 36px; border-radius: 8px; background: var(--di-biaotou); border: 1px solid transparent; padding: 0 12px; gap: 8px; transition: border-color var(--donghua), background var(--donghua), box-shadow var(--donghua); }
.waike-sousuo-kuang i { color: var(--zi-fuzhu); }
.waike-sousuo-kuang input { flex: 1; min-width: 0; border: 0; background: transparent; height: 34px; font-size: 14px; color: var(--zi-biaoti); }
.waike-sousuo-kuang input::placeholder { color: var(--zi-fuzhu); }
.waike-sousuo-kuang:focus-within { background: #fff; border-color: var(--zhu); box-shadow: 0 0 0 2px var(--zhu-qian2); }
.waike-sousuo-anjian { font-size: 12px; color: var(--zi-fuzhu); border: 1px solid var(--xian); border-radius: 4px; padding: 0 5px; line-height: 18px; }
.waike-sousuo-mianban { position: absolute; top: 44px; left: 0; right: 0; min-width: 320px; max-height: 420px; overflow-y: auto; background: #fff; border-radius: 10px; box-shadow: var(--yinying-fu); padding: 8px; z-index: 50; animation: ty-xiala-chu 120ms ease; }
.waike-sousuo-zu { padding: 4px 0; }
.waike-sousuo-zu + .waike-sousuo-zu { border-top: 1px solid var(--xian-qian); }
.waike-sousuo-zubiaoti { font-size: 12px; color: var(--zi-fuzhu); padding: 4px 8px; }
.waike-sousuo-jieguo { display: flex; align-items: center; gap: 10px; padding: 8px; border-radius: 6px; color: var(--zi-zhengwen); }
.waike-sousuo-jieguo:hover, .waike-sousuo-jieguo.is-huodong { background: var(--zhu-qian); color: var(--zi-biaoti); }
.waike-sousuo-jieguo-ming { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.waike-sousuo-jieguo-fu { font-size: 12px; color: var(--zi-fuzhu); }
.waike-sousuo-tishi { display: flex; align-items: center; gap: 8px; padding: 16px 12px; color: var(--zi-fuzhu); font-size: 13px; }
.waike-shenfen { position: relative; flex-shrink: 0; }
.waike-shenfen-anniu { display: flex; align-items: center; gap: 8px; max-width: 360px; height: 40px; padding: 0 12px 0 6px; border: 1px solid var(--zhu-qian2); border-radius: 20px; background: var(--zhu-qian); color: var(--zhu-shen); transition: border-color var(--donghua), box-shadow var(--donghua); }
.waike-shenfen-anniu:hover { border-color: var(--zhu); box-shadow: 0 0 0 3px var(--zhu-qian2); }
.waike-shenfen-tubiao { width: 28px; height: 28px; border-radius: 50%; background: var(--zhu-jianbian); color: #fff; display: inline-flex; align-items: center; justify-content: center; font-size: 13px; flex-shrink: 0; }
.waike-shenfen-wenzi { display: flex; flex-direction: column; align-items: flex-start; min-width: 0; line-height: 16px; }
.waike-shenfen-ming { font-size: 13px; font-weight: 600; max-width: 260px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.waike-shenfen-fanwei { font-size: 12px; color: var(--zi-fuzhu); max-width: 260px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.waike-shenfen-jiantou { font-size: 12px; transition: transform var(--donghua-xiala); }
.waike-shenfen.is-kai .waike-shenfen-jiantou { transform: rotate(180deg); }
.waike-shenfen-xiala { right: 0; width: 340px; }
.waike-shenfen-xiang { display: flex; align-items: center; gap: 10px; width: 100%; padding: 10px 12px; border: 0; background: transparent; border-radius: 8px; text-align: left; color: var(--zi-zhengwen); }
.waike-shenfen-xiang:hover { background: var(--di-biaotou); }
.waike-shenfen-xiang.is-dangqian { color: var(--zhu-shen); background: var(--zhu-qian); font-weight: 600; }
.waike-shenfen-xiang-wenzi { flex: 1; min-width: 0; display: flex; flex-direction: column; line-height: 20px; }
.waike-shenfen-xiang-fu { font-size: 12px; color: var(--zi-fuzhu); font-weight: 400; }
.waike-shenfen-gou { color: var(--zhu); visibility: hidden; }
.waike-shenfen-xiang.is-dangqian .waike-shenfen-gou { visibility: visible; }
.waike-shenfen-tishi { font-size: 12px; color: var(--zi-fuzhu); padding: 8px 12px 4px; border-top: 1px solid var(--xian-qian); margin-top: 4px; }
.waike-yonghu { position: relative; flex-shrink: 0; }
.waike-yonghu-anniu { display: flex; align-items: center; gap: 8px; height: 40px; padding: 0 6px; border: 0; background: transparent; border-radius: 8px; color: var(--zi-biaoti); }
.waike-yonghu-anniu:hover { background: var(--di-biaotou); }
.waike-touxiang { width: 32px; height: 32px; border-radius: 50%; background: var(--zhu-jianbian); color: #fff; display: inline-flex; align-items: center; justify-content: center; font-size: 14px; font-weight: 600; overflow: hidden; flex-shrink: 0; }
.waike-touxiang img { width: 100%; height: 100%; object-fit: cover; }
.waike-yonghu-ming { font-size: 14px; max-width: 96px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.waike-yonghu-xiala { right: 0; width: 180px; }
.waike-jiantou-xiao { font-size: 11px; }
/* =========================
外壳顶栏结束
========================= */

/* =========================
外壳页签栏开始
========================= */
.waike-yeqian { height: 40px; background: var(--di-yeqian); border-bottom: 1px solid var(--xian); display: flex; align-items: stretch; padding: 0 12px 0 8px; gap: 4px; }
.waike-yeqian-gundong { flex: 1; min-width: 0; overflow-x: auto; overflow-y: hidden; scrollbar-width: none; scroll-behavior: smooth; }
.waike-yeqian-gundong::-webkit-scrollbar { display: none; }
.waike-yeqian-liebiao { display: flex; align-items: flex-end; height: 100%; gap: 2px; }
.waike-yeqian-xiang { position: relative; display: flex; align-items: center; gap: 6px; height: 34px; padding: 0 10px 0 14px; border-radius: 8px 8px 0 0; color: var(--zi-zhengwen); font-size: 13px; white-space: nowrap; flex-shrink: 0; max-width: 200px; transition: background var(--donghua), color var(--donghua); }
.waike-yeqian-xiang:hover { background: rgba(255, 255, 255, .7); color: var(--zi-biaoti); }
.waike-yeqian-xiang.is-dangqian { background: #fff; color: var(--zhu); font-weight: 600; }
.waike-yeqian-xiang.is-dangqian::after { content: ""; position: absolute; left: 10px; right: 10px; bottom: 0; height: 2px; border-radius: 2px; background: var(--zhu); }
.waike-yeqian-wenzi { overflow: hidden; text-overflow: ellipsis; color: inherit; }
.waike-yeqian-guanbi { width: 18px; height: 18px; border: 0; border-radius: 4px; padding: 0; background: transparent; color: var(--zi-fuzhu); font-size: 11px; display: inline-flex; align-items: center; justify-content: center; opacity: .6; }
.waike-yeqian-xiang:hover .waike-yeqian-guanbi, .waike-yeqian-xiang.is-dangqian .waike-yeqian-guanbi { opacity: 1; }
.waike-yeqian-guanbi:hover { background: var(--xian); color: var(--zi-biaoti); }
.waike-yeqian-guding { font-size: 11px; color: var(--zi-fuzhu); }
.waike-yeqian-caozuo { display: flex; align-items: center; gap: 2px; flex-shrink: 0; }
.waike-yeqian-anniu { height: 28px; min-width: 28px; padding: 0 8px; border: 0; border-radius: 6px; background: transparent; color: var(--zi-zhengwen); font-size: 13px; display: inline-flex; align-items: center; gap: 6px; }
.waike-yeqian-anniu:hover { background: #fff; color: var(--zhu); }
.waike-yeqian-anniu[disabled] { color: var(--zi-jinyong); background: transparent; cursor: default; }
.waike-yeqian-gengduo { position: relative; display: flex; align-items: center; }
.waike-yeqian-gengduo .ty-xialacaidan { right: 0; top: 36px; width: 140px; }
/* =========================
外壳页签栏结束
========================= */

/* =========================
外壳响应式开始
========================= */
@media (max-width: 1279px) {
  .waike-sousuo { width: 240px; }
  .waike-shenfen-ming, .waike-shenfen-fanwei { max-width: 180px; }
}
@media (max-width: 1023px) {
  .waike-cebian { position: fixed; left: 0; top: 0; transform: translateX(-100%); transition: transform 200ms ease; box-shadow: none; }
  .waike.is-chouti-kai .waike-cebian { transform: none; box-shadow: var(--yinying-fu); }
  .waike.is-shouqi .waike-erji { display: flex; }
  .waike.is-shouqi .waike-yiji-zhankai { display: none; }
  .waike-erji-shouqi { display: none; }
  .waike.is-chouti-kai .waike-zhezhao { display: block; position: fixed; inset: 0; background: rgba(15, 23, 42, .36); z-index: 25; animation: ty-danru 150ms ease; }
  .waike-yonghu-ming { display: none; }
  .waike-sousuo-anjian { display: none; }
}
@media (max-width: 767px) {
  .waike-dinglan { gap: 8px; padding: 0 12px 0 8px; }
  .waike-mianbaoxie { display: none; }
  .waike-sousuo { width: auto; flex: 1; min-width: 0; }
  .waike-sousuo-mianban { position: fixed; left: 12px; right: 12px; top: 56px; min-width: 0; }
  .waike-shenfen-anniu { padding: 0 8px 0 4px; }
  .waike-shenfen-wenzi { display: none; }
  .waike-shenfen-xiala { position: fixed; left: 12px; right: 12px; top: 56px; width: auto; }
  .waike-dinglan-bangzhu { display: none; }
  .waike-yeqian-zuo, .waike-yeqian-you { display: none; }
  .waike-neirong { padding: 12px; }
}
@media (max-width: 479px) {
  .waike-sousuo-kuang input::placeholder { color: transparent; }
}
/* =========================
外壳响应式结束
========================= */

/* =========================
通用下拉菜单开始
========================= */
.ty-xialacaidan-wrap { position: relative; display: inline-flex; }
.ty-xialacaidan { position: absolute; top: calc(100% + 6px); z-index: 60; min-width: 140px; background: #fff; border-radius: 10px; box-shadow: var(--yinying-fu); padding: 6px; display: none; }
.is-kai > .ty-xialacaidan { display: block; animation: ty-xiala-chu 120ms ease; }
.ty-xialacaidan--you { right: 0; }
.ty-xialacaidan-xiang { display: flex; align-items: center; gap: 8px; width: 100%; height: 34px; padding: 0 10px; border: 0; background: transparent; border-radius: 6px; color: var(--zi-zhengwen); font-size: 13px; text-align: left; white-space: nowrap; }
.ty-xialacaidan-xiang:hover { background: var(--di-biaotou); color: var(--zi-biaoti); }
.ty-xialacaidan-xiang i { width: 16px; text-align: center; color: var(--zi-fuzhu); }
.ty-xialacaidan-xiang--weixian, .ty-xialacaidan-xiang--weixian i { color: var(--tone-danger); }
.ty-xialacaidan-xiang[disabled] { color: var(--zi-jinyong); cursor: not-allowed; background: transparent; }
.ty-xialacaidan-fenge { height: 1px; background: var(--xian-qian); margin: 4px 0; }
@keyframes ty-xiala-chu { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }
@keyframes ty-danru { from { opacity: 0; } to { opacity: 1; } }
/* =========================
通用下拉菜单结束
========================= */

/* =========================
Logo开始
========================= */
.ty-logo { display: inline-block; width: 36px; height: 36px; flex-shrink: 0; object-fit: contain; }
.ty-logo--heng { width: auto; height: 60px; aspect-ratio: 1471 / 403; }
.waike-yiji-logo .ty-logo { width: 48px; height: 48px; }
/* =========================
Logo结束
========================= */

/* =========================
栅格开始
========================= */
.ty-zhage { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 16px; }
.ty-zhage + .ty-zhage, .ty-zhage + .ty-kapian, .ty-kapian + .ty-zhage, .ty-kapian + .ty-kapian { margin-top: 16px; }
.ty-zhage > .ty-kapian, .ty-zhage > .ty-zhibiao { margin-top: 0; }
.ty-lie-2 { grid-column: span 2; }
.ty-lie-3 { grid-column: span 3; }
.ty-lie-4 { grid-column: span 4; }
.ty-lie-5 { grid-column: span 5; }
.ty-lie-6 { grid-column: span 6; }
.ty-lie-7 { grid-column: span 7; }
.ty-lie-8 { grid-column: span 8; }
.ty-lie-9 { grid-column: span 9; }
.ty-lie-12 { grid-column: span 12; }
@media (max-width: 1279px) {
  .ty-lie-2 { grid-column: span 4; }
  .ty-lie-3 { grid-column: span 6; }
  .ty-lie-4, .ty-lie-5, .ty-lie-7, .ty-lie-8, .ty-lie-9 { grid-column: span 12; }
}
@media (max-width: 767px) {
  .ty-zhage { gap: 12px; }
  .ty-lie-2, .ty-lie-3, .ty-lie-6 { grid-column: span 12; }
}
/* =========================
栅格结束
========================= */

/* =========================
页头开始
========================= */
.ty-yetou { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 16px; flex-wrap: wrap; }
.ty-yetou-zuo { display: flex; align-items: flex-start; gap: 8px; min-width: 0; }
.ty-yetou-fanhui { width: 28px; height: 28px; border-radius: 6px; display: inline-flex; align-items: center; justify-content: center; color: var(--zi-zhengwen); margin-top: 0; flex-shrink: 0; }
.ty-yetou-fanhui:hover { background: #fff; color: var(--zhu); }
.ty-yetou-biaoti { font-size: 20px; line-height: 28px; font-weight: 600; color: var(--zi-biaoti); }
.ty-yetou-fubiaoti { font-size: 13px; line-height: 20px; color: var(--zi-fuzhu); margin-top: 2px; }
.ty-yetou-caozuo { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.ty-yetou-xuanxiang { flex-basis: 100%; }
/* =========================
页头结束
========================= */

/* =========================
卡片开始
========================= */
.ty-kapian { background: var(--di-ka); border-radius: var(--yuanjiao-ka); box-shadow: var(--yinying-ka); min-width: 0; animation: ty-danru 150ms ease; }
.ty-kapian-tou { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 16px 20px 0; }
.ty-kapian-biaoti { font-size: 15px; line-height: 22px; font-weight: 600; color: var(--zi-biaoti); display: flex; align-items: center; gap: 8px; }
.ty-kapian-biaoti-fu { font-size: 12px; font-weight: 400; color: var(--zi-fuzhu); }
.ty-kapian-caozuo { display: flex; align-items: center; gap: 12px; font-size: 13px; }
.ty-kapian-ti { padding: 20px; }
.ty-kapian-tou + .ty-kapian-ti { padding-top: 16px; }
.ty-kapian-ti--wujianju { padding: 0; }
.ty-kapian-tou + .ty-kapian-ti--wujianju { padding-top: 12px; }
.ty-kapian-jiao { padding: 12px 20px; border-top: 1px solid var(--xian-qian); display: flex; align-items: center; justify-content: flex-end; gap: 8px; }
/* =========================
卡片结束
========================= */

/* =========================
KPI卡开始
========================= */
.ty-zhibiao-hang { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 16px; }
.ty-zhibiao-hang + * { margin-top: 16px; }
.ty-zhibiao { position: relative; display: block; background: var(--di-ka); border-radius: var(--yuanjiao-ka); box-shadow: var(--yinying-ka); padding: 20px; color: inherit; transition: transform var(--donghua), box-shadow var(--donghua); --kpi-di: var(--kpi-1-di); --kpi-se: var(--kpi-1); }
.ty-zhibiao.is-kedian:hover { transform: translateY(-2px); box-shadow: var(--yinying-fu); }
.ty-zhibiao-xiazuan { position: absolute; inset: 0; border-radius: inherit; z-index: 1; }
.ty-zhibiao-hang > .ty-zhibiao:nth-child(6n+2), .ty-zhibiao[data-se="2"] { --kpi-di: var(--kpi-2-di); --kpi-se: var(--kpi-2); }
.ty-zhibiao-hang > .ty-zhibiao:nth-child(6n+3), .ty-zhibiao[data-se="3"] { --kpi-di: var(--kpi-3-di); --kpi-se: var(--kpi-3); }
.ty-zhibiao-hang > .ty-zhibiao:nth-child(6n+4), .ty-zhibiao[data-se="4"] { --kpi-di: var(--kpi-4-di); --kpi-se: var(--kpi-4); }
.ty-zhibiao-hang > .ty-zhibiao:nth-child(6n+5), .ty-zhibiao[data-se="5"] { --kpi-di: var(--kpi-5-di); --kpi-se: var(--kpi-5); }
.ty-zhibiao-hang > .ty-zhibiao:nth-child(6n+6), .ty-zhibiao[data-se="6"] { --kpi-di: var(--kpi-6-di); --kpi-se: var(--kpi-6); }
.ty-zhibiao[data-se="1"] { --kpi-di: var(--kpi-1-di); --kpi-se: var(--kpi-1); }
.ty-zhibiao-biaoti { font-size: 14px; color: var(--zi-zhengwen); padding-right: 52px; }
.ty-zhibiao-shuzhi { font-family: var(--ziti-shuzi); font-variant-numeric: tabular-nums; font-size: 24px; line-height: 32px; font-weight: 700; color: var(--zi-biaoti); margin-top: 8px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ty-zhibiao-danwei { font-size: 13px; font-weight: 400; color: var(--zi-fuzhu); margin-left: 4px; }
.ty-zhibiao-tongbi { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--zi-fuzhu); margin-top: 6px; }
.ty-zhibiao-bianhua { font-family: var(--ziti-shuzi); font-weight: 600; display: inline-flex; align-items: center; gap: 2px; }
.ty-zhibiao-bianhua.is-hao { color: var(--tone-success); }
.ty-zhibiao-bianhua.is-huai { color: var(--tone-danger); }
.ty-zhibiao-bianhua.is-ping { color: var(--zi-fuzhu); }
.ty-zhibiao-tubiao { position: absolute; top: 20px; right: 20px; width: 40px; height: 40px; border-radius: 10px; background: var(--kpi-di); color: var(--kpi-se); display: flex; align-items: center; justify-content: center; font-size: 18px; --fa-secondary-opacity: .4; }
.ty-zhibiao--tone-pending .ty-zhibiao-shuzhi { color: var(--tone-pending); }
.ty-zhibiao--tone-danger .ty-zhibiao-shuzhi { color: var(--tone-danger); }
.ty-zhibiao--tone-success .ty-zhibiao-shuzhi { color: var(--tone-success); }
/* =========================
KPI卡结束
========================= */

/* =========================
按钮开始
========================= */
.ty-anniu { position: relative; display: inline-flex; align-items: center; justify-content: center; gap: 6px; height: 32px; padding: 0 16px; border-radius: var(--yuanjiao); border: 1px solid var(--xian); background: #fff; color: var(--zi-zhengwen); font-size: 14px; line-height: 1; white-space: nowrap; transition: background var(--donghua), border-color var(--donghua), color var(--donghua), box-shadow var(--donghua); user-select: none; }
.ty-anniu:hover { color: var(--zhu); border-color: var(--zhu); }
.ty-anniu:active { transform: translateY(1px); }
.ty-anniu i { font-size: 14px; }
.ty-anniu--zhu { background: var(--zhu); border-color: var(--zhu); color: #fff; }
.ty-anniu--zhu:hover { background: var(--zhu-shen); border-color: var(--zhu-shen); color: #fff; }
.ty-anniu--jianbian { background: var(--zhu-jianbian); border-color: transparent; color: #fff; }
.ty-anniu--jianbian:hover { filter: brightness(.95); color: #fff; border-color: transparent; }
.ty-anniu--ci { background: #fff; border-color: var(--zhu); color: var(--zhu); }
.ty-anniu--ci:hover { background: var(--zhu-qian); color: var(--zhu-shen); border-color: var(--zhu-shen); }
.ty-anniu--wenzi { border-color: transparent; background: transparent; color: var(--zhu); padding: 0 8px; }
.ty-anniu--wenzi:hover { background: var(--zhu-qian); border-color: transparent; color: var(--zhu-shen); }
.ty-anniu--weixian { background: #fff; border-color: var(--tone-danger); color: var(--tone-danger); }
.ty-anniu--weixian:hover { background: var(--tone-danger-di); border-color: var(--tone-danger); color: var(--tone-danger); }
.ty-anniu--weixian-shi { background: var(--tone-danger); border-color: var(--tone-danger); color: #fff; }
.ty-anniu--weixian-shi:hover { background: #B42318; border-color: #B42318; color: #fff; }
.ty-anniu--da { height: 36px; padding: 0 20px; }
.ty-anniu--xiao { height: 28px; padding: 0 12px; font-size: 13px; }
.ty-anniu--tubiao { width: 32px; padding: 0; }
.ty-anniu--xiao.ty-anniu--tubiao { width: 28px; }
.ty-anniu[disabled], .ty-anniu.is-jinyong { background: var(--xian-qian); border-color: var(--xian); color: var(--zi-jinyong); cursor: not-allowed; transform: none; box-shadow: none; filter: none; }
.ty-anniu--wenzi[disabled] { background: transparent; border-color: transparent; }
.ty-anniu.is-loading { pointer-events: none; opacity: .8; }
.ty-anniu.is-loading::before { content: ""; width: 14px; height: 14px; border-radius: 50%; border: 2px solid currentColor; border-right-color: transparent; animation: ty-zhuan 700ms linear infinite; }
.ty-anniu.is-loading > i { display: none; }
.ty-anniu-zu { display: inline-flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.ty-lianjie { border: 0; background: transparent; padding: 0; color: var(--zhu); font-size: inherit; cursor: pointer; }
.ty-lianjie:hover { color: var(--zhu-shen); }
.ty-lianjie--weixian { color: var(--tone-danger); }
.ty-lianjie[disabled] { color: var(--zi-jinyong); cursor: not-allowed; }
@keyframes ty-zhuan { to { transform: rotate(360deg); } }
/* =========================
按钮结束
========================= */

/* =========================
输入类开始
========================= */
.ty-shuru, .ty-xiala, .ty-riqi, .ty-wenben { width: 100%; height: 32px; padding: 0 12px; border: 1px solid var(--xian); border-radius: var(--yuanjiao); background: #fff; color: var(--zi-biaoti); font-size: 14px; transition: border-color var(--donghua), box-shadow var(--donghua), background var(--donghua); }
.ty-wenben { height: auto; min-height: 80px; padding: 6px 12px; line-height: 22px; resize: vertical; }
.ty-shuru::placeholder, .ty-wenben::placeholder { color: var(--zi-jinyong); }
.ty-shuru:hover, .ty-xiala:hover, .ty-riqi:hover, .ty-wenben:hover { border-color: var(--zhu-liang); }
.ty-shuru:focus, .ty-xiala:focus, .ty-riqi:focus, .ty-wenben:focus, .ty-shuru.is-jujiao, .ty-xiala.is-jujiao { border-color: var(--zhu); box-shadow: 0 0 0 2px var(--zhu-qian2); outline: none; }
.ty-shuru[disabled], .ty-xiala[disabled], .ty-riqi[disabled], .ty-wenben[disabled], .ty-shuru[readonly].is-zhidu { background: var(--di-biaotou); border-color: var(--xian); color: var(--zi-jinyong); cursor: not-allowed; }
.ty-shuru.is-cuowu, .ty-xiala.is-cuowu, .ty-riqi.is-cuowu, .ty-wenben.is-cuowu, .is-cuowu > .ty-shuru, .is-cuowu > .ty-xiala, .is-cuowu > .ty-wenben, .is-cuowu .ty-shuru-zu, .is-cuowu .ty-riqi-fanwei, .is-cuowu .ty-xuanze-chufa { border-color: var(--tone-danger); }
.ty-shuru.is-cuowu:focus, .is-cuowu > .ty-shuru:focus { box-shadow: 0 0 0 2px var(--tone-danger-di); }
select.ty-xiala { appearance: none; padding-right: 32px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5 6 7.5 9 4.5' fill='none' stroke='%2386909C' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 10px center; cursor: pointer; }
.ty-shuru-zu { display: flex; align-items: center; height: 32px; border: 1px solid var(--xian); border-radius: var(--yuanjiao); background: #fff; transition: border-color var(--donghua), box-shadow var(--donghua); }
.ty-shuru-zu:hover { border-color: var(--zhu-liang); }
.ty-shuru-zu:focus-within { border-color: var(--zhu); box-shadow: 0 0 0 2px var(--zhu-qian2); }
.ty-shuru-zu .ty-shuru { border: 0; box-shadow: none; height: 30px; background: transparent; }
.ty-shuru-zu-qian, .ty-shuru-zu-hou { padding: 0 10px; color: var(--zi-fuzhu); font-size: 13px; white-space: nowrap; display: flex; align-items: center; }
.ty-shuru-zu-fama { border: 0; background: none; color: var(--zhu); cursor: pointer; height: 100%; }
.ty-shuru-zu-fama:disabled { color: var(--zi-jinyong); cursor: not-allowed; }
.ty-shuru-zu.is-jinyong { background: var(--di-biaotou); cursor: not-allowed; }
.ty-riqi-fanwei { display: flex; align-items: center; height: 32px; border: 1px solid var(--xian); border-radius: var(--yuanjiao); background: #fff; padding: 0 8px 0 10px; gap: 6px; transition: border-color var(--donghua), box-shadow var(--donghua); }
.ty-riqi-fanwei:hover { border-color: var(--zhu-liang); }
.ty-riqi-fanwei:focus-within { border-color: var(--zhu); box-shadow: 0 0 0 2px var(--zhu-qian2); }
.ty-riqi-fanwei > i { color: var(--zi-fuzhu); }
.ty-riqi-fanwei input { flex: 1; min-width: 0; border: 0; height: 30px; background: transparent; color: var(--zi-biaoti); font-family: var(--ziti-shuzi); font-size: 13px; }
.ty-riqi-fanwei-zhi { color: var(--zi-fuzhu); font-size: 13px; }
.ty-riqi-fanwei.is-jinyong { background: var(--di-biaotou); color: var(--zi-jinyong); }
.ty-riqi-fanwei.is-jinyong input { color: var(--zi-jinyong); }
.ty-kaiguan { position: relative; display: inline-flex; align-items: center; gap: 8px; cursor: pointer; font-size: 14px; color: var(--zi-zhengwen); }
.ty-kaiguan input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.ty-kaiguan-gui { width: 40px; height: 22px; border-radius: 11px; background: var(--zi-jinyong); position: relative; transition: background var(--donghua); flex-shrink: 0; }
.ty-kaiguan-gui::after { content: ""; position: absolute; top: 2px; left: 2px; width: 18px; height: 18px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0, 0, 0, .2); transition: transform var(--donghua); }
.ty-kaiguan input:checked + .ty-kaiguan-gui { background: var(--zhu); }
.ty-kaiguan input:checked + .ty-kaiguan-gui::after { transform: translateX(18px); }
.ty-kaiguan input:focus-visible + .ty-kaiguan-gui { box-shadow: 0 0 0 3px var(--zhu-qian2); }
.ty-kaiguan input:disabled + .ty-kaiguan-gui { opacity: .45; cursor: not-allowed; }
.ty-kaiguan:hover input:not(:disabled):not(:checked) + .ty-kaiguan-gui { background: #B8BCC6; }
.ty-fuxuan, .ty-danxuan { position: relative; display: inline-flex; align-items: center; gap: 8px; cursor: pointer; font-size: 14px; color: var(--zi-zhengwen); line-height: 22px; }
.ty-fuxuan input, .ty-danxuan input { appearance: none; margin: 0; width: 16px; height: 16px; border: 1px solid #C9CDD4; background: #fff; flex-shrink: 0; cursor: pointer; transition: border-color var(--donghua), background var(--donghua); display: inline-grid; place-content: center; }
.ty-fuxuan input { border-radius: 4px; }
.ty-danxuan input { border-radius: 50%; }
.ty-fuxuan input:hover, .ty-danxuan input:hover { border-color: var(--zhu); }
.ty-fuxuan input:checked, .ty-fuxuan input:indeterminate { background: var(--zhu); border-color: var(--zhu); }
.ty-fuxuan input:checked::after { content: ""; width: 8px; height: 5px; border-left: 2px solid #fff; border-bottom: 2px solid #fff; transform: rotate(-45deg) translate(1px, -1px); }
.ty-fuxuan input:indeterminate::after { content: ""; width: 8px; height: 2px; background: #fff; border-radius: 1px; }
.ty-danxuan input:checked { border-color: var(--zhu); border-width: 5px; }
.ty-fuxuan input:focus-visible, .ty-danxuan input:focus-visible { box-shadow: 0 0 0 3px var(--zhu-qian2); outline: none; }
.ty-fuxuan input:disabled, .ty-danxuan input:disabled { background: var(--xian-qian); border-color: var(--xian); cursor: not-allowed; }
.ty-fuxuan input:disabled:checked { background: var(--zi-jinyong); border-color: var(--zi-jinyong); }
.ty-fuxuan:has(input:disabled), .ty-danxuan:has(input:disabled) { color: var(--zi-jinyong); cursor: not-allowed; }
.ty-fuxuan.is-cuowu input { border-color: var(--tone-danger); }
.ty-fuxuan.is-cuowu { color: var(--tone-danger); }
.ty-xuanxiang-zu { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 20px; min-height: 32px; }
.ty-buzhuqi { justify-self: start; display: inline-flex; align-items: stretch; height: 32px; border: 1px solid var(--xian); border-radius: var(--yuanjiao); background: #fff; overflow: hidden; }
.ty-buzhuqi button { width: 32px; border: 0; background: var(--di-biaotou); color: var(--zi-zhengwen); font-size: 12px; }
.ty-buzhuqi button:hover { color: var(--zhu); background: var(--zhu-qian); }
.ty-buzhuqi button:disabled { color: var(--zi-jinyong); background: var(--di-biaotou); cursor: not-allowed; }
.ty-buzhuqi input { width: 64px; border: 0; border-left: 1px solid var(--xian); border-right: 1px solid var(--xian); text-align: center; font-family: var(--ziti-shuzi); color: var(--zi-biaoti); }
.ty-buzhuqi:focus-within { border-color: var(--zhu); box-shadow: 0 0 0 2px var(--zhu-qian2); }
.ty-buzhuqi.is-jinyong { background: var(--di-biaotou); }
.ty-buzhuqi.is-jinyong input { background: var(--di-biaotou); color: var(--zi-jinyong); }
/* =========================
输入类结束
========================= */

/* =========================
远程下拉与级联开始
========================= */
.ty-xuanze { position: relative; width: 100%; }
.ty-xuanze-chufa { display: flex; align-items: center; gap: 6px; width: 100%; height: 32px; padding: 0 10px 0 12px; border: 1px solid var(--xian); border-radius: var(--yuanjiao); background: #fff; color: var(--zi-biaoti); font-size: 14px; text-align: left; transition: border-color var(--donghua), box-shadow var(--donghua); }
.ty-xuanze-chufa:hover { border-color: var(--zhu-liang); }
.ty-xuanze.is-kai .ty-xuanze-chufa { border-color: var(--zhu); box-shadow: 0 0 0 2px var(--zhu-qian2); }
.ty-xuanze-zhi { flex: 1; min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.ty-xuanze-zhi.is-zhanwei { color: var(--zi-jinyong); }
.ty-xuanze-qingchu { border: 0; background: transparent; color: var(--zi-fuzhu); padding: 0 2px; font-size: 12px; }
.ty-xuanze-qingchu:hover { color: var(--zi-biaoti); }
.ty-xuanze-jiantou { color: var(--zi-fuzhu); font-size: 12px; transition: transform var(--donghua-xiala); }
.ty-xuanze.is-kai .ty-xuanze-jiantou { transform: rotate(180deg); }
.ty-xuanze.is-jinyong .ty-xuanze-chufa { background: var(--di-biaotou); color: var(--zi-jinyong); cursor: not-allowed; }
.ty-xuanze-mianban { position: absolute; top: calc(100% + 4px); left: 0; right: 0; min-width: 200px; z-index: 70; background: #fff; border-radius: 8px; box-shadow: var(--yinying-fu); padding: 6px; animation: ty-xiala-chu 120ms ease; }
.ty-xuanze-sousuo { display: flex; align-items: center; gap: 6px; height: 32px; padding: 0 8px; border-radius: 6px; background: var(--di-biaotou); margin-bottom: 4px; color: var(--zi-fuzhu); }
.ty-xuanze-sousuo input { flex: 1; min-width: 0; border: 0; background: transparent; height: 30px; font-size: 13px; color: var(--zi-biaoti); }
.ty-xuanze-liebiao { max-height: 240px; overflow-y: auto; }
.ty-xuanze-xiang { display: flex; align-items: center; gap: 8px; width: 100%; min-height: 34px; padding: 6px 10px; border: 0; background: transparent; border-radius: 6px; text-align: left; font-size: 13px; color: var(--zi-zhengwen); }
.ty-xuanze-xiang:hover, .ty-xuanze-xiang.is-huodong { background: var(--di-biaotou); color: var(--zi-biaoti); }
.ty-xuanze-xiang.is-xuanzhong { color: var(--zhu-shen); background: var(--zhu-qian); font-weight: 600; }
.ty-xuanze-xiang-fu { margin-left: auto; font-size: 12px; color: var(--zi-fuzhu); font-weight: 400; }
.ty-xuanze-zhuangtai { padding: 14px 10px; text-align: center; font-size: 13px; color: var(--zi-fuzhu); }
.ty-xuanze-zhuangtai.is-cuowu { color: var(--tone-danger); }
.ty-jilian { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.ty-jilian-tishi { grid-column: 1 / -1; font-size: 12px; color: var(--tone-danger); }
/* =========================
远程下拉与级联结束
========================= */

/* =========================
表单开始
========================= */
.ty-biaodan { display: flex; flex-direction: column; gap: 18px; }
.ty-biaodan--liangl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px 24px; }
.ty-biaodan-hang { display: grid; grid-template-columns: 100px minmax(0, 1fr); align-items: start; gap: 12px; }
.ty-biaodan--shang .ty-biaodan-hang, .ty-biaodan-hang--shang { grid-template-columns: minmax(0, 1fr); gap: 6px; }
.ty-biaodan-hang--zheng { grid-column: 1 / -1; }
.ty-biaodan-biaoqian { font-size: 14px; line-height: 32px; color: var(--zi-zhengwen); text-align: right; white-space: nowrap; }
.ty-biaodan--shang .ty-biaodan-biaoqian, .ty-biaodan-hang--shang .ty-biaodan-biaoqian { text-align: left; line-height: 22px; }
.ty-biaodan-biaoqian.is-bitian::before { content: "*"; color: var(--tone-danger); margin-right: 4px; }
.ty-biaodan-kongjian { min-width: 0; }
.ty-biaodan-shuoming { font-size: 12px; line-height: 18px; color: var(--zi-fuzhu); margin-top: 4px; }
.ty-biaodan-cuowu { font-size: 12px; line-height: 18px; color: var(--tone-danger); margin-top: 4px; }
.ty-biaodan-cuowu:empty { display: none; }
.ty-biaodan-caozuo { display: flex; align-items: center; gap: 8px; padding-left: 112px; }
.ty-biaodan--shang .ty-biaodan-caozuo { padding-left: 0; }
@media (max-width: 767px) {
  .ty-biaodan--liangl { grid-template-columns: minmax(0, 1fr); }
  .ty-biaodan-hang { grid-template-columns: minmax(0, 1fr); gap: 6px; }
  .ty-biaodan-biaoqian { text-align: left; line-height: 22px; }
  .ty-biaodan-caozuo { padding-left: 0; }
}
/* =========================
表单结束
========================= */

/* =========================
筛选区开始
========================= */
.ty-shaixuan { background: var(--di-ka); border-radius: var(--yuanjiao-ka); box-shadow: var(--yinying-ka); padding: 16px 20px; margin-bottom: 16px; }
.ty-shaixuan-ti { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px 24px; align-items: center; }
.ty-shaixuan-xiang { display: flex; align-items: center; gap: 12px; min-width: 0; }
.ty-shaixuan-xiang > label, .ty-shaixuan-biaoqian { flex-shrink: 0; width: 64px; font-size: 14px; color: var(--zi-zhengwen); text-align: right; white-space: nowrap; }
.ty-shaixuan-xiang > :last-child { flex: 1; min-width: 0; }
.ty-shaixuan-xiang--kuan { grid-column: span 2; }
.ty-shaixuan:not(.is-zhankai) .ty-shaixuan-xiang--gengduo { display: none; }
.ty-shaixuan-caozuo { display: flex; align-items: center; justify-content: flex-end; gap: 8px; grid-column: -2 / -1; }
.ty-shaixuan-zhankai i { transition: transform var(--donghua); }
.ty-shaixuan.is-zhankai .ty-shaixuan-zhankai i { transform: rotate(180deg); }
@media (max-width: 767px) {
  .ty-shaixuan { padding: 12px; }
  .ty-shaixuan-xiang--kuan { grid-column: auto; }
  .ty-shaixuan-caozuo { grid-column: auto; justify-content: flex-start; }
  .ty-shaixuan-xiang > label, .ty-shaixuan-biaoqian { width: 56px; text-align: left; }
}
/* =========================
筛选区结束
========================= */

/* =========================
选项卡开始
========================= */
.ty-xuanxiangka { display: flex; align-items: flex-end; gap: 4px; border-bottom: 1px solid var(--xian); overflow-x: auto; scrollbar-width: none; }
.ty-xuanxiangka::-webkit-scrollbar { display: none; }
.ty-xuanxiangka-xiang { position: relative; display: inline-flex; align-items: center; gap: 6px; height: 44px; padding: 0 16px; border: 0; background: transparent; color: var(--zi-zhengwen); font-size: 14px; white-space: nowrap; flex-shrink: 0; transition: color var(--donghua); }
.ty-xuanxiangka-xiang:hover { color: var(--zhu); }
.ty-xuanxiangka-xiang.is-xuanzhong { color: var(--zhu); font-weight: 600; }
.ty-xuanxiangka-xiang.is-xuanzhong::after { content: ""; position: absolute; left: 12px; right: 12px; bottom: -1px; height: 2px; border-radius: 2px; background: var(--zhu); }
.ty-xuanxiangka-shu { min-width: 20px; height: 18px; padding: 0 6px; border-radius: 9px; background: var(--xian-qian); color: var(--zi-fuzhu); font-size: 12px; line-height: 18px; font-weight: 500; text-align: center; font-family: var(--ziti-shuzi); }
.ty-xuanxiangka-xiang.is-xuanzhong .ty-xuanxiangka-shu { background: var(--zhu-qian); color: var(--zhu-shen); }
.ty-xuanxiangka-shu--jinggao { background: var(--tone-danger-di); color: var(--tone-danger); }
.ty-xuanxiangka--kapian { background: var(--di-ka); border-radius: var(--yuanjiao-ka); box-shadow: var(--yinying-ka); border-bottom: 0; padding: 0 12px; margin-bottom: 16px; }
.ty-xuanxiangka--kapian .ty-xuanxiangka-xiang { height: 52px; }
.ty-xuanxiangka--kapian .ty-xuanxiangka-xiang.is-xuanzhong::after { bottom: 0; }
.ty-xuanxiangka-mianban { display: none; }
.ty-xuanxiangka-mianban.is-xuanzhong { display: block; animation: ty-danru 150ms ease; }
/* =========================
选项卡结束
========================= */

/* =========================
状态标签开始
========================= */
.ty-zhuangtai { display: inline-flex; align-items: center; gap: 6px; height: 22px; font-size: 12px; line-height: 22px; white-space: nowrap; color: var(--tone-se, var(--tone-muted)); --tone-se: var(--tone-muted); --tone-di: var(--tone-muted-di); }
.ty-zhuangtai::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; flex-shrink: 0; }
.ty-zhuangtai--jiaonang { padding: 0 8px; border-radius: 11px; background: var(--tone-di); }
.ty-zhuangtai--jiaonang::before { display: none; }
.ty-zhuangtai[data-tone="pending"] { --tone-se: var(--tone-pending); --tone-di: var(--tone-pending-di); }
.ty-zhuangtai[data-tone="processing"] { --tone-se: var(--tone-processing); --tone-di: var(--tone-processing-di); }
.ty-zhuangtai[data-tone="success"] { --tone-se: var(--tone-success); --tone-di: var(--tone-success-di); }
.ty-zhuangtai[data-tone="danger"] { --tone-se: var(--tone-danger); --tone-di: var(--tone-danger-di); }
.ty-zhuangtai[data-tone="muted"] { --tone-se: var(--tone-muted); --tone-di: var(--tone-muted-di); }
.ty-zhuangtai[data-tone="frozen"] { --tone-se: var(--tone-frozen); --tone-di: var(--tone-frozen-di); }
.ty-zhuangtai[data-tone="primary"] { --tone-se: var(--zhu-shen); --tone-di: var(--zhu-qian); }
[data-theme="red"] .ty-zhuangtai--jiaonang[data-tone="danger"] { background: #fff; box-shadow: inset 0 0 0 1px #F9B4B0; }
.ty-zhuangtai-zu { display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.ty-jiaobiao { display: inline-flex; align-items: center; height: 18px; padding: 0 6px; border-radius: 4px; font-size: 12px; font-weight: 600; background: var(--se-hupo); color: #fff; }
.ty-jiaobiao--zhu { background: var(--zhu); }
/* =========================
状态标签结束
========================= */

/* =========================
表格开始
========================= */
.ty-biaoge { position: relative; }
.ty-biaoge-gongju { display: flex; align-items: center; gap: 8px; padding: 12px 20px; flex-wrap: wrap; }
.ty-biaoge-gongju-you { margin-left: auto; display: flex; align-items: center; gap: 8px; }
.ty-biaoge-piliang { display: flex; align-items: center; gap: 12px; margin: 0 20px 12px; padding: 8px 12px; border-radius: 8px; background: var(--zhu-qian); color: var(--zhu-shen); font-size: 13px; animation: ty-xiala-chu 120ms ease; flex-wrap: wrap; }
.ty-biaoge-piliang-shu { font-weight: 600; }
.ty-biaoge-gundong { overflow-x: auto; }
.ty-biaoge table { width: 100%; min-width: 100%; font-size: 14px; }
.ty-biaoge th { height: 44px; padding: 0 12px; background: var(--di-biaotou); color: var(--zi-zhengwen); font-weight: 500; text-align: left; white-space: nowrap; border-bottom: 1px solid var(--xian); }
.ty-biaoge td { height: 48px; padding: 8px 12px; color: var(--zi-zhengwen); border-bottom: 1px solid var(--xian-qian); vertical-align: middle; background: var(--di-ka); }
.ty-biaoge tbody tr { transition: background var(--donghua); }
.ty-biaoge tbody tr:hover td { background: color-mix(in srgb, var(--zhu-qian) 30%, #fff); }
.ty-biaoge tbody tr.is-xuanzhong td { background: color-mix(in srgb, var(--zhu-qian) 60%, #fff); }
.ty-biaoge th:first-child, .ty-biaoge td:first-child { padding-left: 20px; }
.ty-biaoge th:last-child, .ty-biaoge td:last-child { padding-right: 20px; }
.ty-biaoge .is-you { text-align: right; }
.ty-biaoge .is-zhong { text-align: center; }
.ty-biaoge-gouxuan { width: 48px; }
.ty-biaoge-guding-zuo, .ty-biaoge-guding-you { position: sticky; z-index: 2; }
.ty-biaoge th.ty-biaoge-guding-zuo, .ty-biaoge th.ty-biaoge-guding-you { z-index: 3; }
.ty-biaoge-guding-zuo.is-bianjie { box-shadow: 6px 0 8px -6px rgba(16, 24, 40, .12); }
.ty-biaoge-guding-you.is-bianjie { box-shadow: -6px 0 8px -6px rgba(16, 24, 40, .12); }
.ty-biaoge-paixu { display: inline-flex; align-items: center; gap: 4px; border: 0; background: transparent; padding: 0; font-weight: 500; color: inherit; cursor: pointer; }
.ty-biaoge-paixu i { font-size: 11px; color: var(--zi-jinyong); }
.ty-biaoge-paixu.is-asc i, .ty-biaoge-paixu.is-desc i { color: var(--zhu); }
.ty-biaoge-caozuo { display: inline-flex; align-items: center; gap: 12px; white-space: nowrap; }
.ty-biaoge-caozuo .ty-xialacaidan { right: 0; }
.ty-biaoge--miji td { height: 40px; padding-top: 4px; padding-bottom: 4px; font-size: 13px; }
.ty-biaoge--miji th { height: 40px; font-size: 13px; }
.ty-biaoge-zhuangtai td { height: auto; padding: 0; }
.ty-biaoge-zhuangtai:hover td { background: var(--di-ka) !important; }
.ty-biaoge-cuowu { padding: 40px 20px; text-align: center; color: var(--zi-fuzhu); }
.ty-biaoge-cuowu i { font-size: 32px; color: var(--tone-danger); display: block; margin-bottom: 8px; }
.ty-biaoge-jiaojiao { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 20px; flex-wrap: wrap; }
.ty-biaoge-lieshezhi { width: 200px; max-height: 320px; overflow-y: auto; }
.ty-biaoge-lieshezhi .ty-fuxuan { display: flex; padding: 6px 10px; font-size: 13px; }
.ty-jindutiao { display: flex; flex-direction: column; gap: 4px; min-width: 120px; }
.ty-jindutiao-wenzi { font-size: 12px; line-height: 16px; color: var(--zi-zhengwen); }
.ty-jindutiao-gui { display: block; height: 6px; border-radius: 3px; background: var(--xian-qian); overflow: hidden; }
.ty-jindutiao-zhi { display: block; height: 100%; border-radius: 3px; background: var(--zhu); transition: width 300ms ease; }
.ty-jindutiao[data-tone="processing"] .ty-jindutiao-zhi { background: var(--tone-processing); }
.ty-jindutiao[data-tone="pending"] .ty-jindutiao-zhi { background: var(--se-hupo); }
.ty-jindutiao[data-tone="danger"] .ty-jindutiao-zhi { background: var(--tone-danger); }
/* =========================
表格结束
========================= */

/* =========================
骨架屏开始
========================= */
.ty-gujia { display: flex; flex-direction: column; gap: 0; }
.ty-gujia-hang { display: flex; align-items: center; gap: 16px; height: 48px; padding: 0 20px; border-bottom: 1px solid var(--xian-qian); }
.ty-gujia-tiao { height: 12px; border-radius: 6px; flex: 1; background: linear-gradient(90deg, #F2F3F5 25%, #E8EAEE 37%, #F2F3F5 63%); background-size: 400% 100%; animation: ty-gujia-shan 1.4s ease infinite; }
.ty-gujia-tiao--duan { flex: 0 0 64px; }
@keyframes ty-gujia-shan { 0% { background-position: 100% 50%; } 100% { background-position: 0 50%; } }
/* =========================
骨架屏结束
========================= */

/* =========================
分页开始
========================= */
.ty-fenye { display: flex; align-items: center; gap: 8px; margin-left: auto; font-size: 13px; color: var(--zi-zhengwen); flex-wrap: wrap; }
.ty-fenye-zongshu { color: var(--zi-fuzhu); }
.ty-fenye-tiaoshu { width: 96px; height: 28px; font-size: 13px; }
.ty-fenye-yema { display: flex; align-items: center; gap: 4px; }
.ty-fenye-ye { min-width: 28px; height: 28px; padding: 0 6px; border: 1px solid var(--xian); border-radius: 6px; background: #fff; color: var(--zi-zhengwen); font-size: 13px; font-family: var(--ziti-shuzi); display: inline-flex; align-items: center; justify-content: center; }
.ty-fenye-ye:hover { border-color: var(--zhu); color: var(--zhu); }
.ty-fenye-ye.is-dangqian { background: var(--zhu); border-color: var(--zhu); color: #fff; }
.ty-fenye-ye[disabled] { color: var(--zi-jinyong); border-color: var(--xian); cursor: not-allowed; background: #fff; }
.ty-fenye-shenglue { color: var(--zi-fuzhu); padding: 0 2px; }
.ty-fenye-tiaozhuan { display: flex; align-items: center; gap: 6px; color: var(--zi-fuzhu); }
.ty-fenye-tiaozhuan input { width: 48px; height: 28px; text-align: center; padding: 0 4px; }
@media (max-width: 767px) {
  .ty-fenye-tiaozhuan, .ty-fenye-tiaoshu { display: none; }
}
/* =========================
分页结束
========================= */

/* =========================
弹窗与抽屉开始
========================= */
.ty-zhezhao { position: fixed; inset: 0; z-index: 1000; background: rgba(15, 23, 42, .45); display: flex; align-items: center; justify-content: center; padding: 24px 16px; animation: ty-danru 150ms ease; }
.ty-zhezhao.is-guan { animation: ty-danchu 150ms ease forwards; }
.ty-tanchuang { width: 640px; max-width: 100%; max-height: calc(100vh - 48px); display: flex; flex-direction: column; background: #fff; border-radius: 12px; box-shadow: 0 20px 48px rgba(16, 24, 40, .2); animation: ty-tanchu 150ms ease; }
.ty-tanchuang--xiao { width: 480px; }
.ty-tanchuang--da { width: 880px; }
.ty-tanchuang-tou { display: flex; align-items: center; gap: 10px; padding: 16px 20px 16px 0; border-bottom: 1px solid var(--xian-qian); }
.ty-tanchuang-tou::before { content: ""; width: 3px; height: 16px; border-radius: 0 2px 2px 0; background: var(--zhu); margin-right: 7px; }
.ty-tanchuang--weixian .ty-tanchuang-tou::before { background: var(--tone-danger); }
.ty-tanchuang-biaoti { flex: 1; font-size: 15px; font-weight: 600; color: var(--zi-biaoti); }
.ty-tanchuang-guanbi { width: 28px; height: 28px; border: 0; border-radius: 6px; background: transparent; color: var(--zi-fuzhu); font-size: 15px; }
.ty-tanchuang-guanbi:hover { background: var(--di-biaotou); color: var(--zi-biaoti); }
.ty-tanchuang-ti { padding: 20px; overflow-y: auto; color: var(--zi-zhengwen); }
.ty-tanchuang-jiao { display: flex; align-items: center; justify-content: flex-end; gap: 8px; padding: 12px 20px 16px; }
.ty-queren { display: flex; gap: 12px; }
.ty-queren-tubiao { width: 40px; height: 40px; border-radius: 50%; background: var(--tone-pending-di); color: #F79009; display: flex; align-items: center; justify-content: center; font-size: 18px; flex-shrink: 0; }
.ty-queren--weixian .ty-queren-tubiao { background: var(--tone-danger-di); color: var(--tone-danger); }
.ty-queren-nei { flex: 1; min-width: 0; }
.ty-queren-wenzi { color: var(--zi-biaoti); }
.ty-yingxiang { margin-top: 12px; padding: 12px 14px; border-radius: 8px; background: var(--di-biaotou); }
.ty-yingxiang-biaoti { font-size: 13px; font-weight: 600; color: var(--zi-biaoti); margin-bottom: 6px; }
.ty-yingxiang-liebiao { display: flex; flex-direction: column; gap: 4px; }
.ty-yingxiang-liebiao li { position: relative; padding-left: 14px; font-size: 13px; line-height: 20px; }
.ty-yingxiang-liebiao li::before { content: ""; position: absolute; left: 2px; top: 8px; width: 5px; height: 5px; border-radius: 50%; background: var(--tone-danger); }
.ty-queren-yuanyin { margin-top: 12px; }
.ty-bitian-xing { color: var(--tone-danger); margin-right: 4px; }
.ty-queren-yuanyin label { display: block; font-size: 13px; color: var(--zi-zhengwen); margin-bottom: 6px; }
.ty-jieguo { text-align: center; padding: 8px 0; }
.ty-jieguo-tubiao { width: 56px; height: 56px; border-radius: 50%; margin: 0 auto 12px; display: flex; align-items: center; justify-content: center; font-size: 26px; background: var(--tone-success-di); color: var(--tone-success); }
.ty-jieguo--bufen .ty-jieguo-tubiao { background: var(--tone-pending-di); color: #F79009; }
.ty-jieguo--shibai .ty-jieguo-tubiao { background: var(--tone-danger-di); color: var(--tone-danger); }
.ty-jieguo-biaoti { font-size: 15px; font-weight: 600; color: var(--zi-biaoti); }
.ty-jieguo-shuoming { font-size: 13px; color: var(--zi-fuzhu); margin-top: 6px; }
.ty-chouti-zhezhao { justify-content: flex-end; align-items: stretch; padding: 0; }
.ty-chouti { width: 560px; max-width: 100%; height: 100%; display: flex; flex-direction: column; background: #fff; border-radius: 12px 0 0 12px; box-shadow: -12px 0 40px rgba(16, 24, 40, .16); animation: ty-chouti-ru 200ms ease; }
.ty-chouti--kuan { width: 720px; }
.ty-chouti-tou { display: flex; align-items: center; gap: 10px; height: 56px; padding: 0 20px; border-bottom: 1px solid var(--xian-qian); flex-shrink: 0; }
.ty-chouti-ti { flex: 1; overflow-y: auto; padding: 20px; }
.ty-chouti-jiao { display: flex; align-items: center; justify-content: flex-end; gap: 8px; padding: 12px 20px; border-top: 1px solid var(--xian-qian); flex-shrink: 0; }
.ty-zhezhao.is-guan .ty-chouti { animation: ty-chouti-chu 150ms ease forwards; }
body.is-suoding { overflow: hidden; }
@keyframes ty-tanchu { from { opacity: 0; transform: translateY(8px) scale(.98); } to { opacity: 1; transform: none; } }
@keyframes ty-danchu { to { opacity: 0; } }
@keyframes ty-chouti-ru { from { transform: translateX(40px); opacity: .4; } to { transform: none; opacity: 1; } }
@keyframes ty-chouti-chu { to { transform: translateX(40px); opacity: 0; } }
/* =========================
弹窗与抽屉结束
========================= */

/* =========================
提示条与轻提示开始
========================= */
.ty-tishi { display: flex; align-items: flex-start; gap: 8px; padding: 9px 14px; border-radius: 8px; font-size: 13px; line-height: 20px; border: 1px solid transparent; }
.ty-tishi > i { margin-top: 3px; font-size: 14px; }
.ty-tishi-nei { flex: 1; min-width: 0; }
.ty-tishi--jinggao { background: var(--tone-pending-di); color: var(--tone-pending); border-color: #FCE7C3; }
.ty-tishi--cuowu { background: var(--tone-danger-di); color: var(--tone-danger); border-color: #FBD5D2; }
.ty-tishi--xinxi { background: var(--zhu-qian); color: var(--zhu-shen); border-color: var(--zhu-qian2); }
.ty-tishi--chenggong { background: var(--tone-success-di); color: var(--tone-success); border-color: #C7EBD3; }
.ty-tishi + .ty-tishi { margin-top: 8px; }
.ty-qingtishi-rongqi { position: fixed; top: 72px; left: 50%; transform: translateX(-50%); z-index: 2000; display: flex; flex-direction: column; align-items: center; gap: 8px; pointer-events: none; }
.ty-qingtishi { display: flex; align-items: center; gap: 8px; max-width: min(520px, calc(100vw - 32px)); padding: 10px 16px; border-radius: 8px; background: #fff; color: var(--zi-biaoti); font-size: 14px; box-shadow: var(--yinying-fu); pointer-events: auto; animation: ty-xiala-chu 150ms ease; }
.ty-qingtishi i { font-size: 16px; }
.ty-qingtishi--chenggong i { color: var(--tone-success); }
.ty-qingtishi--cuowu i { color: var(--tone-danger); }
.ty-qingtishi--jinggao i { color: #F79009; }
.ty-qingtishi--xinxi i { color: var(--zhu); }
.ty-qingtishi.is-guan { animation: ty-danchu 200ms ease forwards; }
/* =========================
提示条与轻提示结束
========================= */

/* =========================
空状态开始
========================= */
.ty-kong { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 40px 20px; }
.ty-kong-tu { width: 160px; height: 160px; object-fit: contain; }
.ty-kong-tu.ty-tupian-que { border-radius: 50%; }
.ty-kong-biaoti { font-size: 15px; font-weight: 600; color: var(--zi-biaoti); margin-top: 12px; }
.ty-kong-shuoming { font-size: 13px; color: var(--zi-fuzhu); margin-top: 4px; max-width: 420px; }
.ty-kong-caozuo { display: flex; gap: 8px; margin-top: 16px; }
.ty-kong--xiao { padding: 24px 16px; }
.ty-kong--xiao .ty-kong-tu { width: 96px; height: 96px; }
.ty-tubiaodi { width: 40px; height: 40px; border-radius: 10px; display: inline-flex; align-items: center; justify-content: center; font-size: 18px; background: var(--zhu-qian); color: var(--zhu); --fa-secondary-opacity: .4; flex-shrink: 0; }
/* =========================
空状态结束
========================= */

/* =========================
步骤条开始
========================= */
.ty-buzhou { display: flex; align-items: flex-start; }
.ty-buzhou-xiang { flex: 1; display: flex; flex-direction: column; align-items: center; position: relative; min-width: 0; text-align: center; }
.ty-buzhou-xiang:not(:last-child)::after { content: ""; position: absolute; top: 13px; left: calc(50% + 20px); right: calc(-50% + 20px); height: 2px; border-radius: 1px; background: var(--xian); }
.ty-buzhou-xiang.is-wancheng:not(:last-child)::after { background: var(--zhu); }
.ty-buzhou-dian { width: 28px; height: 28px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 600; font-family: var(--ziti-shuzi); background: var(--xian-qian); color: var(--zi-fuzhu); border: 2px solid var(--xian-qian); position: relative; z-index: 1; }
.ty-buzhou-xiang.is-wancheng .ty-buzhou-dian { background: var(--zhu-qian); color: var(--zhu); border-color: var(--zhu); }
.ty-buzhou-xiang.is-dangqian .ty-buzhou-dian { background: var(--zhu); color: #fff; border-color: var(--zhu); box-shadow: 0 0 0 4px var(--zhu-qian2); }
.ty-buzhou-xiang.is-yichang .ty-buzhou-dian { background: var(--tone-danger); border-color: var(--tone-danger); color: #fff; }
.ty-buzhou-ming { margin-top: 8px; font-size: 14px; color: var(--zi-fuzhu); padding: 0 4px; }
.ty-buzhou-xiang.is-wancheng .ty-buzhou-ming { color: var(--zi-zhengwen); }
.ty-buzhou-xiang.is-dangqian .ty-buzhou-ming { color: var(--zi-biaoti); font-weight: 600; }
.ty-buzhou-shuoming { font-size: 12px; color: var(--zi-fuzhu); margin-top: 2px; padding: 0 4px; }
@media (max-width: 767px) {
  .ty-buzhou { overflow-x: auto; padding-bottom: 4px; }
  .ty-buzhou-xiang { min-width: 84px; }
}
/* =========================
步骤条结束
========================= */

/* =========================
时间轴开始
========================= */
.ty-shijianzhou { position: relative; display: flex; flex-direction: column; }
.ty-shijianzhou-xiang { position: relative; display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 16px; padding: 0 0 18px 22px; }
.ty-shijianzhou-xiang::before { content: ""; position: absolute; left: 5px; top: 8px; width: 10px; height: 10px; border-radius: 50%; background: #fff; border: 2px solid var(--zi-jinyong); z-index: 1; }
.ty-shijianzhou-xiang:first-child::before { border-color: var(--zhu); background: var(--zhu); }
.ty-shijianzhou-xiang:not(:last-child)::after { content: ""; position: absolute; left: 9px; top: 20px; bottom: 0; width: 2px; background: var(--xian-qian); }
.ty-shijianzhou-shijian { font-size: 13px; line-height: 24px; color: var(--zi-fuzhu); font-family: var(--ziti-shuzi); font-variant-numeric: tabular-nums; }
.ty-shijianzhou-nei { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.ty-shijianzhou-tou { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; line-height: 24px; }
.ty-shijianzhou-dongzuo { font-weight: 600; color: var(--zi-biaoti); }
.ty-shijianzhou-ren { font-size: 13px; color: var(--zi-zhengwen); }
.ty-shijianzhou-bianhua { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--zi-zhengwen); }
.ty-shijianzhou-bianhua i { font-size: 11px; color: var(--zi-fuzhu); }
.ty-shijianzhou-yuanyin { font-size: 13px; color: var(--zi-fuzhu); }
@media (max-width: 767px) {
  .ty-shijianzhou-xiang { grid-template-columns: minmax(0, 1fr); gap: 2px; }
}
/* =========================
时间轴结束
========================= */

/* =========================
单据头与描述列表开始
========================= */
.ty-danjutou { display: flex; align-items: flex-start; gap: 24px; padding: 20px; flex-wrap: wrap; }
.ty-danjutou-zhu { min-width: 260px; }
.ty-danjutou-fanhui { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; color: var(--zi-zhengwen); margin-bottom: 6px; }
.ty-danjutou-hao { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.ty-danjutou-danhao { font-family: var(--ziti-shuzi); font-variant-numeric: tabular-nums; font-size: 20px; line-height: 28px; font-weight: 700; color: var(--zi-biaoti); letter-spacing: .2px; }
.ty-danjutou-zhaiyao { font-size: 13px; color: var(--zi-fuzhu); margin-top: 4px; }
.ty-danjutou-ziduan { flex: 1; display: flex; align-items: flex-start; gap: 0; flex-wrap: wrap; min-width: 0; }
.ty-danjutou-ziduan-xiang { padding: 0 20px; border-left: 1px solid var(--xian); min-width: 120px; }
.ty-danjutou-ziduan-ming { font-size: 12px; line-height: 18px; color: var(--zi-fuzhu); }
.ty-danjutou-ziduan-zhi { font-size: 14px; line-height: 24px; color: var(--zi-biaoti); margin-top: 4px; }
.ty-danjutou-caozuo { display: flex; align-items: center; gap: 8px; margin-left: auto; flex-wrap: wrap; }
@media (max-width: 1023px) {
  .ty-danjutou-ziduan { flex-basis: 100%; gap: 12px 0; }
  .ty-danjutou-ziduan-xiang:first-child { border-left: 0; padding-left: 0; }
  .ty-danjutou-caozuo { margin-left: 0; }
}
.ty-miaoshu { display: grid; grid-template-columns: repeat(var(--miaoshu-lie, 3), minmax(0, 1fr)); gap: 14px 24px; }
.ty-miaoshu-xiang { display: flex; gap: 12px; min-width: 0; font-size: 14px; line-height: 22px; }
.ty-miaoshu-ming { flex-shrink: 0; width: 88px; color: var(--zi-fuzhu); }
.ty-miaoshu-zhi { flex: 1; min-width: 0; color: var(--zi-biaoti); word-break: break-all; }
.ty-miaoshu-xiang--zheng { grid-column: 1 / -1; }
@media (max-width: 1023px) {
  .ty-miaoshu { --miaoshu-lie: 2 !important; }
}
@media (max-width: 767px) {
  .ty-miaoshu { --miaoshu-lie: 1 !important; }
}
.ty-zhaiyao { display: flex; flex-direction: column; gap: 10px; font-size: 14px; }
.ty-zhaiyao-hang { display: flex; align-items: center; justify-content: space-between; gap: 12px; color: var(--zi-zhengwen); }
.ty-zhaiyao-hang > :last-child { color: var(--zi-biaoti); font-family: var(--ziti-shuzi); font-variant-numeric: tabular-nums; }
.ty-zhaiyao-heji { border-top: 1px solid var(--xian-qian); padding-top: 12px; font-weight: 600; color: var(--zi-biaoti); }
.ty-zhaiyao-heji > :last-child { font-size: 24px; line-height: 32px; font-weight: 700; }
/* =========================
单据头与描述列表结束
========================= */

/* =========================
关联单据卡开始
========================= */
.ty-guanlian { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; }
.ty-guanlian-ka { display: flex; align-items: center; gap: 12px; padding: 14px 16px; border: 1px solid var(--xian); border-radius: 10px; background: #fff; color: inherit; transition: border-color var(--donghua), box-shadow var(--donghua); min-width: 0; }
a.ty-guanlian-ka:hover { border-color: var(--zhu); box-shadow: 0 2px 10px var(--zhu-touming); color: inherit; }
.ty-guanlian-nei { flex: 1; min-width: 0; }
.ty-guanlian-tou { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.ty-guanlian-ming { font-weight: 600; color: var(--zi-biaoti); }
.ty-guanlian-shu { font-size: 13px; color: var(--zi-fuzhu); }
.ty-guanlian-shuoming { font-size: 12px; color: var(--zi-fuzhu); margin-top: 4px; font-family: var(--ziti-shuzi); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ty-guanlian-jiantou { color: var(--zi-fuzhu); font-size: 12px; }
/* =========================
关联单据卡结束
========================= */

/* =========================
三栏布局开始
========================= */
.ty-sanlan { display: grid; grid-template-columns: 280px minmax(0, 1fr) 320px; gap: 16px; align-items: start; }
.ty-sanlan-zuo, .ty-sanlan-you { position: sticky; top: 112px; max-height: calc(100vh - 132px); overflow-y: auto; }
.ty-sanlan-zhong { min-width: 0; }
.ty-sanlan-liebiao { display: flex; flex-direction: column; gap: 4px; padding: 8px; }
.ty-sanlan-liebiao-xiang { display: flex; align-items: center; gap: 8px; padding: 10px 12px; border-radius: 8px; color: var(--zi-zhengwen); font-size: 13px; border: 0; background: transparent; text-align: left; width: 100%; }
.ty-sanlan-liebiao-xiang:hover { background: var(--di-biaotou); }
.ty-sanlan-liebiao-xiang.is-xuanzhong { background: var(--zhu-qian); color: var(--zhu-shen); font-weight: 600; }
@media (max-width: 1279px) {
  .ty-sanlan { grid-template-columns: 240px minmax(0, 1fr); }
  .ty-sanlan-you { grid-column: 1 / -1; position: static; max-height: none; }
}
@media (max-width: 1023px) {
  .ty-sanlan { grid-template-columns: minmax(0, 1fr); }
  .ty-sanlan-zuo { position: static; max-height: none; }
}
/* =========================
三栏布局结束
========================= */

/* =========================
金额矩阵开始
========================= */
.ty-juzhen { overflow-x: auto; border: 1px solid var(--xian); border-radius: 10px; }
.ty-juzhen table { width: 100%; font-size: 13px; }
.ty-juzhen th, .ty-juzhen td { height: 40px; padding: 4px 10px; border-bottom: 1px solid var(--xian-qian); border-right: 1px solid var(--xian-qian); white-space: nowrap; background: #fff; }
.ty-juzhen thead th { background: var(--di-biaotou); font-weight: 500; color: var(--zi-zhengwen); text-align: right; vertical-align: bottom; }
.ty-juzhen-hangtou { position: sticky; left: 0; z-index: 2; text-align: left !important; min-width: 200px; }
.ty-juzhen thead .ty-juzhen-hangtou { z-index: 3; }
.ty-juzhen-ming { font-weight: 600; color: var(--zi-biaoti); }
.ty-juzhen-fu { font-size: 12px; color: var(--zi-fuzhu); font-family: var(--ziti-shuzi); font-weight: 400; }
.ty-juzhen-ge { padding: 4px 6px !important; min-width: 120px; }
.ty-juzhen-ge input { width: 100%; height: 30px; border: 1px solid transparent; border-radius: 6px; background: var(--di-biaotou); text-align: right; padding: 0 8px; font-family: var(--ziti-shuzi); font-variant-numeric: tabular-nums; font-size: 13px; color: var(--zi-biaoti); transition: border-color var(--donghua), background var(--donghua); }
.ty-juzhen-ge input:hover { border-color: var(--zhu-liang); background: #fff; }
.ty-juzhen-ge input:focus { border-color: var(--zhu); background: #fff; box-shadow: 0 0 0 2px var(--zhu-qian2); outline: none; }
.ty-juzhen-ge input:disabled { background: repeating-linear-gradient(45deg, #F7F8FA, #F7F8FA 6px, #F0F1F4 6px, #F0F1F4 12px); cursor: not-allowed; }
.ty-juzhen-ge.is-youzhi input { background: var(--zhu-qian); color: var(--zhu-shen); font-weight: 600; }
.ty-juzhen-ge.is-chaoe { background: var(--tone-danger-di) !important; }
.ty-juzhen-ge.is-chaoe input { background: #fff; border-color: var(--tone-danger); color: var(--tone-danger); }
.ty-juzhen-ge.is-feifa input { border-color: var(--tone-danger); color: var(--tone-danger); }
.ty-juzhen-yue { text-align: right; font-family: var(--ziti-shuzi); font-variant-numeric: tabular-nums; color: var(--zi-zhengwen); }
.ty-juzhen-yue.is-chaoe { color: var(--tone-danger); font-weight: 600; background: var(--tone-danger-di) !important; }
.ty-juzhen-yue.is-qing { color: var(--tone-success); }
.ty-juzhen-heji td, .ty-juzhen-heji th { background: var(--di-biaotou); font-weight: 600; color: var(--zi-biaoti); }
.ty-juzhen-lan { display: flex; align-items: center; gap: 16px; padding: 12px 16px; border-radius: 10px; margin-top: 12px; background: var(--zhu-qian); color: var(--zhu-shen); font-size: 13px; flex-wrap: wrap; }
.ty-juzhen-lan.is-chaoe { background: var(--tone-danger-di); color: var(--tone-danger); }
.ty-juzhen-lan-shu { font-family: var(--ziti-shuzi); font-weight: 700; font-size: 15px; }
/* =========================
金额矩阵结束
========================= */

/* =========================
权限树开始
========================= */
.ty-quanxianshu { font-size: 14px; }
.ty-quanxianshu-jiedian { display: flex; flex-direction: column; }
.ty-quanxianshu-hang { display: flex; align-items: center; gap: 6px; min-height: 34px; padding: 0 8px; border-radius: 6px; }
.ty-quanxianshu-hang:hover { background: var(--di-biaotou); }
.ty-quanxianshu-zhedie { width: 20px; height: 20px; border: 0; background: transparent; color: var(--zi-fuzhu); font-size: 11px; padding: 0; transition: transform var(--donghua); }
.ty-quanxianshu-zhedie.is-zhanwei { visibility: hidden; }
.ty-quanxianshu-jiedian.is-shouqi > .ty-quanxianshu-hang .ty-quanxianshu-zhedie { transform: rotate(-90deg); }
.ty-quanxianshu-zi { padding-left: 26px; }
.ty-quanxianshu-jiedian.is-shouqi > .ty-quanxianshu-zi { display: none; }
.ty-quanxianshu-daima { font-size: 12px; color: var(--zi-fuzhu); font-family: var(--ziti-shuzi); margin-left: auto; }
.ty-quanxianshu-biaoji { font-size: 12px; padding: 0 6px; border-radius: 4px; line-height: 18px; }
.ty-quanxianshu-biaoji--zeng { background: var(--tone-success-di); color: var(--tone-success); }
.ty-quanxianshu-biaoji--jian { background: var(--tone-danger-di); color: var(--tone-danger); }
.ty-quanxianshu-chayi { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.ty-quanxianshu-chayi-lan { border-radius: 8px; padding: 12px; background: var(--di-biaotou); max-height: 320px; overflow-y: auto; }
.ty-quanxianshu-chayi-lan h4 { font-size: 13px; margin-bottom: 8px; }
.ty-quanxianshu-chayi-lan--zeng h4 { color: var(--tone-success); }
.ty-quanxianshu-chayi-lan--jian h4 { color: var(--tone-danger); }
.ty-quanxianshu-chayi-lan li { font-size: 13px; line-height: 22px; }
/* =========================
权限树结束
========================= */

/* =========================
导入向导开始
========================= */
.ty-daoru { display: flex; flex-direction: column; gap: 20px; }
.ty-daoru-buzhou { padding: 4px 0; }
.ty-daoru-shangchuan { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 36px 20px; border: 1.5px dashed var(--xian); border-radius: 10px; background: var(--di-biaotou); text-align: center; cursor: pointer; transition: border-color var(--donghua), background var(--donghua); }
.ty-daoru-shangchuan:hover, .ty-daoru-shangchuan.is-tuoru { border-color: var(--zhu); background: var(--zhu-qian); }
.ty-daoru-shangchuan i { font-size: 32px; color: var(--zhu); --fa-secondary-opacity: .4; }
.ty-daoru-zhaiyao { display: flex; gap: 12px; flex-wrap: wrap; }
.ty-daoru-zhaiyao-xiang { flex: 1; min-width: 120px; padding: 12px 16px; border-radius: 8px; background: var(--di-biaotou); }
.ty-daoru-zhaiyao-xiang b { display: block; font-size: 20px; line-height: 28px; font-family: var(--ziti-shuzi); color: var(--zi-biaoti); }
.ty-daoru-zhaiyao-xiang[data-tone="danger"] b { color: var(--tone-danger); }
.ty-daoru-zhaiyao-xiang[data-tone="pending"] b { color: var(--tone-pending); }
.ty-daoru-zhaiyao-xiang[data-tone="success"] b { color: var(--tone-success); }
.ty-daoru-biao { max-height: 360px; overflow: auto; border: 1px solid var(--xian); border-radius: 8px; }
.ty-daoru-biao tr.is-cuowu td { background: var(--tone-danger-di); }
.ty-daoru-biao tr.is-chongfu td { background: var(--tone-pending-di); }
.ty-daoru-jiao { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.ty-daoru-zhushi { font-size: 12px; color: var(--zi-fuzhu); }
/* =========================
导入向导结束
========================= */

/* =========================
上传开始
========================= */
.ty-shangchuan { display: flex; flex-direction: column; gap: 8px; }
.ty-shangchuan-anniu { display: flex; align-items: center; justify-content: center; gap: 8px; height: 40px; border: 1px dashed var(--zi-jinyong); border-radius: 8px; background: #fff; color: var(--zi-zhengwen); font-size: 14px; width: 100%; transition: border-color var(--donghua), color var(--donghua), background var(--donghua); }
.ty-shangchuan-anniu:hover, .ty-shangchuan.is-tuoru .ty-shangchuan-anniu { border-color: var(--zhu); color: var(--zhu); background: var(--zhu-qian); }
.ty-shangchuan-anniu[disabled] { border-color: var(--xian); color: var(--zi-jinyong); background: var(--di-biaotou); cursor: not-allowed; }
.ty-shangchuan.is-cuowu .ty-shangchuan-anniu { border-color: var(--tone-danger); color: var(--tone-danger); background: #fff; }
.ty-shangchuan-tishi { font-size: 12px; color: var(--zi-fuzhu); }
.ty-shangchuan-liebiao { display: flex; flex-direction: column; gap: 6px; }
.ty-shangchuan-wenjian { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 8px; background: var(--di-biaotou); font-size: 13px; position: relative; overflow: hidden; }
.ty-shangchuan-yulan { width: 40px; height: 40px; border-radius: 6px; object-fit: cover; background: #fff; flex-shrink: 0; }
.ty-shangchuan-tubiao { width: 40px; height: 40px; border-radius: 6px; background: #fff; color: var(--zhu); display: flex; align-items: center; justify-content: center; font-size: 18px; flex-shrink: 0; }
.ty-shangchuan-xinxi { flex: 1; min-width: 0; }
.ty-shangchuan-ming { color: var(--zi-biaoti); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ty-shangchuan-fu { font-size: 12px; color: var(--zi-fuzhu); }
.ty-shangchuan-wenjian.is-shibai { background: var(--tone-danger-di); }
.ty-shangchuan-wenjian.is-shibai .ty-shangchuan-fu { color: var(--tone-danger); }
.ty-shangchuan-jindu { position: absolute; left: 0; bottom: 0; height: 2px; background: var(--zhu); transition: width 200ms ease; }
.ty-shangchuan-caozuo { display: flex; gap: 8px; }
/* =========================
上传结束
========================= */

/* =========================
图表容器开始
========================= */
.ty-tubiao { width: 100%; height: 280px; }
.ty-tubiao--xiao { height: 220px; }
.ty-tubiao-tuli { display: flex; flex-direction: column; gap: 8px; font-size: 13px; }
.ty-tubiao-tuli-xiang { display: flex; align-items: center; gap: 8px; }
.ty-tubiao-tuli-dian { width: 8px; height: 8px; border-radius: 50%; }
/* =========================
图表容器结束
========================= */

/* =========================
看板与列表小件开始
========================= */
.ty-liebiao-xiao { display: flex; flex-direction: column; }
.ty-liebiao-xiao-xiang { display: flex; align-items: center; gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--xian-qian); font-size: 13px; }
.ty-liebiao-xiao-xiang:last-child { border-bottom: 0; }
.ty-liebiao-xiao-nei { flex: 1; min-width: 0; }
.ty-liebiao-xiao-ming { color: var(--zi-biaoti); font-size: 14px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.ty-liebiao-xiao-fu { color: var(--zi-fuzhu); font-size: 12px; margin-top: 2px; }
/* =========================
看板与列表小件结束
========================= */

/* =========================
打印触发开始
========================= */
.ty-dayin-kuang { position: fixed; width: 0; height: 0; border: 0; right: 0; bottom: 0; visibility: hidden; }
/* =========================
打印触发结束
========================= */

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 1ms !important; transition-duration: 1ms !important; }
}

/* 富文本只读展示（任务 5；商品详情，任务 6/22 复用）：内容为服务端 Purifier 过滤后的 HTML */
.ty-fuwenben { font-size: 14px; line-height: 1.75; color: var(--zi-zhengwen); word-break: break-word; overflow-x: auto; }
.ty-fuwenben img, .ty-fuwenben video { max-width: 100%; height: auto; border-radius: 6px; }
.ty-fuwenben table { border-collapse: collapse; max-width: 100%; }
.ty-fuwenben td, .ty-fuwenben th { border: 1px solid var(--xian); padding: 6px 10px; }
.ty-fuwenben p { margin: 0 0 10px; }

/* =========================
悬浮说明开始（任意元素加 data-tip="说明文字"，鼠标移上去或键盘聚焦时在上方显示）
========================= */
[data-tip] { position: relative; }
[data-tip]::after { content: attr(data-tip); position: absolute; left: 0; bottom: calc(100% + 8px); z-index: 50; width: max-content; max-width: 280px; padding: 8px 10px; border-radius: 6px; background: #1D2129; color: #fff; font-size: 12px; font-weight: 400; line-height: 18px; letter-spacing: 0; text-align: left; white-space: normal; box-shadow: 0 6px 16px rgba(0, 0, 0, .18); opacity: 0; visibility: hidden; pointer-events: none; transition: opacity .12s ease; }
[data-tip]::before { content: ""; position: absolute; left: 14px; bottom: calc(100% + 3px); z-index: 50; border: 5px solid transparent; border-top-color: #1D2129; opacity: 0; visibility: hidden; pointer-events: none; transition: opacity .12s ease; }
[data-tip]:hover::after, [data-tip]:hover::before, [data-tip]:focus-visible::after, [data-tip]:focus-visible::before { opacity: 1; visibility: visible; }
/* =========================
悬浮说明结束
========================= */
