*{box-sizing:border-box}html,body{min-width:1180px}body{margin:0;font-family:Inter,"PingFang SC","Microsoft YaHei",sans-serif;background:#f4f7fb;color:#172033}.hidden{display:none!important}button,input,select,textarea{font-family:inherit}.app{min-height:100vh;padding-left:232px}aside{background:#102139;color:#fff;padding:24px 14px 20px;display:flex;flex-direction:column;position:fixed;z-index:10;top:0;left:0;bottom:0;width:232px}.brand{display:flex;align-items:center;gap:10px;padding:3px 8px 25px}.brand span,.brand-mark{background:#2f78ee;border-radius:10px;font-weight:800;padding:8px 9px}.brand strong{font-size:17px}nav{display:flex;flex-direction:column;gap:6px}nav button{border:0;background:transparent;color:#b9c6d7;text-align:left;padding:13px 13px;border-radius:9px;font-size:14px;cursor:pointer;transition:.15s}nav button:hover,nav button.active{background:#1d3858;color:#fff}nav button.disabled{opacity:.52;cursor:not-allowed}nav small{float:right;background:#294966;padding:2px 6px;border-radius:8px}.server-card{margin-top:auto;border-top:1px solid #28425f;padding:17px 7px 3px;display:flex;gap:10px;align-items:center}.server-card .dot{width:9px;height:9px;border-radius:50%;background:#45cf89}.server-card strong,.server-card span{display:block}.server-card strong{font-size:12px}.server-card span{font-size:11px;color:#8499b0;margin-top:3px}main{padding:26px 28px 44px;width:calc(100vw - 232px);max-width:none}header{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:17px}.header-copy{min-width:0}h1{font-size:24px;margin:0 0 5px}header p{margin:0;color:#788699;font-size:13px}.header-actions{display:flex;align-items:center;gap:10px;flex:0 0 auto}.rules-btn{border:1px solid #d7e0eb;background:#fff;color:#365473;border-radius:10px;padding:10px 12px;font-weight:700;font-size:12px;cursor:pointer}.rules-btn:hover{border-color:#87ace6;color:#1d67d7;background:#f8fbff}.model-box{background:#fff;border:1px solid #dfe6ef;border-radius:12px;padding:7px 9px;display:flex;align-items:flex-end;gap:8px;box-shadow:0 2px 10px rgba(25,45,75,.03)}.model-field{display:flex;flex-direction:column;gap:4px}.model-field label{font-size:10px;color:#7d8997}.model-field select{border:0;background:#f0f4fa;padding:8px 9px;border-radius:8px;font-weight:650;min-width:205px;outline:none;font-size:12px}.model-field.small select{min-width:125px}.status-pill{font-size:10px;padding:4px 7px;border-radius:9px;background:#eef2f7;color:#788493;margin-bottom:6px}.status-pill.ok{background:#e8f8ef;color:#168a4f}.status-pill.warn{background:#fff4de;color:#a56a00}.workspace-grid{display:grid;grid-template-columns:minmax(440px,.93fr) minmax(520px,1.07fr);gap:16px;align-items:stretch}.card{background:#fff;border:1px solid #dfe6ef;border-radius:14px;padding:18px;box-shadow:0 3px 14px rgba(25,45,75,.035)}.product-card,.data-card{min-height:500px}.step-head{display:flex;align-items:flex-start;gap:11px;margin-bottom:12px}.step-head>span{display:grid;place-items:center;width:30px;height:30px;flex:0 0 30px;border-radius:50%;background:#2877ef;color:#fff;font-weight:800}.step-head h3,.result-head h3{font-size:16px;margin:1px 0 3px}.step-head p,.result-head p{font-size:12px;color:#8490a0;margin:0;line-height:1.45}.field-label{display:block;font-size:13px;font-weight:700;margin:13px 0 7px}.field-note{font-size:11px;color:#8a96a5;margin-top:6px}.upload-zone{border:1.5px dashed #b9c6d6;border-radius:11px;padding:22px;text-align:center;position:relative;background:#fbfcfe;transition:.15s}.upload-zone:hover{border-color:#6b9fed;background:#f8fbff}.upload-zone.compact{padding:24px}.upload-zone input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}.upload-zone strong,.upload-zone span{display:block}.upload-zone strong{font-size:14px}.upload-zone span{font-size:11px;color:#8a96a5;margin-top:5px}textarea{width:100%;resize:vertical;min-height:88px;border:1px solid #d8e0e9;border-radius:10px;padding:11px 12px;line-height:1.55;font:inherit;font-size:13px;outline:none}textarea:focus,.field-select:focus{border-color:#4a88ef;box-shadow:0 0 0 3px rgba(74,136,239,.1)}.file-name{font-size:12px;color:#3970bd;margin-top:7px;min-height:17px}.field-row{display:grid;grid-template-columns:1fr;gap:12px}.field-select{width:100%;border:1px solid #d8e0e9;border-radius:10px;padding:10px 11px;background:#fff;font:inherit;font-size:13px;outline:none}.primary{border:0;background:#2d76e8;color:#fff;border-radius:9px;padding:10px 17px;font-weight:700;cursor:pointer}.primary:hover{background:#2468cf}.primary:disabled{opacity:.6;cursor:wait}.primary.full{width:100%;margin-top:15px;padding:12px}.action{width:100%;font-size:14px;padding:12px;margin-top:16px}.ghost{border:1px solid #d5dee8;background:#fff;border-radius:8px;padding:8px 11px;cursor:pointer;color:#405165}.ghost:hover{border-color:#9eb8d7;background:#f9fbfd}.danger-soft{color:#b34848}.results{margin-top:16px;min-height:250px}.result-head{display:flex;align-items:center;justify-content:space-between;padding-bottom:12px;border-bottom:1px solid #eef1f5;margin-bottom:13px}.empty{text-align:center;color:#96a1af;padding:62px 0}.progress{margin-top:11px;display:flex;align-items:center;gap:9px;color:#50709a;font-size:12px}.progress span{width:15px;height:15px;border:2px solid #c9d8ea;border-top-color:#3478e5;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
/* 图片逐张添加 */
.image-picker-box{display:flex;align-items:flex-start;gap:9px;min-height:92px;flex-wrap:wrap}.add-image-tile{width:86px;height:86px;border:1.5px dashed #aebed1;background:#fbfcfe;border-radius:10px;color:#4c6581;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;transition:.15s}.add-image-tile:hover{border-color:#4f8cea;background:#f5f9ff;color:#2168d0}.add-image-tile span{font-size:24px;line-height:20px}.add-image-tile b{font-size:12px;margin-top:5px}.add-image-tile small{font-size:9px;color:#96a2af;margin-top:3px}.image-preview{display:flex;gap:9px;flex-wrap:wrap}.image-thumb{width:86px;height:86px;border:1px solid #dce4ee;border-radius:10px;position:relative;background:#f7f9fc;overflow:hidden}.image-thumb img{width:100%;height:100%;object-fit:cover;display:block}.image-remove{position:absolute;left:5px;top:5px;width:23px;height:23px;border:0;border-radius:50%;background:rgba(18,31,49,.82);color:#fff;font-size:17px;line-height:21px;cursor:pointer;display:grid;place-items:center;box-shadow:0 2px 8px rgba(0,0,0,.15)}.image-remove:hover{background:#c63f3f}.image-thumb>span{position:absolute;right:5px;bottom:5px;background:rgba(255,255,255,.9);color:#405268;font-size:9px;padding:2px 5px;border-radius:8px}
/* 结果 */
.model-notice{display:flex;align-items:center;gap:7px;flex-wrap:wrap;background:#f4f8ff;border-left:4px solid #397fe8;border-radius:8px;padding:9px 12px;margin-bottom:12px;font-size:12px;color:#53677f}.model-notice b{color:#223d5d}.model-notice i{width:1px;height:14px;background:#cad7e8;display:inline-block}.understanding{background:#f8fbff;border:1px solid #dce8f8;border-radius:11px;padding:13px;margin-bottom:12px}.understanding-title{font-weight:800;margin-bottom:10px;color:#245d9e;font-size:14px}.understanding-grid{display:grid;grid-template-columns:1.1fr 1fr 1fr 1.15fr;gap:9px}.understanding-grid>div{background:#fff;border:1px solid #e8edf4;border-radius:9px;padding:10px;min-width:0;max-height:170px;overflow:auto}.understanding-grid b{font-size:11px;color:#5d6e82}.understanding-grid p,.understanding-grid ul{margin:6px 0 0;font-size:12px;line-height:1.5}.understanding-grid ul{padding-left:17px}.tags{margin-top:7px;display:flex;flex-wrap:wrap;gap:5px}.tag{background:#edf4ff;color:#356aa7;border-radius:7px;padding:3px 6px;font-size:10px}.insight-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-bottom:11px}.insight-card{border:1px solid #e4eaf1;border-radius:10px;padding:10px 12px;display:flex;justify-content:space-between;align-items:center;background:#fff}.insight-card span{font-size:11px;color:#718093}.insight-card b{font-size:21px}.insight-card.danger b{color:#c84949}.insight-card.warn b{color:#b27a12}.insight-card.success b{color:#218755}.insight-card.neutral b{color:#4e6f96}.summary-short{background:#fffdf7;border:1px solid #f0e5c7;border-radius:10px;padding:10px 12px;margin-bottom:12px}.summary-short>b{font-size:12px;color:#705822}.summary-short p{font-size:12px;line-height:1.55;margin:5px 0 0;color:#4e5661}.result-toolbar{display:flex;justify-content:space-between;align-items:center;margin:10px 0 9px}.filter-tabs{display:flex;gap:6px}.filter-tabs button{border:1px solid #dbe3ed;background:#fff;border-radius:8px;padding:7px 10px;font-size:11px;cursor:pointer;color:#5f6f82}.filter-tabs button.active{background:#2d76e8;border-color:#2d76e8;color:#fff}.filter-note{font-size:11px;color:#8b96a4}.table-wrap{overflow:auto;max-width:100%;border:1px solid #e7ebf0;border-radius:10px}.result-table{width:100%;border-collapse:separate;border-spacing:0;font-size:12px}.compact-table{min-width:1060px}.result-table th,.result-table td{border-bottom:1px solid #edf0f4;padding:9px 8px;text-align:left;vertical-align:top;background:#fff}.result-table th{position:sticky;top:0;z-index:2;background:#f7f9fc;color:#526173;font-weight:750;white-space:nowrap}.result-table tr:last-child td{border-bottom:0}.term-cell{min-width:190px;max-width:260px}.term-cell b{display:block;font-size:12px;word-break:break-word}.term-cell small{display:block;margin-top:4px;color:#8a95a3;line-height:1.35}.reason-cell{min-width:240px;max-width:360px;line-height:1.45;color:#48596e}.no-rows{text-align:center!important;padding:32px!important;color:#8c98a6}.badge{display:inline-block;padding:3px 7px;border-radius:7px;font-size:11px;font-weight:750;white-space:nowrap}.badge.red{background:#ffe9e9;color:#bd3131}.badge.yellow{background:#fff3d8;color:#a96d00}.badge.green{background:#e8f7ee;color:#198654}.badge.gray{background:#eef1f5;color:#657180}.rel{display:inline-block;padding:2px 6px;border-radius:6px;font-size:10px}.rel-high{background:#e8f7ee;color:#198654}.rel-low{background:#ffeaea;color:#b83b3b}.rel-mid{background:#fff4da;color:#a56a00}.listing-block{display:grid;grid-template-columns:1fr 1fr;gap:11px}.listing-item{border:1px solid #e5ebf1;border-radius:10px;padding:12px;min-width:0}.listing-item.wide{grid-column:span 2}.listing-item b{display:block;margin-bottom:6px}.listing-item pre{white-space:pre-wrap;margin:0;font-family:inherit;line-height:1.6;font-size:13px}
/* 桌面登录 */
.login{position:fixed;inset:0;background:#edf2f8;z-index:30;padding:26px}.login-shell{width:min(1160px,calc(100vw - 52px));height:min(720px,calc(100vh - 52px));min-height:620px;margin:auto;display:grid;grid-template-columns:1.08fr .92fr;background:#fff;border-radius:22px;overflow:hidden;box-shadow:0 24px 80px rgba(24,48,78,.14);border:1px solid #dde5ee}.login-hero{background:linear-gradient(145deg,#0f2037 0%,#173a61 62%,#255b91 100%);color:#fff;padding:34px 42px;display:flex;flex-direction:column;position:relative;overflow:hidden}.login-hero:after{content:"";position:absolute;width:420px;height:420px;border-radius:50%;border:80px solid rgba(255,255,255,.035);right:-170px;bottom:-170px}.login-brand{display:flex;align-items:center;gap:10px;font-size:17px}.login-brand span{background:#2f78ee;border-radius:10px;padding:8px 9px;font-weight:800}.login-hero-copy{margin:auto 0;max-width:520px;position:relative;z-index:1}.eyebrow{font-size:10px;letter-spacing:.16em;font-weight:800;color:#78a9e8;margin-bottom:13px}.login-hero h1{font-size:38px;line-height:1.25;margin:0 0 18px}.login-hero p{font-size:14px;line-height:1.75;color:#c0d0e3;max-width:500px}.login-feature-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:28px}.login-feature-grid>div{border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.055);border-radius:12px;padding:12px 14px}.login-feature-grid b,.login-feature-grid span{display:block}.login-feature-grid b{font-size:12px}.login-feature-grid span{font-size:10px;color:#afc3d9;margin-top:4px}.login-foot{font-size:10px;color:#7794b4;position:relative;z-index:1}.login-panel{display:grid;place-items:center;background:#fff}.login-card{width:390px;padding:34px}.login-icon{width:42px;height:42px;border-radius:12px;background:#edf4ff;color:#2f78ee;display:grid;place-items:center;font-weight:900;font-size:20px}.login-card h2{font-size:25px;margin:18px 0 5px}.login-card>p{margin:0 0 24px;color:#8793a1;font-size:13px}.login-card label{display:block;font-size:12px;font-weight:700;margin-bottom:7px}.login-card input{width:100%;padding:13px 14px;border:1px solid #d7dee8;border-radius:10px;font-size:14px;outline:none}.login-card input:focus{border-color:#4a88ef;box-shadow:0 0 0 3px rgba(74,136,239,.1)}.login-safe{text-align:center;font-size:10px;color:#9ca7b4;margin-top:16px}.error{font-size:12px;color:#bb3030;margin-top:8px}
/* 自有弹窗 */
.ui-modal{position:fixed;inset:0;z-index:9999;display:grid;place-items:center}.ui-modal-backdrop{position:absolute;inset:0;background:rgba(16,27,43,.48);backdrop-filter:blur(2px)}.ui-modal-card{position:relative;width:520px;max-height:70vh;background:#fff;border:1px solid #dfe5ec;border-radius:16px;box-shadow:0 24px 80px rgba(15,31,52,.22);padding:22px 22px 18px;display:grid;grid-template-columns:42px 1fr;gap:13px}.ui-modal-icon{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:#fff1e9;color:#c45d1e;font-size:20px;font-weight:900}.ui-modal-copy h3{margin:2px 0 8px;font-size:17px}.ui-modal-message{white-space:pre-wrap;word-break:break-word;color:#4f5d6e;font-size:13px;line-height:1.65;max-height:42vh;overflow:auto}.modal-close{grid-column:2;justify-self:end;margin-top:5px;min-width:92px}.ui-modal.success .ui-modal-icon{background:#e8f8ef;color:#198654}.ui-modal.error .ui-modal-icon{background:#ffecec;color:#c23a3a}
/* 规则抽屉 */
.drawer{position:fixed;inset:0;z-index:9000}.drawer-backdrop{position:absolute;inset:0;background:rgba(15,28,45,.38)}.drawer-panel{position:absolute;right:0;top:0;bottom:0;width:660px;background:#fff;box-shadow:-24px 0 70px rgba(18,39,65,.16);padding:24px;display:flex;flex-direction:column}.drawer-head{display:flex;justify-content:space-between;gap:20px;padding-bottom:16px;border-bottom:1px solid #e9edf2}.drawer-head h2{font-size:20px;margin:0 0 5px}.drawer-head p{font-size:12px;color:#8090a1;margin:0}.icon-btn{border:1px solid #dce3eb;background:#fff;border-radius:9px;width:34px;height:34px;font-size:22px;cursor:pointer;color:#657487}.rules-editor{flex:1;min-height:0;margin:18px 0 12px;resize:none;font-size:13px;line-height:1.7;background:#fbfcfe}.drawer-foot{display:flex;justify-content:space-between;align-items:center;gap:15px}.drawer-foot>span{font-size:11px;color:#8794a2}.drawer-foot>div{display:flex;gap:8px}
/* v0.1.6: search-term coverage + inline Chinese translation */
.coverage-strip{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#f8fafc;border:1px solid #e4eaf1;border-radius:9px;padding:8px 11px;margin:0 0 10px;font-size:11px;color:#69798d}.coverage-strip b{color:#334d69}.coverage-ok{color:#16834d;font-weight:700}.coverage-warn{color:#b34d36;font-weight:700}.term-cell b{display:block;font-size:12px;line-height:1.45}.term-translation{font-weight:500;color:#718197}.term-cell small{display:none}

/* v0.1.9: 图片 @引用 + 只显示否词结果 */
.image-preview{display:contents}
.image-ref{position:absolute;right:5px;bottom:5px;border:0;background:rgba(255,255,255,.94);color:#2468cf;font-size:10px;font-weight:800;padding:3px 7px;border-radius:9px;cursor:pointer;box-shadow:0 1px 5px rgba(18,40,70,.12)}
.image-ref:hover{background:#2d76e8;color:#fff}
.negative-only-head{display:flex;align-items:center;justify-content:space-between;gap:14px;background:#f8fafc;border:1px solid #e4eaf1;border-radius:9px;padding:10px 12px;margin-bottom:10px}
.negative-only-head>div{display:flex;align-items:center;gap:12px}.negative-only-head b{font-size:13px;color:#263f5d}.negative-only-head span{font-size:11px;color:#78889a}
.negative-table{min-width:980px}.negative-table th:nth-child(1){width:24%}.negative-table th:nth-child(2){width:17%}.negative-table th:nth-child(3){width:12%}.negative-table th:nth-child(4){width:16%}.negative-table th:nth-child(5){width:31%}
.translation-cell{color:#61748b;line-height:1.45}.negative-keyword b{font-size:12px;color:#1d4f8f;word-break:break-word}.negative-type{display:inline-block;padding:4px 8px;border-radius:7px;font-size:11px;font-weight:750;white-space:nowrap}.negative-type.phrase{background:#fff0e8;color:#bd571f}.negative-type.exact{background:#ffecec;color:#bd3636}

/* v0.1.10: @ 图片选择器 / 删除按钮 / 否词颜色区分 */
.mention-editor{position:relative}
.mention-note b{color:#276bd4}
.mention-menu{position:absolute;left:8px;right:8px;top:calc(100% + 7px);z-index:30;background:#fff;border:1px solid #d9e2ee;border-radius:12px;box-shadow:0 14px 36px rgba(24,45,74,.17);padding:8px;max-height:228px;overflow:auto}
.mention-menu-title{font-size:10px;font-weight:800;color:#77879a;padding:3px 5px 7px;letter-spacing:.02em}
.mention-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.mention-option{border:1px solid #e3e9f1;background:#fff;border-radius:9px;padding:6px;display:flex;align-items:center;gap:8px;text-align:left;cursor:pointer;min-width:0;transition:.12s}
.mention-option:hover,.mention-option.keyboard-active{border-color:#72a2ed;background:#f4f8ff;box-shadow:0 0 0 2px rgba(74,136,239,.07)}
.mention-option img{width:44px;height:44px;border-radius:7px;object-fit:cover;border:1px solid #e2e7ee;background:#f7f9fb;flex:0 0 44px}
.mention-option span{min-width:0}.mention-option b,.mention-option small{display:block}.mention-option b{font-size:12px;color:#245fae}.mention-option small{font-size:9px;color:#8d99a8;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* 删除按钮固定在图片右上角：更小，叉号严格居中 */
.image-remove{left:auto!important;right:4px!important;top:4px!important;width:20px!important;height:20px!important;padding:0!important;line-height:1!important;display:flex!important;align-items:center!important;justify-content:center!important;font-size:0!important;background:rgba(20,34,52,.82)!important}
.image-remove span{display:block;font-size:14px;line-height:14px;font-weight:500;transform:translateY(-.4px)}
.image-remove:hover{background:#c63f3f!important}

/* 拉开两种否词类型的视觉差异：词组=紫色，精准=红色 */
.negative-type.phrase{background:#f1eaff!important;color:#6f3fc3!important;border:1px solid #d9c7fb}
.negative-type.exact{background:#ffe9e9!important;color:#c12d36!important;border:1px solid #ffc8cc}

/* v0.1.12 — desktop login viewport fit */
.login:not(.hidden){
  display:grid;
  place-items:center;
  padding:28px;
}
.login-shell{
  width:min(1720px,calc(100vw - 56px));
  height:min(920px,calc(100vh - 56px));
  min-height:620px;
  margin:0;
  grid-template-columns:minmax(0,1.08fr) minmax(460px,.92fr);
}
.login-hero{
  padding:clamp(36px,3vw,58px);
}
.login-hero-copy{
  max-width:660px;
}
.login-hero h1{
  font-size:clamp(40px,2.8vw,52px);
  line-height:1.22;
}
.login-hero p{
  font-size:clamp(14px,1vw,17px);
  max-width:620px;
}
.login-feature-grid{
  max-width:620px;
  gap:12px;
}
.login-feature-grid>div{
  padding:14px 16px;
}
.login-feature-grid b{
  font-size:13px;
}
.login-feature-grid span{
  font-size:11px;
}
.login-card{
  width:min(460px,calc(100% - 72px));
  padding:38px 34px;
}
.login-card h2{
  font-size:28px;
}
.login-card input{
  padding:14px 15px;
}
.login-card .primary.full{
  padding:13px 16px;
}
@media (max-height:760px){
  .login:not(.hidden){padding:18px 28px}
  .login-shell{height:calc(100vh - 36px);min-height:0}
  .login-hero{padding:28px 38px}
  .login-hero h1{font-size:38px;margin-bottom:12px}
  .login-hero p{margin:0}
  .login-feature-grid{margin-top:18px}
  .login-card{padding:28px 30px}
}
