/* ============ 施小桉 · 内容工作台 ============
   设计系统：Notion（参考 awesome-design-md / notion）
   海军蓝 Hero 带 · 紫色主按钮 · 粉彩卡片 · 8px 直角几何 · 暖灰画布
*/
:root{
  --bg:#f6f5f4;                    /* surface */
  --bg-soft:#fafaf9;               /* surface-soft */
  --card:#ffffff;                  /* canvas */
  --text:#1a1a1a;                  /* ink */
  --charcoal:#37352f;
  --slate:#5d5b54; --steel:#787671; --stone:#a4a097; --muted:#bbb8b1;
  --hairline:#e5e3df; --hairline-soft:#ede9e4; --hairline-strong:#c8c4be;
  --purple:#5645d4; --purple-pressed:#4534b3; --purple-deep:#3a2a99;
  --navy:#0a1530; --navy-mid:#1a2a52;
  --link:#0075de;
  --pink:#ff64c8; --pink-deep:#a02e6d; --teal:#2a9d99; --orange:#dd5b00; --orange-deep:#793400; --green:#1aae39;
  --yellow-bold:#f9e79f; --brown:#523410;
  --tint-peach:#ffe8d4; --tint-rose:#fde0ec; --tint-mint:#d9f3e1; --tint-lavender:#e6e0f5;
  --tint-sky:#dcecfa; --tint-yellow:#fef7d6; --tint-cream:#f8f5e8; --tint-gray:#f0eeec;
  --danger:#e03131; --warn:#dd5b00; --ok:#1aae39;
  --r-xs:5px; --r-sm:8px; --r-md:11px; --r-lg:18px;
  --shadow-card:0 1px 2px rgba(15,15,15,.03);
  --shadow-pop:0 24px 48px -8px rgba(15,15,15,.2);
  --ease-out:cubic-bezier(.25,1,.35,1);
}
*{box-sizing:border-box; margin:0; padding:0}
html,body{height:100%}
body{
  font-family:"Inter","Notion Sans",-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  background:var(--bg); color:var(--text);
  overflow-x:hidden; -webkit-font-smoothing:antialiased;
}
::selection{background:rgba(86,69,212,.15)}

/* ---------- 背景（Notion 暖灰画布） ---------- */
.bg-orbs{position:fixed; inset:0; z-index:-2; background:var(--bg)}
.bg-orbs i{display:none}

/* ---------- 应用布局：贴边侧栏 + 内容区 ---------- */
.app{display:flex; padding:0; min-height:100vh; align-items:flex-start}
.main{flex:1; min-width:0; padding:24px 28px 40px; max-width:1640px}
.view{animation:none}
.hidden{display:none !important}
@keyframes fadeIn{from{opacity:0} to{opacity:1}}
/* 卡片入场（错落） */
.bento > .card,.workspace > .card{animation:cardIn .32s var(--ease-out) backwards}
@keyframes cardIn{from{opacity:0; transform:translateY(10px)}}
.bento > .card:nth-child(1),.workspace > .card:nth-child(1){animation-delay:.02s}
.bento > .card:nth-child(2),.workspace > .card:nth-child(2){animation-delay:.05s}
.bento > .card:nth-child(3),.workspace > .card:nth-child(3){animation-delay:.08s}
.bento > .card:nth-child(4),.workspace > .card:nth-child(4){animation-delay:.11s}
.bento > .card:nth-child(5),.workspace > .card:nth-child(5){animation-delay:.14s}
.bento > .card:nth-child(6),.workspace > .card:nth-child(6){animation-delay:.17s}
.bento > .card:nth-child(7),.workspace > .card:nth-child(7){animation-delay:.2s}
.bento > .card:nth-child(8),.workspace > .card:nth-child(8){animation-delay:.23s}

/* ---------- 侧边栏（贴边、暖白、细分隔线） ---------- */
.sidebar{width:238px; flex-shrink:0; position:sticky; top:0; height:100vh;
  display:flex; flex-direction:column; gap:6px;
  background:var(--bg-soft); border-right:1px solid var(--hairline); padding:16px 12px 24px}
.side-brand{display:flex; align-items:center; gap:10px; height:72px; box-sizing:border-box; padding:0 8px; border-bottom:1px solid var(--hairline-soft)}
.logo{width:38px; height:38px; border-radius:8.5px; display:grid; place-items:center; overflow:hidden; flex-shrink:0;
  font-weight:600; font-size:17px; color:#fff; background:var(--purple)}
.logo img{width:100%; height:100%; object-fit:cover; display:block}
.brand-txt{min-width:0}
.brand-txt b{display:block; font-size:14px; font-weight:600; letter-spacing:-.1px}
.brand-txt span{font-size:11px; color:var(--stone); display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.side-nav{display:flex; flex-direction:column; gap:1px; padding:12px 0; flex:1}
.side-item{display:flex; align-items:center; gap:9px; width:100%; padding:8px 10px; border:0; border-radius:var(--r-sm);
  background:transparent; color:var(--charcoal); font-size:13.5px; font-weight:500; font-family:inherit; cursor:pointer;
  text-align:left; transition:background .15s; letter-spacing:-.1px}
.side-item i{font-style:normal; font-size:14px; width:18px; text-align:center}
.side-item:hover{background:#efeeec}
.side-item.active{background:#ececea; color:var(--text); font-weight:600}
.side-foot{display:flex; flex-direction:column; gap:8px; padding-top:12px; border-top:1px solid var(--hairline-soft)}
.fresh-chip{font-size:11px; line-height:1.5; color:var(--steel); background:var(--bg); border-radius:var(--r-sm);
  padding:8px 10px; cursor:pointer; transition:background .15s}
.fresh-chip:hover{background:#efeeec}
.fc-mini{display:none}
.fresh-chip.stale{color:var(--orange-deep); background:var(--tint-peach)}
.fresh-chip.very-stale{color:var(--danger); background:var(--tint-rose)}
.side-tip{font-size:10.5px; color:var(--muted); text-align:center; line-height:1.5}

/* ---------- Bento 网格 ---------- */
.bento{display:grid; grid-template-columns:repeat(12,1fr); gap:16px}
.span3{grid-column:span 3} .span4{grid-column:span 4} .span5{grid-column:span 5}
.span6{grid-column:span 6} .span7{grid-column:span 7} .span8{grid-column:span 8} .span12{grid-column:span 12}

/* ---------- 卡片（白纸 + 发丝线，无重阴影） ---------- */
.card{background:var(--card); border:1px solid var(--hairline); border-radius:var(--r-lg); padding:18px 20px;
  box-shadow:var(--shadow-card); transition:box-shadow .2s, border-color .2s}
.card:hover{box-shadow:0 4px 14px rgba(15,15,15,.06)}
.card-head{display:flex; align-items:baseline; justify-content:space-between; margin-bottom:12px; gap:10px; flex-wrap:wrap}
.card-head h3{font-size:14px; font-weight:600; letter-spacing:-.1px}
.hint{font-size:11.5px; color:var(--stone); font-weight:400}
.hint.center{text-align:center; display:block; margin-top:8px}
.hint b{color:var(--charcoal); font-weight:600}
.week-badge{font-style:normal; font-size:11px; color:#fff; background:var(--purple);
  padding:3px 10px; border-radius:9999px; margin-left:8px; vertical-align:2px; font-weight:600}
.up{color:var(--green)} .down{color:var(--danger)}
.topic-tools{display:flex; align-items:center; gap:8px; flex-wrap:wrap}

/* ---------- Hero（全宽海军蓝色带 + 便签圆点） ---------- */
.hero{position:relative; overflow:hidden; margin:-24px -28px 20px; padding:42px 28px 32px;
  background:var(--navy); color:#fff}
.hero::before{display:none}
.hero::after{content:""; position:absolute; right:-80px; bottom:-120px; width:340px; height:340px;
  border-radius:50%; background:radial-gradient(circle, rgba(86,69,212,.28), transparent 65%)}
.hero-num{position:absolute; right:30px; bottom:-42px; font-size:150px; font-weight:600; color:rgba(255,255,255,.05); letter-spacing:-8px; line-height:1; pointer-events:none}
.hero-head{position:relative; display:flex; justify-content:space-between; align-items:flex-start; gap:14px; margin-bottom:22px; flex-wrap:wrap; z-index:1}
.hero-greet h1{font-size:36px; font-weight:600; color:#fff; letter-spacing:-.5px; margin-bottom:8px; line-height:1.15}
.hero-greet span{font-size:13.5px; color:var(--stone)}
.hero-meta{display:flex; gap:8px; flex-wrap:wrap}
.hero-pill{font-size:11.5px; color:#fff; background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.18);
  padding:7px 14px; border-radius:9999px; font-weight:500}
.hero-stats{position:relative; display:flex; flex-wrap:wrap; row-gap:12px; z-index:1}
.hero .si{flex:1 1 14%; min-width:110px; padding:2px 20px; border-right:1px solid rgba(255,255,255,.12); display:flex; flex-direction:column; gap:3px}
.hero .si:first-child{padding-left:0}
.hero .si:last-child{border-right:0}
.hero .si .k{font-size:11px; color:var(--stone); white-space:nowrap}
.hero .si .v{font-size:21px; font-weight:600; color:#fff; font-variant-numeric:tabular-nums; letter-spacing:-.3px; white-space:nowrap}
.hero .si .v small{font-size:10.5px; font-weight:400; margin-left:6px; color:var(--steel)}
.hero .si .v small.up{color:#6ee7a0}

/* ---------- 继续队列 ---------- */
.queue-strip{grid-column:span 12; display:flex; align-items:center; gap:9px; padding:12px 16px; overflow-x:auto}
.qtitle{font-size:12px; font-weight:600; color:var(--text); white-space:nowrap; margin-right:2px}
.qchip{display:flex; align-items:center; gap:8px; padding:8px 13px; border-radius: 9999px; cursor:pointer;
  background:var(--bg); border:1px solid var(--hairline-soft); white-space:nowrap; transition:all .15s; flex-shrink:0}
.qchip:hover{background:#efeeec; border-color:var(--hairline)}
.qchip b{font-size:12px; font-weight:500; max-width:190px; overflow:hidden; text-overflow:ellipsis}
.qchip .qa{font-style:normal; font-size:10.5px; color:var(--purple)}
.qchip .qarrow{color:var(--stone); font-size:11px}
.qmore{color:var(--stone); font-size:11.5px; white-space:nowrap}

/* ---------- AI 智能总结 ---------- */
.insights-grid{display:grid; grid-template-columns:1.15fr 1fr 1fr; gap:26px}
.ins-title{font-size:12.5px; font-weight:600; color:var(--charcoal); margin-bottom:10px}
.ins-health{font-size:13px; line-height:1.85; color:var(--charcoal)}
.ins-metrics{display:flex; gap:8px; flex-wrap:wrap; margin-top:12px}
.ins-metric{padding:9px 13px; border-radius:var(--r-md); background:var(--bg); font-size:10.5px; color:var(--stone)}
.ins-metric b{font-size:15px; display:block; margin-top:2px; color:var(--text); font-variant-numeric:tabular-nums}
.ins-metric i{font-style:normal; font-size:10px; color:var(--stone)}
.imp-item{display:flex; gap:10px; padding:8px 0; border-bottom:1px solid var(--hairline-soft)}
.imp-item:last-child{border-bottom:0}
.imp-dot{width:7px; height:7px; border-radius:50%; margin-top:5px; flex-shrink:0}
.imp-dot.lv-高{background:var(--danger)}
.imp-dot.lv-中{background:var(--warn)}
.imp-dot.lv-低{background:var(--link)}
.imp-text{font-size:12.5px}
.imp-why{font-size:11px; color:var(--stone); margin-top:2px}
.urg-item{padding:10px 12px; border-radius:var(--r-md); background:var(--tint-gray); margin-bottom:8px}
.urg-head{display:flex; justify-content:space-between; gap:8px; align-items:baseline}
.urg-head b{font-size:12px; font-weight:500; line-height:1.5}
.urg-chip{font-size:10px; padding:2px 9px; border-radius:9999px; white-space:nowrap; flex-shrink:0; color:var(--stone); background:#fff}
.urg-紧急{color:var(--pink-deep, #a02e6d); background:#fff}
.urg-本周{color:var(--orange-deep); background:#fff}
.urg-近期{color:var(--link); background:#fff}
.urg-关注{color:var(--stone)}
.urg-loc{font-size:10.5px; color:var(--stone); margin-top:3px}
.ins-hot{font-size:11px; margin-top:8px; line-height:1.7; padding:8px 11px; border-radius:var(--r-md); background:var(--tint-yellow); color:var(--brown)}
.ins-actions{margin-top:16px; padding-top:13px; border-top:1px solid var(--hairline-soft); display:flex; flex-wrap:wrap; gap:8px}
.act-chip{font-size:11.5px; padding:6px 12px; border-radius: 9999px; background:var(--tint-lavender); color:var(--purple-deep)}
.act-chip.go{cursor:pointer; transition:all .15s}
.act-chip.go:hover{background:#d9d0f0}

/* ---------- 图表 ---------- */
.chart svg{display:block; width:100%; overflow:visible}
.chart .axis{stroke:var(--hairline-soft)}
.chart text{fill:var(--stone); font-size:10px}
.chart .bar{fill:url(#gradBar); rx:3}
.chart .line{fill:none; stroke:var(--purple); stroke-width:2}
.chart .dot{fill:#fff; stroke:var(--purple); stroke-width:2}
.hbars{display:flex; flex-direction:column; gap:12px}
.hbar{display:grid; grid-template-columns:112px 1fr 52px; gap:10px; align-items:center; font-size:12px}
.chart .hbar{margin-bottom:12px}
.chart .hbar:last-child{margin-bottom:0}
.hbar .name{color:var(--slate); white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.hbar .track{display:block; height:8px; border-radius:9999px; background:var(--hairline-soft); overflow:hidden}
.hbar .fill{display:block; height:100%; border-radius:9999px; background:var(--purple); transition:width .7s cubic-bezier(.2,.8,.2,1)}
.hbar .val{text-align:right; color:var(--text); font-variant-numeric:tabular-nums; font-weight:500}

/* ---------- 粉丝画像 ---------- */
.portrait{display:flex; gap:20px; align-items:center; margin-bottom:14px}
.donut-wrap{text-align:center}
.donut{width:104px; height:104px}
.donut-legend{font-size:11px; color:var(--slate); margin-top:6px}
.dot-blue,.dot-red{display:inline-block; width:8px;height:8px; border-radius:50%; margin:0 4px 0 8px}
.dot-blue{background:var(--purple)} .dot-red{background:var(--pink)}
.mini-bars{flex:1; display:flex; flex-direction:column; gap:8px; min-width:0}
.mini-bars.city{margin-top:4px}
.chart.hours{height:auto}

/* ---------- TOP 榜 ---------- */
.top-list{display:grid; grid-template-columns:repeat(3,1fr); gap:4px 14px}
.top-item{display:flex; align-items:center; gap:10px; font-size:12.5px; padding:7px 10px; border-radius:var(--r-sm); transition:background .15s}
.top-item:hover{background:var(--bg)}
.top-item .rank{width:20px; color:var(--stone); font-weight:600; font-size:11px; text-align:center}
.top-item .rank.hot{color:var(--orange)}
.top-item .t{flex:1; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.top-item .tag{font-size:10px; color:var(--slate); background:var(--bg); padding:2px 8px; border-radius: 9999px}
.top-item .lk{color:var(--text); font-weight:600; font-variant-numeric:tabular-nums}

/* ---------- 选题中心（Notion 数据库风格：粉彩属性卡） ---------- */
.topic-head{align-items:center}
.topic-wrap{position:relative}
.topic-center.peek .topic-wrap{max-height:236px; overflow:hidden}
.topic-center.peek .topic-wrap::after{content:""; position:absolute; left:0; right:0; bottom:0; height:70px;
  background:linear-gradient(180deg, rgba(255,255,255,0), rgba(255,255,255,.97)); pointer-events:none}
.topic-more{position:absolute; left:50%; bottom:10px; transform:translateX(-50%); display:none; z-index:2;
  border:0; background:var(--text); color:#fff; font-size:11.5px; font-weight:500;
  padding:8px 18px; border-radius:var(--r-md); cursor:pointer; font-family:inherit; transition:opacity .15s}
.topic-center.peek .topic-more{display:block}
.topic-more:hover{opacity:.85}
.topic-filters{display:flex; gap:6px; flex-wrap:wrap}
.tf-btn{border:1px solid var(--hairline); background:transparent; color:var(--steel); font-size:12px; padding:5px 13px;
  border-radius:9999px; cursor:pointer; font-weight:500; font-family:inherit; white-space:nowrap; transition:all .15s}
.tf-btn:hover{border-color:var(--hairline-strong); color:var(--charcoal)}
.tf-btn.active{background:#000; border-color:#000; color:#fff}
.topic-grid{display:grid; grid-template-columns:repeat(5,1fr); gap:12px}
.topic-card{padding:14px 15px 12px; border-radius:var(--r-lg); border:1px solid transparent;
  background:var(--tint-gray); transition:box-shadow .18s, border-color .18s; cursor:pointer; position:relative; overflow:hidden}
.topic-card:hover{box-shadow:0 3px 10px rgba(15,15,15,.08); border-color:var(--hairline)}
.topic-card.tint-city{background:var(--tint-lavender)}
.topic-card.tint-food{background:var(--tint-peach)}
.topic-card.tint-growth{background:var(--tint-mint)}
.topic-card.tint-goods{background:var(--tint-sky)}
.topic-card.tint-hot{background:var(--tint-yellow)}
.topic-card.prio::before{content:"🔥 重点"; position:absolute; top:0; right:0; font-size:9.5px; padding:3px 10px;
  background:var(--purple); color:#fff; border-bottom-left-radius:10px; font-weight:600}
.topic-card .tc-head{display:flex; align-items:center; gap:7px; font-size:10.5px; color:var(--slate); margin-bottom:7px}
.tc-emoji{font-size:15px}
.tc-pillar{color:var(--steel)}
.topic-card h4{font-size:13px; line-height:1.45; margin-bottom:7px; min-height:38px; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; font-weight:600; color:var(--charcoal); letter-spacing:-.1px}
.topic-card .tc-title{font-size:11px; color:var(--slate); line-height:1.55; min-height:32px; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden}
.topic-card .tc-foot{display:flex; justify-content:space-between; align-items:center; margin-top:8px; gap:6px}
.tc-money{font-size:10px; color:var(--green); white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.tc-fmt{font-size:10px; color:var(--slate); background:rgba(255,255,255,.7); border-radius: 9999px; padding:2px 9px; white-space:nowrap; flex-shrink:0}
.dup-badge{display:inline-block; font-size:10px; color:var(--orange-deep); background:rgba(255,255,255,.7);
  padding:3px 9px; border-radius: 9999px; margin-top:6px; cursor:help; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.modal-grid{grid-template-columns:repeat(2,1fr); overflow-y:auto; padding:0 0 2px; transition:opacity .18s ease, filter .18s ease}
.modal-grid.dimmed{opacity:.32; filter:saturate(.55)}

/* 新建工作流弹层：外壳固定，仅选题网格内部滚动，自定义栏常驻底部 */
#topicModal .modal{display:flex; flex-direction:column; overflow:hidden; padding:20px 24px}
#topicModal .card-head,
#topicModal .mode-row,
#topicModal .brand-direct,
#topicModal .modal-sep,
#topicModal .custom-topic{flex-shrink:0}
#topicModal .card-head{margin-bottom:12px}
#topicModal .modal-grid{flex:1; min-height:150px; max-height:none; align-content:start; grid-auto-rows:max-content; scrollbar-width:none}
#topicModal .modal-grid::-webkit-scrollbar{display:none; width:0; height:0}

/* ---------- 公式速查 ---------- */
.formula-chips{display:flex; flex-wrap:wrap; gap:8px}
.fchip{font-size:11.5px; color:var(--charcoal); padding:6px 13px; border-radius: 9999px; background:var(--tint-cream)}

/* ---------- 增长警报 ---------- */
.alert-grid{display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-bottom:10px}
.alert-row{display:block; padding:10px 13px; border-radius:var(--r-md); background:var(--tint-gray)}
.alert-row span{display:block; font-size:10.5px; color:var(--stone); margin-bottom:2px}
.alert-row b{font-size:17px; font-weight:600; color:var(--danger); font-variant-numeric:tabular-nums; letter-spacing:-.4px}
.alert-tip{font-size:11.5px; color:var(--brown); padding:10px 13px; border-radius:var(--r-md); background:var(--tint-yellow); line-height:1.7}
.alert-tip b{color:var(--brown); font-weight:600}

/* ---------- 按钮（8px 直角几何，非胶囊） ---------- */
.btn{border:1px solid var(--hairline-strong); background:transparent; color:var(--text);
  padding:9px 17px; border-radius:var(--r-md); cursor:pointer; font-size:13px; font-weight:500;
  font-family:inherit; transition:all .15s}
.btn:hover{background:#efeeec}
.btn.primary{background:var(--purple); border-color:var(--purple); color:#fff}
.btn.primary:hover{background:var(--purple-pressed); border-color:var(--purple-pressed)}
.btn.ghost{border-color:transparent; color:var(--steel)}
.btn.ghost:hover{background:#efeeec; color:var(--charcoal)}
.btn.wide{width:100%; justify-content:center; display:flex}
.btn.small{padding:6px 13px; font-size:12px}
.btn:disabled{opacity:.4; cursor:not-allowed; background:var(--hairline); border-color:var(--hairline); color:var(--muted)}

/* ============ 工作区 ============ */
#view-workspace{height:calc(100vh - 48px); min-height:520px}
body:has(#view-workspace:not(.hidden)) .main{padding-bottom:24px}
.workspace{display:grid; grid-template-columns:262px 1fr 396px; gap:16px; align-items:stretch; height:100%}
.proj-list{padding:0 16px 16px; height:100%; overflow:hidden; display:flex; flex-direction:column}
.proj-list .card-head{height:63px; box-sizing:border-box; margin:0 -16px 14px; padding:0 16px; align-items:center;
  border-bottom:1px solid var(--hairline-soft)}
.proj-items{display:flex; flex-direction:column; gap:3px; flex:1; min-height:0; overflow-y:auto}
.proj-group{font-size:10.5px; color:var(--stone); font-weight:600; letter-spacing:.4px; padding:12px 2px 5px}
.proj-group:first-child{padding-top:2px}
.proj-item{position:relative; padding:10px 28px 10px 12px; border-radius:var(--r-md); cursor:pointer;
  transition:background .15s; border:1px solid transparent}
.proj-item:hover{background:var(--bg)}
.proj-item.active{background:var(--tint-lavender)}
.proj-item .pi-name{font-size:12.5px; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; color:var(--charcoal)}
.proj-item .pi-meta{font-size:10.5px; color:var(--stone); display:flex; gap:6px; align-items:center; margin-top:5px}
.pi-chip{background:#fff; border-radius: 9999px; padding:1px 7px; color:var(--slate); white-space:nowrap}
.pi-date{color:var(--muted)}
.pi-del{position:absolute; top:50%; right:6px; transform:translateY(-50%); width:22px; height:22px;
  border:0; border-radius:var(--r-sm); background:transparent; color:var(--stone); cursor:pointer; font-size:11px;
  opacity:0; transition:all .15s; display:grid; place-items:center; font-family:inherit}
.proj-item:hover .pi-del{opacity:1}
.pi-del:hover{background:var(--tint-rose); color:var(--danger)}

/* 聊天 */
.chat-panel{display:flex; flex-direction:column; height:100%; min-height:0; padding:0; overflow:hidden}
.chat-head{height:63px; box-sizing:border-box; padding:0 20px; border-bottom:1px solid var(--hairline-soft); display:flex; justify-content:space-between; align-items:center; gap:14px}
.chat-head b{font-size:14px; font-weight:600}
.chat-head .hint{display:block; margin-top:3px}
.stage-track{display:flex; gap:6px}
.stage-dot{width:26px; height:4px; border-radius:9999px; background:var(--hairline-soft)}
.stage-dot.on{background:var(--purple)}
.chat{flex:1; overflow-y:auto; padding:20px; display:flex; flex-direction:column; gap:12px}
.msg{max-width:85%; padding:12px 16px; border-radius:var(--r-lg); font-size:13.5px; line-height:1.7; white-space:pre-wrap; animation:msgIn .2s ease}
@keyframes msgIn{from{opacity:0; transform:translateY(4px)}}
.msg.ai{align-self:flex-start; background:var(--bg); color:var(--charcoal)}
.msg.me{align-self:flex-end; background:var(--purple); color:#fff}
.msg .mini{display:block; font-size:11px; color:var(--stone); margin-top:6px; font-style:normal}

/* 选择器 / 输入 */
.composer{padding:15px 20px; border-top:1px solid var(--hairline-soft); display:flex; flex-wrap:wrap; gap:9px; min-height:74px; align-items:center}
.choice{padding:9px 18px; border-radius:var(--r-md); cursor:pointer; font-size:13px; font-weight:500; font-family:inherit;
  background:transparent; border:1px solid var(--hairline-strong); color:var(--text); transition:all .15s}
.choice:hover{background:#efeeec}
.choice.rec{background:var(--purple); border-color:var(--purple); color:#fff}
.choice.rec:hover{background:var(--purple-pressed)}
.skip{color:var(--stone); font-size:12px; cursor:pointer; padding:10px; border:0; background:none}
.skip:hover{color:var(--charcoal)}
.input{flex:1; min-width:220px; padding:11px 16px; border-radius:var(--r-md); border:1px solid var(--hairline-strong);
  background:#fff; color:var(--text); font-size:13.5px; font-family:inherit; outline:none; transition:all .15s; height:44px}
.input:focus{border:2px solid var(--purple); padding:10px 15px}
.input::placeholder{color:var(--muted)}

/* 产出面板 */
.output-panel{display:flex; flex-direction:column; height:100%; min-height:0; padding:0; overflow:hidden}
.out-tabs{display:flex; gap:4px; margin:0; padding:0 12px; height:63px; box-sizing:border-box; align-items:center;
  overflow:hidden; border-bottom:1px solid var(--hairline-soft); scrollbar-width:none}
.out-tabs::-webkit-scrollbar{display:none; width:0; height:0}
.out-tabs .tab{flex:1 1 0; min-width:0; padding:6px 0; text-align:center; font-size:12px}
.tab{border:1px solid var(--hairline); background:transparent; color:var(--steel); padding:6px 13px; border-radius:9999px;
  cursor:pointer; font-size:12px; font-weight:500; font-family:inherit; transition:all .15s; white-space:nowrap; flex-shrink:0}
.tab:hover{border-color:var(--hairline-strong); color:var(--charcoal)}
.tab.active{background:#000; border-color:#000; color:#fff}
.out-body{flex:1; overflow-y:auto; padding:17px}
.out-body .empty{color:var(--stone); font-size:12.5px; text-align:center; padding:50px 10px; line-height:2}
.title-opt{padding:13px 15px; border-radius:var(--r-md); margin-bottom:10px; cursor:pointer;
  font-size:13px; line-height:1.6; transition:all .15s; background:var(--bg); border:1px solid transparent}
.title-opt:hover{border-color:var(--hairline)}
.title-opt.sel{background:var(--tint-lavender); border-color:transparent; color:var(--purple-deep)}
.title-opt .num{font-size:10.5px; color:var(--stone); display:block; margin-bottom:4px}
.copy-area{width:100%; min-height:220px; resize:vertical; border-radius:var(--r-md); border:1px solid var(--hairline-strong);
  background:#fff; color:var(--text); padding:14px; font-size:13px; line-height:1.8; font-family:inherit; outline:none}
.copy-area:focus{border:2px solid var(--purple); padding:13px}
.tag-cloud{display:flex; flex-wrap:wrap; gap:8px}
.tagchip{padding:7px 14px; border-radius: 9999px; font-size:12px; background:var(--tint-sky); color:#1c5b8a;
  cursor:pointer; user-select:none; transition:filter .15s}
.tagchip:hover{filter:brightness(.96)}
.outline-table{width:100%; border-collapse:collapse; font-size:12px}
.outline-table th{color:var(--stone); font-weight:500; text-align:left; padding:7px 8px; border-bottom:1px solid var(--hairline); font-size:11px}
.outline-table td{padding:9px 8px; border-bottom:1px solid var(--hairline-soft); line-height:1.6; vertical-align:top}
.outline-table td:first-child{color:var(--purple); white-space:nowrap; font-weight:600}
.check-item{display:flex; gap:11px; padding:11px 12px; border-radius:var(--r-md); cursor:pointer; transition:background .15s; align-items:flex-start}
.check-item:hover{background:var(--bg)}
.check-item .box{width:20px; height:20px; border-radius: var(--r-xs); border:1.5px solid var(--hairline-strong); display:grid; place-items:center;
  flex-shrink:0; font-size:11px; color:transparent; transition:all .15s; background:#fff}
.check-item.ok .box{background:var(--purple); border-color:var(--purple); color:#fff}
.check-item .ct{font-size:12.5px; line-height:1.55; color:var(--slate)}
.check-item.ok .ct{color:var(--text)}
.tips-list{display:flex; flex-direction:column; gap:8px}
.tip-item{font-size:12px; color:var(--charcoal); padding:10px 13px; border-radius:var(--r-md); background:var(--tint-cream); line-height:1.6}
.tip-item b{color:var(--orange-deep)}
.cover-opt{padding:13px 15px; border-radius:var(--r-md); margin-bottom:10px; cursor:pointer;
  font-size:12px; color:var(--slate); transition:all .15s; background:var(--bg); border:1px solid transparent; display:flex; justify-content:space-between; gap:12px; align-items:center}
.cover-opt:hover{border-color:var(--hairline)}
.cover-opt b{font-size:16px; letter-spacing:.3px; color:var(--charcoal); line-height:1.5; font-weight:600}
.cover-tip{font-size:12px; color:var(--charcoal); line-height:1.7; margin-top:8px; padding:10px 13px; border-radius:var(--r-md); background:var(--tint-cream)}
.out-actions{padding:0 13px; min-height:74px; box-sizing:border-box; align-items:center; border-top:1px solid var(--hairline-soft); display:flex; gap:9px}
.out-actions .btn{flex:1; justify-content:center; display:flex}

/* ============ 运营 ============ */
/* 排期 */
.slot{display:grid; grid-template-columns:44px 56px minmax(0,1fr) 64px auto; gap:10px; align-items:center;
  padding:12px 13px; border-radius:var(--r-md); background:var(--bg); margin-bottom:8px; transition:background .15s}
.slot:hover{background:#efeeec}
.slot:last-child{margin-bottom:0}
.slot-day{font-size:12px; color:var(--text); font-weight:600}
.slot-label{font-size:10.5px; color:var(--slate); background:#fff; border-radius:9999px; padding:3px 9px; text-align:center; white-space:nowrap}
.slot-topic{min-width:0; font-size:12.5px}
.slot-topic b{font-weight:500; display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.slot-status{font-size:10.5px; padding:3px 10px; border-radius: 9999px; text-align:center; white-space:nowrap; font-weight:500}
.st-empty{color:var(--stone); background:#fff}
.st-topic{color:#1c5b8a; background:var(--tint-sky)}
.st-working{color:var(--orange-deep); background:var(--tint-peach)}
.st-made{color:var(--green); background:var(--tint-mint)}
.st-pub{color:#fff; background:var(--purple)}
.slot-actions{display:flex; gap:6px}

/* 队列（运营页） */
.queue-item{display:flex; align-items:center; justify-content:space-between; gap:10px; padding:12px 13px;
  border-radius:var(--r-md); background:var(--bg); margin-bottom:8px}
.queue-item:last-child{margin-bottom:0}
.queue-item .qi-main{min-width:0}
.queue-item .qi-main b{display:block; font-size:12.5px; margin-bottom:3px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:340px; font-weight:500}

/* 追踪台账 */
#trackBox{overflow-x:auto}
.track-head,.track-row{display:grid; grid-template-columns:minmax(190px,2.2fr) 80px 68px 68px 68px 68px 72px 32px; gap:8px; align-items:center; min-width:780px}
.track-head{font-size:10.5px; color:var(--stone); padding:0 6px 8px}
.track-row{padding:6px; border-radius:var(--r-sm); transition:background .15s}
.track-row:hover{background:var(--bg)}
.track-row input{width:100%; background:#fff; border:1px solid var(--hairline); border-radius:var(--r-sm);
  color:var(--text); font-size:12px; padding:7px 9px; font-family:inherit; outline:none; transition:all .15s}
.track-row input:focus{border:2px solid var(--purple); padding:6px 8px}
.track-row input.t-title{background:transparent; border-color:transparent; font-weight:500}
.track-row input.t-title:focus{background:#fff; border-color:var(--purple); border-width:1px; padding:7px 9px}
.t-status{font-size:10.5px; color:var(--stone); text-align:center; white-space:nowrap}
.t-status.ok{color:var(--green)}
.t-del{border:0; background:transparent; color:var(--stone); cursor:pointer; font-size:12px; padding:4px}
.t-del:hover{color:var(--danger)}

/* 商单 / 素材库 */
#dealsBox,#assetsBox{overflow-x:auto}
.deal-head,.deal-row{display:grid; grid-template-columns:minmax(96px,1.25fr) 62px 66px 86px 92px 52px 70px 72px minmax(64px,1fr) 26px; gap:8px; align-items:center; min-width:920px}
.deal-head,.asset-head{font-size:10.5px; color:var(--stone); padding:0 6px 8px}
.deal-row,.asset-row{padding:6px; border-radius:var(--r-sm); transition:background .15s}
.deal-row:hover,.asset-row:hover{background:var(--bg)}
.deal-row input,.deal-row select,.asset-row input,.asset-row select{width:100%; background:#fff; border:1px solid var(--hairline);
  border-radius:var(--r-sm); color:var(--text); font-size:12px; padding:7px 9px; font-family:inherit; outline:none; transition:all .15s}
.deal-row input:focus,.deal-row select:focus,.asset-row input:focus,.asset-row select:focus{border:2px solid var(--purple); padding:6px 8px}
.deal-row select,.asset-row select{cursor:pointer}
.deal-row input.t-title,.asset-row input.t-title{background:transparent; border-color:transparent; font-weight:500}
.deal-row input.t-title:focus,.asset-row input.t-title:focus{background:#fff; border-color:var(--purple); border-width:1px; padding:7px 9px}
.price-cell{display:flex; flex-direction:column; gap:2px; min-width:0}
.price-cell .price-sub{font-size:9.5px; color:var(--stone); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; line-height:1.2; min-height:11px}
.t-net{font-size:12.5px; color:var(--green); font-weight:600; font-variant-numeric:tabular-nums; white-space:nowrap}
.asset-head,.asset-row{display:grid; grid-template-columns:minmax(100px,1.3fr) 76px 66px 88px minmax(80px,1fr) 30px; gap:8px; align-items:center; min-width:560px}

/* ============ 情报 ============ */
.intel-list{display:flex; flex-direction:column; gap:10px; max-height:68vh; overflow-y:auto; padding-right:4px}
.intel-card{padding:15px 16px; border-radius:var(--r-lg); background:var(--tint-gray); transition:box-shadow .18s}
.intel-card:hover{box-shadow:0 3px 10px rgba(15,15,15,.07)}
.intel-card.t-t0{background:var(--tint-rose)}
.intel-card.t-t1{background:var(--tint-sky)}
.intel-card.t-t2{background:var(--tint-gray)}
.intel-top{display:flex; align-items:center; gap:8px; margin-bottom:8px; flex-wrap:wrap}
.lv-badge{font-size:10.5px; font-weight:600; padding:3px 10px; border-radius:9999px}
.lv-T0{background:var(--pink-deep, #a02e6d); color:#fff}
.lv-T1{background:var(--purple); color:#fff}
.lv-T2{background:rgba(255,255,255,.75); color:var(--slate)}
.intel-cat{font-size:10.5px; color:var(--steel)}
.intel-card h4{font-size:13.5px; margin-bottom:6px; line-height:1.55; font-weight:600; color:var(--charcoal)}
.intel-meta{font-size:11px; color:var(--steel); display:flex; gap:14px; flex-wrap:wrap; margin-bottom:8px}
.intel-sug{font-size:12px; color:var(--slate); line-height:1.8; margin-bottom:10px}
.intel-tags{display:flex; gap:6px; flex-wrap:wrap}
.intel-tag{font-size:10px; padding:2px 9px; border-radius: 9999px; background:rgba(255,255,255,.7); color:var(--slate)}
.intel-foot{display:flex; justify-content:space-between; align-items:center; margin-top:10px; gap:6px; flex-wrap:wrap}
.intel-foot .btn{white-space:nowrap}
.intel-src{font-size:10px; color:var(--stone)}

.hot-src-tabs{display:flex; gap:6px; margin-bottom:10px; flex-wrap:wrap}
.hot-list{display:flex; flex-direction:column; gap:2px; max-height:62vh; overflow-y:auto}
.hot-item{display:flex; gap:10px; align-items:baseline; padding:8px 10px; border-radius:var(--r-sm); cursor:pointer; transition:background .15s}
.hot-item:hover{background:var(--bg)}
.hot-rank{width:20px; font-size:11px; color:var(--stone); font-weight:500; text-align:center; flex-shrink:0}
.hot-rank.top{color:var(--purple)}
.hot-title{flex:1; font-size:12.5px; line-height:1.5}
.hot-sh{font-size:9.5px; color:var(--green); background:var(--tint-mint); padding:2px 8px; border-radius: 9999px; margin-left:6px; white-space:nowrap}
.hot-hot{font-size:10px; color:var(--stone); flex-shrink:0}

.ref-list{display:grid; grid-template-columns:1fr 1fr; gap:2px 16px; max-height:52vh; overflow-y:auto}
.ref-item{display:flex; gap:10px; align-items:baseline; padding:8px 10px; border-radius:var(--r-sm); font-size:12.5px; transition:background .15s; min-width:0}
.ref-item:hover{background:var(--bg)}
.ref-kw{font-size:10px; color:var(--slate); background:var(--tint-gray); padding:2px 9px; border-radius: 9999px; flex-shrink:0}
.ref-title{flex:1; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.ref-lk{color:var(--text); font-weight:600; font-variant-numeric:tabular-nums; flex-shrink:0}
.ref-tag{font-size:10px; color:var(--stone); flex-shrink:0}

/* ---------- toast ---------- */
.toast{position:fixed; bottom:30px; left:50%; transform:translate(-50%,80px); background:var(--navy);
  color:#fff; padding:13px 22px; border-radius:var(--r-lg); font-size:13px;
  box-shadow:var(--shadow-pop); opacity:0; transition:all .35s cubic-bezier(.2,.9,.3,1.2); z-index:99; pointer-events:none}
.toast.show{transform:translate(-50%,0); opacity:1}

/* ---------- modal ---------- */
.overlay{position:fixed; inset:0; background:rgba(15,15,15,.4); z-index:80;
  display:grid; place-items:center; animation:fadeIn .2s}
.modal{width:min(760px, 92vw); max-height:84vh; overflow-y:auto; padding:24px; border-radius:var(--r-lg); box-shadow:var(--shadow-pop)}
.review-body{white-space:pre-wrap; font-family:inherit; font-size:13px; line-height:1.9; color:var(--text);
  background:var(--bg); border-radius:var(--r-lg); padding:18px; max-height:60vh; overflow-y:auto; margin-top:4px}

/* ---------- 滚动条 ---------- */
::-webkit-scrollbar{width:8px; height:8px}
::-webkit-scrollbar-thumb{background:#d3d0cb; border-radius:9999px; border:2px solid transparent; background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:#c3c0ba; background-clip:content-box}
::-webkit-scrollbar-track{background:transparent}

/* ---------- 全局动效层（统一"干脆利落"曲线） ---------- */
/* 弹层 */
.overlay{animation:fadeIn .16s ease}
.overlay .modal{animation:modalPop .24s var(--ease-out)}
@keyframes modalPop{from{opacity:0; transform:translateY(10px) scale(.97)}}
#prompterModal .prompter{animation:fadeIn .18s ease}
.overlay.closing{opacity:0; transition:opacity .14s ease}
.overlay.closing .modal{transform:scale(.975) translateY(6px); transition:transform .14s var(--ease-out)}

/* 图表入场（滚动到视口内才播放） */
.chart .bar,.chart .vbar{transform-box:fill-box; transform-origin:bottom}
.chart .dot{transform-box:fill-box; transform-origin:center}
.chart .line{stroke-dasharray:1}
.chart.armed .bar,.chart.armed .vbar{transform:scaleY(0)}
.chart.armed .line{stroke-dashoffset:1}
.chart.armed .dot{opacity:0}
.donut.armed svg{opacity:0; transform:scale(.9)}
.chart.inview .bar{animation:barGrow .5s var(--ease-out) backwards}
.chart.inview .vbar{animation:barGrow .45s var(--ease-out) backwards}
.chart.inview .line{animation:lineDraw .85s var(--ease-out) .12s backwards}
.chart.inview .dot{animation:dotIn .3s var(--ease-out) .82s backwards}
.donut.inview svg{animation:popIn .5s var(--ease-out)}
@keyframes barGrow{from{transform:scaleY(0)}}
@keyframes lineDraw{from{stroke-dashoffset:1}}
@keyframes dotIn{from{opacity:0; transform:scale(.4)}}
@keyframes popIn{from{opacity:0; transform:scale(.9)}}

/* 数据变化标记 */
.delta{display:inline-block; font-style:normal; font-size:10px; font-weight:600; padding:1px 8px;
  border-radius:9999px; margin-left:6px; vertical-align:2px; animation:deltaPop .35s var(--ease-out)}
.delta.up{background:rgba(26,174,57,.13); color:var(--green)}
.delta.down{background:rgba(224,49,49,.1); color:var(--danger)}
.delta.neu{background:var(--tint-lavender); color:var(--purple-deep)}
@keyframes deltaPop{from{opacity:0; transform:translateY(4px) scale(.8)}}

/* 聊天 / 阶段点 */
.msg{animation-duration:.2s; animation-timing-function:var(--ease-out)}
.stage-dot{transition:background .25s var(--ease-out), box-shadow .25s var(--ease-out)}
.check-item .box{transition:all .18s var(--ease-out)}
.check-item:active .box{transform:scale(.88)}

/* 按钮/卡片的按压反馈 */
.btn:active,.choice:active,.tf-btn:active,.tab:active,.qchip:active,
.brief-chip:active,.tagchip:active,.title-opt:active,.cover-opt:active{transform:scale(.97)}
.topic-card:active{transform:scale(.985)}
.act-chip.go:active{transform:scale(.96)}
.qchip,.brief-chip,.tagchip,.title-opt,.cover-opt,.act-chip{transition:all .18s var(--ease-out)}

/* 数据刷新等待状态 */
.fresh-chip .spin{display:inline-block; width:10px; height:10px; border:2px solid rgba(86,69,212,.25);
  border-top-color:var(--purple); border-radius:50%; animation:spin .8s linear infinite; vertical-align:-1px; margin-right:4px}
@keyframes spin{to{transform:rotate(360deg)}}
.fresh-chip.pending{background:var(--tint-lavender); color:var(--purple-deep)}

/* 无障碍：减少动态效果 */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.001s !important; animation-delay:0s !important; transition-duration:.001s !important}
}

/* ---------- 排版精修（字号 / 对齐 / 可读性） ---------- */
.card-head h3{font-size:14.5px}
.hint{font-size:12px}
.hint.center{margin-top:10px}
.week-badge{font-size:11.5px; padding:3px 11px}
.hero-greet h1{letter-spacing:-.4px}
.hero .si .k{font-size:11.5px}
.hero .si .v{font-size:22px}
.hero .si .v small{font-size:11px}
.hero-pill{font-size:12px}
.qtitle{font-size:12.5px}
.qchip b{font-size:12.5px}
.qchip .qa{font-size:11px}
.ins-title{font-size:13px}
.ins-health{font-size:13.5px}
.ins-metric{font-size:11px; padding:10px 14px}
.ins-metric b{font-size:16px}
.ins-metric i{font-size:10.5px}
.imp-text{font-size:13px}
.imp-why{font-size:11.5px}
.urg-head b{font-size:12.5px}
.urg-chip{font-size:10.5px; padding:3px 10px}
.urg-loc{font-size:11px}
.ins-hot{font-size:11.5px}
.act-chip{font-size:12px; padding:7px 13px}
.chart text{font-size:11px}
.hbar{font-size:12.5px}
.hbar .val{font-weight:600}
.top-item{font-size:13px}
.top-item .rank{font-size:11.5px}
.top-item .tag{font-size:10.5px; padding:2px 9px}
.topic-card .tc-head{font-size:11px}
.topic-card h4{font-size:13.5px; letter-spacing:-.15px}
.topic-card .tc-title{font-size:11.5px; line-height:1.6}
.tc-money{font-size:10.5px}
.tc-fmt{font-size:10.5px; padding:3px 10px}
.dup-badge{font-size:10.5px}
.fchip{font-size:12px}
.alert-row span{font-size:11px}
.alert-row b{font-size:18px; letter-spacing:-.3px}
.alert-tip{font-size:12px}
.tf-btn{font-size:12.5px; padding:6px 14px}
.btn{font-size:13px}
.btn.small{font-size:12.5px}
.tab{font-size:12.5px; padding:7px 14px}
.msg{font-size:14px; line-height:1.75}
.choice{font-size:13.5px}
.input{font-size:14px}
.title-opt{font-size:13.5px}
.copy-area{font-size:13.5px}
.tagchip{font-size:12.5px}
.outline-table{font-size:12.5px}
.outline-table th{font-size:11.5px}
.check-item .ct{font-size:13px}
.tip-item{font-size:12.5px}
.cover-opt b{font-size:16.5px}
.cover-opt{font-size:12.5px}
.cover-tip{font-size:12.5px}
.slot-day{font-size:12.5px}
.slot-label{font-size:11px}
.slot-topic{font-size:13px}
.slot-status{font-size:11px; padding:4px 11px}
.queue-item .qi-main b{font-size:13px}
.track-head,.deal-head,.asset-head{font-size:11px}
.track-row input{font-size:12.5px}
.t-status{font-size:11px}
.deal-row input,.deal-row select,.asset-row input,.asset-row select{font-size:12.5px}
.price-cell .price-sub{font-size:10px}
.t-net{font-size:13px}
.pi-name{font-size:13px}
.pi-chip,.pi-date{font-size:10.5px}
.proj-group{font-size:11px}
.intel-card h4{font-size:14px}
.intel-meta{font-size:11.5px}
.intel-sug{font-size:12.5px}
.intel-tag,.intel-src{font-size:10.5px}
.lv-badge{font-size:11px}
.hot-title,.ref-item{font-size:13px}
.hot-rank{font-size:11.5px}
.hot-hot{font-size:10.5px}
.ref-kw,.ref-tag{font-size:10.5px}
.fresh-chip{font-size:11.5px}
.brand-txt span{font-size:11.5px}
.side-tip{font-size:11px}
.toast{font-size:13.5px}
.review-body{font-size:13.5px}

/* ---------- 商单模式 / Brief ---------- */
.mode-row{display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:14px}
.mode-btn{display:flex; flex-direction:column; gap:4px; align-items:flex-start; padding:14px 16px; border-radius:var(--r-lg);
  border:1.5px solid var(--hairline); background:transparent; cursor:pointer; font-family:inherit; text-align:left; transition:all .15s}
.mode-btn:hover{border-color:var(--hairline-strong); background:var(--bg-soft)}
.mode-btn.active{border-color:var(--purple); background:var(--tint-lavender)}
.mode-btn b{font-size:13.5px; color:var(--text)}
.mode-btn span{font-size:11.5px; color:var(--stone)}
.brand-direct{display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap;
  padding:14px 16px; border-radius:var(--r-lg); background:var(--tint-lavender); margin-bottom:12px}
.bd-info b{display:block; font-size:13.5px; color:var(--purple-deep); margin-bottom:3px}
.bd-info span{font-size:11.5px; color:var(--slate)}
.modal-sep{font-size:11.5px; color:var(--stone); text-align:center; margin:4px 0 10px}
.custom-topic{margin-top:14px; border:1.5px dashed var(--hairline-strong); border-radius:var(--r-lg); padding:12px 14px;
  transition:border-color .18s ease, box-shadow .18s ease}
.custom-topic.active{border-color:var(--purple); border-style:solid; box-shadow:0 0 0 3px rgba(86,69,212,.09)}
.custom-topic-head{display:flex; align-items:baseline; gap:8px; font-size:13px; font-weight:600; color:var(--charcoal); cursor:pointer}
.custom-topic-head b{font-weight:600}
.ct-chev{font-style:normal; font-size:10px; color:var(--stone); display:inline-block;
  transition:transform .2s cubic-bezier(.25,1,.35,1), color .18s ease}
.custom-topic.active .ct-chev{transform:rotate(90deg); color:var(--purple)}
.custom-topic-head span{font-size:11.5px; font-weight:400; color:var(--stone)}
.custom-topic-form{display:grid; grid-template-columns:1.2fr 1fr auto; gap:8px; margin-top:0;
  max-height:0; opacity:0; transform:translateY(6px); overflow:hidden;
  transition:max-height .22s cubic-bezier(.25,1,.35,1), opacity .16s ease,
             transform .22s cubic-bezier(.25,1,.35,1), margin-top .22s cubic-bezier(.25,1,.35,1)}
.custom-topic.active .custom-topic-form{max-height:64px; opacity:1; transform:none; margin-top:10px}
.custom-topic-form .input{min-width:0; font-size:13px}
@media (max-width:700px){
  .custom-topic-form{grid-template-columns:1fr}
  .custom-topic.active .custom-topic-form{max-height:220px}
}
.brief-bar{display:flex; align-items:center; gap:6px; flex-wrap:wrap; padding:9px 20px; border-top:1px solid var(--hairline-soft); background:var(--tint-cream)}
.bb-label{font-size:11.5px; font-weight:600; color:var(--orange-deep)}
.brief-chip{display:inline-flex; align-items:center; gap:6px; font-size:11.5px; background:#fff; border:1px solid var(--hairline);
  border-radius: 9999px; padding:4px 10px; cursor:pointer; color:var(--charcoal); transition:all .15s}
.brief-chip:hover{border-color:var(--purple)}
.brief-chip i{font-style:normal; color:var(--stone); font-size:10px; padding:0 2px}
.brief-chip i:hover{color:var(--danger)}
.brief-upload{display:flex; gap:8px; flex-wrap:wrap; width:100%}
.brief-list{display:flex; gap:6px; flex-wrap:wrap; width:100%; margin-top:8px}
.brief-pre{white-space:pre-wrap; font-family:inherit; font-size:13px; line-height:1.85; color:var(--text);
  background:var(--bg); border-radius:var(--r-lg); padding:16px; max-height:56vh; overflow-y:auto}
.prompter-area{min-height:260px !important}

/* ---------- 全屏提词器 ---------- */
#prompterModal{background:#0a0f1e; place-items:stretch; padding:0}
.prompter{display:flex; flex-direction:column; height:100%; width:100%; max-width:none; margin:0}
.prompter-tools{display:flex; align-items:center; gap:8px; padding:12px 16px; border-bottom:1px solid rgba(255,255,255,.1); flex-wrap:wrap}
.prompter-tools .btn{background:rgba(255,255,255,.1); border-color:transparent; color:#fff}
.prompter-tools .btn:hover{background:rgba(255,255,255,.18)}
.prompter-tools .btn.ghost{background:transparent; color:#a4a097}
.prompter-speed{display:flex; align-items:center; gap:6px; color:#fff; font-size:12.5px; margin-left:auto}
.prompter-body{flex:1; overflow-y:auto; padding:10vh max(6vw, 24px) 45vh;
  font-size:30px; line-height:1.9; color:#fff; letter-spacing:.5px; white-space:pre-wrap; font-weight:500}
.prompter-body::-webkit-scrollbar{width:0}

/* ---------- 响应式 ---------- */
@media (max-width:1360px){
  .workspace{grid-template-columns:230px 1fr 340px}
  .span3{grid-column:span 6} .span4{grid-column:span 6} .span5{grid-column:span 6} .span8{grid-column:span 12}
  .span7,.ops-queue,.hot-side{grid-column:span 12}
  .top-list{grid-template-columns:repeat(2,1fr)}
  .topic-grid{grid-template-columns:repeat(3,1fr)}
  .insights-grid{grid-template-columns:1fr 1fr}
  .hero .si{flex:1 1 28%}
}
@media (max-width:1100px){
  .app{flex-direction:column; align-items:stretch}
  .sidebar{position:sticky; top:0; z-index:40; width:100%; height:auto; flex-direction:row; align-items:center; gap:8px;
    padding:10px 12px; border-right:0; border-bottom:1px solid var(--hairline); overflow:hidden}
  .side-brand{border:0; padding:0; flex-shrink:0; height:auto}
  .side-brand .logo{width:34px; height:34px}
  .brand-txt span{display:none}
  .side-nav{flex-direction:row; padding:0; flex:1; min-width:0; overflow-x:auto; scrollbar-width:none}
  .side-nav::-webkit-scrollbar{display:none; width:0; height:0}
  .side-item{padding:8px 10px; width:auto; flex-shrink:0; font-size:13px; gap:7px}
  .side-item i{width:auto}
  .side-foot{border:0; padding:0; flex-shrink:0; flex-direction:row}
  .side-tip{display:none}
  .fresh-chip{white-space:nowrap; max-width:46vw; overflow:hidden; text-overflow:ellipsis}
  .fc-full{display:none}
  .fc-mini{display:inline-flex; align-items:center; gap:5px}
  .main{padding:16px 16px 32px}
  .hero{margin:-16px -16px 16px; padding:32px 16px 24px}
  .span3,.span4,.span5,.span6,.span7,.span8{grid-column:span 12}
  #view-workspace{height:auto; min-height:0}
  .workspace{grid-template-columns:1fr; height:auto; align-items:start}
  .proj-list,.output-panel{height:auto}
  .proj-items{flex:none; max-height:60vh}
  .chat-panel{height:66vh; min-height:0}
  .out-body{min-height:260px}
  .topic-grid{grid-template-columns:repeat(2,1fr)}
  .top-list{grid-template-columns:1fr}
  .insights-grid{grid-template-columns:1fr}
  .hero .si{flex:1 1 30%}
  .queue-item .qi-main b{max-width:180px}
}
@media (max-width:700px){
  .topic-grid,.modal-grid{grid-template-columns:1fr}
  .sidebar{gap:6px; padding:10px}
  .side-brand{gap:7px}
  .side-brand .logo{width:30px; height:30px}
  .brand-txt{display:none}
  .side-item{padding:6px 7px; font-size:12px; gap:5px}
  .side-item i{font-size:13px}
  .fresh-chip{font-size:10.5px}
  .hero .si{flex:1 1 45%; min-width:0}
  .slot{grid-template-columns:44px 1fr; row-gap:7px}
  .slot-day{grid-column:1; grid-row:1}
  .slot-label{grid-column:2; grid-row:1; justify-self:start}
  .slot-topic{grid-column:1 / -1; grid-row:2}
  .slot-status{grid-column:1; grid-row:3; justify-self:start}
  .slot-actions{grid-column:2; grid-row:3; justify-self:end}
  .main{padding:12px 12px 28px}
  .hero{margin:-12px -12px 12px; padding:26px 16px 22px}
  .hero-greet h1{font-size:26px}
  .hero-num{font-size:90px; right:16px; bottom:-24px}
  .hero .si .v{font-size:18px}
  .card{padding:15px 16px}
  .tf-btn{padding:6px 12px}
  .tab{padding:6px 12px}
  .side-item{padding:8px 10px}
  .chat-panel{height:70vh; min-height:0}
  .output-panel{min-height:0}
  .msg{max-width:92%}
  .ref-list{grid-template-columns:1fr; gap:2px}
}
