1223 lines
32 KiB
CSS
1223 lines
32 KiB
CSS
|
||
:root{
|
||
--bg:#f4f6f8;--panel:#fff;--ink:#17202a;--muted:#667085;--line:#d8dee6;
|
||
--blue:#2457d6;--green:#16794a;--amber:#9a6700;--red:#b42318;--purple:#7a4cc2;
|
||
}
|
||
*{box-sizing:border-box}
|
||
body{margin:0;background:var(--bg);color:var(--ink);font-family:Arial,"Noto Sans CJK JP","Microsoft YaHei",sans-serif}
|
||
button,input,select,textarea{font:inherit}
|
||
button{border:1px solid var(--line);background:#fff;border-radius:7px;padding:7px 11px;cursor:pointer}
|
||
button:hover{background:#f8fafc}
|
||
button.primary{background:var(--blue);border-color:var(--blue);color:#fff}
|
||
button.danger-ghost{color:var(--red)}
|
||
.topbar{display:flex;gap:24px;justify-content:space-between;align-items:flex-end;padding:18px 22px;background:#17202a;color:white}
|
||
.topbar h1{margin:0 0 5px;font-size:22px}
|
||
.topbar p{margin:0;opacity:.8;font-size:13px}
|
||
.progress-wrap{min-width:310px;text-align:right;font-size:12px}
|
||
.progress{height:8px;background:#344054;border-radius:99px;margin-top:7px;overflow:hidden}
|
||
.progress>div{height:100%;width:0;background:#7fd1ae}
|
||
.toolbar{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:10px 18px;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}
|
||
.filter-group,.toolbar-right{display:flex;gap:7px;align-items:center;flex-wrap:wrap}
|
||
.filter-group label{font-size:12px;color:var(--muted);margin-right:2px}
|
||
.filter.active{background:#e8eefc;border-color:#a9bbea;color:#244aa5}
|
||
.layout{display:grid;grid-template-columns:265px minmax(0,1fr);min-height:calc(100vh - 128px)}
|
||
.queue-panel{background:#fff;border-right:1px solid var(--line);min-height:100%;overflow:hidden}
|
||
.queue-head{display:flex;justify-content:space-between;padding:12px 13px;border-bottom:1px solid var(--line);font-size:13px;font-weight:700}
|
||
.queue{max-height:calc(100vh - 180px);overflow:auto;padding:7px}
|
||
.queue-item{display:grid;grid-template-columns:56px 1fr;gap:9px;align-items:center;width:100%;text-align:left;border:1px solid transparent;padding:6px;border-radius:8px;margin-bottom:5px}
|
||
.queue-item:hover{border-color:var(--line)}
|
||
.queue-item.active{border-color:#8fa8e8;background:#eef3ff}
|
||
.queue-thumb{width:56px;height:56px;background:#fff;border:1px solid #e4e7ec;border-radius:6px;display:flex;align-items:center;justify-content:center}
|
||
.queue-thumb img{max-width:50px;max-height:50px}
|
||
.queue-info strong{display:block;font-size:11px;letter-spacing:.3px}
|
||
.queue-info small{display:block;color:var(--muted);font-size:10px;margin-top:3px}
|
||
.queue-status{margin-top:3px;font-size:10px;font-weight:700}
|
||
.review-panel{padding:16px;min-width:0}
|
||
.empty{padding:40px;text-align:center;color:var(--muted)}
|
||
.hidden{display:none!important}
|
||
.comparison{display:grid;grid-template-columns:minmax(320px,.8fr) minmax(480px,1.2fr);gap:14px}
|
||
.cm-card,.std-card,.decision-panel,.audit{background:#fff;border:1px solid var(--line);border-radius:10px}
|
||
.card-title{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:13px 15px;border-bottom:1px solid var(--line)}
|
||
.card-title h2{margin:2px 0 0;font-size:17px}
|
||
.eyebrow{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-size:10px}
|
||
.cm-main{padding:16px}
|
||
.image-stage{display:flex;align-items:center;justify-content:center;background:#fff;border:1px solid #e4e7ec;border-radius:8px;background-image:linear-gradient(45deg,#f4f4f4 25%,transparent 25%),linear-gradient(-45deg,#f4f4f4 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#f4f4f4 75%),linear-gradient(-45deg,transparent 75%,#f4f4f4 75%);background-size:16px 16px;background-position:0 0,0 8px,8px -8px,-8px 0}
|
||
.image-stage.large{height:260px}
|
||
.image-stage.large img{max-width:220px;max-height:220px;image-rendering:auto}
|
||
.meta-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px}
|
||
.meta-grid>div{border:1px solid #eaecf0;border-radius:7px;padding:8px}
|
||
.meta-grid span{display:block;color:var(--muted);font-size:10px}
|
||
.meta-grid b{display:block;margin-top:3px;font-size:12px}
|
||
.suggestion{margin-top:12px;border:1px dashed #b7c6e6;background:#f5f8ff;border-radius:7px;padding:10px;font-size:12px}
|
||
.badge{border-radius:99px;padding:4px 9px;font-size:11px;font-weight:700}
|
||
.badge.neutral{background:#eef2f6;color:#475467}
|
||
.badge.match{background:#e8f7ef;color:var(--green)}
|
||
.badge.partial{background:#fff4d6;color:var(--amber)}
|
||
.badge.ambiguous{background:#f1eafd;color:var(--purple)}
|
||
.badge.unknown{background:#fdecec;color:var(--red)}
|
||
.candidate-grid{padding:12px;display:grid;grid-template-columns:repeat(auto-fill,minmax(145px,1fr));gap:9px;max-height:420px;overflow:auto}
|
||
.candidate{border:1px solid var(--line);border-radius:8px;padding:8px;background:#fff;cursor:pointer}
|
||
.candidate.selected{border:2px solid var(--blue);background:#f5f8ff}
|
||
.candidate-img{height:95px;display:flex;align-items:center;justify-content:center;border-bottom:1px solid #eee;margin-bottom:7px}
|
||
.candidate-img img{max-width:85px;max-height:85px}
|
||
.candidate strong{display:block;font-size:11px;word-break:break-all}
|
||
.candidate small{display:block;color:var(--muted);font-size:10px;margin-top:4px}
|
||
.decision-panel{margin-top:14px;padding-bottom:14px}
|
||
.decision-head{display:flex;justify-content:space-between;align-items:center;padding:13px 15px;border-bottom:1px solid var(--line)}
|
||
.decision-head h3{margin:0}
|
||
.shortcut-hint{font-size:11px;color:var(--muted)}
|
||
.status-buttons{display:flex;gap:8px;padding:12px 15px;border-bottom:1px solid var(--line)}
|
||
.status-btn.active{color:#fff}
|
||
.status-btn.match.active{background:var(--green);border-color:var(--green)}
|
||
.status-btn.partial.active{background:var(--amber);border-color:var(--amber)}
|
||
.status-btn.ambiguous.active{background:var(--purple);border-color:var(--purple)}
|
||
.status-btn.unknown.active{background:var(--red);border-color:var(--red)}
|
||
.decision-form{padding:0 15px}
|
||
.field{margin-top:13px}
|
||
.field>label{display:block;font-size:12px;font-weight:700;margin-bottom:6px}
|
||
.help,.muted{color:var(--muted);font-size:11px}
|
||
.layer-selection{display:flex;flex-wrap:wrap;gap:6px;max-height:140px;overflow:auto}
|
||
.layer-chip{padding:5px 8px;border-radius:99px;font-size:11px}
|
||
.layer-chip.selected{background:#e8eefc;color:#244aa5;border-color:#8fa8e8}
|
||
.selected-std{min-height:32px;border:1px solid #eaecf0;border-radius:7px;padding:8px}
|
||
textarea{width:100%;border:1px solid var(--line);border-radius:7px;padding:8px;resize:vertical}
|
||
.decision-actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
|
||
.message{font-size:12px;margin-top:8px;min-height:18px}
|
||
.message.ok{color:var(--green)}
|
||
.message.err{color:var(--red)}
|
||
.audit{margin-top:14px;padding:11px 14px}
|
||
.audit summary{cursor:pointer;font-size:12px;font-weight:700}
|
||
.audit pre{white-space:pre-wrap;word-break:break-word;background:#f8fafc;border:1px solid #eaecf0;padding:9px;border-radius:7px;max-height:350px;overflow:auto;font-size:11px}
|
||
dialog{width:min(1180px,94vw);height:min(820px,90vh);border:1px solid var(--line);border-radius:12px;padding:0}
|
||
dialog::backdrop{background:rgba(0,0,0,.45)}
|
||
.dialog-head{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:1px solid var(--line);position:sticky;top:0;background:#fff;z-index:2}
|
||
.dialog-head h2{margin:2px 0 0}
|
||
.library-tools{display:flex;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line)}
|
||
.library-tools select,.library-tools input{border:1px solid var(--line);border-radius:7px;padding:8px}
|
||
.library-tools input{flex:1}
|
||
.library-grid{padding:14px;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:9px;overflow:auto;max-height:calc(90vh - 140px)}
|
||
.library-item{border:1px solid var(--line);border-radius:8px;padding:8px;cursor:pointer}
|
||
.library-item:hover{border-color:#8fa8e8}
|
||
.library-item img{display:block;max-width:90px;max-height:90px;margin:0 auto 8px}
|
||
.library-item strong{display:block;font-size:10px;word-break:break-all}
|
||
.library-item small{display:block;color:var(--muted);font-size:10px;margin-top:3px}
|
||
@media(max-width:1000px){
|
||
.layout{grid-template-columns:1fr}.queue-panel{border-right:0;border-bottom:1px solid var(--line)}.queue{display:flex;max-height:120px;overflow-x:auto}.queue-item{min-width:190px}.comparison{grid-template-columns:1fr}.topbar{align-items:flex-start;flex-direction:column}.progress-wrap{width:100%;min-width:0;text-align:left}
|
||
}
|
||
|
||
.official-desc{font-size:11px;color:var(--muted);margin-top:4px;line-height:1.4}.candidate-name{font-size:12px;font-weight:700;margin-bottom:3px}.candidate-code{font-size:9px;color:var(--muted);word-break:break-all}.layer-code{font-size:9px;color:var(--muted)}
|
||
|
||
|
||
/* v2 reviewer layout: 当前对象 + 竖排候选 + 右侧人工确认,禁止主页面纵向滚动 */
|
||
html,body{height:100%}
|
||
body{height:100vh;overflow:hidden;display:flex;flex-direction:column}
|
||
.topbar{flex:0 0 auto;padding:9px 18px;align-items:center}
|
||
.topbar h1{font-size:18px;margin:0 0 2px}
|
||
.topbar p{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:880px}
|
||
.progress-wrap{min-width:300px}
|
||
.toolbar{flex:0 0 auto;position:relative;top:auto;padding:8px 14px}
|
||
.layout{flex:1 1 auto;min-height:0;height:auto;overflow:hidden;grid-template-columns:260px minmax(0,1fr)}
|
||
.queue-panel{height:100%;min-height:0;display:flex;flex-direction:column}
|
||
.queue-head{flex:0 0 auto;padding:9px 12px}
|
||
.queue{flex:1 1 auto;min-height:0;max-height:none;overflow:auto}
|
||
.review-panel{height:100%;min-height:0;overflow:hidden;padding:12px}
|
||
|
||
#reviewContent:not(.hidden){
|
||
height:100%;
|
||
min-height:0;
|
||
display:grid;
|
||
grid-template-columns:minmax(0,1fr) minmax(390px,440px);
|
||
grid-template-rows:minmax(0,1fr) auto;
|
||
grid-template-areas:
|
||
"comparison decision"
|
||
"audit decision";
|
||
gap:12px;
|
||
}
|
||
|
||
.comparison{
|
||
grid-area:comparison;
|
||
min-width:0;
|
||
min-height:0;
|
||
height:100%;
|
||
display:grid;
|
||
grid-template-columns:minmax(340px,1.05fr) minmax(300px,.78fr);
|
||
gap:12px;
|
||
}
|
||
|
||
.cm-card,.std-card{
|
||
min-width:0;
|
||
min-height:0;
|
||
height:100%;
|
||
display:flex;
|
||
flex-direction:column;
|
||
overflow:hidden;
|
||
}
|
||
.card-title{flex:0 0 auto;padding:10px 12px}
|
||
.card-title h2{font-size:16px}
|
||
.cm-main{
|
||
flex:1 1 auto;
|
||
min-height:0;
|
||
overflow:hidden;
|
||
padding:11px;
|
||
display:flex;
|
||
flex-direction:column;
|
||
}
|
||
.image-stage.large{
|
||
flex:1 1 auto;
|
||
min-height:190px;
|
||
height:auto;
|
||
}
|
||
.image-stage.large img{max-width:80%;max-height:80%}
|
||
.meta-grid{flex:0 0 auto;margin-top:8px;gap:6px}
|
||
.meta-grid>div{padding:6px}
|
||
.suggestion{flex:0 0 auto;margin-top:8px;padding:8px;max-height:108px;overflow:auto}
|
||
|
||
/* NavSea 候选改成竖排列表,在自己的面板里滚动 */
|
||
.std-card .candidate-grid{
|
||
flex:1 1 auto;
|
||
min-height:0;
|
||
max-height:none;
|
||
overflow:auto;
|
||
display:grid;
|
||
grid-template-columns:1fr;
|
||
align-content:start;
|
||
gap:7px;
|
||
padding:9px;
|
||
}
|
||
.std-card .candidate{
|
||
display:grid;
|
||
grid-template-columns:88px minmax(0,1fr);
|
||
grid-template-rows:auto auto auto auto;
|
||
column-gap:10px;
|
||
row-gap:2px;
|
||
align-items:center;
|
||
padding:7px;
|
||
}
|
||
.std-card .candidate-img{
|
||
grid-column:1;
|
||
grid-row:1 / span 4;
|
||
width:88px;
|
||
height:78px;
|
||
margin:0;
|
||
padding-right:8px;
|
||
border-bottom:0;
|
||
border-right:1px solid #eee;
|
||
}
|
||
.std-card .candidate-img img{max-width:72px;max-height:68px}
|
||
.std-card .candidate-name,
|
||
.std-card .candidate-code,
|
||
.std-card .candidate small{grid-column:2}
|
||
.std-card .candidate-name{font-size:12px}
|
||
.std-card .candidate-code{font-size:9px}
|
||
|
||
/* 人工判断固定在右侧。Layer 列表内部滚动,保存按钮始终可见 */
|
||
.decision-panel{
|
||
grid-area:decision;
|
||
margin-top:0;
|
||
padding-bottom:0;
|
||
min-width:0;
|
||
min-height:0;
|
||
height:100%;
|
||
overflow:hidden;
|
||
display:flex;
|
||
flex-direction:column;
|
||
}
|
||
.decision-head{flex:0 0 auto;padding:10px 12px}
|
||
.decision-head h3{font-size:16px}
|
||
.shortcut-hint{font-size:10px;text-align:right}
|
||
.status-buttons{
|
||
flex:0 0 auto;
|
||
padding:9px 12px;
|
||
display:grid;
|
||
grid-template-columns:repeat(2,minmax(0,1fr));
|
||
gap:7px;
|
||
}
|
||
.status-buttons .status-btn{width:100%}
|
||
.decision-form{
|
||
flex:1 1 auto;
|
||
min-height:0;
|
||
overflow:hidden;
|
||
padding:0 12px 10px;
|
||
display:flex;
|
||
flex-direction:column;
|
||
}
|
||
.decision-form .field{flex:0 0 auto;margin-top:9px}
|
||
.decision-form .field:first-child{
|
||
flex:1 1 auto;
|
||
min-height:0;
|
||
display:flex;
|
||
flex-direction:column;
|
||
}
|
||
.decision-form .field:first-child .help{flex:0 0 auto;margin-top:5px}
|
||
.layer-selection{
|
||
flex:1 1 auto;
|
||
min-height:0;
|
||
max-height:none;
|
||
overflow:auto;
|
||
align-content:flex-start;
|
||
padding-right:3px;
|
||
}
|
||
.layer-chip{padding:4px 7px;font-size:10px}
|
||
.selected-std{padding:6px;min-height:30px}
|
||
#note{height:52px;min-height:52px;resize:none}
|
||
.decision-actions{
|
||
flex:0 0 auto;
|
||
margin-top:auto;
|
||
padding-top:9px;
|
||
display:grid;
|
||
grid-template-columns:1.15fr .8fr 1fr;
|
||
gap:7px;
|
||
}
|
||
.decision-actions button{padding:8px 7px;font-size:11px}
|
||
.message{flex:0 0 auto;margin-top:5px;min-height:15px}
|
||
|
||
/* 审计区保留在左侧底部,正常不占用确认区 */
|
||
.audit{
|
||
grid-area:audit;
|
||
margin-top:0;
|
||
padding:7px 10px;
|
||
max-height:110px;
|
||
overflow:auto;
|
||
}
|
||
.audit pre{max-height:72px}
|
||
|
||
/* 中等宽度仍保持右侧人工区,压缩候选宽度 */
|
||
@media(max-width:1450px){
|
||
#reviewContent:not(.hidden){grid-template-columns:minmax(0,1fr) 370px}
|
||
.comparison{grid-template-columns:minmax(300px,1fr) minmax(250px,.72fr)}
|
||
.layout{grid-template-columns:230px minmax(0,1fr)}
|
||
}
|
||
|
||
/* 窄屏才退回上下布局 */
|
||
@media(max-width:1000px){
|
||
body{overflow:auto;height:auto;display:block}
|
||
.layout{height:auto;min-height:0;overflow:visible;grid-template-columns:1fr}
|
||
.review-panel{height:auto;overflow:visible}
|
||
#reviewContent:not(.hidden){
|
||
height:auto;
|
||
display:grid;
|
||
grid-template-columns:1fr;
|
||
grid-template-rows:auto;
|
||
grid-template-areas:"comparison" "decision" "audit";
|
||
}
|
||
.comparison{height:auto;grid-template-columns:1fr}
|
||
.cm-card,.std-card,.decision-panel{height:auto}
|
||
.std-card .candidate-grid{max-height:420px}
|
||
}
|
||
|
||
|
||
/* v3 老花友好:左栏收窄、图标放大、关键文字放大 */
|
||
@media(min-width:1001px){
|
||
/* 左边 CM95 内容少,缩窄;把更多宽度让给候选 */
|
||
.comparison{
|
||
grid-template-columns:minmax(285px,.68fr) minmax(410px,1.18fr);
|
||
}
|
||
|
||
/* CM95 当前对象名称与说明放大 */
|
||
.cm-card .card-title h2{
|
||
font-size:20px;
|
||
line-height:1.22;
|
||
font-weight:700;
|
||
}
|
||
.cm-card #anonId{
|
||
font-size:12px;
|
||
margin-top:3px;
|
||
}
|
||
.cm-card .official-desc{
|
||
font-size:13px;
|
||
line-height:1.45;
|
||
margin-top:5px;
|
||
}
|
||
|
||
/* 当前 CM95 主图放大。使用 transform 保持原始比例,不改变布局尺寸 */
|
||
.cm-card .image-stage.large img{
|
||
max-width:56%;
|
||
max-height:56%;
|
||
transform:scale(1.9);
|
||
transform-origin:center;
|
||
}
|
||
|
||
/* 组件/几何/次数也稍放大 */
|
||
.cm-card .meta-grid span{
|
||
font-size:12px;
|
||
}
|
||
.cm-card .meta-grid b{
|
||
font-size:14px;
|
||
}
|
||
|
||
/* 已有视觉建议文字放大 */
|
||
.cm-card .suggestion{
|
||
font-size:14px;
|
||
line-height:1.4;
|
||
}
|
||
.cm-card .suggestion .candidate-name{
|
||
font-size:16px;
|
||
}
|
||
|
||
/* 中间候选卡片图标加大 */
|
||
.std-card .candidate{
|
||
grid-template-columns:112px minmax(0,1fr);
|
||
min-height:104px;
|
||
padding:8px 10px;
|
||
}
|
||
.std-card .candidate-img{
|
||
width:112px;
|
||
height:92px;
|
||
padding-right:10px;
|
||
}
|
||
.std-card .candidate-img img{
|
||
max-width:94px;
|
||
max-height:82px;
|
||
transform:scale(1.28);
|
||
transform-origin:center;
|
||
}
|
||
|
||
/* 候选中文名(用户红框)明显放大 */
|
||
.std-card .candidate-name{
|
||
font-size:16px;
|
||
line-height:1.25;
|
||
font-weight:700;
|
||
}
|
||
.std-card .candidate-code{
|
||
font-size:11px;
|
||
line-height:1.25;
|
||
}
|
||
.std-card .candidate small{
|
||
font-size:12px;
|
||
line-height:1.3;
|
||
}
|
||
|
||
/* 右侧人工判断整体提高可读性 */
|
||
.decision-head h3{
|
||
font-size:19px;
|
||
}
|
||
.status-buttons .status-btn{
|
||
font-size:15px;
|
||
padding:9px 6px;
|
||
}
|
||
|
||
/* “标准 Layer”标题放大 */
|
||
.decision-form .field>label{
|
||
font-size:16px;
|
||
line-height:1.3;
|
||
}
|
||
.decision-form .field:first-child>label{
|
||
font-size:18px;
|
||
font-weight:700;
|
||
margin-bottom:8px;
|
||
}
|
||
|
||
/* Layer 按钮本身也放大 */
|
||
.layer-chip{
|
||
font-size:13px;
|
||
line-height:1.3;
|
||
padding:6px 9px;
|
||
}
|
||
.layer-chip .layer-code,
|
||
.layer-code{
|
||
font-size:10px;
|
||
}
|
||
|
||
.decision-form .help{
|
||
font-size:12px;
|
||
line-height:1.35;
|
||
}
|
||
|
||
/* 已选 Standard Visual Object 也放大 */
|
||
.selected-std{
|
||
font-size:14px;
|
||
line-height:1.35;
|
||
padding:8px;
|
||
}
|
||
.selected-std b{
|
||
font-size:16px;
|
||
}
|
||
|
||
#note{
|
||
font-size:14px;
|
||
}
|
||
|
||
.decision-actions button{
|
||
font-size:13px;
|
||
padding:9px 7px;
|
||
}
|
||
}
|
||
|
||
/* 1900px 左右桌面进一步优化宽度分配 */
|
||
@media(min-width:1600px){
|
||
#reviewContent:not(.hidden){
|
||
grid-template-columns:minmax(0,1fr) minmax(405px,430px);
|
||
}
|
||
.comparison{
|
||
grid-template-columns:minmax(300px,.64fr) minmax(460px,1.22fr);
|
||
}
|
||
}
|
||
|
||
|
||
/* v3.1 老花友好加强:实际图标和 Layer 中文进一步放大 */
|
||
@media(min-width:1001px){
|
||
/* 当前 CM95 图标直接给明确显示盒,避免小 Sprite 仍按原始尺寸显示 */
|
||
.cm-card .image-stage.large img{
|
||
width:clamp(110px,36%,175px);
|
||
height:clamp(110px,36%,175px);
|
||
max-width:none;
|
||
max-height:none;
|
||
object-fit:contain;
|
||
transform:none;
|
||
}
|
||
|
||
/* NavSea 候选图标固定放大,不依赖原始 PNG 尺寸 */
|
||
.std-card .candidate-img img{
|
||
width:78px;
|
||
height:78px;
|
||
max-width:none;
|
||
max-height:none;
|
||
object-fit:contain;
|
||
transform:none;
|
||
}
|
||
|
||
/* 候选中文名再大一档 */
|
||
.std-card .candidate-name{
|
||
font-size:18px;
|
||
line-height:1.28;
|
||
}
|
||
|
||
/* 标准 Layer 标题和中文按钮再放大 */
|
||
.decision-form .field:first-child>label{
|
||
font-size:20px;
|
||
}
|
||
.layer-chip{
|
||
font-size:15px;
|
||
line-height:1.35;
|
||
padding:7px 10px;
|
||
font-weight:600;
|
||
}
|
||
.layer-chip .layer-code,
|
||
.layer-code{
|
||
font-size:10px;
|
||
font-weight:400;
|
||
}
|
||
|
||
/* 左侧 CM95 中文名再加强 */
|
||
.cm-card .card-title h2{
|
||
font-size:22px;
|
||
}
|
||
.cm-card .official-desc{
|
||
font-size:14px;
|
||
}
|
||
}
|
||
|
||
|
||
/* v3.2:视觉候选收窄,右侧 Layer 尽量一次全部显示 */
|
||
@media(min-width:1001px){
|
||
/* 右侧人工判断加宽,优先保证全部 Layer 可见 */
|
||
#reviewContent:not(.hidden){
|
||
grid-template-columns:minmax(0,1fr) minmax(500px,560px);
|
||
}
|
||
|
||
/* 比较区中,视觉候选进一步收窄 */
|
||
.comparison{
|
||
grid-template-columns:minmax(300px,1fr) minmax(315px,360px);
|
||
}
|
||
|
||
/* 候选卡片仍竖排,但整体更紧凑 */
|
||
.std-card .candidate{
|
||
grid-template-columns:96px minmax(0,1fr);
|
||
min-height:96px;
|
||
padding:7px 8px;
|
||
}
|
||
.std-card .candidate-img{
|
||
width:96px;
|
||
height:84px;
|
||
padding-right:8px;
|
||
}
|
||
.std-card .candidate-img img{
|
||
width:72px;
|
||
height:72px;
|
||
}
|
||
.std-card .candidate-name{
|
||
font-size:16px;
|
||
}
|
||
|
||
/* 右侧状态区稍压缩,把高度让给 Layer */
|
||
.decision-head{
|
||
padding:8px 11px;
|
||
}
|
||
.status-buttons{
|
||
padding:7px 10px;
|
||
gap:6px;
|
||
}
|
||
.status-buttons .status-btn{
|
||
padding:7px 5px;
|
||
font-size:14px;
|
||
}
|
||
|
||
/* Layer 区不再优先滚动:允许完整铺开 */
|
||
.decision-form{
|
||
overflow:visible;
|
||
padding:0 10px 9px;
|
||
}
|
||
.decision-form .field:first-child{
|
||
flex:0 0 auto;
|
||
min-height:0;
|
||
display:block;
|
||
}
|
||
.layer-selection{
|
||
flex:0 0 auto;
|
||
max-height:none;
|
||
min-height:0;
|
||
overflow:visible;
|
||
gap:5px;
|
||
padding-right:0;
|
||
}
|
||
.layer-chip{
|
||
font-size:14px;
|
||
line-height:1.25;
|
||
padding:5px 8px;
|
||
}
|
||
.layer-chip .layer-code,
|
||
.layer-code{
|
||
font-size:9px;
|
||
}
|
||
.decision-form .field:first-child .help{
|
||
margin-top:4px;
|
||
font-size:11px;
|
||
}
|
||
|
||
/* 下半部压紧,不抢 Layer 高度 */
|
||
.decision-form .field{
|
||
margin-top:7px;
|
||
}
|
||
.selected-std{
|
||
padding:6px 7px;
|
||
min-height:28px;
|
||
}
|
||
#note{
|
||
height:44px;
|
||
min-height:44px;
|
||
}
|
||
.decision-actions{
|
||
padding-top:7px;
|
||
gap:6px;
|
||
}
|
||
.decision-actions button{
|
||
padding:7px 5px;
|
||
font-size:12px;
|
||
}
|
||
.message{
|
||
min-height:12px;
|
||
margin-top:3px;
|
||
}
|
||
}
|
||
|
||
/* 1600px 以上桌面进一步固定:候选窄、右侧宽 */
|
||
@media(min-width:1600px){
|
||
#reviewContent:not(.hidden){
|
||
grid-template-columns:minmax(0,1fr) 540px;
|
||
}
|
||
.comparison{
|
||
grid-template-columns:minmax(330px,1fr) 350px;
|
||
}
|
||
}
|
||
|
||
|
||
/* v3.3:Standard Visual Object 库老花友好 */
|
||
@media(min-width:1001px){
|
||
dialog{
|
||
width:min(1320px,96vw);
|
||
height:min(900px,94vh);
|
||
}
|
||
|
||
.dialog-head{
|
||
padding:12px 16px;
|
||
}
|
||
.dialog-head h2{
|
||
font-size:22px;
|
||
}
|
||
.dialog-head .eyebrow{
|
||
font-size:11px;
|
||
}
|
||
|
||
.library-tools{
|
||
padding:10px 14px;
|
||
}
|
||
.library-tools select,
|
||
.library-tools input{
|
||
font-size:15px;
|
||
padding:9px 10px;
|
||
}
|
||
|
||
/* 标准库一张卡更大,减少拥挤 */
|
||
.library-grid{
|
||
grid-template-columns:repeat(auto-fill,minmax(190px,1fr));
|
||
gap:12px;
|
||
padding:14px;
|
||
max-height:calc(94vh - 135px);
|
||
}
|
||
|
||
.library-item{
|
||
padding:11px;
|
||
min-height:180px;
|
||
display:flex;
|
||
flex-direction:column;
|
||
justify-content:flex-start;
|
||
}
|
||
|
||
/* 标准库图标明显放大 */
|
||
.library-item img{
|
||
width:108px;
|
||
height:108px;
|
||
max-width:none;
|
||
max-height:none;
|
||
object-fit:contain;
|
||
margin:2px auto 10px;
|
||
}
|
||
|
||
/* 中文对象名作为主文字 */
|
||
.library-item .candidate-name{
|
||
font-size:17px;
|
||
line-height:1.28;
|
||
font-weight:700;
|
||
margin-bottom:5px;
|
||
}
|
||
|
||
/* 资源 key 保留小字 */
|
||
.library-item .candidate-code{
|
||
font-size:11px;
|
||
line-height:1.3;
|
||
margin-bottom:5px;
|
||
}
|
||
|
||
/* 标准 Layer 中文/ID 放大一些 */
|
||
.library-item small{
|
||
font-size:13px;
|
||
line-height:1.35;
|
||
margin-top:4px;
|
||
}
|
||
}
|
||
|
||
|
||
/* v3.4:允许无对应 Standard Visual Object 时仅确认标准 Layer */
|
||
.layer-only-btn{
|
||
margin-top:6px;
|
||
width:100%;
|
||
border-style:dashed;
|
||
font-size:13px;
|
||
padding:7px 8px;
|
||
color:#344054;
|
||
background:#f8fafc;
|
||
}
|
||
.layer-only-btn:hover{
|
||
background:#eef3ff;
|
||
border-color:#8fa8e8;
|
||
color:#244aa5;
|
||
}
|
||
|
||
|
||
/* v3.5:修复 Layer-only 增加后底部人工确认按钮被挤出 */
|
||
@media(min-width:1001px){
|
||
/* 进一步把空间让给人工确认区 */
|
||
#reviewContent:not(.hidden){
|
||
grid-template-columns:minmax(0,1fr) minmax(590px,650px);
|
||
}
|
||
|
||
/* 中间视觉候选再窄一点;左侧 CM95 仍保留足够预览空间 */
|
||
.comparison{
|
||
grid-template-columns:minmax(330px,1fr) minmax(285px,315px);
|
||
}
|
||
|
||
/* 右侧重新回到严格的固定高度 flex,禁止内容把按钮顶出面板 */
|
||
.decision-panel{
|
||
overflow:hidden;
|
||
}
|
||
.decision-form{
|
||
min-height:0;
|
||
overflow:hidden;
|
||
display:flex;
|
||
flex-direction:column;
|
||
}
|
||
|
||
/* Layer 尽量完整铺开,因为右侧变宽后行数明显减少 */
|
||
.decision-form .field:first-child{
|
||
flex:0 0 auto;
|
||
}
|
||
.layer-selection{
|
||
flex:0 0 auto;
|
||
overflow:visible;
|
||
max-height:none;
|
||
}
|
||
|
||
/* 下方信息继续压紧 */
|
||
.selected-std{
|
||
min-height:26px;
|
||
padding:5px 7px;
|
||
}
|
||
.layer-only-btn{
|
||
margin-top:4px;
|
||
padding:5px 7px;
|
||
font-size:12px;
|
||
}
|
||
.decision-form .field .help{
|
||
margin-top:3px;
|
||
font-size:10px;
|
||
line-height:1.25;
|
||
}
|
||
#note{
|
||
height:36px;
|
||
min-height:36px;
|
||
}
|
||
|
||
/* 人工确认按钮作为固定 flex 尾部,始终保留 */
|
||
.decision-actions{
|
||
flex:0 0 auto;
|
||
margin-top:auto;
|
||
padding-top:6px;
|
||
padding-bottom:0;
|
||
}
|
||
.decision-actions button{
|
||
min-height:36px;
|
||
}
|
||
.message{
|
||
flex:0 0 auto;
|
||
}
|
||
}
|
||
|
||
@media(min-width:1600px){
|
||
#reviewContent:not(.hidden){
|
||
grid-template-columns:minmax(0,1fr) 640px;
|
||
}
|
||
.comparison{
|
||
grid-template-columns:minmax(360px,1fr) 300px;
|
||
}
|
||
}
|
||
|
||
|
||
/* v3.6:COMPONENT 状态与组件类型 */
|
||
.badge.component{background:#e8f1fb;color:#175cd3}
|
||
.status-btn.component.active{background:#175cd3;border-color:#175cd3;color:#fff}
|
||
|
||
@media(min-width:1001px){
|
||
/* 5 个状态按钮:第一行 3 个,第二行 2 个 */
|
||
.status-buttons{
|
||
grid-template-columns:repeat(3,minmax(0,1fr));
|
||
}
|
||
|
||
.component-kind-selection{
|
||
display:flex;
|
||
flex-wrap:wrap;
|
||
gap:6px;
|
||
}
|
||
.component-kind-chip{
|
||
font-size:14px;
|
||
line-height:1.25;
|
||
padding:6px 9px;
|
||
border-radius:99px;
|
||
}
|
||
.component-kind-chip.selected{
|
||
background:#e8f1fb;
|
||
border-color:#84adff;
|
||
color:#175cd3;
|
||
font-weight:700;
|
||
}
|
||
|
||
#componentKindField{
|
||
flex:0 0 auto;
|
||
margin-top:8px;
|
||
}
|
||
#componentKindField>label{
|
||
font-size:18px;
|
||
}
|
||
}
|
||
|
||
|
||
/* v3.7:保存操作区永远可见;Layer 多列压缩高度 */
|
||
@media(min-width:1001px){
|
||
/* 右侧再加宽,中间候选再收窄 */
|
||
#reviewContent:not(.hidden){
|
||
grid-template-columns:minmax(0,1fr) minmax(680px,740px);
|
||
}
|
||
.comparison{
|
||
grid-template-columns:minmax(330px,1fr) minmax(250px,280px);
|
||
}
|
||
|
||
/* 人工判断面板固定为三段:顶部 / 主体 / 底部操作 */
|
||
.decision-panel{
|
||
position:relative;
|
||
min-height:0;
|
||
overflow:hidden;
|
||
}
|
||
.decision-form{
|
||
flex:1 1 auto;
|
||
min-height:0;
|
||
overflow:hidden;
|
||
display:grid;
|
||
grid-template-rows:minmax(0,1fr) auto auto auto auto;
|
||
align-content:stretch;
|
||
padding:0 10px 8px;
|
||
}
|
||
|
||
/* 标准 Layer 使用多列网格,尽量全部同屏 */
|
||
#standardLayerField{
|
||
min-height:0;
|
||
overflow:hidden;
|
||
display:flex;
|
||
flex-direction:column;
|
||
}
|
||
.layer-selection{
|
||
display:grid;
|
||
grid-template-columns:repeat(4,minmax(0,1fr));
|
||
gap:5px;
|
||
align-content:start;
|
||
overflow:auto;
|
||
max-height:none;
|
||
min-height:0;
|
||
padding-right:2px;
|
||
}
|
||
.layer-chip{
|
||
width:100%;
|
||
min-width:0;
|
||
text-align:left;
|
||
font-size:14px;
|
||
line-height:1.18;
|
||
padding:6px 7px;
|
||
white-space:normal;
|
||
}
|
||
.layer-chip .layer-code{
|
||
display:block;
|
||
margin-top:2px;
|
||
font-size:9px;
|
||
line-height:1.1;
|
||
color:#667085;
|
||
overflow:hidden;
|
||
text-overflow:ellipsis;
|
||
white-space:nowrap;
|
||
}
|
||
|
||
/* 组件模式下不占用标准 Layer 区 */
|
||
#componentKindField:not(.hidden){
|
||
grid-row:1;
|
||
}
|
||
|
||
/* 下方信息进一步压缩 */
|
||
#standardObjectField{
|
||
margin-top:6px;
|
||
}
|
||
#standardObjectField>label,
|
||
.decision-form .field>label{
|
||
margin-bottom:4px;
|
||
}
|
||
.selected-std{
|
||
min-height:28px;
|
||
padding:5px 7px;
|
||
}
|
||
.layer-only-btn{
|
||
margin-top:4px;
|
||
padding:5px 7px;
|
||
}
|
||
#note{
|
||
height:34px;
|
||
min-height:34px;
|
||
}
|
||
|
||
/* 操作按钮绝不参与可滚动内容,固定在底部 */
|
||
.decision-actions{
|
||
position:sticky;
|
||
bottom:0;
|
||
z-index:20;
|
||
background:#fff;
|
||
margin-top:6px;
|
||
padding:8px 0 2px;
|
||
border-top:1px solid #eaecf0;
|
||
display:grid;
|
||
grid-template-columns:1.2fr .8fr 1fr;
|
||
gap:7px;
|
||
}
|
||
.decision-actions button{
|
||
min-height:38px;
|
||
font-size:13px;
|
||
font-weight:600;
|
||
}
|
||
.message{
|
||
margin-top:3px;
|
||
min-height:14px;
|
||
}
|
||
}
|
||
|
||
@media(min-width:1600px){
|
||
#reviewContent:not(.hidden){
|
||
grid-template-columns:minmax(0,1fr) 720px;
|
||
}
|
||
.comparison{
|
||
grid-template-columns:minmax(360px,1fr) 265px;
|
||
}
|
||
}
|
||
|
||
|
||
/* v3.8:当前对象区收窄,视觉候选扩大;最可能候选标红 */
|
||
@media(min-width:1001px){
|
||
/* 比较区把更多宽度让给视觉候选 */
|
||
.comparison{
|
||
grid-template-columns:minmax(285px,.78fr) minmax(340px,1.22fr);
|
||
}
|
||
|
||
/* 候选卡片利用更宽空间,图标和说明更舒展 */
|
||
.std-card .candidate{
|
||
grid-template-columns:118px minmax(0,1fr);
|
||
min-height:108px;
|
||
padding:9px 10px;
|
||
}
|
||
.std-card .candidate-img{
|
||
width:118px;
|
||
height:94px;
|
||
padding-right:10px;
|
||
}
|
||
.std-card .candidate-img img{
|
||
width:84px;
|
||
height:84px;
|
||
}
|
||
|
||
.std-card .candidate-name{
|
||
font-size:17px;
|
||
line-height:1.28;
|
||
}
|
||
|
||
/* UI-only 最可能提示:只标文字,不自动选择 */
|
||
.std-card .candidate.recommended{
|
||
background:#fffafa;
|
||
border-color:#f1b5b5;
|
||
}
|
||
.std-card .candidate .recommended-name{
|
||
color:#d92d20;
|
||
font-weight:800;
|
||
}
|
||
.recommended-tag{
|
||
display:inline-block;
|
||
margin-left:8px;
|
||
padding:2px 6px;
|
||
border-radius:99px;
|
||
background:#fee4e2;
|
||
color:#b42318;
|
||
font-size:11px;
|
||
font-weight:700;
|
||
vertical-align:middle;
|
||
}
|
||
}
|
||
|
||
@media(min-width:1600px){
|
||
/* 1800~1900 桌面:左侧更窄,中间候选明显更宽 */
|
||
.comparison{
|
||
grid-template-columns:minmax(300px,.72fr) minmax(340px,1.28fr);
|
||
}
|
||
}
|
||
|
||
|
||
/* v4:Reviewer 转为 NavSea Layer 分类确认台 */
|
||
.semantic-box{
|
||
flex:0 0 auto;
|
||
margin-top:8px;
|
||
padding:9px 10px;
|
||
border:1px solid #b8c7e8;
|
||
border-radius:8px;
|
||
background:#f5f8ff;
|
||
}
|
||
.semantic-label{
|
||
font-size:11px;
|
||
color:#667085;
|
||
margin-bottom:2px;
|
||
}
|
||
.semantic-category{
|
||
font-size:18px;
|
||
line-height:1.25;
|
||
font-weight:800;
|
||
color:#17202a;
|
||
}
|
||
.semantic-reason{
|
||
margin-top:5px;
|
||
font-size:13px;
|
||
line-height:1.45;
|
||
color:#344054;
|
||
}
|
||
.semantic-component-hint{
|
||
margin-top:6px;
|
||
padding:5px 7px;
|
||
border-radius:6px;
|
||
background:#e8f1fb;
|
||
color:#175cd3;
|
||
font-weight:700;
|
||
font-size:13px;
|
||
}
|
||
.semantic-conflict{
|
||
margin-top:6px;
|
||
padding:6px 8px;
|
||
border-radius:6px;
|
||
background:#fff1f0;
|
||
color:#b42318;
|
||
font-weight:700;
|
||
font-size:12px;
|
||
}
|
||
|
||
.layer-suggestion-list{
|
||
flex:1 1 auto;
|
||
min-height:0;
|
||
overflow:auto;
|
||
padding:9px;
|
||
display:flex;
|
||
flex-direction:column;
|
||
gap:7px;
|
||
}
|
||
.layer-suggestion-card{
|
||
width:100%;
|
||
text-align:left;
|
||
padding:9px 10px;
|
||
border:1px solid #d8dee6;
|
||
border-radius:8px;
|
||
background:#fff;
|
||
}
|
||
.layer-suggestion-card:hover{
|
||
border-color:#8fa8e8;
|
||
background:#f8faff;
|
||
}
|
||
.layer-suggestion-card.top{
|
||
border:2px solid #e26b62;
|
||
background:#fffafa;
|
||
}
|
||
.layer-rank-head{
|
||
display:flex;
|
||
gap:8px;
|
||
align-items:center;
|
||
}
|
||
.layer-rank-index{
|
||
display:inline-flex;
|
||
align-items:center;
|
||
justify-content:center;
|
||
width:24px;
|
||
height:24px;
|
||
border-radius:99px;
|
||
background:#eef2f6;
|
||
font-size:12px;
|
||
font-weight:700;
|
||
}
|
||
.layer-rank-name{
|
||
font-size:17px;
|
||
font-weight:800;
|
||
line-height:1.25;
|
||
flex:1;
|
||
}
|
||
.layer-suggestion-card.top .layer-rank-name{
|
||
color:#d92d20;
|
||
}
|
||
.layer-rank-top{
|
||
padding:2px 6px;
|
||
border-radius:99px;
|
||
background:#fee4e2;
|
||
color:#b42318;
|
||
font-size:11px;
|
||
font-weight:700;
|
||
}
|
||
.layer-rank-code{
|
||
margin:4px 0 0 32px;
|
||
font-size:10px;
|
||
color:#667085;
|
||
word-break:break-all;
|
||
}
|
||
.layer-rank-score{
|
||
margin:5px 0 0 32px;
|
||
font-size:12px;
|
||
font-weight:700;
|
||
color:#344054;
|
||
}
|
||
.layer-rank-reason{
|
||
margin:4px 0 0 32px;
|
||
font-size:12px;
|
||
line-height:1.35;
|
||
color:#475467;
|
||
}
|
||
.no-layer-suggestion{
|
||
padding:14px;
|
||
border:1px dashed #d0d5dd;
|
||
border-radius:8px;
|
||
background:#f8fafc;
|
||
color:#667085;
|
||
font-size:13px;
|
||
line-height:1.45;
|
||
}
|
||
.component-recommendation{
|
||
padding:10px;
|
||
border:2px solid #84adff;
|
||
border-radius:8px;
|
||
background:#f3f7ff;
|
||
}
|
||
.component-recommendation .layer-rank-title{
|
||
font-size:12px;
|
||
color:#475467;
|
||
}
|
||
.component-recommendation .layer-rank-name{
|
||
margin-top:4px;
|
||
color:#175cd3;
|
||
}
|
||
.apply-suggestion-btn{
|
||
margin:8px 0 0 32px;
|
||
background:#175cd3;
|
||
color:#fff;
|
||
border-color:#175cd3;
|
||
}
|
||
|
||
.visual-reference-details{
|
||
flex:0 0 auto;
|
||
border-top:1px solid #eaecf0;
|
||
background:#fbfcfe;
|
||
max-height:42%;
|
||
overflow:hidden;
|
||
}
|
||
.visual-reference-details summary{
|
||
cursor:pointer;
|
||
padding:9px 11px;
|
||
font-size:13px;
|
||
font-weight:700;
|
||
color:#475467;
|
||
}
|
||
.visual-reference-details[open]{
|
||
display:flex;
|
||
flex-direction:column;
|
||
}
|
||
.visual-reference-details[open] .candidate-grid{
|
||
flex:1 1 auto;
|
||
min-height:0;
|
||
overflow:auto;
|
||
}
|
||
|
||
/* Layer 分类为主后,图标参考缩为次要证据 */
|
||
.visual-reference-details .candidate-grid{
|
||
max-height:300px;
|
||
}
|
||
.visual-reference-details .candidate{
|
||
min-height:82px;
|
||
grid-template-columns:88px minmax(0,1fr);
|
||
}
|
||
.visual-reference-details .candidate-img{
|
||
width:88px;
|
||
height:72px;
|
||
}
|
||
.visual-reference-details .candidate-img img{
|
||
width:64px;
|
||
height:64px;
|
||
}
|
||
.visual-reference-details .candidate-name{
|
||
font-size:14px;
|
||
}
|
||
|
||
/* 宽屏:当前对象适度收窄,Layer 建议获得主要中间空间 */
|
||
@media(min-width:1001px){
|
||
.comparison{
|
||
grid-template-columns:minmax(280px,.78fr) minmax(360px,1.22fr);
|
||
}
|
||
.cm-card .image-stage.large{
|
||
min-height:180px;
|
||
}
|
||
}
|
||
@media(min-width:1600px){
|
||
.comparison{
|
||
grid-template-columns:minmax(290px,.72fr) minmax(390px,1.28fr);
|
||
}
|
||
}
|