:root { font-family: Inter, "PingFang SC", "Microsoft YaHei", sans-serif; color: #12213d; background: #eef3f9; font-size: 14px; } * { box-sizing: border-box; } body { margin: 0; } button, input, textarea, select { font: inherit; } button { cursor: pointer; border: 0; } .loading-screen { height: 100vh; display: grid; place-items: center; color: #4c6385; } .login-shell { height: 100vh; min-width: 900px; display: grid; place-items: center; position: relative; overflow: hidden; background: linear-gradient(135deg, #eef4ff 0%, #f8fbff 55%, #edf5ff 100%); } .login-decoration { position: absolute; inset: 0; overflow: hidden; } .orb { position: absolute; border-radius: 50%; filter: blur(2px); opacity: 0.55; } .orb-a { width: 420px; height: 420px; background: #c9dcff; top: -150px; right: -90px; } .orb-b { width: 360px; height: 360px; background: #dff4ff; bottom: -150px; left: -100px; } .grid-lines { position: absolute; inset: 0; opacity: 0.35; background-image: linear-gradient(#c8d7ec 1px, transparent 1px), linear-gradient(90deg, #c8d7ec 1px, transparent 1px); background-size: 50px 50px; mask-image: linear-gradient( to bottom, transparent, #000 25%, #000 75%, transparent ); } .login-card { position: relative; width: 410px; padding: 42px 44px 35px; border: 1px solid #e2eaf5; border-radius: 20px; background: rgba(255, 255, 255, 0.93); box-shadow: 0 20px 60px rgba(45, 89, 155, 0.15); } .brand-mark { width: 48px; height: 48px; border-radius: 14px; display: grid; place-items: center; color: white; background: #2864e8; box-shadow: 0 7px 16px rgba(40, 100, 232, 0.25); } .brand-title { position: absolute; top: 51px; left: 105px; color: #0e2445; font-size: 19px; font-weight: 800; } .login-card h1 { margin: 38px 0 7px; font-size: 28px; letter-spacing: 0.5px; } .login-subtitle { margin: 0 0 30px; color: #7890ad; } .login-form { display: grid; gap: 18px; } .login-form label, .config-card label { display: grid; gap: 8px; color: #435d80; font-size: 13px; } .login-form input, .config-card input, .config-card textarea, .config-card select { border: 1px solid #ccd9ea; border-radius: 8px; padding: 12px 13px; color: #173258; outline: none; background: #fff; } .login-form input:focus, .config-card input:focus, .config-card textarea:focus, .config-card select:focus { border-color: #3b73ed; box-shadow: 0 0 0 3px rgba(59, 115, 237, 0.1); } .form-error { padding: 10px 12px; border-radius: 7px; color: #c53f54; background: #fff0f2; } .primary-button, .success-button, .ghost-button { display: inline-flex; align-items: center; justify-content: center; gap: 7px; border-radius: 8px; padding: 10px 14px; font-weight: 600; } .primary-button { color: #fff; background: #2864e8; box-shadow: 0 5px 12px rgba(40, 100, 232, 0.2); } .primary-button:disabled { opacity: 0.65; cursor: wait; } .login-button { width: 100%; padding: 13px; margin-top: 4px; font-size: 15px; } .dingtalk-login-button { width: 100%; margin-top: 10px; padding: 11px; border: 1px solid #2f80ed; border-radius: 8px; background: #eaf4ff; color: #1764c0; font-weight: 700; } .dingtalk-login-button:disabled { opacity: 0.65; cursor: wait; } .login-divider { display: flex; align-items: center; gap: 10px; margin-top: 14px; color: #9aabc1; font-size: 11px; } .login-divider::before, .login-divider::after { content: ""; height: 1px; flex: 1; background: #e0e8f2; } .reference-qa-upload { display: grid; gap: 7px; margin-top: 12px; color: #466181; font-size: 12px; } .reference-qa-upload input { padding: 10px; border: 1px dashed #9db8d8; border-radius: 8px; background: #f8fbff; } .reference-qa-upload small { color: #8296ae; font-size: 11px; } .reference-qa-upload input[type="file"] { color: #466181; } .reference-qa-upload input[type="file"]::file-selector-button { margin-right: 10px; padding: 7px 11px; border: 1px solid #c7d8eb; border-radius: 6px; background: #fff; color: #1764e8; cursor: pointer; } .reference-qa-clear { width: max-content; padding: 6px 10px; border: 1px solid #f1a9b5; border-radius: 7px; background: #fff3f5; color: #cc3150; font-size: 11px; } .login-hint { margin-top: 24px; color: #9aabc1; font-size: 12px; text-align: center; } .app-shell { display: flex; height: 100vh; overflow: hidden; background: #eef3f9; } .sidebar { width: 252px; height: 100vh; flex: 0 0 252px; overflow: hidden; background: #0d172c; color: #d6e1f4; display: flex; flex-direction: column; } .side-brand { height: 106px; padding: 22px 20px; display: flex; gap: 11px; align-items: center; border-bottom: 1px solid rgba(255, 255, 255, 0.08); } .brand-icon { width: 37px; height: 37px; border-radius: 10px; background: #2864e8; color: #fff; display: grid; place-items: center; } .side-brand strong { display: block; color: #fff; font-size: 16px; } .side-brand span { display: block; margin-top: 5px; color: #8ea4c4; font-size: 11px; } .nav-group { padding: 15px 12px; } .nav-title { padding: 4px 12px 10px; color: #8295b5; font-size: 12px; } .task-title { margin-top: 19px; } .nav-item { width: 100%; height: 40px; display: flex; align-items: center; gap: 12px; padding: 0 14px; margin: 3px 0; border-radius: 8px; color: #c5d2e8; background: transparent; text-align: left; } .nav-item:hover, .nav-item.active { color: #fff; background: #2864e8; } .nav-item em { font-style: normal; font-size: 11px; margin-left: auto; opacity: 0.85; } .nav-item b { margin-left: auto; min-width: 22px; padding: 2px 6px; border-radius: 10px; color: #fff; background: #a62b58; text-align: center; font-size: 11px; } .system-status { margin-top: auto; min-height: 58px; box-sizing: border-box; padding: 14px 13px 17px; border-top: 1px solid rgba(255, 255, 255, 0.08); display: flex; align-items: center; justify-content: space-between; gap: 10px; color: #7690b6; font-size: 11px; line-height: 1; white-space: nowrap; } .status-dot { display: inline-block; width: 8px; height: 8px; flex: 0 0 8px; order: 2; border-radius: 50%; background: #16b88b; } .main-shell { min-width: 0; height: 100vh; flex: 1; display: flex; flex-direction: column; overflow: hidden; } .topbar { height: 74px; flex: 0 0 74px; background: #fff; border-bottom: 1px solid #dfe7f2; display: flex; align-items: center; justify-content: space-between; padding: 0 28px; } .top-actions { display: flex; align-items: center; gap: 18px; } .bell { color: #405a7b; } .divider { width: 1px; height: 28px; background: #e0e8f2; } .user-menu { display: flex; align-items: center; gap: 9px; color: #405979; } .user-menu strong, .user-menu span { display: block; } .user-menu strong { font-size: 13px; color: #1e3558; } .user-menu span { margin-top: 3px; font-size: 11px; color: #8aa0bc; } .avatar { width: 38px; height: 38px; border-radius: 50%; display: grid; place-items: center; color: #fff; background: linear-gradient(145deg, #5b82dc, #9d72d6); border: 2px solid #d9e5fb; } .logout-btn { padding: 6px; color: #6b82a0; background: transparent; } .dashboard { min-height: 0; flex: 1; overflow-y: auto; padding: 25px 24px 40px; } .page-heading { display: flex; justify-content: space-between; align-items: flex-start; margin: 0 0 24px; } .page-heading h2 { margin: 0 0 6px; font-size: 22px; color: #10284c; } .page-heading p { margin: 0; color: #68809f; } .heading-actions { display: flex; gap: 10px; } .ghost-button { color: #33557e; background: #f3f7fc; border: 1px solid #dbe5f1; } .success-button { color: #009a7a; background: #e8fbf5; border: 1px solid #a8e8d4; } .dashboard-grid { display: grid; grid-template-columns: minmax(460px, 1fr) minmax(520px, 1.08fr); gap: 24px; align-items: start; } .panel, .qa-card, .result-toolbar { background: #fff; border: 1px solid #e1e9f3; border-radius: 12px; box-shadow: 0 2px 5px rgba(34, 65, 105, 0.04); } .config-card { padding: 20px; } .panel-title { display: flex; align-items: center; gap: 7px; font-size: 16px; font-weight: 700; color: #203d68; } .panel-title svg { color: #2864e8; } .panel-title small { font-size: 12px; font-weight: 400; color: #f05d73; } .rule { height: 1px; background: #edf1f6; margin: 16px 0 20px; } .config-card h4 { margin: 0 0 13px; color: #304b70; font-size: 13px; } .config-card textarea { min-height: 60px; resize: vertical; } .two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 12px 0; } .switch-row { display: flex; align-items: center; justify-content: space-between; margin: 18px 0 16px; color: #385477; } .switch { width: 44px; height: 25px; padding: 3px; border-radius: 20px; background: #b9c6d8; } .switch.on { background: #2864e8; } .switch i { display: block; width: 19px; height: 19px; border-radius: 50%; background: #fff; transition: 0.2s; } .switch.on i { transform: translateX(19px); } .generate-btn { width: 100%; padding: 13px; font-size: 15px; } .results-area { display: grid; gap: 14px; } .result-toolbar { padding: 13px 14px; display: flex; align-items: center; justify-content: space-between; } .result-toolbar > div { display: flex; gap: 7px; } .result-toolbar .primary-button, .result-toolbar .ghost-button, .result-toolbar .success-button { padding: 8px 10px; font-size: 12px; } .check-label { display: flex; align-items: center; gap: 8px; color: #355274; font-size: 13px; } .qa-card { padding: 16px; } .qa-meta { display: flex; align-items: center; gap: 9px; color: #7890ad; font-size: 12px; } .qa-meta code { padding: 4px 7px; border-radius: 3px; background: #f4f7fb; color: #466486; } .qa-meta strong { padding: 3px 7px; border-radius: 4px; color: #009b7a; background: #dff9f0; font-size: 11px; font-weight: 500; } .qa-actions { margin-left: auto; color: #466486; } .qa-actions span { color: #00a07c; } .qa-card h3 { margin: 15px 0 10px; color: #1459e4; font-size: 14px; } .qa-card p { margin: 7px 0; padding: 10px; background: #f7f9fc; color: #405a7d; font-size: 12px; } .qa-card p b { color: #1459e4; } @media (max-width: 1100px) { .dashboard-grid { grid-template-columns: 1fr; } .sidebar { width: 220px; flex-basis: 220px; } .status-dot { margin-left: 0; } }