:root{
  --bg:#F4F5F3; --surface:#FFFFFF; --border:#E3E5E1; --border-soft:#EBEDE9;
  --ink:#22272B; --ink-2:#5B646B; --ink-3:#8A939B;
  --accent:#C2701A; --accent-soft:#F7EDE2;
  --st-new:#8A939B; --st-todo:#C2701A; --st-doing:#2563EB; --st-done:#15803D; --st-drop:#A9AFB5;
  --st-new-bg:#EFF1F2; --st-todo-bg:#F7EDE2; --st-doing-bg:#E7EFFD; --st-done-bg:#E7F4EC; --st-drop-bg:#F0F1F3;
  --shadow:0 1px 2px rgba(34,39,43,.05), 0 4px 14px rgba(34,39,43,.06);
  --radius:10px;
  --font:"PingFang SC","Microsoft YaHei","Noto Sans SC","Segoe UI",system-ui,sans-serif;
}
/* 门户深色皮肤（portal-theme.js 写 <html data-portal-scheme>，见 portal-theme.css） */

*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{background:var(--bg);color:var(--ink);font-family:var(--font);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased}
button{font-family:inherit;cursor:pointer;border:none;background:none}
input{font-family:inherit}
a{color:var(--accent);text-decoration:none}

/* ===== 顶栏（IJ-046：两段式布局——上行品牌+右侧操作，下行整行导航；
     原单行 56px 塞 9 个导航钮 + 皮肤/徽标/用户/退出，1080px 内早已超宽挤成一团） ===== */
.topbar{position:sticky;top:0;z-index:20;background:var(--surface);border-bottom:1px solid var(--border)}
.topbar-inner{max-width:1080px;margin:0 auto;padding:8px 20px 0;min-height:0;display:flex;flex-wrap:wrap;align-items:center;gap:0 16px}
.brand{display:flex;align-items:center;gap:9px;font-weight:700;font-size:15px;letter-spacing:.2px}
.brand svg{width:20px;height:20px}
.brand small{color:var(--ink-3);font-weight:500;font-size:11px;letter-spacing:.4px;margin-top:2px}
/* 导航移到第二行（order 排到最后 + basis 100% 强制换行），放不下时横向滚动兜底、隐藏滚动条 */
.nav{order:10;flex:1 1 100%;display:flex;gap:4px;margin-left:0;padding:5px 0 8px;overflow-x:auto;scrollbar-width:none}
.nav::-webkit-scrollbar{display:none}
.nav button{flex:none;white-space:nowrap;padding:6px 13px;border-radius:8px;font-size:13px;color:var(--ink-2);font-weight:500}
.nav button:hover{background:var(--bg)}
.nav button.active{background:var(--accent-soft);color:var(--accent);font-weight:600}
.top-spacer{flex:1}
.userchip{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-2)}
.userchip .avatar{width:26px;height:26px;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}
.btn-ghost{padding:6px 12px;border-radius:8px;font-size:13px;color:var(--ink-2)}
.btn-ghost:hover{background:var(--bg);color:var(--ink)}

/* ===== 布局 ===== */
.wrap{max-width:1080px;margin:0 auto;padding:20px 20px 60px}
.quickcard{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px;margin-bottom:16px}
.quickcard .qlabel{font-size:12px;color:var(--ink-3);margin-bottom:8px;display:flex;align-items:center;gap:6px}
.quickcard .qlabel b{color:var(--accent);font-weight:600}
.quick-input{width:100%;border:none;outline:none;font-size:16px;color:var(--ink);background:transparent;padding:8px 0;resize:none;overflow:hidden;display:block;line-height:1.6;min-height:32px;font-family:inherit}
.quick-input::placeholder{color:var(--ink-3)}
.quick-hint{display:flex;justify-content:space-between;margin-top:8px;font-size:12px;color:var(--ink-3)}
.quick-hint kbd{background:var(--bg);border:1px solid var(--border);border-radius:5px;padding:1px 7px;font-family:inherit;font-size:11px}

.statrow{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}
.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 16px}
.stat .v{font-size:22px;font-weight:700;line-height:1.2}
.stat .k{font-size:12px;color:var(--ink-3);margin-top:2px}
.stat.accent .v{color:var(--accent)}

.layout{display:grid;grid-template-columns:200px 1fr;gap:18px;align-items:start}
.rail{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px;position:sticky;top:104px}
.rail h4{font-size:12px;color:var(--ink-3);font-weight:600;margin:14px 0 8px;letter-spacing:.3px}
.rail h4:first-child{margin-top:0}
.search{width:100%;border:1px solid var(--border);border-radius:8px;padding:7px 10px;font-size:13px;outline:none;background:var(--surface);color:var(--ink)}
.search:focus{border-color:var(--accent)}
.filters,.taglist{display:flex;flex-direction:column;gap:2px}
.fbtn{text-align:left;padding:6px 10px;border-radius:7px;font-size:13px;color:var(--ink-2);display:flex;justify-content:space-between;align-items:center;flex:1;border:none;background:transparent;cursor:pointer}
.fbtn:hover{background:var(--bg)}
.fbtn.active{background:var(--accent-soft);color:var(--accent);font-weight:600}
.fbtn .cnt{font-size:11px;color:var(--ink-3);background:var(--bg);border-radius:9px;padding:0 7px}
.fbtn.active .cnt{background:var(--surface);color:var(--accent)}
.tagrow{display:flex;align-items:center;gap:2px;border-radius:7px}
.tagrow.active{background:var(--accent-soft)}
.tagops{display:none;gap:2px;padding-right:4px}
.tagrow:hover .tagops{display:flex}
.tagop{border:none;background:transparent;color:var(--ink-3);font-size:12px;cursor:pointer;padding:3px 4px;border-radius:5px;line-height:1}
.tagop:hover{color:var(--accent);background:var(--bg)}
/* 侧栏标签快捷「归场景」下拉（IJ-027）：hover 操作区里行内展开 */
.tagquickscene{font-size:11.5px;padding:2px 4px;border:1px solid var(--border);
  border-radius:6px;background:var(--card,#fff);color:var(--ink);max-width:96px}
.tagquickscene:focus{border-color:var(--accent)}
/* 回顾页顶部场景胶囊（IJ-027）：在 insight-head 里不要带上 codescopes 的默认外边距 */
#reviewSceneChips{margin:0}
.daterow{display:flex;align-items:center;gap:6px;margin-bottom:12px}
.daterow input[type=date]{flex:1;min-width:0;border:1px solid var(--border);border-radius:8px;padding:5px 6px;font-size:12px;background:var(--surface);color:var(--ink);outline:none}
.daterow .dsep{font-size:11px;color:var(--ink-3)}
.igroup{margin-bottom:14px}
.ghead{display:flex;align-items:center;justify-content:space-between;padding:7px 10px;border-radius:9px;background:var(--bg);margin-bottom:6px}
.gname{background:none;border:none;font-size:13px;font-weight:600;color:var(--accent);cursor:pointer;padding:0}
.gname:hover{text-decoration:underline}
.gcnt{font-size:11.5px;color:var(--ink-3)}
.table-wrap{overflow-x:auto;margin-top:10px}
table.tagstats{width:100%;border-collapse:collapse;font-size:12.5px}
table.tagstats th{text-align:left;color:var(--ink-3);font-weight:600;padding:7px 10px;border-bottom:1px solid var(--border);white-space:nowrap}
table.tagstats td{padding:7px 10px;border-bottom:1px solid var(--border);color:var(--ink-2);white-space:nowrap}
table.tagstats tbody tr{cursor:pointer}
table.tagstats tbody tr:hover{background:var(--bg)}
table.tagstats .ttag{color:var(--accent);font-weight:600}
.tmini{display:inline-flex;align-items:flex-end;gap:2px;height:20px}
.tbar{width:6px;background:var(--accent);opacity:.75;border-radius:2px;min-height:3px}

.list{display:flex;flex-direction:column;gap:10px}
.idea{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 16px}
.idea-top{display:flex;align-items:flex-start;gap:10px}
.idea-content{flex:1;font-size:14.5px;color:var(--ink);white-space:pre-wrap;word-break:break-word}
.idea-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:9px}
.badge{font-size:11.5px;font-weight:600;padding:2px 9px;border-radius:20px;line-height:1.6}
.badge.new{background:var(--st-new-bg);color:var(--st-new)}
.badge.todo{background:var(--st-todo-bg);color:var(--st-todo)}
.badge.doing{background:var(--st-doing-bg);color:var(--st-doing)}
.badge.done{background:var(--st-done-bg);color:var(--st-done)}
.badge.dropped{background:var(--st-drop-bg);color:var(--st-drop)}
.tagchip{font-size:11.5px;color:var(--accent);background:var(--accent-soft);padding:2px 9px;border-radius:20px;cursor:pointer}
.idea-time{font-size:11.5px;color:var(--ink-3)}
.idea-ops{margin-left:auto;display:flex;gap:6px;align-items:center}
.opbtn{font-size:12px;color:var(--ink-2);padding:4px 9px;border-radius:7px;border:1px solid var(--border)}
.opbtn:hover{background:var(--bg);color:var(--ink)}
.opbtn.danger:hover{color:#B3261E;background:#FBEDEB;border-color:#F3C9C5}
.empty{background:var(--surface);border:1px dashed var(--border);border-radius:var(--radius);padding:44px 20px;text-align:center;color:var(--ink-3)}
.empty .big{font-size:30px;color:var(--accent);display:block;margin-bottom:8px}
.loading{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:40px;text-align:center;color:var(--ink-3)}

/* ===== 回顾视图 ===== */
.review-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:18px}
.rstat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px}
.rstat .v{font-size:24px;font-weight:700}
.rstat .k{font-size:12px;color:var(--ink-3)}
.rstat.rate .v{color:var(--accent)}
.chartcard{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;margin-bottom:14px}
.chartcard h3{font-size:13.5px;font-weight:600;margin-bottom:4px}
.chartcard .sub{font-size:11.5px;color:var(--ink-3);margin-bottom:10px}
.chartbox{height:230px;width:100%}
.funnel{display:flex;flex-direction:column;gap:10px}
.fstep{display:flex;align-items:center;gap:12px}
.fstep .lbl{width:84px;font-size:13px;color:var(--ink-2);text-align:right;flex-shrink:0}
.fstep .bar{height:22px;border-radius:5px;background:var(--accent);display:flex;align-items:center;justify-content:flex-end;padding-right:8px;color:#fff;font-size:11.5px;font-weight:600;min-width:34px}
.fstep .bar.b2{background:#C98B4D}.fstep .bar.b3{background:#D2A578}.fstep .bar.b4{background:#DCBE9C}
.fstep .num{font-size:12.5px;color:var(--ink-2);flex-shrink:0;width:44px}

/* ===== 弹窗 ===== */
.modal-mask{position:fixed;inset:0;background:rgba(20,24,28,.45);z-index:40;display:none;align-items:flex-start;justify-content:center;padding:60px 16px;overflow-y:auto}
.modal-mask.show{display:flex}
.modal{background:var(--surface);border-radius:14px;box-shadow:0 12px 40px rgba(20,24,28,.22);width:100%;max-width:520px;padding:20px 22px;animation:pop .18s ease}
@keyframes pop{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.modal h3{font-size:15px;font-weight:600;margin-bottom:12px;display:flex;align-items:center;gap:8px}
.modal .mbody{font-size:14.5px;white-space:pre-wrap;margin-bottom:14px}
.modal .mmeta{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px;align-items:center}
.mactions{display:flex;gap:8px;flex-wrap:wrap}
.mbtn{padding:7px 14px;border-radius:8px;font-size:13px;font-weight:600;border:1px solid var(--border)}
.mbtn:hover{background:var(--bg)}
.mbtn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}
.mbtn.primary:hover{filter:brightness(1.05)}
.mbtn[disabled]{opacity:.4;cursor:not-allowed}
.relate{background:var(--bg);border:1px dashed var(--border);border-radius:10px;padding:12px 14px;margin-top:16px}
.relate h4{font-size:12px;color:var(--ink-2);font-weight:600;margin-bottom:8px;display:flex;align-items:center;gap:6px}
.relate ul{list-style:none;display:flex;flex-direction:column;gap:7px}
.relate li{font-size:13px;color:var(--ink-2);display:flex;gap:8px;align-items:baseline}
.relate li::before{content:"↳";color:var(--accent);font-size:12px}
/* 修改想法区（需求 §25.3，IJ-038）：详情弹框内嵌编辑表单 */
.medit{background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:12px 14px;margin-top:16px}
.medit h4{font-size:12px;color:var(--ink-2);font-weight:600;margin-bottom:10px;display:flex;align-items:center;gap:6px}
.medit-lab{display:block;font-size:11.5px;color:var(--ink-3);margin-bottom:4px}
.medit textarea{width:100%;box-sizing:border-box;font-size:13px;padding:8px 10px;border:1px solid var(--border);
  border-radius:8px;background:var(--surface);color:var(--ink);resize:vertical;font-family:inherit;line-height:1.5}
.medit textarea:focus{outline:none;border-color:var(--accent)}
.medit .fgrid{margin-bottom:0}
.medit .mactions{margin-top:10px}
.phase-badge{font-size:10px;font-weight:700;background:#E7E5F7;color:#5B4FB9;border-radius:5px;padding:1px 6px;letter-spacing:.5px;vertical-align:middle}

/* ===== 提示 ===== */
.toast{position:fixed;left:50%;bottom:34px;transform:translateX(-50%);background:var(--ink);color:#fff;padding:9px 18px;border-radius:9px;font-size:13px;box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:opacity .2s;z-index:60}
.toast.show{opacity:1}
.banner{background:#FBEDEB;color:#8A2418;border:1px solid #F3C9C5;border-radius:var(--radius);padding:10px 14px;font-size:13px;margin-bottom:14px;display:none}
.banner.notify{background:#EAF4EC;color:#14532D;border-color:#C6E4CE;display:none;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.banner.notify .nb-actions{display:flex;gap:8px}

/* ===== 二期：行动 / 聚类 / 提醒 ===== */
.seg{display:flex;gap:2px;background:var(--bg);border:1px solid var(--border);border-radius:9px;padding:3px}
.seg button{font-size:12px;color:var(--ink-2);padding:4px 10px;border-radius:6px;border:none;background:transparent;cursor:pointer}
.seg button.active{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:0 1px 3px rgba(20,24,28,.12)}
.pri{font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:10px;margin-left:6px;vertical-align:1px}
.pri.high{background:#FBEDEB;color:#B3261E}.pri.mid{background:#FFF4E0;color:#9A6700}.pri.low{background:#EAF4EC;color:#14532D}
.due{font-size:11px;color:var(--ink-3);margin-left:8px}
.mbtn.accent{background:var(--surface);color:var(--accent);border-color:var(--accent);}
.mbtn.accent:hover{background:var(--accent-soft)}
.cluster{border:1px solid var(--border);border-radius:10px;padding:10px 12px;margin-bottom:8px;background:var(--surface)}
.c-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.c-words b{font-size:12px;color:var(--accent);background:var(--accent-soft);padding:2px 8px;border-radius:12px;margin-right:4px;font-weight:700}
.c-count{font-size:11.5px;color:var(--ink-3)}
.c-reps{display:flex;flex-direction:column;gap:4px}
.c-rep{font-size:12.5px;color:var(--ink-2);background:none;border:none;text-align:left;padding:3px 2px;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.c-rep:hover{color:var(--accent)}
.relate-item{background:none;border:none;font-size:13px;color:var(--ink-2);cursor:pointer;text-align:left;flex:1;display:flex;justify-content:space-between;gap:8px}
.relate-item:hover{color:var(--accent)}
.relate-item .score{font-size:11px;color:var(--ink-3);flex-shrink:0}
.remind-form{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-top:10px}
.remind-form label{font-size:12.5px;color:var(--ink-2);display:flex;align-items:center;gap:6px}
.remind-form select,.remind-form input[type=time]{font-size:12.5px;padding:5px 8px;border:1px solid var(--border);border-radius:7px;background:var(--surface);color:var(--ink)}
.remind-form .switch{display:flex;align-items:center;gap:7px;cursor:pointer}
.remind-form .switch input{accent-color:var(--accent)}

/* ===== 响应式 ===== */
@media (max-width:760px){
  .topbar-inner{padding:6px 14px 0;gap:0 10px}
  .nav{padding:4px 0 7px}
  .nav button{padding:6px 10px;font-size:13px}
  .statrow{grid-template-columns:repeat(2,1fr)}
  .layout{grid-template-columns:1fr}
  .rail{position:static}
  .review-grid{grid-template-columns:1fr 1fr}
  .wrap{padding:14px 14px 50px}
}
@media (max-width:460px){
  .review-grid{grid-template-columns:1fr}
  .userchip span.name{display:none}
}

/* ===== 交易视图（V1.1.0） ===== */
.parse-hint{display:none;flex-wrap:wrap;gap:6px;margin-top:9px;align-items:center}
.parse-hint.show{display:flex}
.pchip{font-size:11.5px;padding:2px 8px;border-radius:6px;background:var(--bg);
  color:var(--ink-2);border:1px solid var(--border-soft);white-space:nowrap}
.pchip b{color:var(--ink);font-weight:600}
.pchip.scene{background:var(--accent-soft);color:var(--accent);border-color:transparent}
.pchip.warn{background:#FDF2F2;color:#B4362F;border-color:#F3D6D3}
.trade-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.trade-head .hint{font-size:12px;color:var(--ink-3)}
.quality-note{font-size:11.5px;color:var(--ink-3);margin-top:8px;line-height:1.5}
.quality-note b{color:#B4362F;font-weight:600}
.trade-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:12px 0}
.mini-list{display:flex;flex-direction:column;gap:6px;max-height:330px;overflow:auto}
.mini-row{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:7px 9px;
  border:1px solid var(--border-soft);border-radius:8px;font-size:12.5px}
.mini-row .k{display:flex;align-items:center;gap:6px;min-width:0;overflow:hidden}
.mini-row .k span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mini-row .v{display:flex;gap:9px;color:var(--ink-2);font-variant-numeric:tabular-nums;flex-shrink:0}
.mini-row .v .remote{color:var(--ink-3)}
.mini-row .v .warn{color:#B4362F}
.mini-row button.k{background:transparent;border:none;padding:0;cursor:pointer;color:var(--ink);font:inherit}
.mini-row.clickable{cursor:pointer}
.mini-row.clickable:hover{border-color:var(--accent);background:var(--accent-soft)}
.mini-empty{font-size:12px;color:var(--ink-3);padding:8px 2px}
#tradeRecords td{font-size:12.5px;vertical-align:top}
#tradeRecords td.body{color:var(--ink-2);max-width:320px}
.rolechip{font-size:11px;padding:1px 6px;border-radius:5px;background:var(--bg);color:var(--ink-2)}
.rolechip.leader{background:#FDEEE9;color:#C2401A}
.rolechip.mismatch{background:#FDF2F2;color:#B4362F}

/* ===== 下钻面板（V1.3.0）：题材 / 个股 ===== */
.detail-head{display:flex;justify-content:space-between;align-items:center;gap:10px}
.detail-head h3{font-size:13.5px;font-weight:600}
.detail-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin:10px 0}
.detail-cell{border:1px solid var(--border-soft);border-radius:8px;padding:7px 10px}
.detail-cell .k{font-size:11px;color:var(--ink-3)}
.detail-cell .v{font-size:15px;font-weight:600;font-variant-numeric:tabular-nums}
.detail-cell.remote{border-style:dashed}
.detail-cell.remote .v{color:var(--ink-2)}
.detail-cell .src{font-size:10px;color:#5B4FB9;background:#E7E5F7;border-radius:4px;padding:0 4px;margin-left:4px}
.detail-list{display:flex;flex-direction:column;gap:5px;margin-top:6px}
.detail-line{font-size:12.5px;color:var(--ink-2);display:flex;gap:8px;align-items:baseline}
.detail-line .t{color:var(--ink-3);font-variant-numeric:tabular-nums;flex-shrink:0}
.detail-line .dbody{min-width:0;overflow-wrap:anywhere}
.detail-note{font-size:11.5px;color:var(--ink-3);margin-top:8px;line-height:1.5}
.detail-tag{font-size:10.5px;color:#5B4FB9;background:#E7E5F7;border-radius:4px;padding:0 5px}

/* 个股详情：分类统计面板（用户 2026-10-22） */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin-top:6px}
.stat-col h4{font-size:12px;color:var(--ink-2);margin:0 0 6px;font-weight:600}
.stat-chips{display:flex;flex-wrap:wrap;gap:5px}
.stat-chips .tagchip{font-size:11px;padding:2px 8px}
.stat-chips .tagchip b{color:var(--accent);margin-left:2px}
.stat-items{display:flex;flex-wrap:wrap;gap:8px}
.stat-item{display:flex;flex-direction:column;background:var(--bg);border:1px solid var(--border-soft);
  border-radius:8px;padding:6px 10px;min-width:80px}
.stat-item .sk{font-size:10.5px;color:var(--ink-3)}
.stat-item .sv{font-size:14px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;margin-top:2px}

/* ===== 标签分类汇总（需求 §22.4）：加载更多 + 小标签 chip ===== */
.more-row{text-align:center;padding:10px 0 4px}
.more-row .opbtn{font-size:12.5px}
.tagchip.small{font-size:10.5px;padding:1px 7px;cursor:default;flex-shrink:0}

/* ===== 修正表单 ===== */
.fgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px;margin-bottom:12px}
.fgrid label{display:flex;flex-direction:column;gap:4px;font-size:11.5px;color:var(--ink-3)}
.fgrid select,.fgrid input{font-size:13px;padding:6px 8px;border:1px solid var(--border);
  border-radius:7px;background:var(--surface);color:var(--ink);outline:none;width:100%}
.fgrid select:focus,.fgrid input:focus{border-color:var(--accent)}
.fhead{font-size:11.5px;color:var(--ink-3);font-weight:400}
.fnote{font-size:11.5px;color:var(--ink-3);margin-bottom:14px;line-height:1.5}
.fnote b{color:var(--ink-2)}
@media (max-width:760px){
  .trade-grid{grid-template-columns:1fr}
  .fgrid{grid-template-columns:1fr}
}

/* ===== 输入联想面板（设计文档 §24.5；颜色全部走主题变量，深浅皮肤自适应） ===== */
.sg-panel{position:fixed;z-index:60;display:none;background:var(--surface);border:1px solid var(--border);
  border-radius:10px;box-shadow:var(--shadow);padding:4px;overflow:auto;-webkit-overflow-scrolling:touch}
.sg-group{font-size:11px;color:var(--ink-3);padding:6px 8px 3px;letter-spacing:.3px;user-select:none}
.sg-item{display:flex;align-items:center;gap:8px;height:28px;padding:0 8px;border-radius:7px;cursor:pointer}
.sg-item:hover{background:var(--bg)}
.sg-item.on{background:var(--accent-soft)}
.sg-item code{font-size:12px;color:var(--accent);background:var(--bg);border-radius:5px;padding:1px 6px;
  min-width:54px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sg-item.on code{background:var(--surface)}
.sg-item .sg-label{flex:1;font-size:13px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sg-item .sg-hint{font-size:11px;color:var(--ink-3);white-space:nowrap}

/* ===== 码表管理（IJ-017：默认码表 + 本地新增/停用） ===== */
.codeform{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px 0 4px}
.codeform select,.codeform .search{height:30px;font-size:12.5px}
.codeform .search{width:170px}
.codeform select{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:0 8px;color:var(--ink)}
table.codetable{width:100%;border-collapse:collapse;font-size:12.5px}
table.codetable th{text-align:left;color:var(--ink-3);font-weight:600;padding:7px 10px;border-bottom:1px solid var(--border);white-space:nowrap}
table.codetable td{padding:6px 10px;border-bottom:1px solid var(--border);color:var(--ink-2);white-space:nowrap}
table.codetable tbody tr:hover{background:var(--bg)}
table.codetable .c-code{font-family:ui-monospace,Menlo,monospace;color:var(--accent);font-weight:600}
table.codetable .c-dim{color:var(--ink-3)}
.badge-src{font-size:11px;padding:1px 7px;border-radius:999px;border:1px solid var(--border);color:var(--ink-3)}
.badge-src.custom{color:#B4650F;border-color:#E7C79B;background:#FBF3E8}
.badge-src.overridden{color:#2E6FB8;border-color:#BFD6EE;background:#EEF5FC}
.linkbtn{border:none;background:none;color:var(--accent);font-size:12px;cursor:pointer;padding:0 4px}
.linkbtn:hover{text-decoration:underline}
.linkbtn.danger{color:#C0392B}
.codechip{display:inline-flex;align-items:center;gap:6px;font-size:12px;border:1px solid var(--border);
  border-radius:999px;padding:3px 10px;margin:0 6px 6px 0;color:var(--ink-2);background:var(--surface)}

/* ===== 码表按场景分组（IJ-018） ===== */
.codescopes{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0 2px}
.codescope{display:inline-flex;align-items:center;gap:6px;font-size:12px;cursor:pointer;
  border:1px solid var(--border);border-radius:999px;padding:3px 10px;background:var(--surface);
  color:var(--ink-2);transition:all .15s}
.codescope i{font-style:normal;font-size:11px;color:var(--ink-3);min-width:12px;text-align:right}
.codescope:hover{border-color:var(--accent);color:var(--ink)}
.codescope.active{background:var(--accent);border-color:var(--accent);color:#fff}
.codescope.active i{color:rgba(255,255,255,.78)}
.codescope.empty{opacity:.5}
tr.coderowgroup td{background:var(--bg);border-top:1px solid var(--border);
  padding:8px 10px;font-size:12.5px;color:var(--ink);position:relative}
tr.coderowgroup .gmark{display:inline-block;min-width:34px;font-family:ui-monospace,Menlo,monospace;
  font-size:11px;color:var(--accent);font-weight:700;margin-right:6px}
tr.coderowgroup b{margin-right:8px}
tr.coderowgroup .c-dim{font-size:11.5px}
tr.coderowgroup .gadd{float:right;font-size:11.5px}
.codetable .kindtag{font-style:normal;font-size:11px;color:var(--ink-3);border:1px solid var(--border);
  border-radius:4px;padding:0 4px;margin-right:6px}

/* ===== 场景上下文与按场景回顾（IJ-020 / 需求 §21） ===== */
.scenebar{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:4px;padding-top:9px;
  border-top:1px dashed var(--border-soft)}
.scenebar .slabel{font-size:11.5px;color:var(--ink-3)}
.scenebar .codescope{padding:2px 9px;font-size:11.5px}
.scenebar .codescope b{font-family:ui-monospace,Menlo,monospace;font-size:10.5px;font-weight:700;opacity:.85}
.scenebar .locked{font-size:11px;color:var(--accent);background:var(--accent-soft);
  border-radius:5px;padding:1px 7px;margin-left:2px}
.scenehint{font-size:11px;color:var(--ink-3);padding:0 2px 6px;line-height:1.5}
.sgroup .ghead .gleft{display:flex;align-items:center;gap:4px}
.sgroup .ghead .gmark{font-family:ui-monospace,Menlo,monospace;font-size:11px;color:var(--accent);font-weight:700}
.sgroup .ghead .gmeta{font-size:11px;color:var(--ink-3);margin-left:6px}
.sgroup .more{display:block;width:100%;text-align:left;font-size:12px;color:var(--accent);
  background:none;border:none;padding:6px 2px;cursor:pointer}
.sgroup .more:hover{text-decoration:underline}
.tagscenesel{font-size:12px;padding:3px 6px;border:1px solid var(--border);border-radius:6px;
  background:var(--surface);color:var(--ink);outline:none;max-width:130px}
.tagscenesel:focus{border-color:var(--accent)}

/* ===== 回顾洞察（V1.7.0 / IJ-022）=====
   原则：首屏只放结论与可执行项，原始记录降级为「证据」折叠区。
   颜色全部走主题变量，深浅皮肤自适应（门户 ?portal_scheme=dark）。 */
.insight-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.insight-head .hint{font-size:11.5px;color:var(--ink-3)}

.hero{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--accent);
  border-radius:var(--radius);padding:15px 18px;margin-bottom:14px}
.hero.ok{border-left-color:var(--st-done)}
.hero.calm{border-left-color:var(--border)}
.hero .htext{font-size:16px;line-height:1.7;font-weight:600;color:var(--ink);letter-spacing:.1px}
.hero .hfacts{font-size:11.5px;color:var(--ink-3);margin-top:7px}

.stat .d{font-size:11px;font-weight:500;margin-left:5px;color:var(--ink-3)}
.stat .d.up{color:#C0392B}
.stat.warn .v{color:#C0392B}

/* 关注主线 */
.focuslist{display:flex;flex-direction:column;gap:1px}
.frow{display:grid;grid-template-columns:minmax(84px,132px) 1fr 34px 88px 62px;
  gap:10px;align-items:center;padding:6px 8px;border-radius:8px;cursor:pointer}
.frow:hover{background:var(--bg)}
.frow .fname{font-size:13px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.frow .fname .hash{color:var(--ink-3);margin-right:2px}
.frow .fbar{height:14px;background:var(--bg);border-radius:4px;overflow:hidden}
.frow .fbar span{display:block;height:100%;background:var(--accent-soft);border-right:2px solid var(--accent)}
.frow .fcnt{font-size:13px;font-weight:700;color:var(--ink);text-align:right;font-variant-numeric:tabular-nums}
.frow .fidle{font-size:11px;color:var(--ink-3);text-align:right;white-space:nowrap}
.ftag{font-size:10.5px;padding:1px 7px;border-radius:999px;white-space:nowrap;text-align:center;
  border:1px solid transparent}
.ftag.up{color:var(--accent);background:var(--accent-soft)}
.ftag.down{color:#2E6FB8;background:#EEF5FC;border-color:#D6E6F7}
.ftag.new{color:#7C5CBF;background:#F2EEFB;border-color:#E2D9F5}
.ftag.flat{color:var(--ink-3);background:var(--bg);border-color:var(--border-soft)}
html[data-portal-scheme="dark"] .ftag.down{color:#8FB8E8;background:#17233A;border-color:#22364F}
html[data-portal-scheme="dark"] .ftag.new{color:#B3A6E8;background:#221E38;border-color:#322B4E}
.focus-empty{font-size:12.5px;color:var(--ink-3);padding:10px 2px}

/* 注意力：场景占比 + 时段热力 */
.scenesplit{margin-bottom:16px}
.sbstack{display:flex;height:11px;border-radius:6px;overflow:hidden;background:var(--bg);gap:1px}
.sbstack i{display:block;height:100%}
.sblegend{display:flex;flex-wrap:wrap;gap:14px;margin-top:9px;font-size:11.5px;color:var(--ink-2)}
.sblegend .dot{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:5px}
.sblegend b{color:var(--ink);font-weight:600}
.heatmap{display:grid;grid-template-columns:56px repeat(6,1fr);gap:3px;align-items:center}
.heatmap .hcol{font-size:10.5px;color:var(--ink-3);text-align:center}
.heatmap .hrow{font-size:10.5px;color:var(--ink-3);white-space:nowrap;padding-right:4px}
.heatmap .hcell{height:19px;border-radius:3px;background:var(--bg)}
.heatmap .hcell[data-n="1"]{background:color-mix(in srgb, var(--accent) 22%, var(--bg))}
.heatmap .hcell[data-n="2"]{background:color-mix(in srgb, var(--accent) 42%, var(--bg))}
.heatmap .hcell[data-n="3"]{background:color-mix(in srgb, var(--accent) 62%, var(--bg))}
.heatmap .hcell[data-n="4"]{background:var(--accent)}
.heatmap-note{font-size:11px;color:var(--ink-3);margin-top:8px}

/* 该处理的 */
.todo-sec{margin-bottom:14px}
.todo-sec:last-child{margin-bottom:0}
.todo-sec h5{font-size:12px;color:var(--ink-2);font-weight:600;margin-bottom:5px;
  display:flex;gap:6px;align-items:center}
.todo-sec h5 em{font-style:normal;color:var(--ink-3);font-weight:400;font-size:11px}
.todo-item{display:flex;gap:8px;align-items:baseline;font-size:12.5px;color:var(--ink-2);
  padding:5px 2px;border-bottom:1px dashed var(--border-soft);cursor:pointer}
.todo-item:last-child{border-bottom:none}
.todo-item:hover{color:var(--ink)}
.todo-item .txt{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.todo-item .age{font-size:11px;color:var(--ink-3);white-space:nowrap}
.todo-none{font-size:12px;color:var(--ink-3);padding:4px 2px}

/* 记录质量 */
.qrow{display:grid;grid-template-columns:76px 1fr 86px;gap:10px;align-items:center;
  font-size:12px;color:var(--ink-2);padding:4px 0}
.qbar{height:8px;background:var(--bg);border-radius:4px;overflow:hidden}
.qbar i{display:block;height:100%;background:var(--accent)}
.qbar i.low{background:#B4362F}
.qval{font-size:11.5px;color:var(--ink-3);text-align:right;font-variant-numeric:tabular-nums}
.qhint{font-size:12px;color:var(--ink-2);background:var(--bg);border-radius:8px;
  padding:8px 11px;margin-top:10px;line-height:1.6}

/* ---- 交易场景 · 字段分类统计（IJ-024：时间 / 属性 / 个股三列） ---- */
.tgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-top:6px}
.tgrid h4{margin:0 0 8px;font-size:12px;color:var(--ink-3);font-weight:600;letter-spacing:1px}
.tgrid .tempty{font-size:12px;color:var(--ink-3);line-height:1.7}
.trow{display:flex;align-items:center;gap:8px;font-size:12.5px;line-height:2}
.trow .tl{width:84px;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.trow .tb{flex:1;height:12px;background:var(--bg);border-radius:4px;overflow:hidden}
.trow .tb span{display:block;height:100%;background:var(--accent-soft);border-right:2px solid var(--accent)}
.trow .tn{width:64px;text-align:right;font-variant-numeric:tabular-nums;color:var(--ink);white-space:nowrap}
.trow .tn small{color:var(--ink-3)}
@media (max-width:900px){.tgrid{grid-template-columns:1fr}}

/* ---- 转义显示（IJ-025，需求 §23）：书写码 → 阅读模式 ---- */
.preview-row{margin-bottom:6px}
.pchk{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--ink-3);cursor:pointer;user-select:none}
.pchk input{accent-color:var(--accent);cursor:pointer}
.rich-preview{margin-top:5px;background:var(--bg);border-radius:8px;padding:7px 11px;
  font-size:13.5px;line-height:1.7;color:var(--ink);word-break:break-word}
.rj-scene{display:inline-block;font-size:11px;font-weight:700;color:#fff;background:#C2701A;
  border-radius:4px;padding:0 6px;margin-right:2px;vertical-align:1px;letter-spacing:1px}
/* 转义显示（IJ-026 细化）：标签黑色加粗 / 个股蓝色 / 事件紫 / 角色橙 / 属性绿 / 感悟青 / 未登记码灰 */
.rj-tag{font-weight:700;color:var(--ink)}
.rj-stock{color:#2E6FB8;font-weight:600}
.rj-event{color:#7C5CBF;font-weight:700}
.rj-role{color:#C2701A;font-weight:700}
.rj-attr{color:#15803D;font-weight:700;font-variant-numeric:tabular-nums}
.rj-kind{color:#0F7B8A;font-weight:700}
/* 分类码（IJ-042）：@thm → 题材；@thm=机器人 → 题材：机器人 */
.rj-cat{color:#00695C;font-weight:700;background:#E0F2F1;border-radius:3px;padding:0 3px}
/* 分类路径段可点（IJ-045）：段本身给悬停反馈；分隔 / 弱化为纯文本 */
.rj-catseg,.dl-catseg{cursor:pointer}
.rj-catseg:hover,.dl-catseg:hover{text-decoration:underline}
.rj-catsep,.dl-catsep{opacity:.55;font-weight:400}
.rj-unknown{color:var(--ink-3)}
/* 当日记录表里的"降级说明"（标签当题材线索、@act 活跃个股计数） */
.dim{color:var(--ink-3);font-size:11.5px}

/* 折叠区子卡片（不再套一层边框） */
.layout.two{grid-template-columns:1fr 1fr}
.subcard{border-top:1px solid var(--border-soft);padding:14px 0}
.subcard:first-child{border-top:none;padding-top:0}
.subcard h3{font-size:13px;font-weight:600;margin-bottom:4px;color:var(--ink)}
.subcard .sub{font-size:11.5px;color:var(--ink-3);margin-bottom:9px}
@media (max-width:760px){
  .layout.two{grid-template-columns:1fr}
  .frow{grid-template-columns:minmax(70px,96px) 1fr 30px;gap:8px}
  .frow .fidle{display:none}
  .frow .ftag{display:none}
  .qrow{grid-template-columns:64px 1fr}
  .qval{display:none}
}


/* ============ 当日记录 · 时间线（IJ-028）：竖向时间轴替代 9 列宽表 ============ */
.dayline{position:relative;margin-top:10px}
.dl-item{display:flex;gap:0;position:relative}
.dl-time{width:52px;flex-shrink:0;text-align:right;padding-right:12px;font-size:12px;color:var(--ink-3);
  font-variant-numeric:tabular-nums;padding-top:3px}
/* 时间线按天分段头（用户 2026-10-22 要求跨天分段） */
.daygroup{margin-bottom:14px}
.daygroup-head{display:flex;align-items:baseline;gap:8px;margin:0 0 6px;padding-bottom:4px;
  border-bottom:1px dashed var(--border)}
.daygroup-head .dgdate{font-size:12.5px;font-weight:700;color:var(--ink-2);font-variant-numeric:tabular-nums}
.daygroup-head .dgcnt{font-size:11px;color:var(--ink-3)}
.dl-rail{width:18px;flex-shrink:0;display:flex;flex-direction:column;align-items:center;position:relative}
.dl-rail::before{content:"";position:absolute;top:0;bottom:0;width:2px;background:var(--border)}
.dl-item:first-child .dl-rail::before{top:8px}
.dl-item:last-child .dl-rail::before{bottom:auto;height:8px}
.dl-dot{width:9px;height:9px;border-radius:50%;background:var(--surface);border:2.5px solid var(--accent);
  margin-top:6px;position:relative;z-index:1;flex-shrink:0}
.dl-body{flex:1;min-width:0;padding:0 0 16px 12px}
.dl-chips{display:flex;flex-wrap:wrap;gap:5px;align-items:center;margin-bottom:3px}
.dl-chip{font-size:10.5px;padding:1px 8px;border-radius:10px;background:var(--bg);color:var(--ink-2);
  border:1px solid var(--border-soft);white-space:nowrap}
.dl-chip.scene{background:var(--accent-soft);color:var(--accent);border-color:transparent;font-weight:600}
.dl-chip.stock{background:#EDE7F6;color:#7B1FA2;border-color:transparent;font-weight:600}
.dl-chip.theme{background:#E3F2FD;color:#1565C0;border-color:transparent}
.dl-chip.role{background:#FFF8E1;color:#8D6E00;border-color:transparent}
/* 分类码（IJ-042）：题材 / 概念 / 个股 / 大类板块 / 细分行业——与事件码（紫）区分用青色 */
.dl-chip.cat{background:#E0F2F1;color:#00695C;border-color:transparent;font-weight:600}
/* 涨红跌绿（A股口径） */
.dl-chip.up{background:#FDEBEA;color:#C0392B;border-color:transparent;font-weight:600}
.dl-chip.down{background:#E8F5EE;color:#1E8E4E;border-color:transparent;font-weight:600}
/* 状态徽标（IJ-069）：已完成=绿实底，未完成=灰描边，已放弃=灰斜体（title 给精确状态） */
.dl-chip.st-done{background:#E8F5EE;color:#1E8E4E;border-color:transparent;font-weight:600}
.dl-chip.st-undone{background:var(--bg);color:var(--ink-3)}
.dl-chip.st-dropped{background:var(--bg);color:var(--ink-3);font-style:italic}
.dl-text{font-size:13.5px;color:var(--ink);word-break:break-word}
.dl-text .opbtn{margin-left:8px;font-size:11px;padding:1px 8px}
.dl-text .detail-tag{margin-left:6px}
/* 定制时间线（IJ-041 → IJ-043 改版）：整条不再可点；下钻交给可点的 chip 与「详情」按钮 */
.dl-chip[data-stockfull], .dl-chip[data-themefull]{cursor:pointer}
.dl-chip[data-stockfull]:hover, .dl-chip[data-themefull]:hover{text-decoration:underline}
.dl-text .opbtn.dl-open{font-size:11px;padding:1px 8px}
.dayline .mini-empty{color:var(--ink-3);font-size:13px;padding:6px 0 2px 64px}

/* ============ 个股页 · TOP10 + 搜索（IJ-028） ============ */
.stock-search{position:relative}
.stock-search .search{width:100%}
.stock-ac{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--surface);
  border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.08);
  max-height:280px;overflow:auto;z-index:30;display:none}
.stock-ac.show{display:block}
.stock-ac .ac-row{display:flex;justify-content:space-between;align-items:center;gap:8px;
  padding:7px 12px;cursor:pointer;font-size:13px}
.stock-ac .ac-row:hover,.stock-ac .ac-row.hl{background:var(--accent-soft)}
.stock-ac .ac-row .k{display:flex;gap:8px;align-items:center;min-width:0}
.stock-ac .ac-row .code{font-weight:600;font-variant-numeric:tabular-nums}
.stock-ac .ac-row .v{color:var(--ink-3);font-size:11.5px;white-space:nowrap}

/* ============ 交易视图 · 标签分组（IJ-028） ============ */
.tag-group-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.tg-chip{font-size:12px;padding:3px 12px;border-radius:14px;border:1px solid var(--border);
  background:var(--surface);color:var(--ink-2);cursor:pointer}
.tg-chip:hover{border-color:var(--accent);color:var(--accent)}
.tg-chip.active{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}
.tg-chip .cnt{opacity:.75;font-weight:400;margin-left:3px}
.tag-group-head{font-size:12px;color:var(--ink-3);margin:6px 0 4px;display:flex;align-items:center;gap:6px}

/* 标签分组管理弹窗（IJ-028） */
.taggrp-row{display:flex;align-items:center;gap:8px;padding:6px 2px;border-bottom:1px solid var(--border-soft);font-size:13px}
.taggrp-row .tname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.taggrp-row select{max-width:180px}

/* ============ 演示环境标识（IJ-028，接入规范 §13.5） ============ */
.demo-badge{font-size:11px;font-weight:600;color:#B45309;background:#FEF3C7;
  border:1px solid #FCD34D;border-radius:12px;padding:2px 10px;white-space:nowrap}
.demo-banner{display:flex;align-items:center;gap:10px;padding:7px 18px;font-size:12.5px;
  color:#92400E;background:#FFFBEB;border-bottom:1px solid #FDE68A}
.demo-banner .db-source{color:#B45309;font-size:11.5px}

/* ============ IJ-029 功能补漏（前端样式） ============ */
.tidybar{background:var(--accent-soft);border:1px solid var(--border);border-radius:10px;
  padding:6px 12px;margin-bottom:10px;font-size:13px;display:flex;gap:10px;align-items:center}
.batchbar{background:#FFF8E1;border:1px solid #FCD34D;border-radius:10px;
  padding:6px 12px;margin-bottom:10px;font-size:13px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.idea.batchable{cursor:pointer}
.idea.batchable.sel{outline:2px solid var(--accent);background:var(--accent-soft)}
.idea .batchchk{vertical-align:middle;margin-right:6px}

.ibuckets{display:flex;gap:3px;align-items:flex-end;height:76px;margin:10px 0 6px;
  padding:0 2px;border-bottom:1px solid var(--border)}
.ibucket{flex:1;display:flex;align-items:flex-end;justify-content:center}
.ibar{width:100%;border-radius:3px 3px 0 0;background:var(--border)}
.ibar.up{background:#C0392B}
.ibar.down{background:#1E8E4E}
.ibar.abn{background:#E07B27}
.iheat{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:6px}

.twall{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;margin-top:8px}
.tcard{border:1px solid var(--border);border-radius:10px;padding:10px 12px;cursor:pointer;background:var(--surface)}
.tcard:hover{border-color:var(--accent);box-shadow:0 2px 8px rgba(0,0,0,.06)}
.tcard .tname{font-weight:700;font-size:14px;margin-bottom:4px}
.tcard .trow{display:flex;gap:8px;font-size:12px;color:var(--ink-2);margin-top:2px;flex-wrap:wrap}
.tcard .trow .up{color:#C0392B;font-weight:600}
.tcard .trow .abn{color:#E07B27}
.tcard .trow.dim{color:var(--ink-3)}
.tprofile{font-size:11px;background:var(--bg);border-radius:8px;padding:8px;overflow:auto;max-height:200px}

.proof-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.proof-left{max-height:240px;overflow:auto;border:1px dashed var(--border);border-radius:8px;padding:6px}
.proof-item{padding:5px 8px;font-size:12.5px;border-radius:6px;margin-bottom:4px;background:var(--bg);cursor:grab}
.proof-item:hover,.proof-item.sel{background:var(--accent-soft)}
.proof-right{display:flex;flex-wrap:wrap;gap:6px;align-content:flex-start;border:1px dashed var(--border);
  border-radius:8px;padding:8px;min-height:60px}
.proof-theme{cursor:grab;font-size:12.5px}
.proof-theme.hl{outline:2px solid var(--accent);transform:scale(1.05)}

.draft-md{font-family:ui-monospace,Menlo,monospace;font-size:12px;line-height:1.5}

/* ---- IJ-030：登录页 / 管理控制台 / 皮肤切换 ---- */
.login-card{max-width:360px;margin:48px auto;background:var(--surface);
  border:1px solid var(--border);border-radius:12px;padding:24px;
  box-shadow:var(--shadow)}
.login-card h2{margin:0 0 4px;color:var(--ink)}
.login-card .sub{font-size:12px;color:var(--ink-3);margin-bottom:14px;line-height:1.6}
.login-card .sub a{color:var(--accent)}
.login-card label{display:block;font-size:12px;color:var(--ink-2);margin:10px 0 4px}
.login-card input{width:100%;box-sizing:border-box;padding:8px 10px;
  border:1px solid var(--border);border-radius:8px;background:var(--surface-2);
  color:var(--ink);font-size:14px}
.login-card input:focus{outline:none;border-color:var(--accent)}
.cardrow{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.stat{padding:14px 16px}
.stat-label{font-size:12px;color:var(--ink-3)}
.stat-value{font-size:26px;font-weight:600;color:var(--ink);margin:2px 0}
.stat-sub{font-size:12px;color:var(--ink-2)}
.pill{display:inline-block;padding:1px 8px;border-radius:999px;font-size:12px;
  background:var(--accent-soft);color:var(--accent)}
#adminUsers td,#adminAudit td{font-size:13px;white-space:normal}
.skinbtn{flex:none}

/* ===== 隐私与数据（上云整改 I-02）：首页底部的折叠说明卡 =====
   默认收起（不挡速记），点开是四条「谁能看到 / 管理端看到什么 / 数据在哪 / 删除」；
   导出与删除入口都在这张卡里有一句话交代去哪点。 */
.privacy{margin-top:14px}
.privacy>summary{cursor:pointer;display:flex;align-items:center;gap:8px;
  font-size:13px;color:var(--ink-2);list-style:none}
.privacy>summary::-webkit-details-marker{display:none}
.privacy>summary::before{content:"▸";color:var(--ink-3);font-size:11px;
  transition:transform .15s ease}
.privacy[open]>summary::before{transform:rotate(90deg)}
.privacy>summary b{font-size:13px;font-weight:600;color:var(--ink)}
.privacy-more{font-size:12px;color:var(--ink-3)}
.privacy-list{margin:10px 0 0 0;padding-left:18px;font-size:13px;color:var(--ink-2);line-height:1.85}
.privacy-list li+li{margin-top:2px}
.privacy-list b{color:var(--ink);font-weight:600}
.privacy-acts{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:12px}
.privacy-hint{font-size:12px;color:var(--ink-3)}
