/** * 金股讯/期衍所 统一 Design Token 体系 v3 * 全站单一权威来源，三个系统（前端、后台、营销）统一引用此文件 * * 使用方式： * color:var(--color-brand-500);* background:var(--color-gray-50);* padding:var(--space-4);* border-radius:var(--radius-md);*/:root{--color-brand-50:#FFF1E9;--color-brand-100:#FFE3D3;--color-brand-200:#FFD5BD;--color-brand-300:#FFB992;--color-brand-400:#FF9C66;--color-brand-500:#FF7224;--color-brand-600:#CC5B1D;--color-brand-700:#994416;--color-brand-800:#662E0F;--color-brand-900:#331708;--color-success:#16a34a;--color-success-light:#f0fdf4;--color-success-border:#bbf7d0;--color-warning:#d97706;--color-warning-light:#fffbeb;--color-warning-border:#fde68a;--color-danger:#dc2626;--color-danger-light:#fef2f2;--color-danger-border:#fecaca;--color-info:#2563eb;--color-info-light:#eff6ff;--color-info-border:#bfdbfe;--color-purple:#7c3aed;--color-purple-light:#f5f3ff;--color-purple-border:#c4b5fd;--color-cyan:#00d4ff;--color-cyan-dim:rgba(0,212,255,0.6);--color-cyan-glow:rgba(0,212,255,0.35);--color-green-cyan:#0ef6cc;--color-green-cyan-dim:rgba(14,246,204,0.6);--color-orange-dim:rgba(255,114,36,0.6);--dash-bg-deep:#0a1628;--dash-bg-panel:rgba(13,31,60,0.85);--dash-border:rgba(0,212,255,0.15);--dash-text:#e0e6f0;--dash-text-dim:rgba(224,230,240,0.6);--dash-text-muted:rgba(224,230,240,0.35);--color-gray-50:#f9fafb;--color-gray-100:#f3f4f6;--color-gray-200:#e5e7eb;--color-gray-300:#d1d5db;--color-gray-400:#9ca3af;--color-gray-500:#6b7280;--color-gray-600:#4b5563;--color-gray-700:#374151;--color-gray-800:#1f2937;--color-gray-900:#111827;--font-family-base:"PingFang SC","Microsoft YaHei","Helvetica Neue",Arial,sans-serif;--font-family-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--font-size-xs:0.75rem;--font-size-sm:0.875rem;--font-size-base:1rem;--font-size-lg:1.125rem;--font-size-xl:1.25rem;--font-size-2xl:1.5rem;--font-size-3xl:1.875rem;--font-size-4xl:2.25rem;--space-1:0.25rem;--space-2:0.5rem;--space-3:0.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-full:9999px;--shadow-sm:0 1px 2px rgba(0,0,0,0.04);--shadow-md:0 4px 6px rgba(0,0,0,0.06);--shadow-lg:0 10px 25px rgba(0,0,0,0.1);--shadow-brand-sm:0 2px 8px rgba(255,114,36,0.1);--shadow-brand-md:0 4px 12px rgba(255,114,36,0.15);--shadow-brand-lg:0 8px 24px rgba(255,114,36,0.2);--transition-fast:0.15s ease;--transition-base:0.25s ease;--transition-slow:0.35s ease;--max-width:1200px;--sidebar-width:280px;--header-height:64px;--bp-xs:480px;--bp-sm:768px;--bp-md:992px;--bp-lg:1200px;--bp-xl:1400px;--theme-color-dark:var(--color-brand-600);--theme-color-primary:var(--color-brand-500);--theme-color-light-1:var(--color-brand-400);--theme-color-light-2:var(--color-brand-300);--theme-color-light-3:var(--color-brand-200);--theme-color-light-4:var(--color-brand-100);--theme-color-light-5:var(--color-brand-50);--color-brand:var(--color-brand-500);--color-brand-hover:var(--color-brand-600);--color-brand-light:var(--color-brand-400);--btn-primary-bg:var(--color-brand-500);--btn-primary-hover:var(--color-brand-600);--btn-secondary-bg:var(--color-brand-400);--btn-secondary-hover:var(--color-brand-500);--link-color:var(--color-brand-500);--link-hover:var(--color-brand-600);--bg-primary:var(--color-brand-50);--bg-secondary:var(--color-brand-100);--bg-highlight:var(--color-brand-200);--border-primary:var(--color-brand-500);--border-light:var(--color-brand-300);--color-primary:var(--color-brand-500);--color-primary-hover:var(--color-brand-600);--color-primary-light:rgba(255,114,36,0.12);--color-primary-bg:var(--color-brand-50);--color-bg:#f0f2f5;--color-bg-white:#ffffff;--color-border:var(--color-gray-200);--color-border-light:var(--color-gray-100);--color-text:var(--color-gray-900);--color-text-secondary:var(--color-gray-600);--color-text-muted:var(--color-gray-400);--color-text-placeholder:var(--color-gray-300);--primary-color:var(--color-brand-500);--primary-light:var(--color-brand-400);--primary-dark:var(--color-brand-600);--secondary-color:#2c3e50;--text-color:var(--color-gray-900);--text-light:var(--color-gray-600);--text-lighter:var(--color-gray-400);--bg-color:#f8f9fa;--white:#ffffff}.text-brand{color:var(--color-brand-500) !important}.text-brand-hover{color:var(--color-brand-600) !important}.text-brand-light{color:var(--color-brand-400) !important}.bg-brand{background-color:var(--color-brand-500) !important}.bg-brand-dark{background-color:var(--color-brand-600) !important}.bg-brand-50{background-color:var(--color-brand-50) !important}.bg-brand-100{background-color:var(--color-brand-100) !important}.bg-brand-200{background-color:var(--color-brand-200) !important}.text-primary{color:var(--color-brand-500) !important}.text-dark{color:var(--color-brand-600) !important}.text-light-1{color:var(--color-brand-400) !important}.text-light-2{color:var(--color-brand-300) !important}.bg-primary{background-color:var(--color-brand-500) !important}.bg-dark{background-color:var(--color-brand-600) !important}.bg-light-1{background-color:var(--color-brand-400) !important}.bg-light-2{background-color:var(--color-brand-300) !important}.bg-light-3{background-color:var(--color-brand-200) !important}.bg-light-4{background-color:var(--color-brand-100) !important}.bg-light-5{background-color:var(--color-brand-50) !important}.border-primary{border-color:var(--color-brand-500) !important}.border-dark{border-color:var(--color-brand-600) !important}.border-light-1{border-color:var(--color-brand-400) !important}.border-light-2{border-color:var(--color-brand-300) !important}.text-success{color:var(--color-success) !important}.text-warning{color:var(--color-warning) !important}.text-danger{color:var(--color-danger) !important}.text-info{color:var(--color-info) !important}.bg-success{background-color:var(--color-success) !important}.bg-warning{background-color:var(--color-warning) !important}.bg-danger{background-color:var(--color-danger) !important}.bg-info{background-color:var(--color-info) !important}.text-gray-50{color:var(--color-gray-50) !important}.text-gray-100{color:var(--color-gray-100) !important}.text-gray-200{color:var(--color-gray-200) !important}.text-gray-300{color:var(--color-gray-300) !important}.text-gray-400{color:var(--color-gray-400) !important}.text-gray-500{color:var(--color-gray-500) !important}.text-gray-600{color:var(--color-gray-600) !important}.text-gray-700{color:var(--color-gray-700) !important}.text-gray-800{color:var(--color-gray-800) !important}.text-gray-900{color:var(--color-gray-900) !important}.text-xs{font-size:var(--font-size-xs)}.text-sm{font-size:var(--font-size-sm)}.text-base{font-size:var(--font-size-base)}.text-lg{font-size:var(--font-size-lg)}.text-xl{font-size:var(--font-size-xl)}.text-detail{font-size:0.7rem;color:var(--color-gray-600)}.text-2xl{font-size:var(--font-size-2xl)}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.rounded-sm{border-radius:var(--radius-sm)}.rounded-md{border-radius:var(--radius-md)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-full{border-radius:var(--radius-full)}.shadow-sm{box-shadow:var(--shadow-sm)}.shadow-md{box-shadow:var(--shadow-md)}.shadow-lg{box-shadow:var(--shadow-lg)}.btn-theme-primary{background-color:var(--color-brand-500);color:#ffffff;border:none;cursor:pointer;transition:background-color var(--transition-base);border-radius:var(--radius-sm)}.btn-theme-primary:hover{background-color:var(--color-brand-600)}.btn-theme-primary:active{opacity:0.8}.btn-theme-secondary{background-color:var(--color-brand-400);color:#ffffff;border:none;cursor:pointer;transition:background-color var(--transition-base);border-radius:var(--radius-sm)}.btn-theme-secondary:hover{background-color:var(--color-brand-500)}.btn-theme-outline{background-color:transparent;color:var(--color-brand-500);border:1px solid var(--color-brand-500);cursor:pointer;transition:all var(--transition-base);border-radius:var(--radius-sm)}.btn-theme-outline:hover{background-color:var(--color-brand-500);color:#ffffff}a.theme-link{color:var(--color-brand-500);text-decoration:none;transition:color var(--transition-base)}a.theme-link:hover{color:var(--color-brand-600)}.bg-gradient-brand{background:linear-gradient(135deg,var(--color-brand-500),var(--color-brand-400))}.bg-gradient-light{background:linear-gradient(135deg,var(--color-brand-100),var(--color-brand-50))}.bg-gradient-full{background:linear-gradient(135deg,var(--color-brand-600),var(--color-brand-500),var(--color-brand-400))}.card-theme{background-color:var(--color-brand-50);border:1px solid var(--color-brand-200);border-radius:var(--radius-md);transition:all var(--transition-base)}.card-theme:hover{box-shadow:var(--shadow-brand-md);border-color:var(--color-brand-300)}.input-theme{border-bottom:1px solid var(--color-brand-300);transition:border-color var(--transition-base)}.input-theme:focus{border-bottom-color:var(--color-brand-500);outline:none}.badge-theme{background-color:var(--color-brand-500);color:#ffffff;padding:2px 8px;border-radius:var(--radius-sm);font-size:var(--font-size-xs)}.badge-theme-light{background-color:var(--color-brand-200);color:var(--color-brand-600);padding:2px 8px;border-radius:var(--radius-sm);font-size:var(--font-size-xs)}.hover-theme-bg:hover{background-color:var(--color-brand-50);transition:background-color var(--transition-base)}.hover-theme-text:hover{color:var(--color-brand-500);transition:color var(--transition-base)}.active-theme{color:var(--color-brand-500) !important;border-bottom:2px solid var(--color-brand-500)}body .layui-layer-btn .layui-layer-btn0,body a.layui-layer-btn0,body .layui-layer-btn0,.layui-layer-btn .layui-layer-btn0,a.layui-layer-btn0,.layui-layer-btn0{background-color:var(--color-brand-500) !important;border-color:var(--color-brand-500) !important;color:#ffffff !important}body .layui-layer-btn .layui-layer-btn0:hover,body a.layui-layer-btn0:hover,body .layui-layer-btn0:hover,.layui-layer-btn .layui-layer-btn0:hover,a.layui-layer-btn0:hover,.layui-layer-btn0:hover{background-color:var(--color-brand-600) !important;border-color:var(--color-brand-600) !important;color:#ffffff !important}body .layui-layer-btn .layui-layer-btn0:active,body a.layui-layer-btn0:active,body .layui-layer-btn0:active,.layui-layer-btn .layui-layer-btn0:active,a.layui-layer-btn0:active,.layui-layer-btn0:active{background-color:var(--color-brand-600) !important;border-color:var(--color-brand-600) !important;color:#ffffff !important;opacity:0.9}body .layui-layer-btn .layui-layer-btn0:focus,body a.layui-layer-btn0:focus,body .layui-layer-btn0:focus,.layui-layer-btn .layui-layer-btn0:focus,a.layui-layer-btn0:focus,.layui-layer-btn0:focus{background-color:var(--color-brand-500) !important;border-color:var(--color-brand-500) !important;color:#ffffff !important}body .layui-layer-btn .layui-layer-btn1,body a.layui-layer-btn1,body .layui-layer-btn1,.layui-layer-btn .layui-layer-btn1,a.layui-layer-btn1,.layui-layer-btn1{background-color:var(--color-gray-100) !important;border-color:var(--color-gray-300) !important;color:var(--color-gray-700) !important}body .layui-layer-btn .layui-layer-btn1:hover,body a.layui-layer-btn1:hover,body .layui-layer-btn1:hover,.layui-layer-btn .layui-layer-btn1:hover,a.layui-layer-btn1:hover,.layui-layer-btn1:hover{background-color:var(--color-gray-200) !important;border-color:var(--color-gray-400) !important;color:var(--color-gray-700) !important}@keyframes jgx-pulse{0%,100%{opacity:1}50%{opacity:0.45}}@keyframes jgx-fade-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes jgx-shimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}.jgx-loading{animation:jgx-pulse 1.4s ease-in-out infinite}.jgx-fade-in{animation:jgx-fade-in 0.25s ease}@media (max-width:768px){.hide-on-mobile{display:none !important}}@media (min-width:768px){.show-on-mobile{display:none !important}}@media (max-width:991px){.hide-on-tablet{display:none !important}}@media (min-width:992px){.show-on-tablet{display:none !important}}.display-none{display:none !important}.p-0{padding:0}.p-8{padding:8px}.p-12{padding:12px}.p-15{padding:15px}.p-20{padding:20px}.mb-0{margin-bottom:0}.mb-5{margin-bottom:5px}.mb-8{margin-bottom:8px}.mb-10{margin-bottom:10px}.mb-15{margin-bottom:15px}.mb-12{margin-bottom:12px}.mb-20{margin-bottom:20px}.mt-0{margin-top:0}.mt-4{margin-top:4px}.mt-5{margin-top:5px}.mt-6{margin-top:6px}.mt-8{margin-top:8px}.mt-10{margin-top:10px}.mt-12{margin-top:12px}.mt-14{margin-top:14px}.mt-15{margin-top:15px}.mt-20{margin-top:20px}.mt-25{margin-top:25px}.mt-30{margin-top:30px}.ml-5{margin-left:5px}.ml-10{margin-left:10px}.ml-15{margin-left:15px}.ml-90{margin-left:90px}.ml-120{margin-left:120px}.mr-5{margin-right:5px}.mr-12{margin-right:12px}.pr-10{padding-right:10px}.m-0{margin:0}.my-8{margin-top:8px;margin-bottom:8px}.w-70{width:70px}.w-80{width:80px}.w-90{width:90px}.w-100{width:100px}.w-110{width:110px}.w-120{width:120px}.w-130{width:130px}.w-140{width:140px}.w-150{width:150px}.w-160{width:160px}.w-170{width:170px}.w-180{width:180px}.w-200{width:200px}.w-220{width:220px}.w-240{width:240px}.w-260{width:260px}.w-320{width:320px}.w-full{width:100%}.w-auto{width:auto}.max-w-300{max-width:300px}.float-right{float:right}.float-left{float:left}.lh-30{line-height:30px}.text-blue{color:var(--color-info)}.text-red{color:var(--color-danger)}.text-green{color:var(--color-success)}.text-muted{color:var(--color-gray-400)}.text-error{color:var(--color-danger)}.text-link{color:var(--color-info)}.text-help{margin-left:5px;color:var(--color-gray-500);font-size:var(--font-size-xs)}.cursor-pointer{cursor:pointer}.link-plain{color:inherit;text-decoration:none}.overflow-x-auto{overflow-x:auto}.position-relative{position:relative}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.font-bold{font-weight:700}.font-semibold{font-weight:600}.d-inline-block{display:inline-block}.flex-1{flex:1}.jgx-flex-between{display:flex;align-items:center;justify-content:space-between}.jgx-flex-gap-8{display:flex;gap:8px}.lh-38{line-height:38px}.jgx-chevron{width:1rem;height:1rem;transform:rotate(-90deg);transition:transform var(--transition-base)}.jgx-chevron.open{transform:rotate(0)}.jgx-collapse{height:0;overflow:hidden;transition:all var(--transition-base)}.jgx-section-title{font-weight:600;font-size:1rem;color:var(--color-gray-900)}.jgx-desc-text{font-size:0.8rem;color:var(--color-gray-600);line-height:1.5}.jgx-alert-info{background:#f0f5ff;border-left-color:var(--color-info)}.jgx-alert-danger{background:#fff1f0;border-left-color:var(--color-danger)}.jgx-box{padding:8px;border:1px solid #ddd}.jgx-avatar-sm{width:2.25rem;height:2.25rem;border-radius:50%}.jgx-avatar-md{width:2.5rem;height:2.5rem;border-radius:5px}.jgx-pre-wrap{white-space:pre-wrap;line-height:1.8}.jgx-block-link{display:block;padding:12px;text-decoration:none}.jgx-card-light{background:#f8f9fa;padding:20px;border-radius:8px;margin-bottom:20px}.jgx-divider-bottom{cursor:pointer;padding-bottom:0.5rem;border-bottom:1px solid #f0f0f0}.jgx-color-bar{width:4px;height:1rem;border-radius:2px;background:var(--color-brand-500)}.jgx-line-clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}a,button,input,select,textarea,.layui-btn,.layui-form-select,.jgx-card-light,.jgx-box,.card,[data-hover]{transition:all var(--transition-base)}tr:hover td,.layui-table-hover td,.layui-table tbody tr:hover{transition:background-color var(--transition-base)}:focus-visible{outline:2px solid var(--color-brand-500);outline-offset:2px}button:focus-visible,a:focus-visible,.layui-btn:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--color-brand-500);outline-offset:2px;box-shadow:0 0 0 3px var(--color-primary-light)}.jgx-skeleton{background:linear-gradient( 90deg,var(--color-gray-100) 0%,var(--color-gray-50) 40%,var(--color-gray-100) 80% );background-size:200% 100%;animation:jgx-shimmer 1.5s ease-in-out infinite;border-radius:var(--radius-sm)}.jgx-skeleton-text{height:14px;margin-bottom:10px}.jgx-skeleton-title{height:20px;width:60%;margin-bottom:14px}.jgx-skeleton-avatar{width:40px;height:40px;border-radius:var(--radius-full)}.jgx-skeleton-card{height:120px;border-radius:var(--radius-md)}.empty-state{text-align:center;padding:var(--space-12) var(--space-5);color:var(--color-gray-400)}.empty-state .empty-icon{font-size:48px;color:var(--color-gray-300);display:block;margin-bottom:var(--space-4)}.empty-state .empty-title{font-size:var(--font-size-base);color:var(--color-gray-500);margin-bottom:var(--space-2)}.empty-state .empty-desc{font-size:var(--font-size-sm);color:var(--color-gray-400);margin-bottom:var(--space-6)}.form-field-error{border-color:var(--color-danger) !important;box-shadow:0 0 0 3px var(--color-danger-light) !important}.form-field-success{border-color:var(--color-success) !important;box-shadow:0 0 0 3px var(--color-success-light) !important}.form-error-msg{color:var(--color-danger);font-size:var(--font-size-xs);margin-top:var(--space-1);display:flex;align-items:center;gap:4px}.form-error-msg::before{content:"!";display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;background:var(--color-danger);color:#fff;border-radius:var(--radius-full);font-size:11px;font-weight:700;flex-shrink:0}.jgx-hover-lift{transition:transform var(--transition-base),box-shadow var(--transition-base)}.jgx-hover-lift:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.jgx-hover-glow:hover{box-shadow:var(--shadow-brand-md)}