/* ══════════════════════════════════════════════════════════════
   超级流量 · 复盘工作台  —  样式表
   设计基调：专业、克制、信息密度高；判定色语义固定（见下方 flag-*）
   ══════════════════════════════════════════════════════════════ */
:root{
  --bg:#f4f6fb; --panel:#fff;
  --ink:#1b2436; --ink2:#5a6478; --ink3:#8b93a5;
  --line:#e6e9f2; --line2:#f0f2f7;
  --primary:#2f5cf6; --primary-d:#2447cf; --primary-bg:#eef2ff;
  --side-a:#101a33; --side-b:#17264480;
  --high:#0f9d58; --high-bg:#e7f7ee;
  --normal:#475569; --normal-bg:#eff2f8;
  --warn:#e0483c; --warn-bg:#fdecea;
  --observe:#98a1b3; --observe-bg:#f2f4f8;
  --r:12px; --r-sm:8px;
  --sh:0 1px 2px rgba(16,26,51,.06), 0 4px 16px rgba(16,26,51,.05);
}
*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0; background:var(--bg); color:var(--ink);
  font:14px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC",
       "Hiragino Sans GB","Microsoft YaHei",sans-serif;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3{margin:0; font-weight:650; letter-spacing:-.01em}
p{margin:0}
a{color:var(--primary); text-decoration:none}
.hidden{display:none !important}
.muted{color:var(--ink2)}
.mt12{margin-top:12px}
.mt16{margin-top:16px}
.sub{color:var(--ink2); font-size:13px}
.note{background:#fff8e6; border:1px solid #f2e0b0; color:#8a6212;
  padding:10px 14px; border-radius:var(--r-sm); font-size:13px}
.tag{display:inline-block; font-size:11px; font-weight:600; color:var(--primary);
  background:var(--primary-bg); border-radius:20px; padding:1px 8px; vertical-align:2px}

/* ── 通用控件 ───────────────────────────────────────────── */
.btn{display:inline-flex; align-items:center; justify-content:center; gap:6px;
  height:36px; padding:0 16px; border:1px solid var(--line); border-radius:var(--r-sm);
  background:#fff; color:var(--ink); font:inherit; font-size:13px; font-weight:550;
  cursor:pointer; transition:.15s; white-space:nowrap}
.btn:hover{border-color:#cfd6e6; background:#fbfcff}
.btn:active{transform:translateY(1px)}
.btn-primary{background:var(--primary); border-color:var(--primary); color:#fff}
.btn-primary:hover{background:var(--primary-d); border-color:var(--primary-d)}
.btn-danger{color:var(--warn); border-color:#f3c8c4}
.btn-danger:hover{background:var(--warn-bg)}
.btn-ghost{background:transparent; border-color:transparent; color:var(--ink2)}
.btn-ghost:hover{background:var(--line2)}
.btn-block{width:100%; height:42px; font-size:14px}
.btn-row{display:flex; gap:8px; flex-wrap:wrap; align-items:center}
.pill{display:inline-flex; align-items:center; gap:6px; height:28px; padding:0 12px;
  border-radius:20px; background:#fff; border:1px solid var(--line);
  font-size:12px; color:var(--ink2); font-weight:550}
.pill.quota{color:var(--primary); border-color:#d9e1ff; background:var(--primary-bg)}
.field{margin-bottom:14px}
.field label{display:block; font-size:12px; font-weight:600; color:var(--ink2);
  margin-bottom:6px}
input,select,textarea{
  width:100%; border:1px solid var(--line); border-radius:var(--r-sm);
  padding:9px 12px; font:inherit; font-size:13px; color:var(--ink); background:#fff;
  transition:.15s; outline:none}
input:focus,select:focus,textarea:focus{
  border-color:var(--primary); box-shadow:0 0 0 3px rgba(47,92,246,.12)}
textarea{resize:vertical; min-height:60px; line-height:1.7}
.hint{font-size:12px; color:var(--ink3); margin-top:6px; line-height:1.6}
.err{color:var(--warn); font-size:13px; margin-top:10px}
.msgbox{margin-top:14px; padding:10px 14px; border-radius:var(--r-sm); font-size:13px;
  background:var(--line2); color:var(--ink2); border:1px solid var(--line)}
.msgbox.ok{background:var(--high-bg); border-color:#c6ead6; color:#0b6b3e}
.msgbox.bad{background:var(--warn-bg); border-color:#f3c8c4; color:#a32b21}

/* ── 登录 ──────────────────────────────────────────────── */
.login-wrap{min-height:100%; display:flex; align-items:center; justify-content:center;
  padding:24px;
  background:radial-gradient(1000px 500px at 15% 10%,#e6ecff 0,transparent 60%),
             radial-gradient(900px 500px at 90% 90%,#e2f4ff 0,transparent 55%), var(--bg)}
.login-card{width:100%; max-width:420px; background:#fff; border:1px solid var(--line);
  border-radius:18px; padding:34px 32px; box-shadow:var(--sh)}
.login-brand{display:flex; gap:12px; align-items:flex-start; margin-bottom:26px}
.login-brand h1{font-size:19px}
.login-brand p{font-size:12.5px; color:var(--ink2); margin-top:6px; line-height:1.6}
.logo-dot{width:34px; height:34px; border-radius:10px; flex:0 0 auto;
  display:grid; place-items:center; overflow:hidden;
  background:linear-gradient(135deg,#2f5cf6,#5b8cff);
  box-shadow:0 4px 12px rgba(47,92,246,.35)}
.logo-dot.small{width:24px; height:24px; border-radius:7px}
.logo-mark{display:block; color:#fff; font-family:"STSong","Songti SC","Noto Serif SC",serif;
  font-size:19px; font-weight:800; line-height:1; text-shadow:0 1px 2px rgba(13,35,109,.3)}
.logo-dot.small .logo-mark{font-size:14px}
.login-hint{margin-top:18px; font-size:12px; color:var(--ink3); text-align:center}
.login-hint b{color:var(--ink2)}
.opt{font-weight:500; color:var(--ink3); font-size:11px; margin-left:4px}

/* ── 主框架 ────────────────────────────────────────────── */
.app{display:flex; height:100vh; overflow:hidden}
.sidebar{width:224px; flex:0 0 224px; background:linear-gradient(180deg,#101a33,#182a52);
  display:flex; flex-direction:column; padding:16px 12px; color:#c8d2e8}
.side-brand{display:flex; align-items:center; gap:10px; padding:6px 8px 18px;
  font-weight:650; font-size:14px; color:#fff}
.side-group{font-size:11px; font-weight:600; letter-spacing:.08em; color:#6d7f9e;
  padding:14px 10px 8px; text-transform:uppercase}
.nav{display:flex; flex-direction:column; gap:2px}
.nav-item{display:flex; align-items:center; gap:10px; padding:9px 10px; border-radius:var(--r-sm);
  color:#c8d2e8; font-size:13.5px; cursor:pointer; transition:.15s; user-select:none}
.nav-item:hover{background:rgba(255,255,255,.07); color:#fff}
.nav-item.active{background:rgba(91,140,255,.20); color:#fff; font-weight:600;
  box-shadow:inset 0 0 0 1px rgba(91,140,255,.35)}
.nav-item i{font-style:normal; width:18px; text-align:center; font-size:14px; opacity:.95}
.nav-item span{flex:1}
.nav-item em{font-style:normal}
.soon{font-size:10px; color:#8fa3c4; background:rgba(255,255,255,.10);
  border-radius:20px; padding:1px 7px}
.badge{font-size:10px; font-weight:700; border-radius:20px; padding:1px 7px}
.badge.warn{background:#4a2b2b; color:#ffb4ad}
.badge.ok{background:#1c3d2c; color:#8ce0b0}
.side-foot{margin-top:auto; padding:12px 8px 0; border-top:1px solid rgba(255,255,255,.10)}
.side-user{display:flex; align-items:center; justify-content:space-between; gap:8px; min-width:0; padding:0}
.side-user-label{font-size:11px; color:#8fa3c4; white-space:nowrap}
.side-workspace-chip{display:inline-flex; align-items:center; justify-content:center; min-width:48px; height:26px;
  padding:0 9px; border:1px solid rgba(153,177,222,.24); border-radius:6px;
  background:rgba(255,255,255,.07); color:#eef3ff; font-size:11px; font-weight:650; white-space:nowrap}

.main{flex:1; display:flex; flex-direction:column; min-width:0; overflow:hidden}
.topbar{height:58px; flex:0 0 58px; display:flex; align-items:center; justify-content:space-between;
  padding:0 22px; background:#fff; border-bottom:1px solid var(--line); gap:16px}
.topbar-right{display:flex; gap:8px; align-items:center; flex-wrap:wrap}
.ws-switch{display:inline-flex; background:var(--line2); border-radius:20px; padding:3px}
.ws-btn{height:26px; padding:0 16px; border:0; border-radius:20px; background:transparent;
  font:inherit; font-size:12.5px; font-weight:550; color:var(--ink2); cursor:pointer; transition:.15s}
.ws-btn.active{background:#fff; color:var(--primary); box-shadow:0 1px 3px rgba(16,26,51,.14)}
.page{padding:22px 24px 40px; overflow-y:auto; flex:1}
.page-head{margin-bottom:18px}
.page-head h2{font-size:18px}
.page-head .sub{margin-top:6px; max-width:940px; line-height:1.7}
.card{background:var(--panel); border:1px solid var(--line); border-radius:var(--r);
  padding:18px 20px; box-shadow:var(--sh)}
.card h3{font-size:14px; margin-bottom:14px}
.grid2{display:grid; grid-template-columns:1fr 1fr; gap:16px}
.grid2.gap24{gap:20px}
@media(max-width:1000px){.grid2{grid-template-columns:1fr}}

/* ── 复盘对话 ──────────────────────────────────────────── */
#page-chat{width:100%; max-width:980px; margin:0 auto; padding:0 22px 28px; display:flex;
  flex-direction:column; align-items:center; min-height:0; justify-content:flex-start}
#page-chat>.chat-head,#page-chat>.chat-body,#page-chat>.chat-suggest,#page-chat>.chat-attachment,#page-chat>.chat-input-wrap{
  width:100%; max-width:820px}
.chat-head{text-align:center; margin:clamp(42px,10vh,96px) 0 22px}
.chat-kicker{font-size:11px; color:var(--primary); font-weight:700; letter-spacing:.04em;
  margin-bottom:8px}
.chat-head h2{font-size:22px; letter-spacing:0}
.chat-head .sub{margin-top:8px}
.chat-context{display:inline-flex; align-items:center; gap:7px; margin-top:16px; padding:0;
  color:var(--ink3); background:transparent;
  font-size:11.5px; line-height:1.3}
.chat-context.ready{color:var(--ink2)}
.chat-context strong{color:var(--primary); font-weight:650}
.chat-context-dot{width:6px; height:6px; border-radius:50%; background:#b7c0d3; flex:0 0 auto}
.chat-context.ready .chat-context-dot{background:#36a269; box-shadow:0 0 0 3px rgba(54,162,105,.12)}
.chat-context-sep{color:#c4cada}
.chat-body{width:100%; max-width:820px; margin:0 auto; display:flex; flex-direction:column; gap:14px;
  flex:1 1 auto; min-height:160px; padding:0 4px}
.chat-suggest{width:100%; max-width:820px; margin:22px auto 0; display:flex; flex-wrap:wrap; gap:8px;
  justify-content:center}
.chat-suggest button{border:1px solid var(--line); background:#fff; border-radius:20px;
  padding:7px 14px; font:inherit; font-size:12.5px; color:var(--ink2); cursor:pointer; transition:.15s}
.chat-suggest button:hover{border-color:#c6d2f5; color:var(--primary); background:var(--primary-bg)}
.chat-attachment{display:flex; align-items:center; gap:8px; margin-top:16px; padding:8px 10px;
  border:1px solid #d9e2ff; border-radius:8px; color:var(--ink2); background:#f8faff; font-size:12px}
.chat-attachment-mark{color:var(--primary); font-weight:700; font-size:11px}
.chat-attachment-meta{color:var(--ink3); margin-left:auto}
.chat-attachment-remove{border:0; background:transparent; color:var(--ink3); font-size:18px; line-height:1;
  padding:0 3px; cursor:pointer}
.chat-attachment-remove:hover{color:var(--warn)}
.chat-input-wrap{width:100%; max-width:820px; margin:20px auto 0; display:flex; gap:10px; align-items:flex-end;
  position:sticky; bottom:0; z-index:3; padding:12px 0 4px; background:linear-gradient(180deg,rgba(244,246,251,0),var(--bg) 24%)}
.chat-input-wrap textarea{background:#fff}
.chat-attach{width:44px; height:44px; flex:0 0 44px; border:1px solid var(--line); border-radius:10px;
  background:#fff; color:var(--ink2); font-size:22px; line-height:1; cursor:pointer}
.chat-attach:hover{border-color:#c6d2f5; color:var(--primary); background:var(--primary-bg)}
#page-chat:not(.has-messages){justify-content:center; padding-top:0}
#page-chat:not(.has-messages) .chat-head{margin-top:0}
#page-chat:not(.has-messages) .chat-body{display:none}
#page-chat:not(.has-messages) .chat-suggest{margin-top:0}
#page-chat:not(.has-messages) .chat-input-wrap{position:relative; margin-top:18px; padding:0; background:transparent}
#page-chat.has-messages .chat-head{margin-top:26px}
#page-chat.has-messages .chat-body{overflow-y:auto}
.chat-input-wrap textarea{min-height:44px; max-height:160px; padding:11px 14px}
.chat-input-wrap .btn{height:44px; padding:0 22px}
.bubble{max-width:88%; padding:13px 16px; border-radius:14px; font-size:13.5px;
  line-height:1.85; white-space:pre-wrap; word-break:break-word}
.bubble.user{align-self:flex-end; background:var(--primary); color:#fff;
  border-bottom-right-radius:4px}
.bubble.bot{align-self:flex-start; background:#fff; border:1px solid var(--line);
  border-bottom-left-radius:4px; box-shadow:var(--sh)}
.bubble.bot.degraded{background:#fffdf5; border-color:#f0e3c0}
.bubble-tag{display:block; font-size:11px; color:var(--ink3); margin-bottom:6px; font-weight:600}
.bubble .cursor{display:inline-block; width:7px; height:14px; background:var(--primary);
  vertical-align:-2px; animation:blink 1s steps(2) infinite; border-radius:1px}
.chat-review-card{margin-top:14px; border-top:1px solid var(--line); padding-top:12px; min-width:0}
.chat-review-head{display:flex; align-items:baseline; justify-content:space-between; gap:8px; flex-wrap:wrap}
.chat-review-head b{font-size:13px; color:var(--ink)}
.chat-review-head span,.chat-review-card small{font-size:11px; color:var(--ink3); overflow-wrap:anywhere}
.chat-review-facts{display:flex; gap:16px; flex-wrap:wrap; margin:10px 0; color:var(--ink2); font-size:12px}
.chat-review-facts b{font-size:17px; color:var(--primary)}
.chat-review-quality{display:flex; gap:7px 14px; flex-wrap:wrap; margin:8px 0 6px; color:var(--ink3); font-size:11.5px}
.chat-review-quality b{color:var(--ink2)}
.chat-review-evidence{padding:8px 10px; border-radius:6px; background:#f8faff; color:var(--ink2); font-size:11.5px; line-height:1.6}
.chat-review-focus{margin-top:6px; color:var(--ink2); font-size:11.5px; line-height:1.6}
.chat-review-focus b{color:var(--ink)}
.chat-review-actions{display:flex; gap:8px; flex-wrap:wrap}
.chat-review-actions .btn{min-height:40px}
.chat-review-error{display:block; margin-top:10px; color:var(--warn)}
@keyframes blink{0%,50%{opacity:1}51%,100%{opacity:0}}
.static-card{margin-top:12px; border-top:1px dashed var(--line); padding-top:12px}
.static-card b{font-size:12px; color:var(--ink2)}
.static-card ul{margin:8px 0 0; padding-left:18px}
.static-card li{margin:5px 0; font-size:13px; color:var(--ink)}
.static-card li a{font-weight:600}

/* ── 矩阵表 ────────────────────────────────────────────── */
.summary-row{display:flex; gap:12px; flex-wrap:wrap; margin-bottom:16px}
.sum-card{background:#fff; border:1px solid var(--line); border-radius:var(--r);
  padding:14px 18px; min-width:150px; box-shadow:var(--sh)}
.sum-card .k{font-size:12px; color:var(--ink3); font-weight:600}
.sum-card .v{font-size:19px; font-weight:700; margin-top:5px; letter-spacing:-.02em}
.sum-card .d{font-size:12px; color:var(--ink2); margin-top:3px}
.sum-card.hl{border-color:#dbe3ff; background:linear-gradient(180deg,#fbfcff,#fff)}
.table-wrap{overflow-x:auto; background:#fff; border:1px solid var(--line);
  border-radius:var(--r); box-shadow:var(--sh)}
table{border-collapse:separate; border-spacing:0; width:100%}
table.matrix{min-width:900px}
table.grid,table.matrix th,table.matrix td,table.grid th,table.grid td{
  font-variant-numeric:tabular-nums}
table.matrix th,table.grid th{
  background:#f8faff; font-size:12px; font-weight:650; color:var(--ink2);
  text-align:right; padding:11px 14px; border-bottom:1px solid var(--line);
  position:sticky; top:0; z-index:2; white-space:nowrap}
table.matrix th:first-child,table.grid th:first-child{text-align:left}
table.matrix td,table.grid td{
  padding:11px 14px; text-align:right; font-size:13.5px; border-bottom:1px solid var(--line2);
  white-space:nowrap}
table.matrix td:first-child,table.grid td:first-child{text-align:left}
table.matrix tbody tr.lvl{cursor:pointer; transition:.12s}
table.matrix tbody tr.lvl:hover{background:#fafbff}
table.matrix tbody tr.lvl.open{background:var(--primary-bg)}
table.matrix tbody tr.anchor{background:#fbfcff; font-weight:600}
table.matrix tbody tr.anchor td{border-bottom:2px solid var(--line)}
.lvl-name{display:flex; align-items:center; gap:8px; font-weight:600}
.lvl-name .caret{color:var(--ink3); font-size:11px; transition:.15s; width:10px}
tr.open .lvl-name .caret{transform:rotate(90deg); color:var(--primary)}
.lvl-name .cnt{font-size:11px; color:var(--ink3); font-weight:500}
.profile-section{padding:14px 0;border-top:1px solid var(--line)}
.profile-section-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:10px}
.profile-section-head span{font-size:12px;color:var(--ink3)}
.profile-company-mode{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.profile-company-mode .profile-section-head{margin-bottom:0;flex:1;min-width:220px}
.profile-mode-switch{display:inline-flex;gap:4px;padding:4px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--paper)}
.profile-mode-btn{min-height:36px;padding:0 18px;border:0;border-radius:5px;background:transparent;color:var(--ink2);font-size:13px;font-weight:650;cursor:pointer}
.profile-mode-btn:hover{background:#eef2f9;color:var(--ink)}
.profile-mode-btn.active{background:var(--primary);color:#fff;box-shadow:0 2px 5px rgba(43,91,211,.2)}
.profile-mode-value{display:none}
.profile-module{margin-bottom:16px;padding:18px 20px;border:1px solid var(--line);border-radius:var(--r);background:#fff;box-shadow:0 2px 8px rgba(16,26,51,.03)}
.profile-module-head{display:flex;align-items:flex-start;gap:12px;margin-bottom:14px;min-width:0}
.profile-module-head>div{flex:1;min-width:0}
.profile-module-head h3{margin:0 0 5px;font-size:16px}
.profile-module-head p{margin:0;color:var(--ink3);font-size:12.5px;line-height:1.65}
.module-no{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;border-radius:8px;background:var(--primary-bg);color:var(--primary);font-size:11px;font-weight:750}
.profile-subsection{margin-top:14px;padding:14px 0;border-top:1px dashed var(--line)}
.reference-assets{display:flex;flex-direction:column;gap:8px}
.reference-row{display:grid;grid-template-columns:145px minmax(150px,1.1fr) minmax(170px,1.2fr) minmax(150px,1fr) auto;gap:8px;align-items:center}
.reference-row input,.reference-row select{height:34px;min-width:0;padding:6px 8px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--paper);font-size:12px}
.reference-row button{height:34px;padding:0 10px}
.profile-options{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.profile-option-group{display:flex;flex-wrap:wrap;align-items:center;gap:7px 10px;width:100%;padding:8px 10px;background:#f7f9fc;border:1px solid var(--line);border-radius:6px}
.profile-option-group>b{width:72px;color:var(--ink2);font-size:12px}
.profile-option{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--ink2);min-height:30px}
.profile-option input{accent-color:var(--primary)}
.side-copyright{margin-top:12px;padding-top:10px;border-top:1px solid rgba(255,255,255,.08);
  color:#7789a8;font-size:10.5px;line-height:1.4;text-align:center;white-space:nowrap}
.chat-template-link{margin-left:auto;color:var(--primary);text-decoration:none}
tr.sub-row>td{background:#fafbff; padding:0; border-bottom:1px solid var(--line)}
.sub-wrap{padding:12px 16px 16px}
.sub-wrap table{background:#fff; border:1px solid var(--line); border-radius:var(--r-sm);
  overflow:hidden}
.sub-wrap th{background:#fff !important; position:static; font-size:11.5px}
.sub-wrap td{font-size:12.5px; padding:9px 12px}
.sub-wrap tbody tr{cursor:pointer; transition:.12s}
.sub-wrap tbody tr:hover{background:var(--primary-bg)}
.sub-tip{font-size:11.5px; color:var(--ink3); margin-bottom:8px}
td.flag{font-weight:650}
.flag-high{color:var(--high); background:var(--high-bg)}
.flag-normal{color:var(--normal); background:var(--normal-bg)}
.flag-warn{color:var(--warn); background:var(--warn-bg); font-weight:700}
.flag-observe{color:var(--observe); background:var(--observe-bg)}
td.flag{padding:5px 10px !important; border-radius:6px}
td.flagcell{background:transparent !important}
td.metric{font-variant-numeric:tabular-nums}
.chip{display:inline-block; margin-left:5px; font-size:10px; line-height:15px;
  border-radius:9px; padding:0 5px; font-weight:700; vertical-align:1px}
.chip.warn{background:var(--warn-bg); color:var(--warn)}
.chip.high{background:var(--high-bg); color:var(--high)}
.sep{color:var(--line); padding:0 4px}
.table-tip{font-size:12px; color:var(--ink3); margin-top:10px}
.detail-panel{margin-top:16px}
.detail-panel:empty{display:none}

/* ── 穿透抽屉 ──────────────────────────────────────────── */
.drawer{position:fixed; inset:0; z-index:60}
.drawer-mask{position:absolute; inset:0; background:rgba(16,26,51,.42);
  backdrop-filter:blur(2px)}
.drawer-panel{position:absolute; top:0; right:0; bottom:0; width:min(880px,94vw);
  background:#fff; display:flex; flex-direction:column; box-shadow:-12px 0 40px rgba(16,26,51,.22);
  animation:slide .22s ease-out}
@keyframes slide{from{transform:translateX(30px); opacity:.4}to{transform:none; opacity:1}}
.drawer-head{display:flex; align-items:flex-start; justify-content:space-between; gap:16px;
  padding:18px 22px; border-bottom:1px solid var(--line)}
.drawer-head h3{font-size:15px}
.drawer-head .sub{margin-top:5px}
.drawer-panel .table-wrap{margin:0 22px 22px; border-radius:var(--r-sm)}
.drawer-panel .note{margin:16px 22px 0}
.drawer-panel>table{margin:0 22px}
.drawer-panel .table-wrap table{min-width:820px}
.drawer-panel .table-wrap th{position:sticky; top:0}

/* ── AI / 知识库 / 就绪度 / 平台 ───────────────────────── */
.knowledge-taxonomy{margin-bottom:16px; padding:14px 16px; border:1px solid var(--line); border-radius:var(--r);
  background:#fbfcff}
.profile-upload-drop{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:8px 0 14px;padding:16px;border:1px dashed #b8c5dc;border-radius:var(--r);background:#f8faff;transition:.15s}
.profile-upload-drop.dragover{border-color:var(--primary);background:var(--primary-bg)}
.profile-upload-drop>div{display:flex;flex-direction:column;gap:4px;min-width:0}
.profile-upload-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto;flex-wrap:wrap}
.profile-upload-drop b{font-size:13px;color:var(--ink)}
.profile-upload-drop span{font-size:12px;color:var(--ink3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.profile-upload-drop input[type=file]{display:none}
.profile-doc-plan-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:7px}
.profile-doc-plan{display:inline-flex;gap:3px;padding:3px 7px;border-radius:5px;background:#f3f6fb;color:var(--ink2);font-size:11px}
.knowledge-taxonomy-head{display:flex; align-items:flex-start; justify-content:space-between; gap:14px}
.knowledge-taxonomy-head>div{display:flex; flex-direction:column; gap:4px; min-width:0}
.knowledge-taxonomy-head b{font-size:13px; color:var(--ink)}
.knowledge-taxonomy-head span{font-size:12px; color:var(--ink3); line-height:1.55}
.knowledge-category-list{display:flex; flex-wrap:wrap; gap:8px; margin-top:12px}
.knowledge-category-group{display:flex; align-items:center; gap:6px; min-height:28px; padding:4px 9px;
  border:1px solid var(--line); border-radius:8px; background:#fff; font-size:12px}
.knowledge-category-group b{font-size:12px; color:var(--ink2)}
.knowledge-category-child{color:var(--ink3); padding-left:6px; border-left:1px solid var(--line)}
.knowledge-category-form{display:flex; gap:8px; flex-wrap:wrap; margin-top:12px; padding-top:12px; border-top:1px dashed var(--line)}
.knowledge-category-form input,.knowledge-category-form select{height:34px; flex:1 1 170px; min-width:0; padding:6px 9px; font-size:12px}
.dimension-manager{margin-bottom:16px}
.dimension-manager-head{display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom:14px}
.dimension-manager-head h3{margin-bottom:5px}
.dimension-manager-head .muted{max-width:820px; line-height:1.65; font-size:12px}
.dimension-groups{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px}
.dimension-group{border:1px solid var(--line); border-radius:var(--r-sm); padding:11px 12px; min-width:0}
.dimension-group-head{display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:9px}
.dimension-group-head>div{display:flex; align-items:baseline; gap:8px; min-width:0}
.dimension-group-head b{font-size:13px; color:var(--ink2); white-space:nowrap}
.dimension-group-head small{font-size:11px; color:var(--ink3); white-space:nowrap}
.dimension-rows{display:flex; flex-direction:column; gap:7px; min-width:0}
.dimension-row{display:grid; grid-template-columns:auto minmax(78px,.7fr) minmax(90px,1fr) minmax(120px,1.3fr) auto auto; align-items:center; gap:6px; min-width:0}
.dimension-row input{height:32px; min-width:0; width:100%; padding:5px 7px; font-size:11.5px; border:1px solid var(--line); border-radius:var(--r-sm); background:var(--paper)}
.dimension-row input[readonly]{background:var(--line2); color:var(--ink3)}
.dimension-kind{font-size:10px; padding:3px 5px; border-radius:4px; color:var(--ink3); background:var(--line2); white-space:nowrap}
.dimension-kind.custom{color:var(--primary); background:var(--primary-soft)}
.dimension-empty{font-size:11px; padding:4px 0}
.chat-review-evidence.pending{color:#9a5b00; background:#fff8e8; border-color:#f3d38a}
.chat-review-evidence.ready{color:#237a4b; background:#effaf3; border-color:#bde8cd}
.profile-doc-category{display:inline-flex; align-items:center; gap:5px; margin-top:8px; color:var(--ink3); font-size:11px}
.profile-doc-category b{color:var(--primary); font-weight:650}
.kv{display:flex; flex-direction:column; gap:0}
.kv-row{display:flex; justify-content:space-between; gap:16px; padding:10px 0;
  border-bottom:1px solid var(--line2); font-size:13px}
.kv-row:last-child{border-bottom:0}
.kv-row .k{color:var(--ink2)}
.kv-row .v{font-weight:600; text-align:right}
.kv-row .v.mono{font-family:ui-monospace,Menlo,Consolas,monospace; font-size:12.5px}
.usage-detail{margin-top:14px; display:flex; flex-direction:column; gap:8px}
.usage-row{display:flex; justify-content:space-between; align-items:center;
  background:var(--line2); border-radius:var(--r-sm); padding:9px 12px; font-size:12.5px}
.usage-row .bar{height:6px; border-radius:4px; background:var(--primary); opacity:.75}
.profile-doc-card{margin-bottom:16px}
.profile-structured-card{margin-bottom:16px}
.profile-entry-head{display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom:14px}
.profile-entry-head>div{min-width:0}
.profile-entry-head h3{margin-bottom:5px}
.profile-entry-head .muted{font-size:12.5px; line-height:1.7; max-width:820px}
.profile-company-mode{padding:10px 12px; border:1px solid var(--line); border-radius:var(--r-sm); background:var(--line2)}
.profile-mode-value{font-size:16px; font-weight:750; color:var(--primary); margin-top:6px}
.platform-profile-options{max-height:320px; overflow-y:auto; padding-right:4px}
.profile-doc-head{display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom:14px}
.profile-doc-head h3{margin-bottom:5px}
.profile-doc-head .muted{font-size:12.5px; line-height:1.7; max-width:820px}
.profile-doc-preview{margin-top:16px; border-top:1px solid var(--line); padding-top:16px}
.profile-doc-preview-head{display:flex; align-items:flex-start; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-bottom:12px}
.profile-doc-preview-head>div{display:flex; flex-direction:column; gap:3px; min-width:0}
.profile-doc-preview-head span{font-size:12px; color:var(--ink3)}
.profile-doc-fields{display:grid; grid-template-columns:1fr 1fr; gap:10px 14px}
.profile-doc-field{border:1px solid var(--line); border-radius:var(--r-sm); padding:10px 12px; min-width:0}
.profile-doc-field label{display:block; color:var(--ink2); font-size:12px; font-weight:650; margin-bottom:6px}
.profile-doc-field label input{width:auto; margin:0 5px 0 0; vertical-align:-1px; accent-color:var(--primary)}
.profile-doc-field textarea{min-height:52px; font-size:12.5px; padding:7px 9px}
.profile-doc-field small{display:block; margin-top:5px; color:var(--ink3); font-size:11px; line-height:1.45; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.profile-doc-text{margin-top:12px; border-top:1px dashed var(--line); padding-top:10px; color:var(--ink2); font-size:12px}
.profile-doc-text summary{cursor:pointer; color:var(--primary); font-weight:600}
.profile-doc-text pre{max-height:220px; overflow:auto; white-space:pre-wrap; word-break:break-word; margin:9px 0 0; padding:10px; border-radius:var(--r-sm); background:var(--line2); font:12px/1.65 ui-monospace,Menlo,Consolas,monospace}
.profile-doc-list{margin-top:16px; border-top:1px solid var(--line); padding-top:12px}
.profile-doc-list-title{font-size:12px; color:var(--ink2); font-weight:650; margin-bottom:6px}
.profile-doc-item{display:flex; align-items:center; justify-content:space-between; gap:10px; padding:8px 0; border-bottom:1px solid var(--line2); font-size:12.5px}
.profile-doc-item span{min-width:0; display:flex; flex-direction:column; gap:2px}
.profile-doc-item b{overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.profile-doc-item small{font-size:11px; color:var(--ink3)}
.profile-doc-item em{font-style:normal; font-size:11px; white-space:nowrap; color:var(--ink3)}
.profile-doc-item em.applied{color:var(--high)}
.profile-doc-item em.parsed{color:var(--primary)}
.profile-doc-item em.failed{color:var(--warn)}
.profile-doc-empty{padding-top:8px; font-size:12px}
.readiness{display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:10px}
.rd-item{border:1px solid var(--line); border-radius:var(--r-sm); padding:11px 13px;
  display:flex; justify-content:space-between; align-items:center; gap:8px; font-size:13px}
.rd-item.ready{border-color:#c6ead6; background:var(--high-bg)}
.rd-item.miss{background:var(--observe-bg)}
.rd-item .dot{width:8px; height:8px; border-radius:50%; background:var(--observe)}
.rd-item.ready .dot{background:var(--high)}
.plat-cats{display:flex; flex-direction:column; gap:18px; margin-top:16px}
.plat-cat h4{font-size:13px; color:var(--ink2); margin-bottom:10px;
  display:flex; align-items:center; gap:8px}
.plat-cat h4 .line{flex:1; height:1px; background:var(--line)}
.plat-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(232px,1fr)); gap:8px}
.plat-item{display:flex; gap:10px; align-items:flex-start; border:1px solid var(--line);
  border-radius:var(--r-sm); padding:10px 12px; cursor:pointer; transition:.15s; background:#fff}
.plat-item:hover{border-color:#c6d2f5; background:#fbfcff}
.plat-item.on{border-color:#b9caff; background:var(--primary-bg)}
.plat-item input{width:auto; margin:2px 0 0; accent-color:var(--primary)}
.plat-item .nm{font-size:13px; font-weight:600}
.plat-item .nt{font-size:11.5px; color:var(--ink3); margin-top:3px; line-height:1.5}
.drawer-panel h3{font-size:15px}

/* ── 机会点 / 问题点 ───────────────────────────────────── */
.btn-sm{height:30px; padding:0 12px; font-size:12.5px}
.export-wrap{position:relative}
.export-menu{position:absolute; top:36px; right:0; z-index:30; width:290px;
  background:#fff; border:1px solid var(--line); border-radius:var(--r);
  box-shadow:0 12px 36px rgba(16,26,51,.16); padding:6px; display:flex;
  flex-direction:column; gap:2px}
.export-menu button{display:flex; flex-direction:column; gap:2px; text-align:left;
  border:0; background:transparent; border-radius:var(--r-sm); padding:10px 12px;
  font:inherit; cursor:pointer; transition:.12s}
.export-menu button:hover{background:var(--primary-bg)}
.export-menu button b{font-size:13px; color:var(--ink)}
.export-menu button span{font-size:11.5px; color:var(--ink3); line-height:1.5}

.ins-head{border-left:4px solid var(--primary); background:linear-gradient(180deg,#fbfcff,#fff);
  margin-bottom:14px}
.ins-head.op{border-left-color:var(--high)}
.ins-head.pb{border-left-color:var(--warn)}
.ins-head .hl{font-size:15px; line-height:1.75; font-weight:550}
.ins-head .hl b{color:var(--ink); font-weight:750}
.ins-signal-title{display:flex;align-items:baseline;gap:9px;margin-top:14px;padding-top:12px;border-top:1px solid var(--line);font-size:13px;font-weight:750;color:var(--ink)}
.ins-signal-title span{font-size:11.5px;font-weight:400;color:var(--ink3)}
.ins-head .stats{display:flex; gap:22px; flex-wrap:wrap; margin-top:14px;
  padding-top:0}
.ins-head .stats .st .n{font-size:20px; font-weight:750; letter-spacing:-.02em}
.ins-head .stats .st .l{font-size:11.5px; color:var(--ink3); margin-top:2px}
.ins-head.op .st.strong .n{color:var(--high)}
.ins-head.pb .st.strong .n{color:var(--warn)}

.ins-toolbar{display:flex; justify-content:space-between; align-items:flex-start;
  gap:16px; flex-wrap:wrap; margin-bottom:12px}
.ins-layers{display:flex; gap:8px; flex-wrap:wrap}
.ins-layers button{border:1px solid var(--line); background:#fff; border-radius:20px;
  padding:5px 12px; font:inherit; font-size:12.5px; color:var(--ink2); cursor:pointer;
  transition:.15s; display:inline-flex; align-items:center; gap:6px}
.ins-layers button:hover{border-color:#c6d2f5; color:var(--primary)}
.ins-layers button.on{background:var(--primary-bg); border-color:#b9caff; color:var(--primary);
  font-weight:600}
.ins-layers button .r{background:rgba(16,26,51,.06); border-radius:20px; padding:0 6px;
  font-size:11px; font-weight:700}
.ins-layers button.on .r{background:rgba(47,92,246,.14)}

.ins-guide{background:#fffaf0; border:1px solid #f2e4c4; color:#7a5713;
  border-radius:var(--r-sm); padding:11px 15px; font-size:12.5px; line-height:1.8;
  margin-bottom:16px}
.ins-guide b{color:#5c4009}
.ins-decision-panel{margin:0 0 16px;padding:14px 16px;border:1px solid #d9e3f1;border-radius:var(--r);background:#fff;box-shadow:var(--sh)}
.ins-decision-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}
.ins-decision-head>div{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.ins-decision-head b{font-size:14px;color:var(--ink)}
.ins-decision-head span{font-size:12px;color:var(--ink3)}
.ins-decision-note{white-space:nowrap;color:var(--ink3);font-size:11.5px}
.ins-decision-grid{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr));gap:8px;margin-top:12px}
.ins-decision-chip{display:flex;align-items:center;gap:9px;min-height:48px;padding:7px 10px;border:1px solid var(--line);border-radius:var(--r-sm);background:#fff;color:var(--ink2);font:inherit;text-align:left;cursor:pointer}
.ins-decision-chip:hover,.ins-decision-chip.on{border-color:#9eb6ff;background:var(--primary-bg)}
.ins-decision-chip b{font-size:20px;color:var(--primary)}
.ins-decision-chip span{font-size:11.5px;line-height:1.35}
.ins-decision-chip.confirmed_all_in b{color:var(--high)}
.ins-decision-chip.control_then_all_in b,.ins-decision-chip.control_observe b{color:var(--warn)}
.ins-combinations{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:11px;color:var(--ink3);font-size:11.5px}
.ins-combinations button{border:1px solid var(--line);border-radius:5px;background:#fff;color:var(--ink2);padding:4px 8px;font:inherit;cursor:pointer}
.ins-combinations button:hover,.ins-combinations button.on{border-color:#9eb6ff;background:var(--primary-bg);color:var(--primary)}
.decision-proof{width:100%;color:var(--high);font-weight:750}
.ins-plan-banner{display:flex; align-items:center; justify-content:space-between; gap:18px; flex-wrap:wrap;
  margin:0 0 16px; padding:14px 16px; border:1px solid #dbe3ff; border-left:4px solid var(--primary);
  border-radius:var(--r); background:#fff; box-shadow:var(--sh)}
.ins-plan-banner.op{border-color:#c6ead6; border-left-color:var(--high); background:#fbfffc}
.ins-plan-banner.pb{border-color:#f3c8c4; border-left-color:var(--warn); background:#fffdfc}
.ins-plan-copy{min-width:0; display:flex; flex-direction:column; gap:3px; line-height:1.55}
.ins-plan-kicker{font-size:11px; color:var(--ink3); font-weight:650}
.ins-plan-copy>b{font-size:14px; color:var(--ink)}
.ins-plan-copy>span{font-size:12.5px; color:var(--ink2)}
.ins-plan-copy small{font-size:11.5px; color:var(--ink3)}
.ins-plan-copy strong{color:var(--ink2)}
.ins-plan-actions{display:flex; align-items:center; gap:8px; flex-wrap:wrap}
.ins-plan-banner.op .ins-plan-actions .btn-primary{background:var(--high); border-color:var(--high)}
.ins-plan-banner.op .ins-plan-actions .btn-primary:hover{background:#0b8148; border-color:#0b8148}

.ins-list{display:flex; flex-direction:column; gap:12px}
.ins-card{background:#fff; border:1px solid var(--line); border-radius:var(--r);
  padding:15px 18px; box-shadow:var(--sh); border-left:4px solid var(--observe)}
.ins-card.op{border-left-color:var(--high)}
.ins-card.pb{border-left-color:var(--warn)}
.ins-card.op.weak{border-left-color:#a9dcc1}
.ins-card.pb.weak{border-left-color:#f0b3ac}
.ins-card-head{display:flex; align-items:center; justify-content:space-between; gap:14px;
  flex-wrap:wrap}
.ins-obj{display:flex; align-items:baseline; gap:9px; flex-wrap:wrap}
.ins-obj .lb{font-size:11px; font-weight:600; color:var(--ink2); background:var(--line2);
  border-radius:20px; padding:2px 9px}
.ins-obj .nm{font-size:15px; font-weight:700}
.ins-obj .stg{font-size:11px}
.ins-obj .stg.st-strong{color:var(--ink); background:#eef1f7; border-radius:20px;
  padding:2px 9px; font-weight:650}
.ins-card.op .ins-obj .stg.st-strong{background:var(--high-bg); color:#0b6b3e}
.ins-card.pb .ins-obj .stg.st-strong{background:var(--warn-bg); color:#a32b21}
.ins-chips{display:flex; gap:6px; flex-wrap:wrap; margin-top:10px}
.ins-chip{font-size:11.5px; border-radius:6px; padding:3px 9px; font-weight:600;
  background:var(--line2); color:var(--ink2)}
.ins-card.op .ins-chip{background:var(--high-bg); color:#0b6b3e}
.ins-card.pb .ins-chip{background:var(--warn-bg); color:#a32b21}
.ins-metrics{display:flex; gap:22px; flex-wrap:wrap; margin-top:12px; padding-top:12px;
  border-top:1px dashed var(--line)}
.ins-metrics .m .k{font-size:11px; color:var(--ink3)}
.ins-metrics .m .v{font-size:14px; font-weight:650; font-variant-numeric:tabular-nums}
.ins-metrics .m .v.up{color:var(--high)}
.ins-metrics .m .v.down{color:var(--warn)}
.ins-bench{margin-top:11px; font-size:12.5px; color:var(--ink2); background:var(--line2);
  border-radius:var(--r-sm); padding:9px 12px; line-height:1.7}
.ins-bench b{color:var(--ink)}
.ins-attribution{display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; margin-top:11px; padding:10px 12px; background:#fafbfe; border:1px solid var(--line2); border-radius:var(--r-sm); color:var(--ink2); font-size:12px; line-height:1.65}
.ins-attribution .point-label{font-weight:700; color:var(--primary)}
.ins-attribution .metric-proof{width:100%; color:var(--ink); font-weight:600}
.ins-attribution .law-candidates{width:100%; color:var(--ink3); font-size:11.5px}
.ins-foot{display:flex; align-items:center; justify-content:space-between; gap:12px;
  margin-top:11px; flex-wrap:wrap}
.ins-foot .ev{font-size:12px; color:var(--ink3)}
.ins-foot .ev b{color:var(--ink2)}
.ins-empty{background:#fff; border:1px dashed var(--line); border-radius:var(--r);
  padding:34px; text-align:center; color:var(--ink3); font-size:13px; line-height:1.8}

/* ── 运营动作 / 复盘回诊 ───────────────────────────────── */
.plan-switch{display:flex; gap:8px; flex-wrap:wrap; margin:0 0 16px}
.plan-switch button{min-height:36px; padding:0 14px; border:1px solid var(--line); border-radius:var(--r-sm);
  background:#fff; color:var(--ink2); font:inherit; font-size:13px; font-weight:600; cursor:pointer}
.plan-switch button:hover{border-color:#c6d2f5; color:var(--primary)}
.plan-switch button.on{background:var(--primary-bg); border-color:#b9caff; color:var(--primary)}
.plans-list{display:flex; flex-direction:column; gap:12px; max-width:1040px}
.plan-card{background:#fff; border:1px solid var(--line); border-left:4px solid var(--primary);
  border-radius:var(--r); padding:16px 18px; box-shadow:var(--sh)}
.plan-card.plan-all-in{border-left-color:var(--high)}
.plan-card.plan-control{border-left-color:var(--warn)}
.plan-card-head{display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap}
.plan-card-head>div{min-width:0; display:flex; align-items:baseline; gap:8px; flex-wrap:wrap}
.plan-card-head b{font-size:14px}
.plan-kind{display:inline-flex; align-items:center; height:24px; padding:0 8px; border-radius:5px;
  font-size:11px; font-weight:750; letter-spacing:.03em; background:var(--primary-bg); color:var(--primary)}
.plan-all-in .plan-kind{background:var(--high-bg); color:#0b6b3e}
.plan-control .plan-kind{background:var(--warn-bg); color:#a32b21}
.plan-verify{border-left-color:#7c8ba1}
.plan-verify .plan-kind{background:#eef2f7; color:#536579}
.plan-status{width:auto; min-width:92px; padding:6px 9px; font-size:12px}
.plan-meta,.plan-target{display:flex; gap:8px 18px; flex-wrap:wrap; margin-top:10px; color:var(--ink2); font-size:12px}
.plan-meta span,.plan-target span{display:inline-flex; align-items:center}
.plan-summary{margin-top:11px; color:var(--ink2); font-size:12.5px; line-height:1.7}
.plan-basis{margin-top:8px; padding:8px 10px; border-left:3px solid #cbd5f5; color:var(--ink3); background:#fafbfe; font-size:11.5px; line-height:1.65}
.plan-basis b{color:var(--ink2); margin-right:7px}
.plan-action{margin-top:10px; padding:10px 12px; background:var(--line2); border-radius:var(--r-sm);
  color:var(--ink); font-size:13px; line-height:1.7}
.plan-action b{display:inline-block; margin-right:8px; color:var(--ink2); font-size:11px}
.plan-target{padding-top:10px; border-top:1px dashed var(--line); color:var(--ink3)}
.plan-evidence{display:grid; grid-template-columns:minmax(180px,.7fr) minmax(260px,1.3fr); gap:8px 18px; margin-top:10px; padding:10px 12px; border:1px solid #dbe3ff; border-radius:var(--r-sm); background:#f8faff; color:var(--ink2); font-size:12px; line-height:1.6}
.plan-evidence span,.plan-guardrails span{min-width:0; overflow-wrap:anywhere}
.plan-evidence b,.plan-guardrails b{display:block; margin-bottom:2px; color:var(--ink3); font-size:11px; font-weight:700}
.plan-guardrails{display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px 14px; margin-top:8px; padding:10px 12px; border:1px solid var(--line); border-radius:var(--r-sm); background:#fff; color:var(--ink2); font-size:12px; line-height:1.6}
.plan-guardrails>div{min-width:0}
.plan-evidence-box{display:grid; grid-template-columns:minmax(160px,.6fr) minmax(240px,1.4fr); gap:10px 16px; margin:4px 0 14px; padding:10px 12px; border:1px solid #dbe3ff; border-radius:var(--r-sm); background:var(--primary-bg); color:var(--ink2); font-size:12px; line-height:1.6}
.plan-evidence-box>div{min-width:0}
.plan-evidence-box b{display:block; margin-bottom:2px; color:var(--primary); font-size:11px}
.plan-card-foot{display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-top:12px}
.review-summary{display:grid; grid-template-columns:repeat(4,minmax(120px,1fr)); gap:10px; margin-bottom:20px; max-width:1040px}
.review-stat{background:#fff; border:1px solid var(--line); border-radius:var(--r-sm); padding:12px 14px; box-shadow:var(--sh)}
.review-stat b{display:block; font-size:21px; line-height:1.2; color:var(--ink)}
.review-stat span{display:block; margin-top:4px; font-size:12px; color:var(--ink3)}
.review-stat.good b{color:var(--high)}
.review-stat.warn b{color:var(--warn)}
.review-grid{align-items:start}
.review-grid .card{min-width:0}
.review-logs{display:flex; flex-direction:column; gap:9px; max-height:540px; overflow-y:auto}
.review-log{display:grid; grid-template-columns:auto 1fr; gap:3px 10px; padding:10px 0; border-bottom:1px solid var(--line2); font-size:12.5px}
.review-log b{color:var(--primary); font-size:11px}
.review-log span{min-width:0; color:var(--ink2); word-break:break-word}
.review-log time{grid-column:2; color:var(--ink3); font-size:11px}

/* 计划弹窗三段式：矮视口时只滚动中间表单，底部按钮保持可见 */
.plan-modal{position:fixed; inset:0; z-index:70; display:flex; align-items:center; justify-content:center;
  overflow-y:auto; padding:20px 12px}
.plan-modal-mask{position:absolute; inset:0; background:rgba(16,26,51,.42); backdrop-filter:blur(2px)}
.plan-modal-panel{position:relative; z-index:1; width:min(700px,94vw); max-height:calc(100vh - 40px); display:flex;
  flex-direction:column; overflow:hidden; background:#fff; border:1px solid var(--line); border-radius:var(--r);
  box-shadow:0 20px 60px rgba(16,26,51,.24)}
.plan-modal-head{display:flex; align-items:flex-start; justify-content:space-between; gap:16px; padding:18px 22px 12px;
  border-bottom:1px solid var(--line); flex:0 0 auto}
.plan-modal-head h3{font-size:16px}
.plan-modal-head .sub{margin-top:4px; line-height:1.5}
.plan-modal-body{padding:16px 22px 4px; overflow-y:auto; flex:1 1 auto; min-height:0}
.plan-modal-foot{display:flex; justify-content:flex-end; gap:8px; padding:12px 22px 16px; border-top:1px solid var(--line); flex:0 0 auto}
.plan-form-grid{display:grid; grid-template-columns:1fr 1fr; gap:0 14px}
.plan-form-grid .field{min-width:0}
.plan-point{margin-bottom:16px; padding:10px 12px; border:1px solid #dbe3ff; border-radius:var(--r-sm);
  background:var(--primary-bg); color:var(--ink2); font-size:12.5px; line-height:1.7}
.plan-point b{color:var(--primary); margin-right:4px}

@media(max-width:700px){
  #page-chat{padding:0 14px 20px}
  #page-chat:not(.has-messages){justify-content:flex-start; padding-top:42px}
  #page-chat:not(.has-messages) .chat-head{margin-top:0}
  .chat-head h2{font-size:20px}
  .chat-context{max-width:100%; flex-wrap:wrap; justify-content:center}
  .chat-attachment-meta{max-width:48%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
  .ins-head .stats{gap:16px}
  .ins-toolbar{flex-direction:column}
  .ins-signal-title{align-items:flex-start;flex-direction:column;gap:3px}
  .ins-decision-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .profile-doc-head{flex-direction:column}
  .profile-upload-actions{width:100%}
  .profile-upload-actions .btn{flex:1 1 140px}
  .profile-entry-head{flex-direction:column}
  .profile-module{padding:15px 14px}
  .profile-module-head{flex-wrap:wrap}
  .reference-row{grid-template-columns:1fr 1fr}
  .reference-row input[data-reference-field="name"],.reference-row input[data-reference-field="url"],.reference-row input[data-reference-field="note"]{grid-column:1 / -1}
  .reference-row button{grid-column:2;justify-self:end}
  .profile-doc-fields{grid-template-columns:1fr}
  .dimension-manager-head{flex-direction:column}
  .dimension-manager-head .btn{align-self:flex-start}
  .dimension-groups{grid-template-columns:1fr}
  .dimension-row{grid-template-columns:auto 1fr 1fr; align-items:center}
  .dimension-row .dimension-aliases{grid-column:2 / -1}
  .dimension-row [data-dimension-save],.dimension-row [data-dimension-cancel],.dimension-row [data-dimension-disable]{min-height:38px}
  .ins-plan-banner{align-items:flex-start; flex-direction:column}
  .review-summary{grid-template-columns:repeat(2,minmax(120px,1fr))}
  .plan-evidence,.plan-guardrails,.plan-evidence-box{grid-template-columns:1fr}
  .plan-modal{align-items:flex-start}
  .plan-modal-panel{width:100%; max-width:700px}
  .plan-form-grid{grid-template-columns:1fr}
}

@media(max-width:520px){
  .dimension-row{grid-template-columns:auto 1fr}
  .dimension-row .dimension-key,.dimension-row .dimension-label,.dimension-row .dimension-aliases{grid-column:2}
  .dimension-row [data-dimension-save],.dimension-row [data-dimension-cancel],.dimension-row [data-dimension-disable]{grid-column:2; width:100%}
}

/* v6: one review version, quiet canvas, mobile and short-viewport guards. */
.app{height:100dvh}
.sidebar{overflow-y:auto}
.topbar{height:auto;min-height:66px;flex:0 0 auto;padding:10px 22px;flex-wrap:wrap}
.topbar-right{min-width:0;flex:1;justify-content:flex-end}
.review-history{width:220px;max-width:100%;min-height:40px;text-overflow:ellipsis}
.review-history-label{font-size:12px;color:var(--ink3)}
.review-run-pill{display:none!important}
#quota-pill{display:none}
.page{min-width:0;min-height:0}
.chat-mode-bar{display:flex;align-items:center;gap:10px;width:100%;max-width:820px;margin:9px auto 0;color:var(--ink3);font-size:12px;flex:0 0 auto}
.chat-mode-bar select{width:auto;padding:5px 9px;min-height:36px;font-size:12px;background:transparent}
.chat-mode-bar>span{margin-left:auto}
#page-chat>.chat-input-wrap{flex:0 0 auto;position:relative}
#page-chat>.chat-suggest{flex:0 0 auto}
#page-chat.has-messages .chat-head{margin:18px 0 12px;flex:0 0 auto}
#page-chat.has-messages .chat-head h2{font-size:16px}
#page-chat.has-messages .chat-head .sub{display:none}
#page-chat.has-messages .chat-body{min-height:80px}
#page-chat.has-messages .chat-suggest{display:none}
.bubble{min-width:0;overflow-wrap:anywhere}
.bubble.bot{max-width:100%;width:100%}
.chat-review-card{white-space:normal}
.chat-review-actions{display:flex;gap:8px;flex-wrap:wrap}
.chat-review-head{gap:12px;flex-wrap:wrap}
.chat-review-head span{overflow-wrap:anywhere}
.review-warnings{font-size:12px;margin:10px 0;max-height:180px;overflow:auto}
.review-warnings summary{cursor:pointer;padding:6px 0}
.review-warnings ul{padding-left:22px}
.fact-panel{width:min(1300px,96vw)}
.fact-body{min-height:0}
.layer-fact-form{display:flex;flex-direction:column;gap:14px;min-width:0}
.layer-fact-intro{display:flex;flex-direction:column;gap:3px;padding:11px 13px;border:1px solid #dbe3ff;border-radius:8px;background:#f5f8ff;color:var(--ink2);font-size:12px;line-height:1.6}
.layer-fact-intro b,.layer-fact-section b{color:var(--primary)}
.layer-fact-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 14px;min-width:0}
.layer-fact-grid.metrics{grid-template-columns:repeat(4,minmax(130px,1fr))}
.layer-fact-grid.optional{grid-template-columns:repeat(2,minmax(0,1fr))}
.layer-fact-field{display:flex;flex-direction:column;gap:6px;min-width:0;color:var(--ink2);font-size:12px;font-weight:600}
.layer-fact-field input{width:100%;min-width:0;min-height:44px;padding:0 11px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--ink);font:inherit;font-weight:400;box-sizing:border-box}
.layer-fact-field input:focus{border-color:#8ba9ee;outline:3px solid #e7efff}
.layer-fact-section{display:flex;align-items:baseline;gap:10px;padding-top:2px;color:var(--ink2);font-size:12px}
.layer-fact-section span{color:var(--ink3);font-weight:400}
#layer-add-error{margin:0;color:var(--warn);overflow-wrap:anywhere}
.fact-toolbar,.fact-pagination{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin:8px 0 14px}
.fact-grid{width:100%;max-height:56vh;overflow:auto}
.fact-grid input,.fact-grid select{min-width:140px;min-height:44px}
.fact-grid pre{white-space:pre-wrap;overflow-wrap:anywhere;width:220px;max-height:160px;overflow:auto;font-size:11px}
.fact-grid th{position:sticky;top:0;z-index:1}
.fact-grid td:first-child{min-width:140px}
.fact-foot{justify-content:flex-end}
.fact-icp-confirm{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:12px;margin:10px 0;background:#f5f8ff;border:1px solid #dbe3f5;border-radius:8px;font-size:12px;line-height:1.7}
.fact-icp-confirm .btn{white-space:normal;height:auto;min-height:44px;text-align:left;padding:8px 12px;max-width:100%}
.fact-icp-confirm small{color:var(--ink3)}
#fact-error{color:var(--warn);overflow-wrap:anywhere}
.layer-add{margin-left:8px;font-size:11px;min-height:36px}
.dimension-row{grid-template-columns:auto minmax(90px,1fr) minmax(120px,1.3fr) auto auto}
.dimension-row .dimension-key{display:none}
.dimension-row input{min-height:40px}
.btn:focus-visible,button:focus-visible,a:focus-visible{outline:3px solid #9eb6ff;outline-offset:2px}
.btn:disabled,button:disabled{opacity:.55;cursor:wait}
.plan-modal{box-sizing:border-box}
.plan-modal-panel{max-height:calc(100dvh - 40px)}
.plan-modal-head,.plan-modal-foot{min-width:0}
.plan-modal-head>div{min-width:0;overflow-wrap:anywhere}
.drawer-panel{max-width:96vw;min-height:0;overflow:hidden;display:flex;flex-direction:column}
.drawer-panel>.table-wrap{min-height:0;flex:1;overflow:auto}
.drawer-head{flex:0 0 auto}
.ins-obj,.ins-card-head,.plan-card-head{min-width:0;overflow-wrap:anywhere}
@media(max-width:1100px){
  .sidebar{width:184px;flex-basis:184px}
  .topbar{padding:8px 14px;gap:8px}
  .topbar-right{gap:6px}
  .review-history-label,#readiness-pill{display:none}
  .review-history{width:185px}
}
@media(max-width:700px){
  .app{flex-direction:column}
  .sidebar{width:100%;flex:0 0 auto;padding:6px 8px;display:flex;flex-direction:row;gap:6px;overflow-x:auto;overflow-y:hidden;max-height:62px}
  .side-brand,.side-group,.side-foot{display:none}
  .nav{flex-direction:row;gap:4px;flex:0 0 auto}
  .nav-item{padding:9px 10px;min-height:44px;white-space:nowrap;font-size:12px;gap:5px}
  .nav-item i,.nav-item .badge{display:none}
  .main{min-height:0;flex:1}
  .topbar{padding:8px 12px;gap:8px;align-items:center}
  .topbar-right{flex:1;justify-content:flex-end}
  .review-history{width:160px;max-width:44vw;min-height:44px}
  #period-pill{order:2;height:32px;cursor:pointer}
  .export-wrap .btn{padding:0 10px;min-height:44px}
  .ws-btn{min-height:38px;padding:0 12px}
  .page{padding:18px 12px 24px}
  #page-chat:not(.has-messages){padding-top:24px;justify-content:center}
  .chat-head h2{font-size:19px}
  .chat-suggest{gap:6px}
  .chat-suggest button{min-height:44px;font-size:12px;padding:6px 10px}
  .chat-mode-bar{flex-wrap:wrap;gap:6px}
  .chat-mode-bar>span{display:none}
  .chat-mode-bar select{min-height:44px}
  .chat-input-wrap{gap:6px}
  .chat-input-wrap .btn{padding:0 12px}
  .chat-attachment{flex-wrap:wrap}
  .chat-attachment strong{min-width:0;max-width:70%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .chat-attachment-remove{min-width:44px;min-height:44px}
  .btn,.btn-sm,.plan-switch button,.ins-layers button{min-height:44px}
  .dimension-row{grid-template-columns:auto 1fr}
  .dimension-row .dimension-label,.dimension-row .dimension-aliases{grid-column:2}
  .fact-panel{width:100%;max-height:calc(100dvh - 24px)}
  .fact-modal{padding:12px 8px}
  .fact-body,.plan-modal-body{padding:10px 12px}
  .plan-modal-head,.plan-modal-foot{padding:10px 12px}
  .plan-modal-foot{flex-wrap:wrap}
  .fact-grid{max-height:none}
  .layer-fact-grid,.layer-fact-grid.metrics,.layer-fact-grid.optional{grid-template-columns:1fr}
  .layer-fact-section{align-items:flex-start;flex-direction:column;gap:3px}
  .review-summary{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-height:520px){
  #page-chat:not(.has-messages){justify-content:flex-start;padding-top:14px}
  .chat-head{margin:0 0 12px}
  .chat-head .sub,.chat-kicker{display:none}
  .chat-context{margin-top:8px}
  #page-chat.has-messages .chat-head{display:none}
  #page-chat.has-messages .chat-body{min-height:50px;padding-top:10px}
  .chat-suggest{display:none}
  .plan-modal{padding:8px}
  .plan-modal-panel{max-height:calc(100dvh - 16px)}
}
.threshold-rows{display:grid;gap:10px}
.threshold-zone-guide{display:flex;flex-wrap:wrap;gap:7px;margin:4px 0 12px}
.threshold-zone{display:inline-flex;align-items:center;min-height:26px;padding:0 9px;border-radius:999px;font-size:11px;font-weight:650}
.threshold-zone.high{color:var(--high);background:var(--high-bg)}
.threshold-zone.normal{color:var(--normal);background:var(--normal-bg)}
.threshold-zone.warn{color:var(--warn);background:var(--warn-bg)}
.threshold-row{display:grid;grid-template-columns:minmax(220px,1fr) 150px 150px 170px;gap:12px;align-items:end;padding:12px 0;border-bottom:1px solid #e7ebf2}
.threshold-row b,.threshold-row small{display:block}
.threshold-row small{color:#78849a;margin-top:4px}
.threshold-row label{font-size:12px;color:#65738b}
.threshold-row input,.threshold-foot input{display:block;width:100%;box-sizing:border-box;margin-top:5px;padding:9px;border:1px solid #d9e0ea;border-radius:6px}
.threshold-foot{display:flex;gap:10px;align-items:center;padding-top:14px}
.threshold-foot input{max-width:220px}
@media(max-width:760px){.threshold-row{grid-template-columns:1fr 1fr}.threshold-row>div{grid-column:1/-1}.threshold-foot{flex-wrap:wrap}.threshold-foot input{max-width:none;flex:1 1 220px}}

/* 体验反馈：低干扰的工作区级改良队列 */
.feedback-inline-btn{margin-top:10px}
.ins-runtime-note{display:inline-flex;padding:4px 8px;border-radius:4px;background:#edf8f1;color:#197044;font-size:11px;font-weight:650}
.feedback-layout{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(280px,.65fr);gap:18px;align-items:start}
.feedback-compose,.feedback-context-card,.feedback-list-section{border:1px solid var(--line);border-radius:8px;background:#fff}
.feedback-compose,.feedback-context-card{padding:18px}
.feedback-card-head,.feedback-list-head,.feedback-item-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px}
.feedback-card-head h3,.feedback-list-head h3{margin:0 0 5px}
.feedback-card-head p,.feedback-list-head p{margin:0}
.feedback-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}
.feedback-context{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:14px;padding-top:14px;border-top:1px solid var(--line);font-size:12px;color:var(--ink3)}
.feedback-context .btn{margin-left:auto}
.feedback-context b{color:var(--ink)}
.feedback-list-section{margin-top:18px;padding:18px}
.feedback-list-head{margin-bottom:14px}
.feedback-list-head select{min-height:38px;padding:0 9px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--ink)}
.feedback-list{display:grid;gap:10px}
.feedback-item{padding:15px;border:1px solid #e3e8f1;border-radius:7px;background:#fbfcfe}
.feedback-item-head{font-size:13px;align-items:center}
.feedback-item-head b{margin-left:8px}
.feedback-type{display:inline-flex;padding:3px 7px;border-radius:4px;background:#eef3ff;color:var(--primary);font-size:11px}
.feedback-status{display:inline-flex;padding:4px 8px;border-radius:999px;font-size:11px;background:#eef1f5;color:var(--ink3)}
.feedback-status.applied{background:var(--high-bg);color:var(--high)}
.feedback-status.needs_confirmation,.feedback-status.confirmed{background:#fff5db;color:#9a6800}
.feedback-status.rolled_back,.feedback-status.rejected{background:#f2f3f5;color:#778195}
.feedback-content{margin:11px 0;color:var(--ink);line-height:1.65;overflow-wrap:anywhere}
.feedback-facts{display:flex;gap:14px;flex-wrap:wrap;color:var(--ink3);font-size:11px}
.feedback-proposal{margin-top:11px;padding:10px 12px;border-left:3px solid var(--primary);background:#f6f8ff;color:var(--ink2);font-size:12px;line-height:1.6}
.feedback-proposal small{display:block;color:var(--ink3);margin-top:4px}
.feedback-item-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:12px}
.feedback-runtime{display:grid;gap:8px;margin-top:14px}
.feedback-runtime-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 9px;padding:10px;background:#f7f9fc;border-radius:6px;font-size:12px}
.feedback-runtime-item span,.feedback-runtime-item small{color:var(--ink3)}
.feedback-runtime-item small{grid-column:1/-1;font-size:10px}
.feedback-empty{padding:18px 8px;color:var(--ink3);font-size:12px;line-height:1.6}
.feedback-empty.bad{color:var(--warn)}
.chat-review-diagnostic{margin-top:10px;padding:10px 12px;border-left:3px solid #7390d8;background:#f6f8ff;color:var(--ink2);font-size:12px;line-height:1.65;overflow-wrap:anywhere}
@media(max-width:780px){
  .feedback-layout{grid-template-columns:1fr}
  .feedback-form-grid{grid-template-columns:1fr}
  .feedback-context .btn{margin-left:0;width:100%}
  .feedback-list-head{align-items:stretch;flex-direction:column}
  .feedback-list-head select{width:100%}
}
