新增功能

This commit is contained in:
Your Name
2026-08-19 17:35:59 +08:00
parent f8c78739e7
commit 05050ff6f3
188 changed files with 18838 additions and 5337 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,34 @@
License Notice
Copyright 2021 Huawei Device Co., Ltd.
HarmonyOS Sans Fonts Software is licensed under HarmonyOS Sans Fonts License Agreement.
--------------------------------------------------------------------------------
HarmonyOS Sans Fonts License Agreement
THIS HARMONYOS SANS FONTS LICENSE AGREEMENT ("AGREEMENT") IS A LEGAL AGREEMENT BETWEEN YOU (EITHER A SINGLE INDIVIDUAL, OR SINGLE LEGAL ENTITY) AND HUAWEI DEVICE CO., LTD.( "LICENSOR")FOR THE USE OF THE HARMONYOS SANS FONTS ACCOMPANYING THIS AGREEMENT.BY DOWNLOADING,COPYING OR OTHERWISE USING HARMONYOS SANS FONTS YOU INDICATE THAT YOU AGREE TO BE BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF YOU DO NOT AGREE TO THE TERMS OF THIS AGREEMENT, YOU MAY NOT DOWNLOAD, COPY OR OTHERWISE USE THE HARMONYOS SANS FONTS, AND YOU SHALL PROMPTLY DESTROY AND DELETE ALL THE HARMONYOS SANS FONTS.
1.Definition
"HarmonyOS Sans Fonts" shall mean the collection of fonts software components provided by Licensor under this Agreement and clearly marked as "HarmonyOS¬ Sans".
"YOU" shall mean an individual or legal entity exercising permissions granted by this Agreement.
2.GRANT OF LICENSE
Subject to the terms and conditions of this Agreement, Licensor hereby grant YOU a non-transferable, non-exclusive, royalty-free, revocable, worldwide copyright license to use,copy, merge, embed, bundle, redistribute and/or sell unmodified copies of HarmonyOS Sans Fonts with any software except for fonts softwaresubject to the following conditions:
1)YOU shall make a prominent notice in the software to state that HarmonyOS Sans Fonts are used.
2)YOU may not make any modifications to HarmonyOS Sans Fonts or any of their individual components.
3)Neither HarmonyOS Sans Fonts nor any of their individual components may be redistributed or sold in a stand-alone base. This limitation does not apply to any work created by using HarmonyOS Sans Fonts. You can freely distribute or sell your work, such as materials, logos, application software etc. created by using HarmonyOS Sans Fonts.
4)YOU shall retain the copyright notice and this Agreement in any copies of HarmonyOS Sans Fonts.
3.Termination
This Agreement will be automatically terminated if YOU breach any of this Agreement.
4.NO WARRANTY
YOU AGREE THAT THE HARMONYOS SANS FONTS ARE PROVIDED BY LICENSOR ON AN "AS IS" BASIS. LICENSOR MAKES NO WARRANTY, EXPRESSED OR IMPLIED OR STATUTORY, WITH RESPECT TO ANY OF THE HARMONYOS SANS FONTS, INCLUDING WITHOUT LIMITATION, ANY IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.
5.NO LIABILITY
IN NO EVENT SHALL LICENSOR BE LIABLE FOR ANY DIRECT OR INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE OF OR INABILITY TO USE HARMONYOS SANS FONTS, WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHER LEGAL THEORY, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
YOU EXPRESSLY ASSUME ALL LIABILITIES AND RISKS FOR USE OF HARMONYOS SANS FONTS. SHOULD THE HARMONYOS SANS FONTS PROVE DEFECTIVE, YOU ASSUME THE ENTIRE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+92
View File
@@ -0,0 +1,92 @@
Copyright (c) 2016 The Inter Project Authors (https://github.com/rsms/inter)
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION AND CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.
+12
View File
@@ -0,0 +1,12 @@
from pathlib import Path
p = Path(__file__).resolve().parent / "zhenyang-ai-console.html"
text = p.read_text(encoding="utf-8")
start = text.index(" <script>")
end = text.index("</script>", start) + len("</script>")
new = (
' <script src="qrc:///qtwebchannel/qwebchannel.js"></script>\n'
' <script src="console-app.js"></script>'
)
p.write_text(text[:start] + new + text[end:], encoding="utf-8")
print("patched html", p.stat().st_size)
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,243 @@
<!doctype html>
<html lang="zh-CN" class="embedded">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>甄养堂 · 企业微信 AI 自动回复 v2.0</title>
<script>if(/\bQt/i.test(navigator.userAgent))document.documentElement.classList.add("embedded");</script>
<style>
:root{
--navy:#102554;--ink:#1d315f;--body:#3f527d;--muted:#7b89ab;
--blue:#2f6fff;--blue2:#5a65ff;--violet:#8a6bff;--cyan:#34c8f3;
--green:#13b77a;--orange:#ff981d;--red:#ff5358;
--line:rgba(110,137,201,.17);--line2:rgba(93,126,205,.11);
--glass:rgba(255,255,255,.72);--glass2:rgba(255,255,255,.88);
--shadow:0 16px 42px rgba(78,99,162,.09),inset 0 1px 0 rgba(255,255,255,.96);
--font:"PingFang SC","HarmonyOS Sans SC","MiSans VF","MiSans","Microsoft YaHei UI","Microsoft YaHei",system-ui,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;width:100%;height:100%;overflow:hidden}
body{font-family:var(--font);color:var(--body);font-size:15px;-webkit-font-smoothing:antialiased;text-rendering:geometricPrecision;background:#f4f8ff}
button,input,textarea,select{font:inherit;color:inherit}
button{border:0;outline:none;-webkit-tap-highlight-color:transparent}
.sprite{position:absolute;width:0;height:0;overflow:hidden}
.ico{display:inline-block;width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle;flex:0 0 auto;pointer-events:none}
#stage{position:absolute;left:50%;top:50%;width:1630px;height:965px;transform:translate(-50%,-50%) scale(var(--scale,1));transform-origin:center;border:1px solid rgba(112,140,203,.18);overflow:hidden;background:
radial-gradient(circle at 72% 9%,rgba(126,214,255,.18),transparent 29%),
radial-gradient(circle at 96% 77%,rgba(145,115,255,.17),transparent 30%),
radial-gradient(circle at 23% 77%,rgba(93,236,216,.09),transparent 25%),
linear-gradient(134deg,#fcfdff 0%,#f5f9ff 49%,#f7f5ff 100%)}
.titlebar{height:45px;padding:0 16px;display:flex;align-items:center;gap:11px;border-bottom:1px solid rgba(98,126,193,.14);background:rgba(255,255,255,.64);backdrop-filter:blur(18px);color:#1c2a4b}
.title-logo,.brand-logo{display:grid;place-items:center;color:#fff;font-weight:700;background:linear-gradient(145deg,#24c4ff,#3569ff 52%,#9068ff);box-shadow:0 8px 20px rgba(64,88,255,.28)}
.title-logo{width:24px;height:24px;border-radius:6px;font-size:15px}
.titlebar strong{font-size:14px;letter-spacing:.02em}
.window-actions{margin-left:auto;display:flex;gap:31px;align-items:center;color:#1b263d;font:17px/1 Arial,sans-serif}
.window-actions span:nth-child(2){font-size:18px}
.workspace{height:920px;display:grid;grid-template-columns:112px minmax(0,1fr);gap:58px;padding:3px 36px 16px 24px}
.rail{height:902px;border:1px solid rgba(111,137,205,.16);border-radius:37px;background:rgba(255,255,255,.68);box-shadow:0 20px 48px rgba(76,97,162,.10),inset 0 1px 0 #fff;backdrop-filter:blur(24px);padding:30px 10px 17px;display:flex;flex-direction:column;align-items:center;position:relative;z-index:5;overflow:visible}
.brand-logo{width:52px;height:52px;border-radius:14px;font-size:27px;margin-bottom:28px;box-shadow:0 13px 28px rgba(67,80,255,.33)}
.nav{display:flex;flex-direction:column;align-items:center;gap:7px;width:100%}
.nav-btn{position:relative;width:88px;height:71px;border-radius:24px;background:transparent;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:#40557e;transition:.2s ease;z-index:1;outline:none}
.nav-icon{width:51px;height:51px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(145deg,rgba(255,255,255,.92),rgba(228,235,250,.78));box-shadow:0 8px 18px rgba(88,106,166,.08),inset 0 1px 0 #fff;color:#213761;transition:.2s ease;pointer-events:none}
.nav-icon .ico{width:24px;height:24px;stroke-width:1.9}
.nav-btn>span{font-size:12px;font-weight:560;white-space:nowrap;line-height:1;pointer-events:none}
.nav-btn:hover .nav-icon{color:var(--blue);transform:translateY(-1px)}
.nav-btn:focus,.nav-btn:focus-visible,.nav-btn:active{outline:none}
.nav-btn.active{width:127px;height:54px;margin:6px 0 8px;flex-direction:row;justify-content:flex-start;gap:7px;padding:2px 13px 2px 7px;color:#2259ee;background:linear-gradient(100deg,rgba(239,245,255,.95),rgba(251,248,255,.94));border:1px solid rgba(101,126,231,.13);box-shadow:0 12px 24px rgba(87,102,227,.15);z-index:3}
.nav-btn.active .nav-icon{width:50px;height:50px;flex:0 0 50px;color:#fff;background:radial-gradient(circle at 38% 27%,#6ae0ff 0 5%,#3c7dff 35%,#5d63ff 61%,#9669ff 82%);box-shadow:0 0 0 7px rgba(75,107,255,.08),0 8px 19px rgba(79,92,255,.34)}
.nav-btn.active>span{font-weight:650;color:#2556e9}
.listener{margin-top:auto;display:grid;place-items:center;gap:11px;color:#00a5b1;font-size:13px;font-weight:650}
.orb{width:61px;height:61px;border-radius:50%;position:relative;background:radial-gradient(circle at 38% 30%,#fff 0 5%,#8ee8ff 20%,#596aff 45%,#9a73ff 66%,rgba(62,217,228,.45) 75%);box-shadow:0 0 0 7px rgba(42,215,234,.13),0 0 28px rgba(72,106,255,.44)}
.orb:before,.orb:after{content:"";position:absolute;border-radius:50%;inset:8px;border:1px solid rgba(255,255,255,.72)}
.orb:after{inset:18px;background:radial-gradient(circle,#f8ffff 0 10%,rgba(255,255,255,.18) 65%,transparent);border:0}
.orb.paused{filter:grayscale(.7);opacity:.65;box-shadow:none}
.system-btn{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(145deg,rgba(255,255,255,.92),rgba(228,235,250,.78));box-shadow:0 7px 17px rgba(81,101,168,.08);cursor:pointer;color:#263b64;margin-top:27px}
.system-btn.active{color:#fff;background:linear-gradient(145deg,#33c9f5,#4c6aff 55%,#8b6cff);box-shadow:0 0 0 7px rgba(72,111,255,.09),0 8px 19px rgba(70,97,255,.3)}
.main{min-width:0;padding-top:24px;height:900px;overflow:hidden}
.screen{height:876px;animation:fade .23s ease both}
@keyframes fade{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
.page-head{height:88px;display:flex;align-items:flex-start;justify-content:space-between;gap:18px}
.page-head h1{margin:0;color:var(--navy);font-size:34px;line-height:1.08;font-weight:720;letter-spacing:-.035em}
.page-head p{margin:9px 0 0;font-size:16px;color:#6e7da1;font-weight:420}
.head-actions{display:flex;gap:14px;align-items:center;padding-top:4px}
.btn{height:48px;padding:0 21px;border-radius:25px;border:1px solid rgba(115,140,205,.18);background:rgba(255,255,255,.74);box-shadow:0 9px 21px rgba(73,94,157,.08),inset 0 1px 0 #fff;display:inline-flex;align-items:center;justify-content:center;gap:9px;white-space:nowrap;cursor:pointer;font-size:15px;transition:.18s ease;outline:none}
.btn:hover{transform:translateY(-1px);box-shadow:0 12px 24px rgba(72,92,160,.13),inset 0 1px 0 #fff}
.btn.small{height:39px;padding:0 16px;font-size:13px}
.btn.primary{color:#fff;border-color:transparent;background:linear-gradient(105deg,#2cc7f1,#3976ff 46%,#8a65f5);box-shadow:0 0 0 6px rgba(67,105,255,.06),0 10px 24px rgba(67,91,255,.27)}
.btn.blue{color:#1662f7}.btn.orange{color:#f38100;background:linear-gradient(135deg,#fff,#fff5e8);border-color:rgba(255,156,43,.23)}
.btn.danger{color:#f14950;background:linear-gradient(135deg,rgba(255,255,255,.92),rgba(255,239,238,.9));border-color:rgba(255,89,94,.20)}
.btn .ico{width:21px;height:21px}
.led{width:12px;height:12px;border-radius:50%;background:var(--green);box-shadow:0 0 0 4px rgba(19,183,122,.09)}
.panel{border:1px solid var(--line);background:var(--glass);border-radius:24px;box-shadow:var(--shadow);backdrop-filter:blur(22px)}
.panel-pad{padding:18px 21px}
.panel-title{height:27px;display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.panel-title h2{margin:0;color:var(--navy);font-size:18px;font-weight:700;letter-spacing:-.02em}
.panel-title small{color:var(--muted);font-size:12px}
.badge{height:28px;padding:0 12px;border-radius:15px;display:inline-flex;align-items:center;gap:6px;background:rgba(60,107,255,.075);color:#2c65f4;border:1px solid rgba(67,111,255,.08);font-size:12px;white-space:nowrap}
.badge.green{background:rgba(15,183,119,.08);color:#0ca56b}.badge.orange{background:rgba(255,151,26,.1);color:#ed8c00}.badge.red{background:rgba(255,77,85,.08);color:#ed4c52}
.wave-ribbon{height:96px;margin-bottom:20px;padding:0 25px;display:grid;grid-template-columns:1.3fr 1fr 1fr .85fr;align-items:center;position:relative;overflow:hidden}
.wave-ribbon:after{content:"";position:absolute;left:15%;right:3%;top:28px;height:48px;opacity:.38;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 700 55'%3E%3Cg fill='none' stroke-linecap='round'%3E%3Cpath d='M0 29 C45 3 83 50 128 26 S214 5 258 30 345 45 392 25 480 4 525 30 615 48 700 22' stroke='%237b83ff' stroke-width='1.1'/%3E%3Cpath d='M0 33 C54 50 90 7 145 29 S247 46 301 24 410 11 463 30 566 43 625 20 672 17 700 26' stroke='%233bcbea' stroke-width='1'/%3E%3Cpath d='M0 22 C50 12 82 42 126 27 S205 9 255 25 344 40 390 29 478 12 525 25 618 38 700 25' stroke='%23a78afa' stroke-width='.8'/%3E%3C/g%3E%3C/svg%3E") center/100% 100% no-repeat}
.metric{height:58px;position:relative;z-index:1;display:flex;align-items:center;gap:17px;padding:0 21px;border-right:1px solid rgba(110,135,197,.14)}
.metric:last-child{border:0}.metric:first-child{padding-left:0}
.metric-icon{width:54px;height:54px;border-radius:50%;display:grid;place-items:center;color:var(--blue);background:linear-gradient(145deg,rgba(236,245,255,.9),rgba(232,231,255,.68));box-shadow:0 8px 18px rgba(75,100,180,.07),inset 0 0 0 1px rgba(92,126,216,.08)}
.metric-icon .ico{width:28px;height:28px}.metric-icon.green{color:var(--green);background:rgba(228,249,241,.72)}.metric-icon.red{color:var(--red);background:rgba(255,235,238,.75)}.metric-icon.orange{color:var(--orange);background:rgba(255,243,228,.77)}
.metric-copy{display:grid;gap:1px}.metric-copy span{font-size:13px;color:#566589}.metric-copy strong{font-size:26px;line-height:1.05;color:#122653;font-weight:700}.metric-copy strong.green{color:var(--green)}.metric-copy strong.blue{color:#2f62f6}
.auto-grid{display:grid;grid-template-columns:322px 586px 462px;grid-template-rows:358px 130px;gap:14px;margin-bottom:20px}
.queue-card{grid-row:span 2}.task-card{grid-row:span 2}.journey-card{grid-column:3}.window-card{grid-column:3}
.queue-list{display:grid;gap:3px}.queue-row{height:71px;display:grid;grid-template-columns:50px minmax(0,1fr) 67px;align-items:center;gap:11px;padding:7px 11px;border-radius:21px;position:relative;cursor:pointer}
.queue-row+.queue-row{border-top:1px solid rgba(109,135,197,.10);border-radius:0}.queue-row.active{background:linear-gradient(95deg,rgba(241,246,255,.95),rgba(255,255,255,.7));border-radius:22px;box-shadow:inset 4px 0 #3776ff,0 8px 20px rgba(81,103,177,.05);border-top-color:transparent}
.avatar{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:18px;background:linear-gradient(145deg,#61b8ff,#5269ff);box-shadow:0 6px 14px rgba(72,104,220,.15)}
.avatar.green{background:linear-gradient(145deg,#80d6ba,#4bbb96)}.avatar.violet{background:linear-gradient(145deg,#a282df,#7353bd)}.avatar.cyan{background:linear-gradient(145deg,#4fd3e5,#1da9c5)}
.q-copy{min-width:0}.q-copy strong{display:block;color:#1e315c;font-size:14px;font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-bottom:4px}.q-copy span{font-size:11px;color:#7d8cac}.q-copy span i{display:inline-block;width:8px;height:8px;border-radius:50%;background:#3c79ff;margin-right:6px}.q-copy span i.gray{background:#bec7d9}.q-copy span i.orange{background:var(--orange)}
.q-meta{text-align:right;display:grid;justify-items:end;gap:6px;color:#7180a2;font-size:11px}.bubble-count{display:inline-flex;gap:5px;align-items:center}
.queue-footer{display:flex;align-items:center;justify-content:space-between;margin-top:7px;padding:5px 11px;color:#536486;font-size:13px}.round-btn{width:46px;height:46px;border-radius:50%;background:rgba(255,255,255,.67);border:1px solid rgba(111,139,205,.16);display:grid;place-items:center;cursor:pointer}
.task-head-meta{display:flex;gap:10px;align-items:center}.copy-block{border-radius:14px;background:linear-gradient(120deg,rgba(243,247,255,.91),rgba(248,248,255,.74));padding:13px 14px;margin-bottom:10px}
.subhead{font-size:13px;color:#1c2f5a;font-weight:670;margin-bottom:10px}.message-line{display:grid;grid-template-columns:72px 1fr;gap:8px;font-size:13px;line-height:1.75}.message-line time{color:#667698}.message-note{font-size:11px;color:#8b97b1;margin-top:4px}
.answer-block{border-radius:15px;background:linear-gradient(120deg,rgba(234,243,255,.92),rgba(247,243,255,.75));border:1px solid rgba(79,125,236,.11);padding:12px 14px;color:#263b67;font-size:13px;line-height:1.75;position:relative;overflow:hidden}
.answer-block:after{content:"";position:absolute;right:-28px;top:-32px;width:100px;height:100px;border-radius:50%;background:radial-gradient(circle,rgba(91,207,249,.20),rgba(135,98,255,.10),transparent 68%)}
.answer-meta{height:35px;display:flex;align-items:center;justify-content:space-between;font-size:11px;color:#7684a3}.answer-meta span{display:flex;align-items:center;gap:6px}.answer-meta b{font-size:15px;color:#2e63f4}
.task-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:10px}
.journey{position:relative;display:grid;gap:1px}.journey:before{content:"";position:absolute;left:17px;top:18px;bottom:19px;width:2px;background:linear-gradient(var(--green) 0 57%,rgba(172,184,211,.30) 57%)}
.j-step{height:45px;display:grid;grid-template-columns:36px 1fr 45px;align-items:center;gap:10px;position:relative;padding-right:8px}.j-step.active{height:48px;border-radius:17px;background:linear-gradient(90deg,rgba(70,112,255,.13),rgba(129,104,255,.09))}.j-dot{width:25px;height:25px;margin-left:5px;border-radius:50%;display:grid;place-items:center;color:#fff;background:var(--green);font-size:12px;position:relative;z-index:1;box-shadow:0 4px 10px rgba(18,177,118,.14)}
.j-step.active .j-dot{width:37px;height:37px;margin-left:-1px;background:radial-gradient(circle at 35% 28%,#7fe8ff,#4c62ff 54%,#8669ff);box-shadow:0 0 0 7px rgba(73,107,255,.09),0 0 20px rgba(70,95,255,.32);font-size:16px}.j-step.wait .j-dot{background:#e8edf6;color:#7d89a6;box-shadow:none}.j-copy strong{display:block;color:#253861;font-size:13px}.j-copy span{font-size:10px;color:#8391af}.j-step.active .j-copy strong,.j-step.active .j-copy span{color:#2b62f1}.j-time{font-size:11px;color:#7685a5;text-align:right}
.window-status{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}.window-stat{height:72px;border-radius:17px;background:rgba(255,255,255,.58);border:1px solid rgba(109,137,203,.12);display:grid;place-items:center;align-content:center;gap:3px;text-align:center}.window-stat .ico{width:21px;height:21px;color:#263c68}.window-stat strong{font-size:10px;color:#2c3d65}.window-stat span{font-size:10px;color:#0aab71;line-height:1.3}
.activity-panel{height:145px;padding:15px 20px}.activity-panel .panel-title{margin-bottom:8px}.activity-strip{display:grid;grid-template-columns:repeat(4,1fr) 168px;gap:10px}.activity-card{height:82px;border-radius:19px;background:rgba(255,255,255,.62);border:1px solid rgba(111,137,201,.13);padding:11px 14px;display:grid;grid-template-columns:33px 1fr;grid-template-rows:auto auto;column-gap:10px;position:relative}.activity-icon{grid-row:1/3;width:31px;height:31px;border-radius:50%;display:grid;place-items:center;background:rgba(32,190,137,.09);color:#10ad76}.activity-icon.blue{color:#3c72ff;background:rgba(60,114,255,.09)}.activity-icon.orange{color:var(--orange);background:rgba(255,152,29,.10)}.activity-card time{font-size:11px;color:#7382a3}.activity-card strong{font-size:13px;color:#263960}.activity-card p{grid-column:2;margin:0;font-size:11px;color:#7281a0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.activity-state{position:absolute;right:12px;top:10px;font-size:10px;color:var(--green)}
.activity-more{height:48px;align-self:center}
.tabs{height:58px;width:max-content;padding:5px;display:flex;align-items:center;gap:5px;border-radius:30px;background:rgba(255,255,255,.56);border:1px solid var(--line);box-shadow:var(--shadow);margin:-3px 0 18px}.tab{height:46px;padding:0 39px;border-radius:24px;background:transparent;cursor:pointer;color:#354871}.tab.active{background:linear-gradient(105deg,rgba(231,241,255,.95),rgba(239,235,255,.95));color:#225ff1;box-shadow:0 7px 17px rgba(80,101,180,.08)}
.filter-row{height:64px;padding:9px 14px;margin-bottom:18px;display:flex;align-items:center;gap:13px}.search{height:44px;width:295px;border-radius:23px;background:rgba(255,255,255,.56);border:1px solid rgba(112,139,203,.14);display:flex;align-items:center;gap:9px;padding:0 15px}.search input{border:0;outline:0;background:transparent;width:100%;font-size:13px}.filter-pill{height:44px;padding:0 26px;border-radius:23px;background:rgba(255,255,255,.57);border:1px solid rgba(110,138,201,.14);cursor:pointer}.filter-pill.active{color:#2863f3;background:linear-gradient(100deg,rgba(234,242,255,.93),rgba(242,239,255,.92));border-color:rgba(71,110,241,.14)}
.soft{border-radius:18px;background:rgba(255,255,255,.56);border:1px solid rgba(109,136,200,.13)}
.stack{display:grid;gap:12px}.row{display:flex;align-items:center;justify-content:space-between;gap:12px}.toolbar{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.queue-view-grid{display:grid;grid-template-columns:350px 714px 301px;gap:15px;height:506px;margin-bottom:18px}.queue-view-grid>.panel{height:506px}.queue-view-grid .queue-row{height:71px}.queue-filters{display:flex;gap:9px;margin-bottom:10px}.queue-filters .filter-pill{height:31px;padding:0 17px;font-size:12px}.detail-stats{display:grid;grid-template-columns:1.15fr 1fr 1fr .8fr;gap:12px;margin-bottom:14px}.detail-stat{height:64px;padding:10px 14px;border-radius:18px;background:rgba(255,255,255,.57);border:1px solid rgba(110,137,201,.13);display:grid;align-content:center;gap:4px}.detail-stat span{font-size:11px;color:#7080a2}.detail-stat b{font-size:14px;color:#21355f}.process-title{font-size:14px;color:#215fe9;font-weight:700;display:flex;gap:10px;align-items:center;margin:13px 0}.process-line{display:grid;grid-template-columns:repeat(6,1fr);position:relative;padding-top:6px}.process-line:before{content:"";position:absolute;top:22px;left:7%;right:7%;height:3px;background:linear-gradient(90deg,#26c188 0 55%,#8c72ff 72%,#e6ebf5 72%)}.process-step{text-align:center;position:relative;z-index:1}.process-dot{width:35px;height:35px;border-radius:50%;display:grid;place-items:center;margin:auto;background:#fff;border:1px solid rgba(102,132,206,.17);color:#7382a2}.process-step.done .process-dot{color:#fff;background:var(--green);box-shadow:0 0 0 7px rgba(17,181,119,.07)}.process-step.active .process-dot{width:45px;height:45px;margin-top:-5px;color:#fff;background:radial-gradient(circle at 35% 30%,#6be5ff,#4d61ff 56%,#8f6bff);box-shadow:0 0 0 8px rgba(74,105,255,.08),0 0 19px rgba(75,93,255,.31)}.process-step strong{display:block;font-size:12px;color:#253963;margin-top:9px}.process-step span{display:block;font-size:10px;color:#8190ad;margin-top:3px}.process-step.active strong,.process-step.active span{color:#2861f1}.side-stat{height:90px;padding:17px;border-radius:21px;background:rgba(255,255,255,.58);border:1px solid rgba(111,138,204,.13);display:flex;align-items:center;gap:13px}.side-stat .metric-icon{width:45px;height:45px}.side-stat span{font-size:12px;color:#6d7ca0}.side-stat b{display:block;font-size:15px;color:#243760;margin-top:3px}
.archive-grid{display:grid;grid-template-columns:333px 605px 437px;gap:14px;height:521px;margin-bottom:14px}.archive-grid>.panel{height:521px}.conversation-list .queue-row{height:70px}.chat{display:grid;gap:9px;padding:0 5px}.chat-line{display:flex;align-items:flex-end;gap:10px}.chat-line.ai{justify-content:flex-end}.mini-avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:rgba(108,127,178,.11);color:#66769b}.chat-line.ai .mini-avatar{order:2;color:#2e67f3;background:rgba(55,109,255,.10)}.chat-bubble{max-width:78%;padding:9px 15px;border-radius:16px;background:rgba(255,255,255,.65);border:1px solid rgba(108,136,200,.13);font-size:12px;color:#33466f}.chat-line.ai .chat-bubble{background:linear-gradient(110deg,rgba(239,245,255,.9),rgba(243,241,255,.86))}.chat-bubble time{display:block;font-size:10px;color:#8491ae;margin-bottom:3px}.memory-card{height:286px}.settle-card{height:221px}.tag{height:38px;padding:0 18px;border-radius:19px;display:inline-flex;align-items:center;background:rgba(19,184,123,.08);color:#12a66e;border:1px solid rgba(18,177,117,.09);font-size:13px}.tag.violet{background:rgba(133,105,255,.09);color:#7857e9}.tag.blue{background:rgba(48,108,255,.08);color:#2e64ec}.memory-copy{margin-top:14px;padding:18px;border-radius:19px;background:rgba(255,255,255,.58);border:1px solid rgba(110,138,200,.13);font-size:13px;line-height:1.8;color:#354972}.settle-row{height:56px;padding:8px 12px;display:grid;grid-template-columns:42px 1fr auto;gap:10px;align-items:center;border-radius:18px;background:rgba(255,255,255,.56);border:1px solid rgba(109,137,202,.12)}.settle-icon{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;color:#fff;background:linear-gradient(145deg,#5bd3b1,#24ad7f)}.settle-row strong{font-size:13px;color:#2b3e67}.settle-row small{display:block;color:#8190ac;font-size:10px;margin-top:2px}.archive-bottom{height:153px}
.ai-top{display:grid;grid-template-columns:856px 536px;gap:14px;height:330px;margin-bottom:14px}.ai-bottom{display:grid;grid-template-columns:428px 428px 536px;gap:14px;height:244px;margin-bottom:14px}.ai-profile{display:grid;grid-template-columns:125px 390px 1fr;gap:18px;align-items:center}.ai-ball{width:108px;height:108px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:33px;font-weight:700;background:radial-gradient(circle at 36% 29%,#fff 0 4%,#82e2ff 18%,#4f67ff 48%,#946fff 67%,rgba(72,214,224,.34) 76%);box-shadow:0 0 0 11px rgba(79,119,255,.06),0 17px 32px rgba(82,95,212,.18)}.field{display:grid;gap:7px}.field label{font-size:13px;color:#34476e}.input,.select,.textarea{width:100%;border:1px solid rgba(108,136,201,.16);background:rgba(255,255,255,.63);border-radius:16px;outline:0;padding:10px 14px}.textarea{height:108px;resize:none;font-size:12px;line-height:1.7}.preview-box{height:205px;padding:18px;border-radius:22px;background:linear-gradient(140deg,rgba(255,255,255,.60),rgba(241,239,255,.68));border:1px solid rgba(108,136,201,.14)}.preview-box p{font-size:13px;line-height:1.75;color:#2f416c}.select.model{height:58px;border-radius:19px;color:#334fe9;font-size:18px;font-weight:650;background:linear-gradient(110deg,rgba(248,249,255,.92),rgba(241,238,255,.88));border-color:rgba(85,99,240,.19)}.form-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}.form-grid.two{grid-template-columns:1fr 1fr}.range{accent-color:#416fff;width:100%}.knowledge{display:grid;grid-template-columns:180px 1fr;gap:15px;align-items:center}.donut{width:148px;height:148px;border-radius:50%;background:conic-gradient(#5b7bff 0 34%,#55c9ee 34% 61%,#73dfcd 61% 78%,#e7eef8 78%);display:grid;place-items:center;position:relative;box-shadow:0 10px 26px rgba(73,110,196,.08)}.donut:before{content:"";position:absolute;inset:17px;border-radius:50%;background:rgba(255,255,255,.91)}.donut strong{position:relative;font-size:28px;color:#18305f;text-align:center}.donut small{display:block;font-size:10px;color:#7081a6;font-weight:500}.tool-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.tool-card{height:145px;border-radius:20px;background:rgba(255,255,255,.57);border:1px solid rgba(110,138,202,.13);display:grid;place-items:center;align-content:center;gap:9px}.tool-icon{width:53px;height:53px;border-radius:50%;display:grid;place-items:center;color:#fff;background:linear-gradient(145deg,#5ed2b2,#20aa7d);box-shadow:0 7px 16px rgba(29,177,126,.15)}.tool-card:nth-child(2) .tool-icon{background:linear-gradient(145deg,#68bdff,#4169ff)}.tool-card:nth-child(3) .tool-icon{background:linear-gradient(145deg,#ac83ff,#7657e6)}.switch{width:44px;height:25px;border-radius:13px;background:#dfe6f2;position:relative;cursor:pointer;transition:.2s}.switch:after{content:"";position:absolute;width:19px;height:19px;top:3px;left:3px;border-radius:50%;background:#fff;box-shadow:0 2px 7px rgba(43,57,99,.19);transition:.2s}.switch.on{background:linear-gradient(90deg,#27c79a,#11ad73)}.switch.on:after{transform:translateX(19px)}.setting-line{height:51px;padding:0 15px;border-radius:18px;background:rgba(255,255,255,.57);border:1px solid rgba(109,137,201,.12);display:flex;align-items:center;justify-content:space-between;gap:10px}.config-strip{height:110px}
.automation-top{display:grid;grid-template-columns:880px 499px;gap:14px;height:278px;margin-bottom:14px}.automation-mid{display:grid;grid-template-columns:350px 361px 361px 293px;gap:14px;height:246px;margin-bottom:14px}.auto-flow{height:145px;display:grid;grid-template-columns:repeat(5,1fr);align-items:center;position:relative}.auto-flow:before{content:"";position:absolute;left:7%;right:7%;top:53px;height:3px;background:linear-gradient(90deg,#37b9ff,#776cff,#a06cf1);opacity:.42}.flow-step{position:relative;z-index:1;text-align:center}.flow-circle{width:58px;height:58px;border-radius:50%;margin:0 auto 10px;display:grid;place-items:center;color:#2d65f2;background:rgba(255,255,255,.87);border:1px solid rgba(91,126,214,.17);box-shadow:0 10px 21px rgba(72,94,163,.08)}.flow-step strong{display:block;color:#263960;font-size:14px}.flow-pill{height:44px;border:1px dashed rgba(80,127,229,.25);border-radius:22px;margin-top:10px;display:flex;align-items:center;justify-content:center;gap:10px;color:#52658e;font-size:12px}.wechat-graphic{display:grid;grid-template-columns:166px 1fr;gap:16px;align-items:center}.fake-window{height:152px;border-radius:18px;background:linear-gradient(#83aefa 0 25px,rgba(255,255,255,.78) 25px);border:1px solid rgba(100,138,215,.17);position:relative;overflow:hidden}.fake-window:before{content:"";position:absolute;left:14px;top:41px;width:27px;height:91px;border-radius:8px;background:#5792f2;box-shadow:41px 0 0 #eef2fb,81px 0 0 #f2f4fb}.fake-check{position:absolute;right:9px;bottom:9px;width:43px;height:43px;border-radius:50%;display:grid;place-items:center;color:#fff;background:var(--green)}.coexist{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center}.mouse-orb{height:100px;display:flex;align-items:flex-end;justify-content:center;gap:38px}.mouse-pointer{width:67px;height:67px;border-radius:50%;display:grid;place-items:center;font-size:35px;background:radial-gradient(circle at 35% 30%,#fff,#c8d4ff 38%,#7d73ff 70%);box-shadow:0 0 0 8px rgba(82,116,255,.07),0 0 23px rgba(73,99,255,.26)}.risk-tags{display:grid;gap:9px}.risk-tag{height:42px;padding:0 13px;border-radius:16px;background:rgba(247,244,255,.76);border:1px solid rgba(129,104,239,.13);display:flex;align-items:center;gap:9px;color:#7351e4}.check-strip{height:130px}
.logs-grid{display:grid;grid-template-columns:764px 616px;grid-template-rows:237px 141px;gap:14px;margin-bottom:14px}.event-flow{grid-row:span 2}.event-list{display:grid;gap:0}.event-row{height:59px;display:grid;grid-template-columns:34px 89px 52px 1fr 62px;gap:9px;align-items:center;border-bottom:1px solid rgba(110,136,199,.11)}.event-node{width:25px;height:25px;border-radius:50%;display:grid;place-items:center;background:#fff;color:var(--green);border:1px solid rgba(93,137,210,.14);box-shadow:0 5px 12px rgba(68,95,162,.07)}.event-row time{color:#68789d}.event-kind{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;color:var(--green);background:rgba(19,182,119,.09)}.event-copy strong{display:block;color:#22365f;font-size:14px}.event-copy span{font-size:11px;color:#7785a4}.health-rings{display:grid;grid-template-columns:repeat(3,1fr);text-align:center}.health-ring{width:81px;height:81px;border-radius:50%;margin:auto;display:grid;place-items:center;color:var(--green);background:conic-gradient(#4bc7aa 0 84%,#e6eef7 84%);position:relative}.health-ring:before{content:"";position:absolute;inset:9px;border-radius:50%;background:rgba(255,255,255,.94)}.health-ring .ico{position:relative}.health-rings strong{display:block;font-size:12px;color:#263a63;margin-top:7px}.health-rings span{font-size:11px;color:var(--green)}.chain{display:grid;grid-template-columns:repeat(4,1fr);align-items:center;position:relative}.chain:before{content:"";position:absolute;left:11%;right:11%;top:29px;height:3px;background:linear-gradient(90deg,#45d5c2,#6480ff,#a36ff5);opacity:.35}.chain-step{text-align:center;position:relative;z-index:1}.chain-step .flow-circle{width:45px;height:45px;margin-bottom:4px}.chain-step strong{display:block;font-size:11px;color:#2d416a}.chain-step span{font-size:10px;color:#7484a6}.log-mid{display:grid;grid-template-columns:676px 704px;gap:14px;height:136px;margin-bottom:14px}.exception-grid{display:grid;grid-template-columns:repeat(3,1fr) 150px;gap:10px}.exception{height:75px;padding:12px;border-radius:19px;background:rgba(255,255,255,.58);border:1px solid rgba(110,137,201,.12);display:flex;align-items:center;gap:12px}.exception b{display:block;font-size:20px;color:#17305f}.recent-activity{height:139px}
.system-top,.system-mid{display:grid;grid-template-columns:457px 457px 464px;gap:14px;height:354px;margin-bottom:14px}.system-mid{height:244px}.system-line{height:48px;padding:0 15px;border-radius:19px;background:rgba(255,255,255,.57);border:1px solid rgba(109,137,201,.12);display:flex;align-items:center;gap:12px}.system-line>span:first-of-type{flex:1}.system-line .ico{color:#3267ed}.storage-grid{display:grid;grid-template-columns:180px 1fr;align-items:center}.storage-actions{display:flex;gap:8px;margin-top:15px}.notice-preview{height:91px;padding:12px;border-radius:18px;background:rgba(255,255,255,.58);border:1px solid rgba(108,137,201,.13);display:grid;grid-template-columns:42px 1fr auto;gap:10px;align-items:center}.maintenance{display:grid;grid-template-columns:1fr 1fr;gap:11px}.maint-card{height:91px;padding:14px;border-radius:19px;background:rgba(255,255,255,.58);border:1px solid rgba(109,137,201,.13);display:flex;align-items:center;gap:13px}.maint-card .metric-icon{width:48px;height:48px}.maint-card strong{display:block;font-size:13px;color:#263a64}.maint-card small{font-size:10px;color:#8190ac}.system-status{height:146px}
.status-cells{display:grid;grid-template-columns:repeat(4,1fr);gap:0}.status-cell{height:74px;display:grid;grid-template-columns:51px 1fr;gap:12px;align-items:center;padding:5px 25px;border-right:1px solid rgba(109,136,199,.13)}.status-cell:last-child{border:0}.status-cell .metric-icon{width:48px;height:48px;color:var(--green)}.status-cell strong{display:block;font-size:13px;color:#253962}.status-cell span{font-size:10px;color:#7988a7}
.toast{position:absolute;right:32px;bottom:26px;z-index:100;padding:13px 20px;border-radius:18px;background:rgba(30,43,79,.92);color:#fff;box-shadow:0 17px 34px rgba(30,42,79,.24);opacity:0;transform:translateY(15px);transition:.22s;pointer-events:none}.toast.show{opacity:1;transform:none}
html.embedded .titlebar{display:none}
html.embedded #stage{
left:0;top:0;
width:1630px;height:920px;
transform:scale(var(--scale,1));
transform-origin:top left;
border:none;box-shadow:none;
}
html.embedded .workspace{height:920px}
html.embedded .screen{animation:none}
/* Qt WebEngine can drop an entire composited surface while rebuilding
several viewport-sized backdrop filters at a fractional DPI scale.
Keep the exact panel geometry, translucent fill, border and shadow, but
render the embedded panels on the normal page surface so the rail and
lower content cannot disappear during navigation or window restore. */
html.embedded .panel{-webkit-backdrop-filter:none;backdrop-filter:none}
/* QWebEngine: keep the reference end states, but avoid animating nav
width/height/margins inside the blurred rail. Those layout transitions
repeatedly invalidate the rail's backdrop layer during page switches. */
html.embedded .rail{-webkit-backdrop-filter:none;backdrop-filter:none}
html.embedded .nav-btn,html.embedded .nav-icon{transition:none}
html.embedded .nav-btn:hover .nav-icon{transform:none}
html.embedded body{background:#f4f8ff;overflow:hidden}
html.embedded .empty-board{height:240px;display:grid;place-items:center;text-align:center;color:var(--muted);padding:24px}
button:focus,button:focus-visible,.nav-btn:focus,.nav-btn:focus-visible,.system-btn:focus,.btn:focus,.tab:focus,.filter-pill:focus,.icon-btn:focus,.round-btn:focus{
outline:none !important;
}
.led.off,.led.red{background:var(--red);box-shadow:0 0 0 4px rgba(255,83,88,.10)}
.flow-pill .num,.idle-num,.retain-num,.ai-num{width:54px;border:0;background:transparent;color:#2d65f0;font-weight:700;text-align:center;outline:none}
.filter-pill input[type=date]{border:0;background:transparent;color:inherit;font:inherit;width:132px}
.system-line select{border:0;background:transparent;color:#26365F;outline:0;min-width:88px}
.ai-pane[hidden]{display:none !important}
.toolbar .icon-btn{width:32px;height:32px;border:0;border-radius:10px;display:grid;place-items:center;cursor:pointer;color:#5c6d94;background:transparent;padding:0}
.toolbar .icon-btn:hover{background:rgba(80,110,210,.08);color:#2b62f1}
.select.action{cursor:pointer;text-align:left}
.automation-top .flow-pill .num{width:34px;padding:0;border:0;background:transparent;color:#2d65f0;font-weight:700;text-align:center;outline:0;appearance:textfield}
.automation-top .flow-pill.live-flow-pill{gap:5px}.automation-top .flow-pill.live-flow-pill .num{width:25px}
.automation-top .flow-pill .num::-webkit-inner-spin-button,.automation-top .flow-pill .num::-webkit-outer-spin-button,.automation-mid .idle-num::-webkit-inner-spin-button,.automation-mid .idle-num::-webkit-outer-spin-button,.automation-mid .ai-num::-webkit-inner-spin-button,.automation-mid .ai-num::-webkit-outer-spin-button{appearance:none;margin:0}
.automation-mid .idle-num{width:38px;padding:0;border:0;background:transparent;color:#2562ed;font-weight:700;text-align:center;outline:0;appearance:textfield}
.automation-mid .ai-num{width:25px;padding:0;border:0;background:transparent;color:#2d65f0;font-weight:700;text-align:center;outline:0;appearance:textfield}
.fake-check.off{background:#9aa8c5}
.health-ring.bad{color:var(--red);background:conic-gradient(#ff7b80 0 84%,#e6eef7 84%)}
.system-security-state{white-space:nowrap}.system-security-state.on{color:var(--green)}.system-security-state.off{color:var(--red)}
.system-top .retention-control{height:39px;min-width:99px;padding:0 13px;gap:4px}
.system-top .retention-control .retain-num{width:32px;padding:0;border:0;background:transparent;text-align:right;outline:0;appearance:textfield}
.system-top .retention-control .retain-num::-webkit-inner-spin-button,.system-top .retention-control .retain-num::-webkit-outer-spin-button{appearance:none;margin:0}
.maintenance .maint-card[data-action]{cursor:pointer}
</style>
</head>
<body>
<svg class="sprite" aria-hidden="true">
<symbol id="i-activity" viewBox="0 0 24 24"><path d="M3 12h4l2.2-6 4.3 12 2.1-6H21"/></symbol>
<symbol id="i-bot" viewBox="0 0 24 24"><rect x="4" y="7" width="16" height="13" rx="4"/><path d="M12 3v4M8 12h.01M16 12h.01M8 16h8"/></symbol>
<symbol id="i-list" viewBox="0 0 24 24"><path d="M9 6h11M9 12h11M9 18h11M4 6h.01M4 12h.01M4 18h.01"/></symbol>
<symbol id="i-folder" viewBox="0 0 24 24"><path d="M3 7a2 2 0 0 1 2-2h5l2 2h7a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Z"/></symbol>
<symbol id="i-brain" viewBox="0 0 24 24"><path d="M9 4a3 3 0 0 0-5 2v2a3 3 0 0 0 0 5v2a3 3 0 0 0 5 3M15 4a3 3 0 0 1 5 2v2a3 3 0 0 1 0 5v2a3 3 0 0 1-5 3M9 4v16M15 4v16M9 9h3M12 15h3"/></symbol>
<symbol id="i-settings" viewBox="0 0 24 24"><circle cx="12" cy="12" r="3"/><path d="M19 14.5l1.4 1.1-2 3.4-1.7-.7a7 7 0 0 1-2.1 1.2l-.2 1.8h-4l-.2-1.8A7 7 0 0 1 8 18.3l-1.7.7-2-3.4 1.4-1.1A7 7 0 0 1 5.6 12a7 7 0 0 1 .1-2.5L4.3 8.4l2-3.4 1.7.7a7 7 0 0 1 2.1-1.2l.2-1.8h4l.2 1.8a7 7 0 0 1 2.1 1.2l1.7-.7 2 3.4-1.4 1.1A7 7 0 0 1 19 12a7 7 0 0 1 0 2.5Z"/></symbol>
<symbol id="i-log" viewBox="0 0 24 24"><path d="M6 3h12a2 2 0 0 1 2 2v16l-4-2-4 2-4-2-4 2V5a2 2 0 0 1 2-2Z"/><path d="M8 8h8M8 12h8M8 16h5"/></symbol>
<symbol id="i-check" viewBox="0 0 24 24"><circle cx="12" cy="12" r="9"/><path d="m8 12 2.5 2.5L16.5 9"/></symbol>
<symbol id="i-send" viewBox="0 0 24 24"><path d="m22 2-7 20-4-9-9-4Z"/><path d="M22 2 11 13"/></symbol>
<symbol id="i-users" viewBox="0 0 24 24"><circle cx="9" cy="8" r="4"/><path d="M2 21a7 7 0 0 1 14 0M16 5a4 4 0 0 1 0 7M18 15a6 6 0 0 1 4 6"/></symbol>
<symbol id="i-user" viewBox="0 0 24 24"><circle cx="12" cy="8" r="4"/><path d="M4 21a8 8 0 0 1 16 0"/></symbol>
<symbol id="i-message" viewBox="0 0 24 24"><path d="M21 15a4 4 0 0 1-4 4H8l-5 3V7a4 4 0 0 1 4-4h10a4 4 0 0 1 4 4Z"/><path d="M8 10h.01M12 10h.01M16 10h.01"/></symbol>
<symbol id="i-alert" viewBox="0 0 24 24"><path d="M12 3 2 21h20ZM12 9v5M12 18h.01"/></symbol>
<symbol id="i-shield" viewBox="0 0 24 24"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10Z"/><path d="m9 12 2 2 4-4"/></symbol>
<symbol id="i-search" viewBox="0 0 24 24"><circle cx="11" cy="11" r="7"/><path d="m20 20-4-4"/></symbol>
<symbol id="i-refresh" viewBox="0 0 24 24"><path d="M20 7h-6V1M4 17h6v6"/><path d="M6.5 6.5A8 8 0 0 1 20 7M4 17a8 8 0 0 0 13.5.5"/></symbol>
<symbol id="i-clock" viewBox="0 0 24 24"><circle cx="12" cy="12" r="9"/><path d="M12 7v5l3 2"/></symbol>
<symbol id="i-filter" viewBox="0 0 24 24"><path d="M4 5h16l-6 7v5l-4 2v-7Z"/></symbol>
<symbol id="i-sort" viewBox="0 0 24 24"><path d="M8 5v14m0 0-3-3m3 3 3-3M16 19V5m0 0-3 3m3-3 3 3"/></symbol>
<symbol id="i-stop" viewBox="0 0 24 24"><rect x="5" y="5" width="14" height="14" rx="2"/></symbol>
<symbol id="i-monitor" viewBox="0 0 24 24"><rect x="3" y="4" width="18" height="13" rx="2"/><path d="M8 21h8M12 17v4"/></symbol>
<symbol id="i-eye" viewBox="0 0 24 24"><path d="M2 12s3.5-6 10-6 10 6 10 6-3.5 6-10 6S2 12 2 12Z"/><circle cx="12" cy="12" r="2.5"/></symbol>
<symbol id="i-copy" viewBox="0 0 24 24"><rect x="9" y="9" width="11" height="11" rx="2"/><path d="M15 9V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h3"/></symbol>
<symbol id="i-save" viewBox="0 0 24 24"><path d="M5 3h12l2 2v16H5Z"/><path d="M8 3v6h8V3M8 21v-7h8v7"/></symbol>
<symbol id="i-download" viewBox="0 0 24 24"><path d="M12 3v12m0 0 4-4m-4 4-4-4M4 21h16"/></symbol>
<symbol id="i-power" viewBox="0 0 24 24"><path d="M12 2v10M6.3 5.7a8 8 0 1 0 11.4 0"/></symbol>
<symbol id="i-lock" viewBox="0 0 24 24"><rect x="4" y="10" width="16" height="11" rx="2"/><path d="M8 10V7a4 4 0 0 1 8 0v3"/></symbol>
<symbol id="i-cloud" viewBox="0 0 24 24"><path d="M6 19a4 4 0 0 1-.4-8A7 7 0 0 1 19 9a5 5 0 0 1-1 10Z"/></symbol>
<symbol id="i-sparkles" viewBox="0 0 24 24"><path d="m12 3 1.4 3.6L17 8l-3.6 1.4L12 13l-1.4-3.6L7 8l3.6-1.4ZM18.5 14l.8 2.2 2.2.8-2.2.8-.8 2.2-.8-2.2-2.2-.8 2.2-.8ZM5 14l.7 1.8 1.8.7-1.8.7L5 19l-.7-1.8-1.8-.7 1.8-.7Z"/></symbol>
<symbol id="i-flag" viewBox="0 0 24 24"><path d="M5 21V4m0 0c5-3 8 3 14 0v10c-6 3-9-3-14 0"/></symbol>
<symbol id="i-calendar" viewBox="0 0 24 24"><rect x="3" y="5" width="18" height="16" rx="2"/><path d="M16 3v4M8 3v4M3 10h18"/></symbol>
<symbol id="i-clipboard" viewBox="0 0 24 24"><rect x="5" y="4" width="14" height="17" rx="2"/><path d="M9 4V2h6v2M8 9h8M8 13h8M8 17h5"/></symbol>
<symbol id="i-phone" viewBox="0 0 24 24"><path d="M5 3h4l2 5-3 2a15 15 0 0 0 6 6l2-3 5 2v4a2 2 0 0 1-2 2C10 21 3 14 3 5a2 2 0 0 1 2-2Z"/></symbol>
<symbol id="i-pill" viewBox="0 0 24 24"><path d="m8 16 8-8a4 4 0 0 1 6 6l-8 8a4 4 0 0 1-6-6Z"/><path d="m12 12 4 4"/></symbol>
<symbol id="i-coins" viewBox="0 0 24 24"><ellipse cx="12" cy="6" rx="7" ry="3"/><path d="M5 6v5c0 1.7 3.1 3 7 3s7-1.3 7-3V6M5 11v5c0 1.7 3.1 3 7 3s7-1.3 7-3v-5"/></symbol>
<symbol id="i-layers" viewBox="0 0 24 24"><path d="m12 3-9 5 9 5 9-5Z"/><path d="m3 12 9 5 9-5M3 16l9 5 9-5"/></symbol>
<symbol id="i-hourglass" viewBox="0 0 24 24"><path d="M6 2h12M6 22h12M8 2v5l4 5-4 5v5M16 2v5l-4 5 4 5v5"/></symbol>
<symbol id="i-globe" viewBox="0 0 24 24"><circle cx="12" cy="12" r="9"/><path d="M3 12h18M12 3a14 14 0 0 1 0 18M12 3a14 14 0 0 0 0 18"/></symbol>
<symbol id="i-tray" viewBox="0 0 24 24"><path d="M4 4h16l1 7v9H3v-9Z"/><path d="M3 12h5l2 3h4l2-3h5"/></symbol>
<symbol id="i-wifi" viewBox="0 0 24 24"><path d="M4 9a12 12 0 0 1 16 0M7 13a8 8 0 0 1 10 0M10 17a3 3 0 0 1 4 0M12 21h.01"/></symbol>
<symbol id="i-bell" viewBox="0 0 24 24"><path d="M18 8a6 6 0 0 0-12 0c0 7-3 7-3 9h18c0-2-3-2-3-9ZM10 21h4"/></symbol>
<symbol id="i-upload" viewBox="0 0 24 24"><path d="M12 16V4m0 0-4 4m4-4 4 4M4 20h16"/></symbol>
<symbol id="i-link" viewBox="0 0 24 24"><path d="M10 13a5 5 0 0 0 7 0l3-3a5 5 0 0 0-7-7l-2 2M14 11a5 5 0 0 0-7 0l-3 3a5 5 0 0 0 7 7l2-2"/></symbol>
<symbol id="i-package" viewBox="0 0 24 24"><path d="m12 3 9 5-9 5-9-5Z"/><path d="m3 8 9 5 9-5v9l-9 5-9-5Z"/><path d="M12 13v9"/></symbol>
<symbol id="i-scan" viewBox="0 0 24 24"><path d="M4 9V4h5M15 4h5v5M20 15v5h-5M9 20H4v-5"/><path d="M8 12h8"/></symbol>
<symbol id="i-play" viewBox="0 0 24 24"><circle cx="12" cy="12" r="9"/><path d="m10 8 6 4-6 4Z"/></symbol>
<symbol id="i-chevron" viewBox="0 0 24 24"><path d="m8 10 4 4 4-4"/></symbol>
<symbol id="i-info" viewBox="0 0 24 24"><circle cx="12" cy="12" r="9"/><path d="M12 11v5M12 8h.01"/></symbol>
<symbol id="i-cursor" viewBox="0 0 24 24"><path d="m5 3 14 10-7 1-4 6Z"/></symbol>
<symbol id="i-pause" viewBox="0 0 24 24"><path d="M9 6v12M15 6v12"/></symbol>
</svg>
<div id="stage">
<header class="titlebar"><div class="title-logo"></div><strong>甄养堂 · 企业微信 AI 自动回复 v2.0</strong><div class="window-actions"><span></span><span></span><span>×</span></div></header>
<div class="workspace">
<aside class="rail">
<div class="brand-logo"></div>
<nav class="nav" aria-label="主菜单">
<button class="nav-btn active" data-view="auto"><span class="nav-icon"><svg class="ico"><use href="#i-bot"/></svg></span><span>自动回复</span></button>
<button class="nav-btn" data-view="queue"><span class="nav-icon"><svg class="ico"><use href="#i-list"/></svg></span><span>任务队列</span></button>
<button class="nav-btn" data-view="archive"><span class="nav-icon"><svg class="ico"><use href="#i-folder"/></svg></span><span>会话归档</span></button>
<button class="nav-btn" data-view="ai"><span class="nav-icon"><svg class="ico"><use href="#i-brain"/></svg></span><span>AI 设置</span></button>
<button class="nav-btn" data-view="automation"><span class="nav-icon"><svg class="ico"><use href="#i-settings"/></svg></span><span>自动化设置</span></button>
<button class="nav-btn" data-view="logs"><span class="nav-icon"><svg class="ico"><use href="#i-log"/></svg></span><span>运行日志</span></button>
</nav>
<div class="listener"><div class="orb paused" id="orb"></div><span id="orb-label">已停止</span></div>
<button class="system-btn" data-view="system" aria-label="系统设置"><svg class="ico"><use href="#i-settings"/></svg></button>
</aside>
<main class="main" id="main"></main>
</div>
<div class="toast" id="toast">操作已完成</div>
</div>
<script src="qrc:///qtwebchannel/qwebchannel.js"></script>
<script src="console-app.js?v=src1"></script>
</body>
</html>