:root{--st-primary:#0b63ce;--st-primary-hover:#044a9f;--st-primary-soft:#eff6ff;--st-success:#16a34a;--st-success-hover:#076005;--st-success-soft:#f4fff8;--st-warning:#f59e0b;--st-warning-hover:#ffe69c;--st-warning-soft:#fff6d8;--st-danger:#dc2626;--st-danger-hover:#ce1616;--st-danger-soft:#fef2f2;--st-purple:#7c3aed;--st-purple-hover:#641ae2;--st-purple-soft:#eee3ff;--st-orange:#fa7d00;--st-orange-hover:#fc9a2a;--st-orange-soft:#ffefdc;--st-text:#111827;--st-text-primary:#034492;--st-text-info:#0757c1;--st-text-success:#077341;--st-text-warning:#a05208;--st-text-danger:#f10000;--st-text-muted:#6b7280;--st-text-light:#9ca3af;--st-text-orange:#fa7d00;--st-text-purple:#7c3aed;--st-border:#e5e7eb;--st-border-strong:#d1d5db;--st-bg:#f6f8fb;--st-bg-card:#fff;--st-bg-soft:#f9fafb;--st-bg-muted:#efefef;--st-radius-sm:6px;--st-radius:10px;--st-radius-lg:14px;--st-radius-xl:18px;--st-shadow-sm:0 1px 2px rgba(15,23,42,.06);--st-shadow:0 8px 24px rgba(15,23,42,.08);--st-shadow-lg:0 18px 45px rgba(15,23,42,.12);--st-header-height:64px;--st-sidebar-width:225px}*{box-sizing:border-box}html,body{margin:0;color:var(--st-text);background:var(--st-bg);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei","PingFang SC",Arial,sans-serif;font-size:14px;line-height:1.5}a{color:var(--st-primary);text-decoration:none}a:hover{color:var(--st-primary-hover);text-decoration:none}a.link-muted{color:var(--st-text);text-decoration:none;border-bottom:1px dashed var(--st-text-muted);cursor:help}a.link-muted:hover{color:var(--st-text-muted);text-decoration:none;border-bottom:1px solid var(--st-text-muted)}a.link-blue{color:var(--st-primary);text-decoration:none;cursor:pointer}a.link-blue:hover{color:var(--st-primary-hover);text-decoration:none;border-bottom:1px solid var(--st-primary)}a.link-dark{color:var(--st-text);text-decoration:none;cursor:pointer}a.link-dark:hover{color:var(--st-text);text-decoration:none;border-bottom:1px solid var(--st-text)}img{max-width:100%;border-width:0}img.icon{max-width:15px;max-height:15px}code{color:#c9126d;font-family:Consolas;font-size:1rem;word-wrap:break-word}pre{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei","PingFang SC",Arial,sans-serif;font-size:1rem;line-height:1.5;white-space:pre-wrap;word-wrap:break-word}h1,h2,h3,h4,h5,h6{margin:.5rem 0;font-family:inherit;font-weight:600;line-height:1.5;color:inherit;text-rendering:optimizelegibility}h1{font-size:2.25rem}h2{font-size:1.75rem}h3{font-size:1.5rem}h4{font-size:1.25rem}h5{font-size:1rem}h6{font-size:.85rem}hr{margin:10px auto;clear:both;border-top:1px solid #7f7f7f}.text-info{color:var(--st-text-info)!important}.text-success{color:var(--st-text-success)!important}.text-warning{color:var(--st-text-warning)!important}.text-danger,.text-error{color:var(--st-text-danger)!important}.text-muted{color:var(--st-text-muted)!important}.text-light{color:var(--st-text-light)!important}.text-orange{color:var(--st-text-orange)!important}.text-purple{color:var(--st-text-purple)!important}.bg-angled{background:linear-gradient(45deg,#f9f9f9 25%,#fefefe 0,#fefefe 50%,#f9f9f9 0,#f9f9f9 75%,#fefefe 0);background-size:30px 30px}.dot{width:8px;height:8px;margin-left:6px;border-radius:50%;background:var(--st-primary);box-shadow:0 0 0 6px rgba(37,99,235,.1)}.dot.dot-info{background:var(--st-primary);box-shadow:0 0 0 6px rgba(37,99,235,.1)}.dot.dot-success{background:var(--st-success);box-shadow:0 0 0 6px rgba(22,163,74,.1)}.dot.dot-warning{background:var(--st-warning);box-shadow:0 0 0 6px rgba(245,158,11,.12)}.dot.dot-danger,.dot.dot-error{background:var(--st-danger);box-shadow:0 0 0 6px rgba(220,38,38,.1)}.dot.dot-muted{background:var(--st-text-muted);box-shadow:0 0 0 6px rgba(145,160,180,.1)}.dot.dot-online{background:#22c55e;box-shadow:0 0 0 5px rgba(34,197,94,.12)}.text-inline{overflow:hidden;white-space:nowrap;-o-text-overflow:ellipsis;text-overflow:ellipsis}.app-section{padding:52px 0}.app-section-sm{padding:48px 0}.app-container{width:min(1180px,calc(100% - 40px));margin:0 auto}.app-section-title{margin-bottom:28px;text-align:center}.app-section-title h2{margin:0 0 10px;font-size:32px;font-weight:700;letter-spacing:-.02em}.app-section-title p{margin:0;color:var(--st-text-muted);font-size:16px}.app-card{background:var(--st-bg-card);border:1px solid var(--st-border);border-radius:var(--st-radius-lg);box-shadow:var(--st-shadow-sm)}.app-card .app-card-header{padding:18px 20px;border-bottom:1px solid var(--st-border)}.app-card .app-card-header .app-card-title{margin:0;color:var(--st-text-muted);font-size:15px;font-weight:600}.app-card .app-card-header .app-card-desc{margin:4px 0 0;color:var(--st-text-muted);font-size:14px}.app-card .app-card-body{padding:20px}.app-panel{background:var(--st-bg-card);border:1px solid var(--st-border);border-radius:var(--st-radius-lg);padding:20px}.app-btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;height:35px;margin:2px 1px;padding:5px 10px;border-radius:var(--st-radius-sm);border:1px solid transparent;font-size:14px;font-weight:500;cursor:pointer;transition:all .18s ease}.app-btn:disabled,.app-btn.disabled,fieldset:disabled .app-btn{mask:linear-gradient(to bottom,rgba(0,0,0,.35),rgba(0,0,0,.35))}.app-btn:disabled:hover,.app-btn.disabled:hover,fieldset:disabled .app-btn:hover{transform:none}.app-btn-outline{color:var(--st-text-muted);background:#fff;border-color:var(--st-text-muted)}.app-btn-outline:hover{background:var(--st-bg-soft);border-color:var(--st-primary);color:var(--st-primary);transform:translateY(-1px)}.app-btn-primary{color:#fff;background:var(--st-primary);border-color:var(--st-primary)}.app-btn-primary:hover{color:#fff;background:var(--st-primary-hover);border-color:var(--st-primary-hover);transform:translateY(-1px)}.app-btn-outline-primary{color:var(--st-primary);background:#fff;border-color:var(--st-primary)}.app-btn-outline-primary:hover{color:var(--st-primary);background:var(--st-primary-soft);border-color:var(--st-primary-hover);transform:translateY(-1px)}.app-btn-success{color:#fff;background:var(--st-success);border-color:var(--st-success)}.app-btn-success:hover{color:#fff;background:var(--st-success-hover);border-color:var(--st-success-hover);transform:translateY(-1px)}.app-btn-outline-success{color:var(--st-success);background:#fff;border-color:var(--st-success)}.app-btn-outline-success:hover{color:var(--st-success);background:var(--st-success-soft);border-color:var(--st-success-hover);transform:translateY(-1px)}.app-btn-danger{color:#fff;background:var(--st-text-danger);border-color:var(--st-text-danger)}.app-btn-danger:hover{color:#fff;background:var(--st-danger-hover);border-color:var(--st-danger-hover);transform:translateY(-1px)}.app-btn-outline-danger{color:var(--st-text-danger);background:#fff;border-color:var(--st-text-danger)}.app-btn-outline-danger:hover{color:var(--st-text-danger);background:var(--st-danger-soft);border-color:var(--st-danger-hover);transform:translateY(-1px)}.app-btn-dark{color:var(--st-text);background:var(--st-bg-muted);border-color:var(--st-text)}.app-btn-dark:hover{color:#fff;background:var(--st-text);border-color:var(--st-text);transform:translateY(-1px)}.app-btn-outline-dark{color:var(--st-text);background:#fff;border-color:var(--st-text)}.app-btn-outline-dark:hover{color:var(--st-text);background:var(--st-bg-muted);border-color:var(--st-text);transform:translateY(-1px)}.app-btn-purple{color:#fff;background:var(--st-purple);border-color:var(--st-purple)}.app-btn-purple:hover{color:#fff;background:var(--st-purple-hover);border-color:var(--st-purple-hover);transform:translateY(-1px)}.app-btn-outline-purple{color:var(--st-purple);background:#fff;border-color:var(--st-purple)}.app-btn-outline-purple:hover{color:var(--st-purple);background:var(--st-purple-soft);border-color:var(--st-purple);transform:translateY(-1px)}.app-btn-orange{color:#fff;background:var(--st-orange);border-color:var(--st-orange)}.app-btn-orange:hover{color:#fff;background:var(--st-orange-hover);border-color:var(--st-orange-hover);transform:translateY(-1px)}.app-btn-outline-orange{color:var(--st-orange);background:#fff;border-color:var(--st-orange)}.app-btn-outline-orange:hover{color:var(--st-orange);background:var(--st-orange-soft);border-color:var(--st-orange);transform:translateY(-1px)}.app-btn-sm{height:27px;gap:3px;padding:0 6px;font-size:12px}.app-btn-lg{height:40px;gap:5px;padding:0 20px;font-size:15px}.app-btn-none-border{height:20px;color:var(--st-text-muted);background:transparent;border:0}.app-btn-none-border:hover{background:var(--st-bg-soft);color:var(--st-primary);transform:translateY(-1px)}.app-copy-button{margin-left:3px;padding:2px 5px;color:var(--st-primary);background:#eff6ff;border:1px solid #bfdbfe;border-radius:6px;font-size:12px;gap:3px}.app-copy-button:hover{color:#fff;background:var(--st-primary);border-color:var(--st-primary)}.app-alert{border:1px solid var(--st-border);border-radius:var(--st-radius);padding:1rem 1rem}.app-alert.app-alert-primary{color:var(--st-text-primary);background-color:var(--st-primary-soft);border-color:var(--st-text-primary)}.app-alert.app-alert-info{color:var(--st-text-muted);background-color:var(--st-primary-soft);border-color:var(--st-text-info)}.app-alert.app-alert-success{color:var(--st-text-success);background-color:var(--st-success-soft);border-color:var(--st-text-success)}.app-alert.app-alert-warning{color:var(--st-text-warning);background-color:var(--st-warning-soft);border-color:var(--st-text-warning)}.app-alert.app-alert-danger{color:var(--st-text-danger);background-color:var(--st-danger-soft);border-color:var(--st-text-danger)}.form-group{line-height:1.5;margin-top:.5rem;margin-bottom:.5rem}.form-group .validation-summary-errors>ul{padding-left:0;list-style:none}.form-group .col-form-label{color:var(--st-text-muted);font-weight:600;text-align:right}.form-group .form-text{color:var(--st-text);padding-top:2px;font-size:1rem}.form-group input,textarea,select{max-width:1024px}.form-group .form-control,.form-select{border-color:var(--st-border-strong);border-radius:var(--st-radius-sm);font-size:1rem}.form-group .form-control:focus,.form-select:focus{border-color:var(--st-primary);box-shadow:0 0 0 .2rem rgba(37,99,235,.12)}.form-check .form-check-input,.form-check .form-check-label{cursor:pointer}.form-check .form-check-input{border-color:#7f7f7f}.input-validation-error{border-color:var(--st-danger)!important}.field-validation-error,.validation-summary-errors{color:var(--st-danger)}.app-table{table-layout:fixed;width:100%;border-collapse:separate;border-spacing:0}.app-table caption{caption-side:top;color:var(--st-text-muted);font-weight:600;padding:10px 0;text-align:center}.app-table th{padding:15px 5px 15px 15px;color:var(--st-text-muted);background:var(--st-bg-soft);border-bottom:1px solid var(--st-border);font-size:14px;font-weight:600;white-space:nowrap}.app-table td{padding:15px 5px 15px 15px;border-bottom:1px solid var(--st-border);vertical-align:middle;word-break:break-all;font-size:14px}.app-table tbody tr:has(tdinput[type='checkbox']:checked){background-color:var(--st-bg)}.app-badge{display:inline-flex;align-items:center;height:25px;padding:0 10px;border:1px solid var(--st-text-muted);border-radius:999px;font-size:12px;font-weight:500;gap:3px}.app-badge-success{color:var(--st-text-success);background-color:var(--st-success-soft);border-color:var(--st-text-success)}.app-badge-warning{color:var(--st-text-warning);background-color:var(--st-warning-soft);border-color:var(--st-text-warning)}.app-badge-danger{color:var(--st-text-danger);background-color:var(--st-danger-soft);border-color:var(--st-text-danger)}.app-badge-info{color:var(--st-text-primary);background-color:var(--st-primary-soft);border-color:var(--st-text-primary)}.app-badge-muted{color:var(--st-text);background-color:var(--st-bg-soft);border-color:var(--st-text-muted)}.app-empty{padding:30px 20px;text-align:center;color:var(--st-text-muted);background:var(--st-bg-card);border:1px dashed var(--st-border-strong);border-radius:var(--st-radius-lg)}.app-empty .app-empty-icon{margin-bottom:12px;font-size:36px;color:var(--st-text-light)}.app-empty .app-empty-title{margin-bottom:6px;color:var(--st-text);font-weight:700}.app-empty .app-empty-desc{margin:0;font-size:14px}.dropdown-menu{min-width:50px;padding:1px 1px;box-shadow:3px 5px 10px rgba(0,0,0,.175)}.dropdown-menu .dropdown-header{margin:0 0;padding:10px 10px}.dropdown-menu .dropdown-item{padding:3px 10px}.dropdown-menu .dropdown-item:hover{background-color:#eff6fc}.nav{border-bottom-color:var(--st-text-muted)}.nav .nav-item .nav-link{cursor:pointer}.nav .nav-item .nav-link:hover{border-top-color:var(--st-border);border-left-color:var(--st-border);border-right-color:var(--st-border);border-bottom-color:transparent}.nav .nav-item .nav-link.active{border-top-color:var(--st-text-muted);border-left-color:var(--st-text-muted);border-right-color:var(--st-text-muted);border-bottom-color:transparent}.pagination{clear:both;display:flex;align-items:center;justify-content:space-between;gap:5px;margin:15px 0;padding:15px 15px;background-color:#fff;border-radius:var(--st-radius-sm);box-shadow:var(--st-shadow-sm);list-style:none;flex-wrap:wrap}.pagination>li{display:flex;gap:5px}.pagination>li>a,.pagination>li>span{padding:5px 15px;border:1px solid #dfdfdf;border-radius:15px;font-size:13px}.pagination>li>a:hover,.pagination>li>a:focus{text-decoration:none;background-color:#f5f5f5}.pagination>li>.input-group>.input-group-text{background-color:transparent;border:1px solid #dfdfdf;color:#3f3f3f;font-size:13px}.pagination>li>.input-group>.btn{background-color:transparent;border:1px solid #dfdfdf;color:#3f3f3f;font-size:13px}.pagination>li>.input-group>input[data-page-jump-index]{width:75px;font-size:13px}.markdown-body{color:var(--st-text);line-height:1.8}.markdown-body h1,.markdown-body h2,.markdown-body h3{margin:1.2em 0 .6em;font-weight:700}.markdown-body p{margin:0 0 1em}.markdown-body img{max-width:100%;border:1px solid var(--st-border)}.markdown-body pre{padding:14px;background:#0f172a;color:#e5e7eb;border-radius:var(--st-radius);overflow-x:auto}.app-region-loading{padding:20px 10px;text-align:center}.app-region-error{padding:20px 10px;text-align:center}.modal .modal-dialog{max-width:none}.modal .modal-dialog>.modal-content>.modal-header{background-color:var(--st-bg-soft);color:var(--st-text-muted);box-shadow:var(--st-shadow-sm)}.modal .modal-dialog>.modal-content>.modal-body{padding:15px}.modal .modal-dialog>.modal-content>.modal-footer{justify-content:center}.app-modal{backdrop-filter:blur(2px)}.app-modal .modal-dialog{width:650px}.app-modal[data-size="small"] .modal-dialog{width:560px}.app-modal[data-size="normal"] .modal-dialog{width:650px}.app-modal[data-size="large"] .modal-dialog{width:850px}.app-modal[data-size="wide"] .modal-dialog{width:1200px}.app-modal[data-size="global"] .modal-dialog{width:calc(100vw - 50px);height:calc(100vh - 100px)}.app-modal .modal-dialog .modal-body{max-height:calc(100vh - 100px);overflow-y:auto}.app-modal .modal-dialog .modal-body .app-dialog-loading{padding:20px 10px;text-align:center}.app-modal .modal-dialog .modal-body .app-dialog-error{padding:20px 10px;text-align:center}.toast{padding:20px 15px;width:auto;min-width:300px;max-width:500px;border-left:2px solid var(--st-text-info);font-size:1rem}.toast .toast-body{padding:0 5px;text-align:center}.page-holding-mask{position:fixed;display:none;top:0;right:0;bottom:0;left:0;justify-content:center;align-items:center;z-index:2000;background-image:linear-gradient(to bottom,rgba(255,255,255,.65) 0%,rgba(255,255,255,.75) 50%,rgba(255,255,255,.65) 100%);backdrop-filter:blur(2px)}.page-holding-mask .page-holding-spinner{border:7px solid #f3f3f3;border-radius:50%;border-top:7px solid #3498db;width:50px;height:50px;-webkit-animation:spin 2s linear infinite;animation:spin 2s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg)}}