*{margin:0;padding:0;box-sizing:border-box}
:root{
  --bg:#eef1f4;
  --panel:#ffffff;
  --ink:#17202a;
  --muted:#64707d;
  --line:#dbe1e7;
  --soft:#f5f7f9;
  --up:#d5432f;
  --down:#178a5a;
  --warn:#b7791f;
  --accent:#1d5f8f;
  --accent-soft:#e8f1f7;
}
html{-webkit-text-size-adjust:100%}
body{
  font-family:-apple-system,"PingFang SC","Microsoft YaHei","Segoe UI",sans-serif;
  background:var(--bg);
  color:var(--ink);
  line-height:1.55;
  min-height:100vh;
}
button{font:inherit}

.topbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding:14px 20px;
  background:#fff;
  border-bottom:1px solid var(--line);
  position:sticky;
  top:0;
  z-index:20;
}
.brand{min-width:0}
.title-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.title-line h1{font-size:19px;line-height:1.3;letter-spacing:0}
.exp-chip,.grade-chip{
  border-radius:6px;
  padding:2px 8px;
  font-size:11px;
  font-weight:700;
  white-space:nowrap;
}
.exp-chip{background:var(--accent-soft);color:var(--accent)}
.grade-chip{background:#fdece8;color:var(--up)}
.head-note{font-size:12px;color:var(--muted);margin-top:3px}
.strategy-tabs{
  max-width:1500px;
  margin:0 auto;
  padding:10px 20px 0;
  display:flex;
  gap:8px;
  flex-wrap:wrap;
}
.strategy-nav-head{
  max-width:1500px;
  margin:12px auto 0;
  padding:0 20px;
  display:flex;
  align-items:center;
  gap:8px;
}
.strategy-nav-title{
  font-size:12px;
  font-weight:700;
  color:#37424d;
}
.strategy-count{
  font-size:12px;
  color:var(--muted);
}
.strategy-tab{
  border:1px solid var(--line);
  background:#fff;
  color:#45525e;
  border-radius:7px;
  padding:7px 12px;
  font-size:12px;
  font-weight:600;
  cursor:pointer;
  display:inline-flex;
  gap:6px;
  align-items:center;
}
.strategy-tab:hover{border-color:#b7ccd9}
.strategy-tab.active{
  background:var(--accent-soft);
  border-color:#a9cbe1;
  color:var(--accent);
}
.strategy-tab .grade-mini{
  background:#fdece8;
  color:var(--up);
  border-radius:4px;
  padding:0 5px;
  font-size:10px;
  font-weight:700;
}
.strategy-tab.live .grade-mini{background:#e4f4ec;color:#0f6b45}
.strategy-tab.pending{background:#f7f8fa;color:#6b7784;border-style:dashed}
.strategy-tab.pending .grade-mini{background:#eef0f2;color:#6b7784}
.pending-notice{
  max-width:1500px;
  margin:8px auto 0;
  padding:0 20px;
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
}
.pending-notice[hidden]{display:none}
.pending-notice b{font-size:12px}
.pending-notice span{font-size:12px;color:var(--muted)}
.pending-notice button{
  margin-left:auto;
  border:1px solid var(--line);
  background:#fff;
  border-radius:6px;
  padding:4px 10px;
  cursor:pointer;
  color:#37424d;
  font-size:11px;
}
.price-filter{margin:0 0 10px}
.price-filter input{
  border:1px solid var(--line);
  border-radius:6px;
  width:82px;
  padding:5px 8px;
  font-size:12px;
  color:#37424d;
  background:#fff;
}
.price-filter .range-sep{color:var(--muted);font-size:12px}
.actions{display:flex;align-items:center;gap:10px;flex:none}
.actions button{
  border:0;
  border-radius:6px;
  background:var(--accent);
  color:#fff;
  padding:8px 14px;
  cursor:pointer;
  font-weight:600;
  min-height:36px;
}
.actions button:hover{filter:brightness(1.08)}
.actions button:disabled{opacity:.6;cursor:wait}
.time{font-size:12px;color:var(--muted);white-space:nowrap}
.tools-link{
  border:1px solid var(--line);
  border-radius:6px;
  background:#fff;
  color:var(--accent);
  padding:8px 11px;
  text-decoration:none;
  font-size:12px;
  font-weight:700;
  white-space:nowrap;
}
.tools-only{display:none}
body.tools-mode .tools-only{display:block}
body.tools-mode .main-only{display:none}
body.tools-mode #refreshBtn{display:none}

.research-strip{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:10px;
  padding:16px 20px 0;
  max-width:1500px;
  margin:0 auto;
}
.metric{
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:8px;
  padding:10px 12px;
  min-width:0;
}
.metric .m-label{font-size:11px;color:var(--muted)}
.metric .m-value{font-size:22px;font-weight:700;line-height:1.35;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.metric .m-sub{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.m-value.neg{color:var(--up)}
.m-value.pos{color:var(--down)}
.m-value.warn{color:var(--warn)}
.metric.grade-d{border-left:4px solid var(--up)}

.scan-strip{
  max-width:1500px;
  margin:14px auto 0;
  padding:0 20px;
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px;
}
.scan-cell{
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:8px;
  padding:12px;
  min-width:0;
}
.cell-label{display:block;font-size:11px;color:var(--muted)}
.scan-cell strong{display:block;font-size:18px;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cell-sub{display:block;font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.panel,.rule-panel{
  max-width:1500px;
  margin:14px auto 0;
  padding:0 20px;
}
.panel > .panel-head,
.rule-grid .rule-panel h2{
  font-size:14px;
  margin-bottom:10px;
  display:flex;
  align-items:baseline;
  gap:10px;
}
.panel-head span{font-size:12px;color:var(--muted);font-weight:400}
.audit-ok{
  background:#e4f4ec;
  color:#0f6b45;
  border-radius:6px;
  padding:2px 8px;
  font-weight:700;
}
.audit-fail{
  background:#fdece8;
  color:#b23725;
  border-radius:6px;
  padding:2px 8px;
  font-weight:700;
}
.filter-row{
  display:flex;
  align-items:center;
  gap:6px;
  flex-wrap:wrap;
  margin-left:auto;
}
.filter-row > span{margin-left:4px}
.filter-row button,.seg-row button{
  border:1px solid var(--line);
  background:#fff;
  color:#45525e;
  border-radius:6px;
  padding:4px 10px;
  font-size:12px;
  cursor:pointer;
}
.filter-row button.active,.seg-row button.active{
  background:var(--accent-soft);
  border-color:#bcd6e6;
  color:var(--accent);
  font-weight:700;
}
.seg-row{
  display:flex;
  gap:6px;
  flex-wrap:wrap;
  margin-bottom:10px;
}
.seg-row.small{margin-bottom:8px}
.metric-grid{
  display:grid;
  grid-template-columns:repeat(6,minmax(0,1fr));
  gap:8px;
  margin-bottom:14px;
}
.metric-grid .metric{padding:9px 10px}
.metric-grid .m-value{font-size:19px}
.split-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:14px;
  align-items:start;
}
.sub-panel{
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--panel);
  min-width:0;
  padding:12px;
}
.sub-panel h3,.sub-panel .flow-title{
  font-size:13px;
  margin:0 0 10px;
  color:var(--ink);
  font-weight:700;
}
.inner-table{
  overflow-x:auto;
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--panel);
  margin-bottom:10px;
}
.inner-table table.data-table{
  min-width:620px;
  font-size:12px;
}
.inner-table .data-table th{
  font-size:11px;
  padding:7px 9px;
}
.inner-table .data-table td{
  padding:7px 9px;
}
.bar-cell{
  min-width:170px;
  max-width:220px;
}
.bar-track{
  height:7px;
  background:#edf1f4;
  border-radius:4px;
  overflow:hidden;
}
.bar-fill{
  height:100%;
  background:var(--accent);
  border-radius:4px;
}
.bar-fill.neg{background:var(--up)}
.bar-fill.pos{background:var(--down)}
.flow-row{
  display:flex;
  gap:4px;
  flex-wrap:wrap;
  margin-bottom:14px;
}
.flow-step{
  border:1px solid var(--line);
  border-radius:6px;
  padding:6px 8px;
  background:var(--panel);
  font-size:10.5px;
  color:#5b6773;
  display:flex;
  flex-direction:column;
  min-width:84px;
  flex:1 1 auto;
}
.flow-step b{font-size:11px;color:var(--ink);white-space:nowrap}
.flow-step span{font-size:9.5px;line-height:1.35}
.flow-step.done{border-color:#b9d8c8;background:#f0f8f3;color:#2a6649}
.flow-step.done b{color:#0f6b45}
.flow-step.stopped{border-color:#ecc9c2;background:#fdf1ef;color:#8a3427}
.flow-step.stopped b{color:#b23725}
.fill-block{
  display:flex;
  justify-content:space-between;
  gap:10px;
  border-bottom:1px dashed #e3e8ed;
  padding:7px 0;
  font-size:12.5px;
}
.fill-block:last-child{border-bottom:0}
.fill-block span:last-child{font-weight:700;font-variant-numeric:tabular-nums}
.quality-kv{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;
  margin-bottom:10px;
}
.quality-kv div{
  background:var(--soft);
  border:1px solid var(--line);
  border-radius:6px;
  padding:7px 9px;
}
.quality-kv .k{display:block;font-size:10px;color:var(--muted)}
.quality-kv .v{display:block;font-size:15px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.issue-list{list-style:none}
.issue-list li{
  font-size:12px;
  color:#8a3427;
  padding:5px 0;
  border-bottom:1px dashed #e8d4cf;
}
.issue-list li:last-child{border-bottom:0}
.report-details{
  margin-top:14px;
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--panel);
  padding:0;
}
.report-details summary{
  cursor:pointer;
  font-size:13px;
  font-weight:700;
  padding:11px 14px;
  color:var(--ink);
}
.report-details pre{
  margin:0;
  padding:12px 14px;
  max-height:520px;
  overflow:auto;
  font-family:Consolas,"Courier New",monospace;
  font-size:11.5px;
  line-height:1.6;
  color:#37424d;
  border-top:1px solid var(--line);
  white-space:pre-wrap;
  word-break:break-word;
}
.cmd-block{
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--panel);
  margin-bottom:14px;
}
.cmd-block .cmd-title{
  font-size:13px;
  font-weight:700;
  padding:9px 12px;
  border-bottom:1px solid var(--line);
}
.cmd-block pre{
  margin:0;
  padding:10px 12px;
  overflow-x:auto;
  font-family:Consolas,"Courier New",monospace;
  font-size:11px;
  line-height:1.7;
  color:#2e4a5f;
  white-space:pre;
}
.qa-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:14px;
  align-items:start;
}
.qa-box{
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--panel);
  padding:14px;
  min-width:0;
}
.qa-box h3{font-size:14px;margin-bottom:10px}
.faq-list{
  display:flex;
  flex-direction:column;
  gap:6px;
  margin-bottom:10px;
}
.faq-list button,.critique-btn{
  border:1px solid var(--line);
  background:#fff;
  border-radius:6px;
  padding:7px 10px;
  text-align:left;
  cursor:pointer;
  color:#2d3a45;
  font-size:12.5px;
}
.faq-list button:hover,.critique-btn:hover{border-color:#a9cbe1;background:var(--accent-soft)}
.qa-answer{
  background:var(--soft);
  border-left:4px solid var(--accent);
  border-radius:6px;
  padding:12px;
  font-size:13px;
  color:#37424d;
  line-height:1.8;
  white-space:pre-wrap;
}
.critique-btn{width:auto;font-weight:700}
.critique-box{
  margin-top:10px;
  background:#fdf3e2;
  border:1px solid #eed6ad;
  border-radius:8px;
  padding:12px;
  font-size:13px;
  color:#5b3b12;
  line-height:1.8;
  white-space:pre-wrap;
}
.qa-note{
  margin-top:10px;
  background:var(--soft);
  border:1px solid var(--line);
  border-radius:8px;
  padding:12px;
  font-size:12px;
  color:#45525e;
  line-height:1.8;
}
.external-grid{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:14px;
  align-items:start;
}
.ext-form,.external-list-box{
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--panel);
  padding:14px;
  min-width:0;
}
.ext-form label{display:block;font-size:12px;color:var(--muted);margin:8px 0 3px}
.ext-form input,.ext-form select,.ext-form textarea{
  width:100%;
  border:1px solid var(--line);
  border-radius:6px;
  background:#fff;
  color:#2d3a45;
  padding:7px 9px;
  font-size:13px;
  box-sizing:border-box;
}
.ext-form textarea{resize:vertical}
.ext-actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
.ext-actions button{
  border:0;
  border-radius:6px;
  padding:8px 14px;
  cursor:pointer;
  font-weight:700;
}
#saveExtBtn{background:var(--accent);color:#fff}
#loadSamplesBtn{background:var(--soft);color:#37424d;border:1px solid var(--line)}
.external-list-box h3{font-size:14px;margin-bottom:10px}
.external-list{display:flex;flex-direction:column;gap:8px}
.ext-item{
  border:1px solid var(--line);
  border-left:4px solid var(--warn);
  border-radius:7px;
  background:#fffdf6;
  padding:10px;
}
.ext-item .ext-title{font-weight:700;color:var(--ink);font-size:13px}
.ext-item .ext-badges{display:flex;gap:5px;flex-wrap:wrap;margin:5px 0}
.ext-item .ext-tag{
  font-size:10px;
  background:var(--soft);
  border-radius:4px;
  padding:1px 5px;
  color:#45525e;
}
.ext-item .ext-tag.short{background:#e4f4ec;color:#0f6b45}
.ext-item .ext-meta{font-size:11px;color:var(--muted);line-height:1.6;white-space:pre-wrap}
.ext-item .ext-del{
  margin-top:6px;
  border:1px solid #e7b9af;
  background:#fdece8;
  color:#8a3427;
  border-radius:5px;
  padding:4px 9px;
  font-size:11px;
  cursor:pointer;
}
.ext-empty{padding:16px;color:var(--muted);font-size:12px;text-align:center}
.workspace-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px;
  margin-bottom:12px;
}
.ws-card{
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--panel);
  padding:12px;
  min-width:0;
}
.ws-card .ws-name{font-weight:700;font-size:14px;color:var(--ink)}
.ws-card .ws-status{
  display:inline-block;
  margin:6px 0;
  border-radius:5px;
  padding:2px 7px;
  font-size:10px;
  font-weight:700;
}
.ws-status.usable{background:#e4f4ec;color:#0f6b45}
.ws-status.partial{background:#fdf3e2;color:#a15c00}
.ws-status.no{background:#fdece8;color:#a52816}
.ws-card .ws-effect{font-size:11.5px;color:#37424d;line-height:1.6}
.ws-card .ws-condition{font-size:10.5px;color:var(--muted);margin-top:6px;line-height:1.5}
.ws-note{
  background:var(--soft);
  border:1px solid var(--line);
  border-radius:8px;
  padding:12px;
  font-size:12px;
  color:#45525e;
  line-height:1.8;
}
.data-status-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px;
}
.data-card{
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--panel);
  padding:12px;
  min-width:0;
}
.data-card-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  margin-bottom:6px;
}
.data-card-head b{font-size:13px}
.data-ok{
  border-radius:5px;
  background:#e4f4ec;
  color:#0f6b45;
  padding:1px 6px;
  font-size:10px;
  font-weight:700;
  white-space:nowrap;
}
.data-card p{
  color:#37424d;
  font-size:12px;
  line-height:1.55;
}
.data-card small{
  display:block;
  color:var(--muted);
  font-size:11px;
  margin-top:6px;
}
.data-help{
  margin-top:12px;
  padding:12px 14px;
  border:1px solid #d7e4ec;
  border-radius:8px;
  background:#f5fafc;
  color:#37424d;
  font-size:12px;
}
.data-help p{margin-top:5px}
.data-help code{
  font-family:Consolas,monospace;
  font-size:11px;
  background:#fff;
  border:1px solid var(--line);
  border-radius:4px;
  padding:1px 4px;
}
.editor-panel textarea{
  width:100%;
  border:1px solid var(--line);
  border-radius:8px;
  background:#0f1a22;
  color:#dce9f2;
  font-family:Consolas,"Courier New",monospace;
  font-size:12.5px;
  line-height:1.7;
  padding:12px;
  box-sizing:border-box;
  resize:vertical;
}
.editor-actions{display:flex;align-items:center;gap:8px;margin-top:10px;flex-wrap:wrap}
.editor-actions button{
  border:1px solid var(--line);
  background:#fff;
  border-radius:6px;
  padding:7px 13px;
  font-weight:700;
  cursor:pointer;
  color:#2d3a45;
}
#saveCodeBtn{background:var(--accent);border-color:var(--accent);color:#fff}
.table-wrap{
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:8px;
  overflow-x:auto;
}
table.data-table{width:100%;border-collapse:collapse;font-size:12.5px;min-width:1040px}
.data-table th{
  text-align:left;
  background:var(--soft);
  color:var(--muted);
  font-weight:600;
  font-size:11.5px;
  padding:9px 10px;
  border-bottom:1px solid var(--line);
  white-space:nowrap;
}
.data-table td{
  padding:9px 10px;
  border-bottom:1px solid #edf0f3;
  white-space:nowrap;
  vertical-align:middle;
}
.data-table tbody tr{cursor:pointer}
.data-table tbody tr:hover{background:#f8fafb}
.data-table tbody tr:last-child td{border-bottom:0}
.code{font-family:Consolas,"Courier New",monospace;font-size:12px}
.name{font-weight:600;color:var(--ink)}
.board{color:var(--muted);font-size:11.5px}
.num{font-variant-numeric:tabular-nums}
.up{color:var(--up)}
.down{color:var(--down)}
.flat{color:var(--muted)}
.status{display:inline-flex;align-items:center;gap:5px;border-radius:5px;padding:2px 7px;font-size:11px;font-weight:700}
.status::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.status.provisional{background:#fdf3e2;color:#a15c00}
.status.confirmed{background:#e4f4ec;color:#0f6b45}
.status.past{background:var(--accent-soft);color:var(--accent)}
.status.skip{background:#eef0f2;color:var(--muted)}
.row-empty td{padding:26px 16px;text-align:center;color:var(--muted);cursor:default;white-space:normal}
.error-row td{padding:20px 16px;color:var(--up);white-space:normal;cursor:default}
.detail-link{color:var(--accent);font-size:12px}

.rule-grid{
  max-width:1500px;
  margin:14px auto 0;
  padding:0 20px;
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:14px;
}
.rule-panel{
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:8px;
  padding:14px;
  margin:0;
  min-width:0;
}
.rule-panel h2{color:var(--ink)}
.formula{
  background:var(--soft);
  border:1px solid var(--line);
  border-radius:6px;
  padding:8px 10px;
  font-family:Consolas,"Courier New",monospace;
  font-size:12px;
  color:#234a66;
  margin-bottom:10px;
}
.rule-list{list-style:none}
.rule-list li{
  display:flex;
  justify-content:space-between;
  gap:14px;
  padding:6px 0;
  font-size:12.5px;
  color:#37424d;
  border-bottom:1px dashed #e3e8ed;
}
.rule-list li:last-child{border-bottom:0}
.rule-list span{color:var(--muted);flex:none}
.timeline{list-style:none;counter-reset:step}
.timeline li{
  counter-increment:step;
  position:relative;
  padding:0 0 10px 30px;
  font-size:12.5px;
  color:#37424d;
}
.timeline li::before{
  content:counter(step);
  position:absolute;
  left:0;
  top:0;
  width:20px;
  height:20px;
  border-radius:6px;
  background:var(--accent-soft);
  color:var(--accent);
  font-size:11px;
  font-weight:700;
  display:flex;
  align-items:center;
  justify-content:center;
}
.timeline b{color:var(--ink);margin-right:6px;font-variant-numeric:tabular-nums}

.drawer-backdrop{
  position:fixed;
  inset:0;
  background:rgba(15,23,32,.45);
  z-index:30;
}
.drawer{
  position:fixed;
  top:0;
  right:0;
  bottom:0;
  width:min(430px,92vw);
  background:#fff;
  border-left:1px solid var(--line);
  box-shadow:-12px 0 28px rgba(15,23,32,.16);
  z-index:31;
  overflow-y:auto;
  padding:14px 16px 24px;
}
.drawer-close{
  border:1px solid var(--line);
  background:#fff;
  border-radius:6px;
  padding:6px 12px;
  cursor:pointer;
  color:#37424d;
  font-weight:600;
  margin-bottom:12px;
}
.drawer h3{font-size:17px;margin-bottom:4px}
.drawer .d-code{font-size:12px;color:var(--muted);margin-bottom:12px}
.d-kv{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;
  margin-bottom:14px;
}
.d-kv div{
  background:var(--soft);
  border:1px solid var(--line);
  border-radius:6px;
  padding:7px 9px;
  min-width:0;
}
.d-kv .k{display:block;font-size:10px;color:var(--muted)}
.d-kv .v{display:block;font-size:14px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.check-list{list-style:none;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.check-list li{
  display:flex;
  justify-content:space-between;
  gap:14px;
  padding:8px 10px;
  font-size:12.5px;
  border-bottom:1px solid #edf0f3;
}
.check-list li:last-child{border-bottom:0}
.check-list .ok{color:var(--down)}
.check-list .no{color:var(--up)}
.check-list .na{color:var(--muted)}
.drawer .timeline{margin-top:10px}

.footer{
  max-width:1500px;
  margin:18px auto 0;
  padding:0 20px 24px;
  font-size:11px;
  color:var(--muted);
}

@media (max-width:1080px){
  .research-strip{grid-template-columns:repeat(3,minmax(0,1fr))}
  .scan-strip{grid-template-columns:repeat(2,minmax(0,1fr))}
  .metric-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .split-grid{grid-template-columns:1fr}
  .qa-grid{grid-template-columns:1fr}
  .external-grid{grid-template-columns:1fr}
  .workspace-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .data-status-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:760px){
  .topbar{flex-direction:column;align-items:stretch;gap:10px;position:static}
  .actions{justify-content:space-between}
  .research-strip,.scan-strip{padding-left:12px;padding-right:12px;grid-template-columns:repeat(2,minmax(0,1fr))}
  .panel,.rule-grid{padding-left:12px;padding-right:12px}
  .rule-grid{grid-template-columns:1fr}
  .metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .data-status-grid{grid-template-columns:1fr}
  .flow-step{min-width:calc(50% - 4px)}
  .metric .m-value{font-size:19px}
  .footer{padding-left:12px;padding-right:12px}
}
@media (max-width:430px){
  .metric .m-value,.scan-cell strong{font-size:17px}
  .title-line h1{font-size:17px}
}
