:root{--brand:#2F6BFF;--brand-dark:#1E4FD8;--brand-light:#EAF0FF;--brand-soft:#F5F8FF;--text-1:#1D2129;--text-2:#4E5969;--text-3:#86909C;--text-4:#C9CDD4;--bg-page:#F5F7FA;--bg-card:#FFFFFF;--bg-head:#FAFBFC;--line:#E5E8EF;--line-2:#EEF1F6;--ok:#00B42A;--ok-bg:#E8FFEA;--warn:#FF7D00;--warn-bg:#FFF7E8;--danger:#F53F3F;--danger-bg:#FFECE8;--purple:#722ED1;--purple-bg:#F5F0FF;--radius:8px;--radius-lg:12px;--shadow-1:0 1px 2px rgba(0,0,0,.04), 0 2px 8px rgba(29,33,41,.05);--shadow-2:0 4px 16px rgba(29,33,41,.08), 0 1px 3px rgba(29,33,41,.05);--shadow-3:0 12px 40px rgba(29,33,41,.16);--sider-w:216px;--header-h:56px}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,Helvetica Neue,Arial,sans-serif;font-size:14px;line-height:1.5;color:var(--text-1);background:var(--bg-page);-webkit-font-smoothing:antialiased}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit;outline:none}button{cursor:pointer;border:none;background:none}a{color:var(--brand);text-decoration:none}svg{display:block}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#d8dde6;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#c2c9d6}::-webkit-scrollbar-track{background:transparent}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:34px;padding:0 15px;border-radius:var(--radius);border:1px solid var(--line);background:#fff;color:var(--text-1);font-size:14px;font-weight:500;white-space:nowrap;transition:all .16s ease}.btn:hover{border-color:#c9cdd4;background:#fbfcfe}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--brand);border-color:var(--brand);color:#fff;box-shadow:0 2px 6px #2f6bff3d}.btn-primary:hover{background:var(--brand-dark);border-color:var(--brand-dark)}.btn-ghost{border-color:transparent;background:transparent;color:var(--text-2)}.btn-ghost:hover{background:#f2f3f5;color:var(--text-1)}.btn-sm{height:28px;padding:0 10px;font-size:13px;border-radius:6px}.btn-block{width:100%}.btn[disabled]{opacity:.45;cursor:not-allowed}.btn-danger-text{color:var(--danger)}.btn-danger-text:hover{background:var(--danger-bg);border-color:#ffd2c8}.link-btn{color:var(--brand);font-size:13px;font-weight:500;padding:0 2px}.link-btn:hover{text-decoration:underline}.link-btn.muted{color:var(--text-2)}.link-btn.muted:hover{color:var(--brand)}.field{display:flex;flex-direction:column;gap:7px}.field>label{font-size:13px;font-weight:500;color:var(--text-2)}.field .req:before{content:"*";color:var(--danger);margin-right:3px;font-weight:400}.input,.select,.textarea{width:100%;height:36px;padding:0 11px;border:1px solid var(--line);border-radius:var(--radius);background:#fff;transition:all .16s;color:var(--text-1)}.textarea{height:auto;padding:9px 11px;resize:vertical;line-height:1.6}.input::placeholder,.textarea::placeholder{color:var(--text-4)}.input:hover,.select:hover,.textarea:hover{border-color:#c9cdd4}.input:focus,.select:focus,.textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px #2f6bff1a}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5L6 7.5L9 4.5' stroke='%2386909C' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 11px center;padding-right:30px}.input.err{border-color:var(--danger);box-shadow:0 0 0 3px #f53f3f14}.input[readonly]{background:#f7f8fa;color:var(--text-2);cursor:default}.input[readonly]:hover,.input[readonly]:focus{border-color:var(--line);box-shadow:none}.tag{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 8px;border-radius:4px;font-size:12px;font-weight:500;line-height:1}.tag i{width:5px;height:5px;border-radius:50%;background:currentColor;display:block}.tag-ok{color:var(--ok);background:var(--ok-bg)}.tag-warn{color:var(--warn);background:var(--warn-bg)}.tag-danger{color:var(--danger);background:var(--danger-bg)}.tag-brand{color:var(--brand);background:var(--brand-light)}.tag-gray{color:var(--text-3);background:#f2f3f5}.tag-purple{color:var(--purple);background:var(--purple-bg)}.avatar{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#5b8bff,#2f6bff);color:#fff;font-size:13px;font-weight:600;flex:none}#page-login{min-height:100vh;display:flex;align-items:stretch}.login-left{flex:1;position:relative;overflow:hidden;background:linear-gradient(145deg,#1b3b8f,#2f6bff 55%,#5b8bff);display:flex;flex-direction:column;justify-content:space-between;padding:52px 60px;color:#fff}.login-left:before,.login-left:after{content:"";position:absolute;border-radius:50%;pointer-events:none}.login-left:before{width:520px;height:520px;right:-190px;top:-170px;background:radial-gradient(circle,rgba(255,255,255,.16),transparent 68%)}.login-left:after{width:640px;height:640px;left:-260px;bottom:-330px;background:radial-gradient(circle,rgba(255,255,255,.12),transparent 68%)}.login-grid{position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(255,255,255,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.055) 1px,transparent 1px);background-size:56px 56px;mask-image:radial-gradient(ellipse at 30% 40%,#000 20%,transparent 78%);-webkit-mask-image:radial-gradient(ellipse at 30% 40%,#000 20%,transparent 78%)}.login-brand{display:flex;align-items:center;gap:11px;position:relative;z-index:1}.login-brand .mark{width:38px;height:38px;border-radius:10px;background:#ffffff2e;border:1px solid rgba(255,255,255,.3);display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.login-brand .name{font-size:17px;font-weight:600;letter-spacing:.4px}.login-copy{position:relative;z-index:1;max-width:460px}.login-copy h1{font-size:34px;line-height:1.32;font-weight:600;letter-spacing:.5px;margin-bottom:18px}.login-copy p{font-size:14px;line-height:1.85;color:#ffffffc7}.login-feats{display:flex;flex-direction:column;gap:13px;margin-top:34px}.login-feat{display:flex;align-items:center;gap:10px;font-size:13.5px;color:#ffffffe6}.login-feat .dot{width:20px;height:20px;border-radius:6px;background:#ffffff29;border:1px solid rgba(255,255,255,.26);display:flex;align-items:center;justify-content:center;flex:none}.login-foot{position:relative;z-index:1;font-size:12.5px;color:#ffffff8c}.login-right{width:520px;flex:none;background:#fff;display:flex;align-items:center;justify-content:center;padding:40px 56px}.login-form{width:100%;max-width:352px}.login-form .autofill-decoy{position:absolute;left:-9999px;top:-9999px;width:1px;height:1px;overflow:hidden;opacity:0;pointer-events:none}.login-form .autofill-decoy input{width:1px;height:1px;border:0;padding:0}.login-form h2{font-size:24px;font-weight:600;margin-bottom:8px}.login-form .sub{font-size:13.5px;color:var(--text-3);margin-bottom:32px}.login-form .field{margin-bottom:18px}.input-affix{position:relative}.input-affix .input{padding-left:38px;height:42px}.input-affix .affix{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--text-3);pointer-events:none}.input-affix .eye{position:absolute;right:10px;top:50%;transform:translateY(-50%);color:var(--text-3);padding:4px;border-radius:4px;display:flex}.input-affix .eye:hover{color:var(--text-2);background:#f2f3f5}.login-row{display:flex;align-items:center;justify-content:space-between;margin:-4px 0 22px}.checkbox{display:inline-flex;align-items:center;gap:7px;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:13px;color:var(--text-2)}.checkbox input{display:none}.checkbox .box{width:15px;height:15px;border:1px solid #C9CDD4;border-radius:4px;flex:none;display:flex;align-items:center;justify-content:center;transition:all .15s;background:#fff}.checkbox input:checked+.box{background:var(--brand);border-color:var(--brand)}.checkbox .box svg{opacity:0;transition:opacity .15s}.checkbox input:checked+.box svg{opacity:1}.login-submit{height:42px;font-size:15px;font-weight:600;margin-bottom:22px}.login-alert{display:none;align-items:center;gap:8px;padding:10px 12px;border-radius:var(--radius);background:var(--danger-bg);border:1px solid #FFD2C8;color:#cf1322;font-size:13px;margin-bottom:18px}.login-alert.show{display:flex}.login-tip{margin-top:26px;padding:12px 14px;border-radius:var(--radius);background:var(--brand-soft);border:1px solid #DCE6FF;font-size:12.5px;color:var(--text-2);line-height:1.75}.login-tip b{color:var(--brand);font-weight:600}.login-copy-foot{margin-top:18px;font-size:12.5px;color:var(--text-3);text-align:center}#page-admin{display:none;min-height:100vh;flex-direction:column}#page-login.hide{display:none}.topbar{height:var(--header-h);background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 20px 0 0;position:sticky;top:0;z-index:50}.topbar .logo-area{width:var(--sider-w);height:100%;padding:0 20px;display:flex;align-items:center;gap:9px;flex:none;border-right:1px solid var(--line-2)}.topbar .logo-mark{width:28px;height:28px;border-radius:8px;background:linear-gradient(135deg,#5b8bff,#2f6bff);display:flex;align-items:center;justify-content:center;flex:none}.topbar .logo-text{font-size:15px;font-weight:600;letter-spacing:.3px}.topbar .crumbs{display:flex;align-items:center;gap:8px;margin-left:22px;font-size:13.5px;color:var(--text-3)}.topbar .crumbs .cur{color:var(--text-1);font-weight:500}.topbar .spacer{flex:1}.topbar .tool{width:34px;height:34px;border-radius:var(--radius);display:flex;align-items:center;justify-content:center;color:var(--text-2);position:relative;margin-left:4px}.topbar .tool:hover{background:#f2f3f5;color:var(--text-1)}.topbar .tool .badge{position:absolute;top:5px;right:5px;min-width:15px;height:15px;padding:0 4px;border-radius:8px;background:var(--danger);color:#fff;font-size:10px;font-weight:600;display:flex;align-items:center;justify-content:center;border:1.5px solid #fff}.topbar .divider{width:1px;height:20px;background:var(--line);margin:0 14px}.topbar .user-wrap{position:relative}.topbar .user{display:flex;align-items:center;gap:9px;padding:5px 9px;border-radius:var(--radius);cursor:pointer}.topbar .user:hover,.topbar .user.open{background:#f2f3f5}.topbar .user .caret{display:flex;color:var(--text-3);transition:transform .16s;margin-left:2px}.topbar .user .caret.open{transform:rotate(180deg)}.topbar .user-menu{position:absolute;right:0;top:calc(100% + 8px);min-width:152px;z-index:60;background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-2);padding:5px}.topbar .user-menu-item{display:flex;align-items:center;gap:9px;padding:9px 11px;border-radius:6px;font-size:13.5px;color:var(--text-1);cursor:pointer}.topbar .user-menu-item:hover{background:var(--brand-soft);color:var(--brand)}.topbar .user .uinfo{line-height:1.25}.topbar .user .uname{font-size:13.5px;font-weight:500}.topbar .user .urole{font-size:12px;color:var(--text-3)}.layout{display:flex;flex:1;min-height:0}.sider{width:var(--sider-w);background:#fff;border-right:1px solid var(--line);padding:12px;flex:none;position:sticky;top:var(--header-h);height:calc(100vh - var(--header-h));overflow:hidden;display:flex;flex-direction:column}.sider-main{flex:1;min-height:0;overflow-y:auto}.sider-foot{flex:none;padding-top:12px;margin-top:8px;border-top:1px solid var(--line-2)}.miniapp-entry{display:flex;align-items:center;gap:10px;padding:10px 11px;border-radius:10px;cursor:pointer;background:linear-gradient(135deg,#e8faf0,#eaf3ff);border:1px solid #C5E8D5;transition:all .16s}.miniapp-entry:hover{border-color:#7dd3a0;box-shadow:0 2px 10px #00b42a1f}.miniapp-entry .ic{width:36px;height:36px;border-radius:10px;background:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 1px 4px #0000000f;flex:none;color:#07c160}.miniapp-entry .tx{flex:1;min-width:0}.miniapp-entry .tx .t{font-size:13px;font-weight:600;color:var(--text-1)}.miniapp-entry .tx .s{font-size:11.5px;color:var(--text-3);margin-top:2px}.miniapp-entry .go{color:var(--text-4);flex:none}.sider .group-label{font-size:11.5px;font-weight:600;color:var(--text-4);letter-spacing:.8px;padding:14px 12px 8px;text-transform:uppercase}.menu-item{display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;border-radius:var(--radius);color:var(--text-2);font-size:14px;cursor:pointer;margin-bottom:2px;transition:all .14s;position:relative}.menu-item:hover{background:#f5f7fa;color:var(--text-1)}.menu-item.active{background:var(--brand-light);color:var(--brand);font-weight:500}.menu-item.active:before{content:"";position:absolute;left:-12px;top:9px;bottom:9px;width:3px;border-radius:0 2px 2px 0;background:var(--brand)}.menu-item .mi-icon{flex:none;color:currentColor}.menu-item .mi-count{margin-left:auto;font-size:12px;font-weight:500;color:var(--text-3);background:#f2f3f5;padding:1px 7px;border-radius:9px}.menu-item.active .mi-count{background:#fff;color:var(--brand)}.menu-group{margin-bottom:6px}.menu-group:not(.open) .menu-sub{display:none}.menu-item.menu-parent{font-weight:500}.menu-item .arrow{width:14px;color:var(--text-4);flex:none;display:flex;transition:transform .18s}.menu-item .arrow.open{transform:rotate(90deg)}.menu-sub{padding-left:4px;overflow:hidden}.menu-sub .menu-item{height:36px;font-size:13.5px;padding-left:34px}.menu-sub .menu-item.active:before{left:4px}.main{flex:1;min-width:0;padding:20px 24px 40px;overflow-x:hidden}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:16px}.page-head h2{font-size:20px;font-weight:600;letter-spacing:.2px}.page-head .desc{font-size:13px;color:var(--text-3);margin-top:5px}.card{background:var(--bg-card);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-1)}.card+.card{margin-top:16px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:16px}.stat{background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);padding:16px 18px;box-shadow:var(--shadow-1);position:relative;overflow:hidden}.stat .st-label{font-size:13px;color:var(--text-3);display:flex;align-items:center;gap:7px}.stat .st-ico{width:26px;height:26px;border-radius:7px;display:flex;align-items:center;justify-content:center;flex:none}.stat .st-val{font-size:26px;font-weight:600;letter-spacing:-.4px;margin-top:12px;line-height:1.1}.stat .st-val small{font-size:13px;font-weight:400;color:var(--text-3);margin-left:3px}.stat .st-sub{font-size:12.5px;color:var(--text-3);margin-top:7px;display:flex;align-items:center;gap:5px}.st-sub .up{color:var(--ok);font-weight:500}.st-sub .down{color:var(--danger);font-weight:500}.filter{padding:16px 18px;border-bottom:1px solid var(--line-2);display:flex;flex-wrap:wrap;gap:12px;align-items:center}.filter .f-item{display:flex;align-items:center;gap:8px}.filter .f-item>span{font-size:13px;color:var(--text-2);white-space:nowrap}.filter .search{position:relative;width:238px}.filter .search .input{padding-left:34px}.filter .search svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--text-3)}.filter select.select{width:148px}.filter .spacer{flex:1}.table-wrap{overflow-x:auto}table.tbl{width:100%;border-collapse:separate;border-spacing:0;font-size:13.5px}table.tbl th{background:var(--bg-head);font-size:13px;font-weight:500;color:var(--text-2);text-align:left;padding:11px 14px;border-bottom:1px solid var(--line);white-space:nowrap}table.tbl th:first-child,table.tbl td:first-child{padding-left:20px}table.tbl th:last-child,table.tbl td:last-child{padding-right:20px}table.tbl td{padding:13px 14px;border-bottom:1px solid var(--line-2);vertical-align:middle}table.tbl.fixed{table-layout:fixed}table.tbl.fixed th,table.tbl.fixed td{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}table.tbl th.w-ops,table.tbl td.w-ops{white-space:normal;overflow:visible}.sc-cell{display:flex;gap:12px;align-items:center;min-width:0}.sc-thumb-cell{text-align:center;vertical-align:middle}.sc-thumb-cell .sc-thumb{margin:0 auto}.sc-thumb{width:44px;height:44px;border-radius:8px;flex:none;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;color:#fff;font-size:14px;font-weight:600;letter-spacing:.5px;box-shadow:inset 0 0 0 1px #ffffff38}.sc-thumb.g1{background:linear-gradient(135deg,#5b8bff,#2f6bff)}.sc-thumb.g2{background:linear-gradient(135deg,#7c5cff,#5b34e8)}.sc-thumb.g3{background:linear-gradient(135deg,#2fc8b0,#12a38c)}.sc-thumb.g4{background:linear-gradient(135deg,#ffa53d,#f5751d)}.sc-thumb.g5{background:linear-gradient(135deg,#ff7a8a,#f0415c)}.sc-thumb.g6{background:linear-gradient(135deg,#4fb8f5,#1b84d6)}.sc-info{min-width:0;flex:1}.sc-info .nm{font-weight:500;color:var(--text-1);cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sc-info .nm:hover{color:var(--brand)}.sc-info .no{display:flex;align-items:center;gap:6px;margin-top:4px;font-size:12px;color:var(--text-3)}.sc-info .no b{font-weight:500;color:var(--text-2);font-family:SFMono-Regular,Consolas,monospace}.icon-mini{width:20px;height:20px;border-radius:5px;border:1px solid var(--line);background:#fff;display:inline-flex;align-items:center;justify-content:center;color:var(--text-3);vertical-align:middle;padding:0;flex:none}.icon-mini:hover{border-color:var(--brand);color:var(--brand);background:var(--brand-soft)}html,body{height:100%}body.no-scroll{overflow:hidden}#page-sub{display:none;height:100vh;flex-direction:column;overflow:hidden}#page-sub.active{display:flex}.sub-topbar{height:var(--header-h);background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:14px;padding:0 24px;position:sticky;top:0;z-index:50;flex:none}.sub-topbar .back{display:flex;align-items:center;gap:6px;height:32px;padding:0 10px 0 7px;border-radius:var(--radius);color:var(--text-2);font-size:13.5px}.sub-topbar .back:hover{background:#f2f3f5;color:var(--text-1)}.sub-topbar .vline{width:1px;height:20px;background:var(--line)}.sub-topbar .title{font-size:15.5px;font-weight:600}.sub-topbar .crumb{font-size:13.5px;color:var(--text-3);display:flex;align-items:center;gap:8px}.sub-topbar .spacer{flex:1}.sub-body{flex:1;min-height:0;overflow-y:auto;background:var(--bg-page);padding:20px 24px 24px}.sub-wrap{max-width:1180px;margin:0 auto}.tabs{display:flex;gap:2px;margin-bottom:16px;border-bottom:1px solid var(--line);padding:0 2px}.tabs a{position:relative;font-size:14px;font-weight:500;color:var(--text-2);padding:10px 18px 12px;cursor:pointer;transition:color .15s;white-space:nowrap}.tabs a:hover{color:var(--text-1)}.tabs a.on{color:var(--brand);font-weight:600}.tabs a.on:after{content:"";position:absolute;left:12px;right:12px;bottom:-1px;height:2px;background:var(--brand);border-radius:2px 2px 0 0}.tab-panel>.sec+.sec{margin-top:16px}.cat-view-tabs{background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);padding:0 16px;margin-bottom:16px;box-shadow:var(--shadow-1)}.cat-view-tabs .tabs{margin-bottom:0;border-bottom:none}.factor-layout{display:flex;min-height:520px;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff}.factor-side{width:232px;flex:none;border-right:1px solid var(--line);background:#fafbfc;display:flex;flex-direction:column}.factor-side-hd{padding:12px 14px;border-bottom:1px solid var(--line-2);display:flex;align-items:center;justify-content:space-between;gap:8px}.factor-side-hd .lbl{font-size:13px;font-weight:600;color:var(--text-2)}.factor-nav{flex:1;overflow-y:auto;padding:8px}.factor-nav-item{display:flex;align-items:center;gap:8px;padding:10px 11px;border-radius:8px;cursor:pointer;margin-bottom:4px;transition:all .14s;border:1px solid transparent}.factor-nav-item:hover{background:#fff;border-color:var(--line)}.factor-nav-item.on{background:#fff;border-color:var(--brand-light);box-shadow:0 1px 4px #2f6bff1a}.factor-nav-item .idx{flex:none;width:22px;height:22px;border-radius:6px;background:var(--brand-light);color:var(--brand);font-size:12px;font-weight:600;display:flex;align-items:center;justify-content:center}.factor-nav-item.on .idx{background:var(--brand);color:#fff}.factor-nav-item .nm{flex:1;min-width:0;font-size:13.5px;font-weight:500;color:var(--text-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.factor-nav-item .nm.placeholder{color:var(--text-4);font-weight:400}.factor-nav-item .del{flex:none;width:22px;height:22px;border-radius:5px;display:flex;align-items:center;justify-content:center;color:var(--text-4);opacity:0;transition:opacity .14s}.factor-nav-item:hover .del,.factor-nav-item.on .del{opacity:1}.factor-nav-item .del:hover{color:var(--danger);background:var(--danger-bg)}.factor-main{flex:1;min-width:0;overflow-y:auto}.factor-detail{padding:20px 22px}.factor-detail-hd{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px;padding-bottom:14px;border-bottom:1px solid var(--line-2)}.factor-detail-hd .ttl{font-size:15px;font-weight:600;color:var(--text-1)}.factor-detail-hd .sub{font-size:12.5px;color:var(--text-3);margin-top:3px}.factor-detail-empty{height:100%;min-height:480px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--text-3);padding:40px 24px;text-align:center}.factor-detail-empty .ico{margin-bottom:12px}.factor-detail-empty .t{font-size:14px;color:var(--text-2);margin-bottom:5px}.factor-detail-empty .s{font-size:12.5px}.factor-empty{padding:56px 0;text-align:center;color:var(--text-3)}.factor-empty .ico{margin-bottom:10px}.factor-empty .t{font-size:14px;color:var(--text-2);margin-bottom:4px}.factor-empty .s{font-size:12.5px}.interp-list{display:flex;flex-direction:column;gap:12px}.interp-item{border:1px solid var(--line);border-radius:10px;background:#fff;overflow:hidden;transition:box-shadow .12s,border-color .12s}.interp-item:hover{border-color:#c5d9f5;box-shadow:0 2px 8px #2b6fd60f}.interp-item .interp-hd{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;background:#fafbfc;border-bottom:1px solid var(--line-2)}.interp-item .interp-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-width:0}.interp-item .idx{flex:none;width:24px;height:24px;border-radius:7px;background:var(--brand-light);color:var(--brand);font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center}.interp-item .tag{font-size:13px;font-weight:600;padding:2px 10px;border-radius:6px;line-height:1.5}.interp-item .range{font-size:12.5px;color:var(--text-2);font-family:SFMono-Regular,Consolas,monospace;background:#fff;border:1px solid var(--line-2);padding:2px 10px;border-radius:6px;line-height:1.5}.interp-item .ops{flex:none;display:flex;gap:6px}.interp-item .interp-bd{padding:12px 14px 14px;display:flex;flex-direction:column;gap:10px}.interp-item .interp-block{padding:10px 12px;border-radius:8px;background:#fafbfc;border:1px solid var(--line-2)}.interp-item .interp-block.adv{background:#fffaf5;border-color:#ffe8d6}.interp-item .interp-block .lbl{font-size:12px;font-weight:600;color:var(--text-3);margin-bottom:6px;display:flex;align-items:center;gap:5px}.interp-item .interp-block .lbl:before{content:"";width:3px;height:12px;border-radius:2px;background:var(--brand);flex:none}.interp-item .interp-block.adv .lbl:before{background:#f79009}.interp-item .interp-block .txt{font-size:13px;color:var(--text-2);line-height:1.65;word-break:break-word;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.interp-empty{padding:28px 0;text-align:center;color:var(--text-3);border:1px dashed var(--line);border-radius:8px}.interp-empty .t{font-size:13.5px;color:var(--text-2);margin-bottom:4px}.interp-empty .s{font-size:12.5px}.score-range-row{display:flex;align-items:center;gap:8px}.score-range-row .select{flex:none;width:108px}.score-range-row .input{flex:1;min-width:0}.score-range-row .dash{flex:none;color:var(--text-3);font-size:13px}.interp-quick{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.interp-quick .qk{height:26px;padding:0 10px;border-radius:13px;border:1px solid var(--line);background:#fff;font-size:12.5px;color:var(--text-2);transition:all .14s}.interp-quick .qk:hover{border-color:var(--brand);color:var(--brand);background:var(--brand-soft)}.anchor-nav{display:flex;gap:6px;padding:4px;background:#f2f4f8;border-radius:9px;margin-bottom:16px}.anchor-nav a{flex:1;text-align:center;font-size:13.5px;font-weight:500;color:var(--text-2);padding:8px 12px;border-radius:7px;transition:all .15s;white-space:nowrap}.anchor-nav a:hover{background:#ffffffb3;color:var(--text-1)}.anchor-nav a.on{background:#fff;color:var(--brand);box-shadow:var(--shadow-1)}.sec{background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-1)}.sec+.sec{margin-top:16px}.sec-head{padding:15px 20px;border-bottom:1px solid var(--line-2);display:flex;align-items:center;justify-content:space-between;gap:14px}.sec-head .st{font-size:14.5px;font-weight:600;display:flex;align-items:center;gap:9px}.sec-head .st:before{content:"";width:3px;height:14px;border-radius:2px;background:var(--brand);display:block}.sec-head .sd{font-size:12.5px;color:var(--text-3);margin-top:4px;font-weight:400}.sec-body{padding:20px}.cover-upload{display:flex;gap:16px;align-items:flex-start}.cover-preview{width:150px;height:96px;border-radius:10px;flex:none;position:relative;overflow:hidden;background:linear-gradient(135deg,#5b8bff,#2f6bff);color:#fff;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:600;letter-spacing:1px}.cover-preview.g1{background:linear-gradient(135deg,#5b8bff,#2f6bff)}.cover-preview.g2{background:linear-gradient(135deg,#7c5cff,#5b34e8)}.cover-preview.g3{background:linear-gradient(135deg,#2fc8b0,#12a38c)}.cover-preview.g4{background:linear-gradient(135deg,#ffa53d,#f5751d)}.cover-preview.g5{background:linear-gradient(135deg,#ff7a8a,#f0415c)}.cover-preview.g6{background:linear-gradient(135deg,#4fb8f5,#1b84d6)}.cover-preview.has-cover{background-size:cover;background-position:center;background-repeat:no-repeat;color:transparent}.cover-preview.has-cover .cover-ph{display:none}.cover-preview .mask-tip{position:absolute;top:0;right:0;bottom:0;left:0;background:#1d21298c;color:#fff;font-size:12.5px;display:flex;align-items:center;justify-content:center;gap:5px;opacity:0;transition:opacity .16s;cursor:pointer}.cover-preview:hover .mask-tip{opacity:1}.cover-preview.list-cover-preview{width:96px;height:96px;border-radius:14px}.cover-preview.list-cover-preview .cover-ph{font-size:13px;letter-spacing:0}.cover-preview.list-cover-preview img{width:100%;height:100%;object-fit:cover;display:block}.dropzone{flex:1;min-height:96px;border:1.5px dashed #CBD3E0;border-radius:10px;background:#fbfcfe;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;cursor:pointer;transition:all .16s;text-align:center;padding:14px}.dropzone:hover{border-color:var(--brand);background:var(--brand-soft)}.dropzone .dt{font-size:13.5px;font-weight:500;color:var(--text-2)}.dropzone .ds{font-size:12px;color:var(--text-3)}.banner-list{display:flex;flex-direction:column;gap:12px;padding:16px 18px}.banner-row{display:flex;align-items:center;gap:16px;padding:14px 16px;border:1px solid var(--line-2);border-radius:var(--radius-lg);background:#fff;transition:border-color .16s}.banner-row:hover{border-color:#cbd3e0}.banner-row .thumb{width:120px;height:68px;border-radius:8px;flex:none;overflow:hidden;position:relative;background:linear-gradient(135deg,#5b8bff,#2f6bff);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.banner-row .thumb.has-img{background-size:cover;background-position:center;color:transparent}.banner-row .info{flex:1;min-width:0}.banner-row .info .nm{font-size:14px;font-weight:600;color:var(--text-1);margin-bottom:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.banner-row .info .meta{font-size:12.5px;color:var(--text-3);line-height:1.6}.banner-row .ops{display:flex;align-items:center;gap:8px;flex:none}.banner-link-panel{display:none;margin-top:4px}.banner-link-panel.show{display:block}.banner-preview-wide{width:100%;max-width:360px;height:120px;border-radius:10px;overflow:hidden;position:relative;background:linear-gradient(135deg,#5b8bff,#2f6bff);color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600}.banner-preview-wide.has-img{background-size:cover;background-position:center;color:transparent}.img-grid{display:flex;flex-wrap:wrap;gap:12px}.img-item{width:112px;height:112px;border-radius:10px;overflow:hidden;position:relative;flex:none;border:1px solid var(--line);background:#f5f7fa}.img-item .im{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:12px}.img-item .del{position:absolute;top:5px;right:5px;width:20px;height:20px;border-radius:5px;background:#1d212999;color:#fff;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s}.img-item:hover .del{opacity:1}.img-add{width:112px;height:112px;border-radius:10px;flex:none;border:1.5px dashed #CBD3E0;background:#fbfcfe;color:var(--text-3);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;font-size:12.5px;transition:all .16s}.img-add:hover{border-color:var(--brand);color:var(--brand);background:var(--brand-soft)}.rt{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;transition:all .16s}.rt:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px #2f6bff1a}.rt-bar{display:flex;align-items:center;gap:1px;padding:5px 8px;background:#fbfcfe;border-bottom:1px solid var(--line-2);flex-wrap:wrap}.rt-bar .rb{width:28px;height:26px;border-radius:5px;display:flex;align-items:center;justify-content:center;color:var(--text-2);font-size:13px;font-weight:600}.rt-bar .rb:hover{background:#edf0f5;color:var(--text-1)}.rt-bar .rb.on{background:var(--brand-light);color:var(--brand)}.rt-bar .rsp{width:1px;height:15px;background:var(--line);margin:0 5px}.rt-area{width:100%;border:none;padding:11px 13px;resize:vertical;line-height:1.7;min-height:88px;font-family:inherit;font-size:14px;color:var(--text-1)}.rt-area:focus{outline:none}.rt-area::placeholder{color:var(--text-4)}.rt-count{font-size:12px;color:var(--text-3);text-align:right;padding:5px 10px;background:#fbfcfe;border-top:1px solid var(--line-2)}.sub-foot{max-width:1180px;margin:16px auto 0;background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-1);padding:13px 24px;display:flex;align-items:center;gap:12px}.sub-foot .hint{font-size:12.5px;color:var(--text-3)}.sub-foot .spacer{flex:1}.ph{width:100%;height:100%;position:relative;overflow:hidden}.ph:before,.ph:after{content:"";position:absolute}.ph.a{background:linear-gradient(135deg,#5b8bff,#2f6bff)}.ph.a:before{width:70%;height:70%;left:15%;top:55%;background:linear-gradient(180deg,#bfd4ff,#7ba6ff);border-radius:50% 50% 12% 12%}.ph.a:after{width:22px;height:22px;right:18%;top:20%;background:#ffe08a;border-radius:50%}.ph.b{background:linear-gradient(135deg,#7c5cff,#5b34e8)}.ph.b:before{width:60%;height:60%;left:20%;top:40%;background:linear-gradient(180deg,#d6c8ff,#9c7bff);border-radius:16px;transform:rotate(12deg)}.ph.b:after{width:34px;height:34px;left:12%;top:14%;background:#ffc4a8;border-radius:50%}.ph.c{background:linear-gradient(135deg,#2fc8b0,#12a38c)}.ph.c:before{width:80%;height:44%;left:10%;bottom:-8%;background:linear-gradient(180deg,#a8efe2,#4fcfb8);border-radius:50% 50% 0 0}.ph.c:after{width:26px;height:26px;right:16%;top:18%;background:#fff2b0;border-radius:50%}.ph.d{background:linear-gradient(135deg,#ffa53d,#f5751d)}.ph.d:before{width:56%;height:56%;left:22%;top:44%;background:linear-gradient(180deg,#ffe0bc,#ffb259);border-radius:14px}.ph.d:after{width:30px;height:30px;left:16%;top:16%;background:#fff;opacity:.7;border-radius:50%}table.tbl tbody tr{transition:background .12s}table.tbl tbody tr:hover{background:#fafcff}table.tbl tbody tr:last-child td{border-bottom:none}.cell-main{font-weight:500;color:var(--text-1)}.cell-main:hover{color:var(--brand);cursor:pointer}.cell-desc{font-size:12.5px;color:var(--text-3);margin-top:3px;max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cell-code{font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:12.5px;color:var(--text-2);background:#f5f7fa;padding:2px 7px;border-radius:4px}.cell-num{font-variant-numeric:tabular-nums;font-weight:500}.ops{display:flex;align-items:center;gap:2px;white-space:nowrap}.ops .sep{width:1px;height:12px;background:var(--line);margin:0 5px}.tbl-empty{padding:64px 20px;text-align:center;color:var(--text-3)}.tbl-empty .ico{width:56px;height:56px;margin:0 auto 14px;border-radius:16px;background:#f5f7fa;display:flex;align-items:center;justify-content:center}.tbl-empty .t{font-size:14px;color:var(--text-2);font-weight:500;margin-bottom:5px}.tbl-empty .s{font-size:13px}.pager{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;gap:16px;flex-wrap:wrap}.pager .info{font-size:13px;color:var(--text-3)}.pager .info b{color:var(--text-1);font-weight:500}.pager .pages{display:flex;align-items:center;gap:5px}.pg{min-width:30px;height:30px;padding:0 8px;border-radius:6px;border:1px solid var(--line);background:#fff;color:var(--text-2);font-size:13px;display:flex;align-items:center;justify-content:center}.pg:hover:not([disabled]):not(.active){border-color:var(--brand);color:var(--brand)}.pg.active{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:500}.pg[disabled]{opacity:.4;cursor:not-allowed}.mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#1d212973;z-index:200;display:none;align-items:flex-start;justify-content:center;padding:20px;overflow-y:auto;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.mask.show{display:flex;animation:fadeIn .18s ease}.mask>.modal{margin:auto 0}.mask.center{align-items:center;padding:20px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes popIn{0%{opacity:0;transform:translateY(-10px) scale(.985)}to{opacity:1;transform:none}}.modal{width:100%;max-width:620px;background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-3);animation:popIn .2s cubic-bezier(.22,1,.36,1)}.modal.wide{max-width:760px}.modal.narrow{max-width:440px}.modal-head{padding:17px 22px;border-bottom:1px solid var(--line-2);display:flex;align-items:center;justify-content:space-between;gap:16px}.modal-head h3{font-size:16px;font-weight:600}.modal-head .close{width:30px;height:30px;border-radius:6px;display:flex;align-items:center;justify-content:center;color:var(--text-3);flex:none}.modal-head .close:hover{background:#f2f3f5;color:var(--text-1)}.modal-body{padding:22px}.modal-foot{padding:15px 22px;border-top:1px solid var(--line-2);display:flex;justify-content:flex-end;gap:10px;background:#fcfdfe;border-radius:0 0 var(--radius-lg) var(--radius-lg)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 18px}.form-grid .span2{grid-column:span 2}.form-note{font-size:12.5px;color:var(--text-3);margin-top:6px}.steps{display:flex;align-items:center;padding:2px 0 20px}.step{display:flex;align-items:center;gap:9px;font-size:13.5px;color:var(--text-3)}.step .n{width:23px;height:23px;border-radius:50%;border:1.5px solid var(--line);background:#fff;display:flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:600;flex:none}.step.on{color:var(--brand);font-weight:500}.step.on .n{background:var(--brand);border-color:var(--brand);color:#fff}.step.done{color:var(--text-2)}.step.done .n{background:var(--ok-bg);border-color:#a6e8b0;color:var(--ok)}.step-line{flex:1;height:1.5px;background:var(--line);margin:0 14px;border-radius:1px}.step-line.done{background:#a6e8b0}.drawer-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#1d212973;z-index:210;display:none;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.drawer-mask.show{display:block;animation:fadeIn .18s ease}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(880px,92vw);background:#fff;z-index:211;display:flex;flex-direction:column;box-shadow:-8px 0 40px #1d212929;transform:translate(100%);transition:transform .26s cubic-bezier(.22,1,.36,1)}.drawer.show{transform:none}.drawer-head{padding:16px 22px;border-bottom:1px solid var(--line-2);display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex:none}.drawer-head h3{font-size:16px;font-weight:600;display:flex;align-items:center;gap:9px;flex-wrap:wrap}.drawer-head .meta{font-size:12.5px;color:var(--text-3);margin-top:6px;display:flex;gap:14px;flex-wrap:wrap}.drawer-head .close{width:30px;height:30px;border-radius:6px;display:flex;align-items:center;justify-content:center;color:var(--text-3);flex:none}.drawer-head .close:hover{background:#f2f3f5;color:var(--text-1)}.drawer-toolbar{padding:12px 22px;border-bottom:1px solid var(--line-2);display:flex;align-items:center;gap:10px;flex-wrap:wrap;flex:none;background:#fcfdfe}.drawer-body{flex:1;overflow-y:auto;padding:18px 22px 28px;background:var(--bg-page)}.drawer-foot{padding:14px 22px;border-top:1px solid var(--line-2);display:flex;align-items:center;justify-content:space-between;gap:12px;flex:none;background:#fff}.drawer-foot .left{font-size:13px;color:var(--text-3)}.q-list{display:flex;flex-direction:column;gap:12px}.q-item{background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);padding:15px 18px;box-shadow:var(--shadow-1);transition:border-color .15s,box-shadow .15s}.q-item:hover{border-color:#cbd8f5;box-shadow:var(--shadow-2)}.q-item.dragging{opacity:.5}.q-head{display:flex;align-items:flex-start;gap:12px}.q-index{width:26px;height:26px;border-radius:7px;background:var(--brand-light);color:var(--brand);font-size:12.5px;font-weight:600;display:flex;align-items:center;justify-content:center;flex:none;margin-top:1px}.q-main{flex:1;min-width:0}.q-title{font-size:14px;font-weight:500;line-height:1.6;color:var(--text-1)}.q-meta{display:flex;align-items:center;gap:9px;margin-top:9px;flex-wrap:wrap}.q-ops{display:flex;align-items:center;gap:2px;flex:none}.icon-btn{width:28px;height:28px;border-radius:6px;display:flex;align-items:center;justify-content:center;color:var(--text-3)}.icon-btn:hover{background:#f2f3f5;color:var(--text-1)}.icon-btn.danger:hover{background:var(--danger-bg);color:var(--danger)}.icon-btn.drag{cursor:grab}.q-opts{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;padding-left:38px}.q-opt{display:inline-flex;align-items:center;gap:7px;padding:6px 12px;border-radius:7px;background:#f7f9fc;border:1px solid var(--line-2);font-size:13px;color:var(--text-2)}.q-opt.right{background:var(--ok-bg);border-color:#a6e8b0;color:#0a8a22;font-weight:500}.q-opt .k{width:17px;height:17px;border-radius:50%;background:#fff;border:1px solid var(--line);font-size:11px;font-weight:600;display:flex;align-items:center;justify-content:center;flex:none;color:var(--text-2)}.q-opt.right .k{background:var(--ok);border-color:var(--ok);color:#fff}.q-opt .sc{font-size:12px;color:var(--text-3);margin-left:2px}.q-opt.right .sc{color:#0a8a22}.qm-panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-1);overflow:hidden}.qm-toolbar{padding:16px 20px;border-bottom:1px solid var(--line-2);display:flex;justify-content:flex-end}.qm-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:18px 20px;border-bottom:1px solid var(--line-2);transition:background .12s}.qm-row:hover{background:#fafcff}.qm-row:last-child{border-bottom:none}.qm-row .main{flex:1;min-width:0}.qm-row .title{font-size:14.5px;font-weight:600;line-height:1.65;color:var(--text-1);margin-bottom:8px}.qm-row .opt{font-size:14px;color:var(--text-2);line-height:1.85}.qm-row .opt .sc{margin-left:10px;font-size:12.5px;color:var(--text-3)}.qm-row .title .q-thumb,.qm-row .opt .opt-thumb{height:30px;max-width:120px;object-fit:cover;border-radius:6px;border:1px solid var(--line);vertical-align:middle;background:#fafbfc;display:inline-block}.qm-row .title .q-thumb{margin-left:8px}.qm-row .opt .opt-thumb{margin-left:8px;cursor:pointer}.qm-row .ops{display:flex;gap:10px;flex:none;padding-top:2px}.qm-row .ops .btn-outline{height:32px;padding:0 16px;border-radius:6px;font-size:13.5px;font-weight:500;background:#fff}.qm-row .ops .btn-edit{color:var(--brand);border:1px solid var(--brand)}.qm-row .ops .btn-edit:hover{background:var(--brand-soft)}.qm-row .ops .btn-del{color:var(--danger);border:1px solid #FFB8B8}.qm-row .ops .btn-del:hover{background:var(--danger-bg)}.qm-pager{padding:14px 20px;display:flex;align-items:center;justify-content:flex-end;gap:14px;border-top:1px solid var(--line-2);font-size:13px;color:var(--text-3)}.qm-pager .pages{display:flex;align-items:center;gap:5px}.qm-empty{padding:64px 20px;text-align:center;color:var(--text-3)}.qm-empty .t{font-size:14px;color:var(--text-2);margin-bottom:6px}.qm-empty .s{font-size:13px}.qopt-list{margin-top:4px}.qopt-row{margin-bottom:16px}.qopt-head{display:flex;align-items:center;gap:8px}.qopt-key{width:28px;height:28px;border:1px solid var(--line);border-radius:6px;background:#fafbfc;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:13px;flex:none;color:var(--text-2)}.qopt-head .input{flex:1;height:36px}.qopt-score{display:flex;align-items:center;gap:6px;flex:none;font-size:13px;color:var(--text-2)}.qopt-score .input{width:72px;height:36px;text-align:center}.qopt-del{width:22px;height:22px;border-radius:50%;border:1px solid #FFB8B8;color:var(--danger);background:#fff;display:flex;align-items:center;justify-content:center;flex:none;transition:all .14s}.qopt-del:hover{background:var(--danger-bg)}.qopt-img{margin-left:36px;margin-top:6px}.link-add{color:var(--danger);font-size:13px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;background:none;border:none;padding:0;font-weight:500}.link-add:hover{text-decoration:underline}.qimg-preview{margin-top:10px;display:inline-flex;align-items:flex-start;gap:10px}.qimg-preview img{max-height:120px;max-width:320px;border-radius:8px;border:1px solid var(--line);display:block;object-fit:contain;background:#fafbfc}.qimg-preview .qimg-del{display:inline-flex;align-items:center;gap:4px;font-size:12.5px;color:var(--danger);text-decoration:none;cursor:pointer}.qimg-preview .qimg-del:hover{text-decoration:underline}.qopt-img{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.qopt-img-pv{display:inline-flex;align-items:center;gap:6px}.qopt-img-pv img{height:28px;border-radius:6px;border:1px solid var(--line);display:block;background:#fafbfc}.qopt-img-pv a{font-size:12.5px;color:var(--text-3);text-decoration:none;cursor:pointer}.qopt-img-pv a:hover{color:var(--danger)}.btn-add-opt{width:100%;height:40px;border:1px dashed #FFB8B8;border-radius:8px;color:var(--danger);background:snow;display:flex;align-items:center;justify-content:center;gap:6px;margin-top:4px;font-size:14px;font-weight:500;transition:all .14s}.btn-add-opt:hover{background:#fff0f0;border-color:var(--danger)}.radio-group{display:flex;gap:22px;padding-top:2px}.radio-item{display:inline-flex;align-items:center;gap:7px;cursor:pointer;font-size:14px;color:var(--text-1);-webkit-user-select:none;user-select:none}.radio-item input{display:none}.radio-item .dot{width:16px;height:16px;border:2px solid #C9CDD4;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:all .14s}.radio-item input:checked+.dot{border-color:var(--danger)}.radio-item input:checked+.dot:after{content:"";width:8px;height:8px;border-radius:50%;background:var(--danger)}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff;box-shadow:0 2px 6px #f53f3f38}.btn-danger:hover{background:#e03636;border-color:#e03636}.cat-grid{display:grid;grid-template-columns:minmax(300px,1fr) 2fr;gap:16px;align-items:start}.cat-tree{padding:8px}.cat-node{display:flex;align-items:center;gap:9px;height:38px;padding:0 11px;border-radius:var(--radius);font-size:13.5px;color:var(--text-2);cursor:pointer;transition:all .13s}.cat-node:hover{background:#f5f7fa;color:var(--text-1)}.cat-node.active{background:var(--brand-light);color:var(--brand);font-weight:500}.cat-node .arrow{width:14px;color:var(--text-4);flex:none;display:flex;transition:transform .18s}.cat-node .arrow.open{transform:rotate(90deg)}.cat-node .cname{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cat-node .cnum{font-size:12px;color:var(--text-3)}.cat-node.active .cnum{color:var(--brand)}.cat-children{padding-left:22px}.cat-detail-head{padding:16px 20px;border-bottom:1px solid var(--line-2);display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.cat-detail-head .t{font-size:15px;font-weight:600;display:flex;align-items:center;gap:9px}.tpl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:16px}.tpl-card{border:1px solid var(--line);border-radius:10px;background:#fff;overflow:hidden;display:flex;flex-direction:column;transition:box-shadow .16s,border-color .16s}.tpl-card:hover{border-color:#c9d3e0;box-shadow:0 4px 16px #1d212912}.tpl-card.is-off{background:#fbfcfd}.tpl-card.is-off .tpl-formula{opacity:.55}.tpl-head{display:flex;align-items:flex-start;gap:11px;padding:15px 17px 13px;border-bottom:1px solid var(--line-2)}.tpl-ic{flex:none;width:34px;height:34px;border-radius:8px;display:flex;align-items:center;justify-content:center;background:var(--brand-light);color:var(--brand)}.tpl-ic.purple{background:#f3effc;color:#7c5cd6}.tpl-tt{flex:1;min-width:0}.tpl-tt .n{font-size:14.5px;font-weight:600;color:var(--text-1);display:flex;align-items:center;gap:7px;flex-wrap:wrap}.tpl-tt .c{font-size:12px;color:var(--text-3);margin-top:3px;font-family:ui-monospace,Menlo,Consolas,monospace}.tpl-formula{padding:14px 17px;background:#f8fafc;border-bottom:1px solid var(--line-2);font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13px;color:var(--text-1);line-height:1.7;word-break:break-all}.tpl-formula .k{color:var(--brand);font-weight:600}.tpl-formula .dim{color:var(--text-3)}.tpl-body{padding:13px 17px;display:flex;flex-direction:column;gap:9px;flex:1}.tpl-row{display:flex;align-items:center;gap:8px;font-size:13px}.tpl-row .lb{color:var(--text-3);flex:none;width:76px}.tpl-row .vl{color:var(--text-1)}.tpl-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 17px;border-top:1px solid var(--line-2);background:#fcfdfe}.tpl-foot .used{font-size:12.5px;color:var(--text-3)}.tpl-foot .acts{display:flex;gap:7px}#toasts{position:fixed;top:20px;left:50%;transform:translate(-50%);z-index:400;display:flex;flex-direction:column;gap:10px;align-items:center}.toast{display:flex;align-items:center;gap:9px;padding:11px 17px;border-radius:var(--radius);background:#fff;box-shadow:0 6px 24px #1d212924,0 1px 3px #1d21290f;font-size:13.5px;font-weight:500;border:1px solid var(--line);animation:toastIn .24s cubic-bezier(.22,1,.36,1)}@keyframes toastIn{0%{opacity:0;transform:translateY(-14px)}to{opacity:1;transform:none}}.toast.hide{animation:toastOut .2s ease forwards}@keyframes toastOut{to{opacity:0;transform:translateY(-10px)}}.toast .ti{width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex:none}.toast.ok .ti{background:var(--ok-bg);color:var(--ok)}.toast.err .ti{background:var(--danger-bg);color:var(--danger)}.toast.info .ti{background:var(--brand-light);color:var(--brand)}.proto-badge{position:fixed;right:18px;bottom:18px;z-index:150;background:#1d2129db;color:#fff;font-size:12px;padding:7px 12px;border-radius:20px;display:flex;align-items:center;gap:7px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);font-weight:500}.proto-badge .d{width:6px;height:6px;border-radius:50%;background:#4ade80;box-shadow:0 0 0 3px #4ade8040}.cover-preview .cover-del{position:absolute;top:6px;right:6px;z-index:3;width:22px;height:22px;border-radius:6px;background:#1d21299e;color:#fff;display:flex;align-items:center;justify-content:center;transition:background .15s}.cover-preview .cover-del:hover{background:var(--danger)}.upload-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:8px;font-size:12.5px;color:var(--text-3)}.upload-foot .uf-tip{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-foot .uf-del{flex:none;display:inline-flex;align-items:center;gap:4px;color:var(--danger);font-weight:500;text-decoration:none}.upload-foot .uf-del:hover{text-decoration:underline}.attach-dropzone{min-height:74px;flex-direction:row;gap:12px;align-items:center;justify-content:flex-start;text-align:left}.attach-dropzone .attach-tx{text-align:left}.attach-list{list-style:none;margin:10px 0 0;padding:0}.attach-list li{display:flex;align-items:center;gap:8px;padding:8px 10px;margin-bottom:8px;border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-head);font-size:13px;color:var(--text-2)}.attach-list li:last-child{margin-bottom:0}.attach-list .af-ico{display:flex;flex:none;color:var(--text-3)}.attach-list .af-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--brand);text-decoration:none}.attach-list .af-name:hover{text-decoration:underline}.attach-list .af-size{flex:none;font-size:12px;color:var(--text-3);font-variant-numeric:tabular-nums}.attach-list .af-del{flex:none;width:22px;height:22px;border-radius:50%;border:1px solid #FFB8B8;color:var(--danger);background:#fff;display:flex;align-items:center;justify-content:center;transition:all .14s}.attach-list .af-del:hover{background:var(--danger-bg)}.qopt-del:disabled{opacity:.35;cursor:not-allowed}.qopt-del:disabled:hover{background:#fff}@media (max-width:1180px){.login-left{padding:40px}.login-copy h1{font-size:28px}.stats{grid-template-columns:repeat(2,1fr)}.cat-grid{grid-template-columns:1fr}}@media (max-width:900px){#page-login{flex-direction:column}.login-left{min-height:230px;padding:32px}.login-feats,.login-copy p{display:none}.login-right{width:100%;padding:36px 24px 48px}.sider{display:none}.topbar .logo-area{width:auto;border-right:none}.form-grid{grid-template-columns:1fr}.form-grid .span2{grid-column:auto}}#app{min-height:100vh}#page-admin.active{display:flex}.fade-enter-active,.fade-leave-active{transition:opacity .16s ease}.fade-enter-from,.fade-leave-to{opacity:0}.sider-main::-webkit-scrollbar,.main::-webkit-scrollbar,.modal-body::-webkit-scrollbar,.drawer-body::-webkit-scrollbar{width:6px;height:6px}.sider-main::-webkit-scrollbar-thumb,.main::-webkit-scrollbar-thumb,.modal-body::-webkit-scrollbar-thumb,.drawer-body::-webkit-scrollbar-thumb{background:#d8dde6;border-radius:6px}.tbl-loading{padding:48px 0;text-align:center;color:var(--text-3);font-size:13px}.ml8{margin-left:8px}.mr8{margin-right:8px}.gap8{gap:8px}.flex{display:flex;align-items:center}.flex-between{display:flex;align-items:center;justify-content:space-between}.text-3{color:var(--text-3)}.nowrap{white-space:nowrap}
