/* ═══════════════════════════════════════════
   聚合看板 — 设计系统
   基于 ui-ux-pro-max Design System：
   瑞士极简风 · Navy+Gold · Fira Sans/Code
   ═══════════════════════════════════════════ */

@import url('https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;600;700&family=Fira+Sans:wght@300;400;500;600;700&display=swap');

/* ── CSS Variables: ui-ux-pro-max 系统 ── */
:root {
    --primary: #0F172A;
    --secondary: #1E3A8A;
    --accent: #CA8A04;
    --accent-hover: #B37903;
    --accent-light: #FEF3C7;
    --bg: #F8FAFC;
    --surface: #FFFFFF;
    --surface-hover: #F1F5F9;
    --border: #E2E8F0;
    --border-hover: #CBD5E1;
    --text: #020617;
    --text-secondary: #475569;
    --text-tertiary: #94A3B8;
    --up: #16A34A;
    --up-bg: #DCFCE7;
    --down: #DC2626;
    --down-bg: #FEE2E2;
    --warn: #D97706;
    --warn-bg: #FEF3C7;

    --font-sans: "Fira Sans", -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;
    --font-mono: "Fira Code", "SF Mono", "Menlo", "Consolas", monospace;

    --text-xs: 0.75rem;
    --text-sm: 0.8125rem;
    --text-base: 0.875rem;
    --text-md: 0.9375rem;
    --text-lg: 1.125rem;
    --text-xl: 1.375rem;
    --text-2xl: 1.75rem;

    --weight-normal: 400;
    --weight-medium: 500;
    --weight-semibold: 600;
    --weight-bold: 700;

    --space-xs: 4px;
    --space-sm: 8px;
    --space-md: 12px;
    --space-lg: 16px;
    --space-xl: 24px;
    --space-2xl: 32px;
    --space-3xl: 48px;

    --radius-sm: 6px;
    --radius-md: 8px;
    --radius-lg: 12px;
    --radius-xl: 16px;

    --shadow-sm: 0 1px 2px rgba(15,23,42,.05);
    --shadow-md: 0 4px 12px rgba(15,23,42,.08);
    --shadow-lg: 0 8px 24px rgba(15,23,42,.1);

    --nav-height: 48px;
    --content-max: 1260px;
}

/* ── Reset ── */
*,*::before,*::after{ margin:0; padding:0; box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; }
body{
    font-family: var(--font-sans);
    font-size: var(--text-base);
    line-height: 1.5;
    color: var(--text);
    background: var(--bg);
    -webkit-font-smoothing: antialiased;
}
a{ color: var(--secondary); text-decoration:none; }
a:hover{ text-decoration:underline; }
button{
    font-family: inherit; cursor: pointer; border: none;
    background: none; font-size: inherit;
}
button:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }
img{ max-width:100%; display:block; }

/* ── Scrollbar ── */
::-webkit-scrollbar{ width:5px; height:5px; }
::-webkit-scrollbar-track{ background:transparent; }
::-webkit-scrollbar-thumb{ background:var(--border-hover); border-radius:3px; }
::-webkit-scrollbar-thumb:hover{ background:var(--text-tertiary); }

/* ── 数值专用 ── */
.num{ font-variant-numeric:tabular-nums; font-family:var(--font-mono); }
.up{ color:var(--up); }
.down{ color:var(--down); }

/* ── Animations ── */
@keyframes fadeUp{
    from{ opacity:0; transform:translateY(6px); }
    to{ opacity:1; transform:translateY(0); }
}
@keyframes pulse{
    0%,100%{ opacity:1; }
    50%{ opacity:.4; }
}
@keyframes flash-green{
    0%{ background:var(--up-bg); }
    100%{ background:transparent; }
}
@keyframes flash-red{
    0%{ background:var(--down-bg); }
    100%{ background:transparent; }
}
.animate{ animation:fadeUp .35s cubic-bezier(.16,1,.3,1) both; }
.animate-d1{ animation-delay:.05s; }
.animate-d2{ animation-delay:.1s; }
.animate-d3{ animation-delay:.15s; }

/* 微交互 */
.nav-btn:active{ transform:scale(.96); }
.sig-table tbody tr{ transition:background .15s; }
.sig-table tbody tr:hover{ background:var(--surface-hover); }
.hub-card:active{ transform:scale(.98); }
.summary-card{ animation:fadeUp .4s cubic-bezier(.16,1,.3,1) both; }
.sector-card:nth-child(1){ animation-delay:.05s; }
.sector-card:nth-child(2){ animation-delay:.1s; }
.sector-card:nth-child(3){ animation-delay:.15s; }

/* ═══════════════════════════════════════════
   Hub 功能选择页
   ═══════════════════════════════════════════ */
.hub-page{
    min-height: 100vh;
    display: flex; flex-direction: column;
    align-items: center; justify-content: center;
    padding: var(--space-2xl);
}
.hub-header{ text-align: center; margin-bottom: var(--space-3xl); }
.hub-logo{
    width: 56px; height: 56px; border-radius: 16px;
    background: var(--primary); color: var(--accent);
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 24px; font-weight: var(--weight-bold);
    margin-bottom: var(--space-lg);
}
.hub-title{
    font-size: var(--text-2xl); font-weight: var(--weight-bold);
    color: var(--text); letter-spacing: -.02em;
}
.hub-subtitle{
    font-size: var(--text-base); color: var(--text-secondary);
    margin-top: var(--space-xs);
}
.hub-grid{
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: var(--space-lg);
    max-width: 900px;
    width: 100%;
}
.hub-card{
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius-xl);
    padding: var(--space-2xl);
    cursor: pointer;
    transition: all .2s cubic-bezier(.16,1,.3,1);
    text-decoration: none;
    color: var(--text);
    display: flex; flex-direction: column; gap: var(--space-md);
}
.hub-card:hover{
    border-color: var(--secondary);
    transform: translateY(-2px);
    box-shadow: var(--shadow-md);
    text-decoration: none;
    color: var(--text);
}
.hub-card-icon{
    width: 44px; height: 44px; border-radius: 12px;
    display: flex; align-items: center; justify-content: center;
    font-size: 20px;
}
.hub-card-icon.primary{ background: var(--secondary); color: #fff; }
.hub-card-icon.gold{ background: var(--accent-light); color: var(--accent); }
.hub-card-icon.hub-indigo{ background: #EEEDFE; color: #534AB7; }
.hub-card-icon.hub-emerald{ background: #D1FAE5; color: #059669; }
.hub-card-icon.hub-amber{ background: #FEF3C7; color: #D97706; }
.hub-card-name{
    font-size: var(--text-lg); font-weight: var(--weight-semibold);
}
.hub-card-desc{
    font-size: var(--text-sm); color: var(--text-secondary);
    line-height: 1.6;
}
.hub-card-arrow{
    font-size: var(--text-sm); color: var(--text-tertiary);
    margin-top: auto; display: flex; align-items: center; gap: var(--space-xs);
}
.hub-card:hover .hub-card-arrow{ color: var(--secondary); }
.hub-footer{
    margin-top: var(--space-3xl);
    font-size: var(--text-xs); color: var(--text-tertiary);
    text-align: center;
}

/* ═══════════════════════════════════════════
   锁屏页
   ═══════════════════════════════════════════ */
.lock-page{
    min-height: 100vh;
    display: flex; flex-direction: column;
    align-items: center; justify-content: center;
    padding: var(--space-2xl);
    background: linear-gradient(135deg, #0F172A 0%, #1E293B 100%);
}
.lock-box{
    background: var(--surface);
    border-radius: var(--radius-xl);
    padding: var(--space-3xl);
    max-width: 400px;
    width: 100%;
    text-align: center;
    box-shadow: var(--shadow-lg);
}
.lock-icon{
    width: 48px; height: 48px; border-radius: 50%;
    background: var(--primary); color: var(--accent);
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 20px; margin-bottom: var(--space-lg);
}
.lock-title{
    font-size: var(--text-xl); font-weight: var(--weight-bold);
    color: var(--text); margin-bottom: var(--space-xs);
}
.lock-sub{
    font-size: var(--text-sm); color: var(--text-secondary);
    margin-bottom: var(--space-xl);
}
.lock-input{
    width: 100%; padding: 12px 16px;
    border: 1px solid var(--border); border-radius: var(--radius-md);
    font-size: var(--text-md); font-family: var(--font-mono);
    text-align: center; outline: none;
    transition: border-color .15s;
    letter-spacing: 4px;
}
.lock-input:focus{ border-color: var(--secondary); }
.lock-error{
    font-size: var(--text-xs); color: var(--down);
    min-height: 20px; margin-top: var(--space-sm);
}
.lock-submit{
    width: 100%; margin-top: var(--space-lg);
    padding: 12px; border-radius: var(--radius-md);
    background: var(--primary); color: #fff;
    font-size: var(--text-base); font-weight: var(--weight-semibold);
    transition: background .15s;
}
.lock-submit:hover{ background: #1E293B; }
.lock-submit:disabled{ opacity: .5; cursor: not-allowed; }

/* ═══════════════════════════════════════════
   导航栏（juhe 看板用）
   ═══════════════════════════════════════════ */
.nav{
    position: sticky; top:0; z-index:100;
    min-height: var(--nav-height);
    background: rgba(255,255,255,.85);
    backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
    border-bottom: 1px solid var(--border);
    padding: var(--space-sm) var(--space-xl);
    display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
    gap: var(--space-sm);
}
.nav-left{ display:flex; align-items:center; gap:var(--space-md); }
.nav-title{
    font-size: var(--text-base); font-weight: var(--weight-semibold);
    display:flex; align-items:center; gap:var(--space-sm);
}
.nav-live{
    width:7px; height:7px; border-radius:50%;
    background:var(--up);
}
.nav-date{ font-weight: var(--weight-normal); color:var(--text-tertiary); font-size:var(--text-sm); }
.nav-meta{
    display:flex; align-items:center; gap:var(--space-sm);
    font-size:var(--text-xs); color:var(--text-tertiary);
    flex-shrink:1; min-width:0;
}
.nav-meta .nav-btn{ flex-shrink:0; }
.nav-meta .date-picker-wrap{ flex-shrink:0; }
.nav-back{
    color:var(--text-secondary);
    padding:4px 10px; border-radius:var(--radius-sm);
    border:1px solid var(--border); transition:all .15s;
    font-size:var(--text-xs);
}
.nav-back:hover{ border-color:var(--border-hover); color:var(--text); }

/* ── 导航按钮 ── */
.nav-btn{
    font-size:11px; font-weight:var(--weight-medium);
    padding:4px 10px; border-radius:var(--radius-sm);
    background:var(--surface); color:var(--text-secondary);
    border:1px solid var(--border);
    cursor:pointer; white-space:nowrap;
    transition:all .15s; font-family:inherit;
    display:inline-flex; align-items:center; gap:4px;
}
.nav-btn:hover{ border-color:var(--border-hover); color:var(--text); }

/* ── Toast ── */
.toast{
    position:fixed; top:60px; left:50%; transform:translateX(-50%);
    background:var(--primary); color:#fff;
    padding:8px 20px; border-radius:var(--radius-lg);
    font-size:var(--text-sm); z-index:200;
    opacity:0; transition:opacity .3s; pointer-events:none;
}
.toast.show{ opacity:1; }

/* ═══════════════════════════════════════════
   看板主容器
   ═══════════════════════════════════════════ */
.main{ max-width:var(--content-max); margin:0 auto; padding:var(--space-lg) var(--space-xl); }
.section-title{
    font-size:var(--text-sm); font-weight:var(--weight-semibold);
    color:var(--text-secondary); margin-bottom:var(--space-md);
    display:flex; align-items:center; gap:var(--space-sm);
}
.row-2col{
    display:grid; grid-template-columns:1fr 1fr;
    gap:var(--space-lg); margin-bottom:var(--space-lg);
}

/* ── AI 精炼 ── */
.insight{
    background:var(--surface); border:1px solid var(--border);
    border-radius:var(--radius-lg); padding:var(--space-xl);
}
.insight-head{ display:flex; align-items:center; gap:var(--space-sm); margin-bottom:var(--space-md); }
.insight-icon{
    width:32px; height:32px; border-radius:var(--radius-sm);
    display:flex; align-items:center; justify-content:center;
    font-size:15px; background:var(--accent-light); color:var(--accent);
}
.insight-title{ font-size:var(--text-md); font-weight:var(--weight-semibold); }
.insight-senti{
    font-size:var(--text-xl); font-weight:var(--weight-semibold);
    margin:var(--space-sm) 0 var(--space-xs);
}
.insight-desc{ font-size:var(--text-base); color:var(--text-secondary); line-height:1.7; }

/* ── 操作信号表 ── */
.sig-card{
    background:var(--surface); border:1px solid var(--border);
    border-radius:var(--radius-lg); overflow:hidden; overflow-x:auto;
}
.sig-table{ width:100%; border-collapse:collapse; min-width:520px; }
.sig-table th{
    background:var(--bg); color:var(--text-secondary);
    padding:9px var(--space-md); font-size:var(--text-xs);
    text-align:left; font-weight:var(--weight-medium);
    border-bottom:1px solid var(--border);
}
.sig-table td{
    padding:9px var(--space-md); font-size:var(--text-sm);
    border-bottom:1px solid var(--border);
    background:var(--surface);
}
.sig-time{ font-size:11px; color:var(--text-tertiary); font-family:var(--font-mono); }
.sig-stock{ font-weight:var(--weight-semibold); }
.sig-signal{ font-weight:var(--weight-semibold); font-size:var(--text-sm); }
.sig-source,.sig-note{ font-size:11px; color:var(--text-tertiary); }

/* ── 热点汇总 ── */
.hot-card{
    background:var(--surface); border:1px solid var(--border);
    border-radius:var(--radius-lg); padding:var(--space-xl);
    margin-bottom:var(--space-lg);
}
.hot-group{ margin-bottom:var(--space-lg); padding-bottom:var(--space-lg); border-bottom:1px solid var(--border); }
.hot-group:last-child{ margin-bottom:0; padding-bottom:0; border-bottom:none; }
.hot-title{
    font-size:var(--text-base); font-weight:var(--weight-semibold);
    color:var(--secondary); margin-bottom:var(--space-xs);
}
.hot-meta{ font-size:11px; color:var(--text-tertiary); margin-bottom:var(--space-sm); display:flex; align-items:center; gap:var(--space-sm); flex-wrap:wrap; }
.hot-mood{ font-size:10px; padding:2px 8px; border-radius:4px; font-weight:var(--weight-semibold); }
.hot-mood.bull{ background:var(--up-bg); color:var(--up); }
.hot-mood.bear{ background:var(--down-bg); color:var(--down); }
.hot-mood.split{ background:var(--warn-bg); color:var(--warn); }
.hot-summary{ display:flex; flex-direction:column; gap:var(--space-xs); }
.hot-bullet{
    font-size:var(--text-xs); line-height:1.7;
    padding:4px 10px; border-radius:var(--radius-sm);
    display:flex; align-items:flex-start; gap:var(--space-sm);
}
.hot-bullet.看好{ background:var(--up-bg); }
.hot-bullet.谨慎{ background:var(--down-bg); }
.hot-bullet.关注{ background:var(--accent-light); }
.hot-btag{ font-size:10px; padding:1px 6px; border-radius:3px; font-weight:var(--weight-semibold); white-space:nowrap; flex-shrink:0; }
.hot-btag.看好{ background:oklch(85% 0.08 25); color:var(--up); }
.hot-btag.谨慎{ background:oklch(85% 0.06 145); color:var(--down); }
.hot-btag.关注{ background:var(--accent-light); color:var(--accent); }
.hot-stocks{ margin-left:auto; color:var(--text-tertiary); }
.hot-stocks span{ color:var(--secondary); }

/* ── 人物观点 ── */
.ppl-stack{ display:flex; flex-direction:column; gap:var(--space-sm); }
.ppl-card{
    background:var(--surface); border:1px solid var(--border);
    border-radius:var(--radius-md); padding:var(--space-md);
    border-left:3px solid var(--secondary);
    transition:border-color .15s;
}
.ppl-card:hover{ border-color:var(--border-hover); }
.ppl-card.banzhang{ border-left-color:var(--up); }
.ppl-card.fubanzhang{ border-left-color:var(--warn); }
.ppl-card.xuexi{ border-left-color:var(--down); }
.ppl-card.guanzhong{ border-left-color:var(--text-tertiary); }
.ppl-head{ display:flex; align-items:center; gap:var(--space-sm); margin-bottom:var(--space-sm); }
.ppl-avatar{
    width:28px; height:28px; border-radius:50%;
    display:flex; align-items:center; justify-content:center;
    font-size:13px; font-weight:var(--weight-bold); color:#fff;
}
.ppl-avatar.banzhang{ background:var(--up); }
.ppl-avatar.fubanzhang{ background:var(--warn); }
.ppl-avatar.xuexi{ background:var(--down); }
.ppl-avatar.guanzhong{ background:var(--text-tertiary); }
.ppl-name{ font-size:var(--text-base); font-weight:var(--weight-semibold); }
.ppl-label{ font-size:10px; color:var(--text-tertiary); }
.ppl-summary{ display:flex; flex-direction:column; gap:var(--space-xs); }
.ppl-bullet{
    font-size:var(--text-xs); line-height:1.6;
    padding:4px 10px; border-radius:var(--radius-sm);
    display:flex; align-items:flex-start; gap:6px;
}
.ppl-bullet.bull{ background:var(--up-bg); }
.ppl-bullet.bear{ background:var(--down-bg); }
.ppl-bullet.neu{ background:var(--accent-light); }
.ppl-btag{ font-size:9px; font-weight:var(--weight-semibold); padding:1px 5px; border-radius:3px; white-space:nowrap; flex-shrink:0; }
.ppl-bullet.bull .ppl-btag{ background:var(--up); color:#fff; }
.ppl-bullet.bear .ppl-btag{ background:var(--down); color:#fff; }
.ppl-bullet.neu .ppl-btag{ background:var(--secondary); color:#fff; }

/* ── 日期选择器（原生日历）── */
.date-picker-wrap{ display:flex; align-items:center; gap:6px; }
.date-sel-input{
  font-size:11px; font-weight:var(--weight-medium);
  padding:4px 10px; border-radius:var(--radius-sm);
  background:var(--surface); color:var(--text-secondary);
  border:1px solid var(--border);
  cursor:pointer; font-family:inherit;
  display:inline-flex; align-items:center; gap:4px;
  height:28px; line-height:1;
  position:relative; width:auto; min-width:0;
  -webkit-appearance:none; appearance:none;
  text-transform:none;
  transition:all .15s;
}
.date-sel-input:hover{ border-color:var(--border-hover); color:var(--text); }
.date-sel-input:active{ transform:scale(.96); }
.date-sel-input:focus{ outline:none; }
.date-sel-input::-webkit-calendar-picker-indicator{
  position:absolute; inset:0; width:100%; height:100%;
  cursor:pointer; opacity:0;
}
.date-sel-input::-webkit-datetime-edit{
  color:var(--text-secondary); font-size:11px;
  font-family:inherit; font-weight:var(--weight-medium);
}
.date-sel-input::-webkit-datetime-edit-fields-wrapper{ padding:0; }
.date-sel-input::-webkit-inner-spin-button{ display:none; }
.date-picker-wrap .nav-btn{ height:28px; line-height:1; }

/* ── AI 总结分析（全宽）── */
.summary-card{
    background:var(--primary); color:#fff;
    border-radius:var(--radius-lg); padding:var(--space-xl) var(--space-2xl);
    margin-bottom:var(--space-lg);
    background: linear-gradient(135deg, #0F172A 0%, #1E293B 100%);
}
.summary-card .summary-label{
    font-size:11px; font-weight:var(--weight-semibold);
    text-transform:uppercase; letter-spacing:.08em;
    color:var(--accent); margin-bottom:var(--space-md);
    display:flex; align-items:center; gap:var(--space-sm);
}
.summary-card .summary-text{
    font-size:var(--text-md); line-height:1.8;
    color: #E2E8F0; font-weight:var(--weight-normal);
}

/* ── 板块分析 ── */
.sector-grid{
    display:flex; flex-direction:column; gap:var(--space-sm);
}
.sector-card{
    background:var(--surface); border:1px solid var(--border);
    border-radius:var(--radius-md); padding:var(--space-md);
    border-left:3px solid var(--secondary);
    transition: all .2s cubic-bezier(.16,1,.3,1);
}
.sector-card:hover{ 
    border-color:var(--border-hover); 
    transform: translateY(-1px);
    box-shadow: var(--shadow-sm);
}
.sector-head{
    display:flex; align-items:center; justify-content:space-between;
    margin-bottom:var(--space-xs);
}
.sector-name{
    font-size:var(--text-sm); font-weight:var(--weight-semibold);
    color:var(--secondary);
}
.sector-mood{ font-size:10px; padding:2px 8px; border-radius:4px; font-weight:var(--weight-semibold); }
.sector-mood.bull{ background:var(--up-bg); color:var(--up); }
.sector-mood.bear{ background:var(--down-bg); color:var(--down); }
.sector-mood.split{ background:var(--warn-bg); color:var(--warn); }
.sector-desc{
    font-size:var(--text-xs); color:var(--text-secondary);
    line-height:1.65; margin-bottom:var(--space-sm);
}
.sector-stocks{ margin-top:var(--space-sm); }
.sector-stocks-label{
    font-size:10px; font-weight:var(--weight-semibold);
    color:var(--text-secondary); margin-bottom:var(--space-xs);
}
.sector-stock-item{
    display:flex; align-items:center; gap:var(--space-sm);
    font-size:10px; padding:3px 0; line-height:1.4;
}
.sector-stock-name{
    font-weight:var(--weight-semibold); color:var(--text);
    white-space:nowrap; min-width:80px;
}
.sector-stock-analysis{
    color:var(--text-secondary); font-size:10px;
}
.sector-meta{
    font-size:10px; color:var(--text-tertiary);
    margin-top:var(--space-sm); padding-top:var(--space-xs);
    border-top:1px solid var(--border-light);
}
.sector-stocks span{ color:var(--secondary); }

/* ── 空状态 ── */
.empty-state{ text-align:center; padding:60px 20px; color:var(--text-tertiary); }
.empty-state .empty-icon{ font-size:40px; margin-bottom:12px; opacity:.4; }
.empty-state .empty-h2{
    font-size:16px; color:var(--text-secondary);
    margin-bottom:6px; font-weight:510;
}
.empty-state .empty-p{ font-size:13px; color:var(--text-tertiary); }

/* ── 扁平空状态图标（与 showlist 共享风格） ── */
.icon-svg { display: block; margin: 0 auto; width: 44px; height: 44px; }
.icon-line { stroke: var(--text-tertiary); stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; fill: none; opacity: .55; }
.icon-line-faint { stroke: var(--border-hover); stroke-width: 2.5; stroke-linecap: round; fill: none; opacity: .45; }

/* ── 页脚 ── */
.footer{
    text-align:center; padding:var(--space-xl);
    font-size:var(--text-xs); color:var(--text-tertiary);
    border-top:1px solid var(--border);
    margin-top:var(--space-2xl);
}

/* ── 频道页面 ── */
.channels-body{ background:var(--bg); color:var(--text); min-height:100vh; }
.channels-main{ max-width:1800px; margin:0 auto; padding:var(--space-lg) var(--space-xl); }
.channels-grid{ display:grid; grid-template-columns:1fr 1fr 1fr; gap:var(--space-lg); }
.channel-card{
    background:var(--surface); border:1px solid var(--border);
    border-radius:var(--radius-lg); overflow:hidden;
}
.channel-head{
    background:var(--primary); color:#fff;
    padding:var(--space-md) var(--space-lg);
    font-size:var(--text-sm); font-weight:var(--weight-semibold);
    display:flex; align-items:center; gap:6px;
}
.msg-item{
    padding:var(--space-md) var(--space-lg);
    border-bottom:1px solid var(--border);
}
.msg-head{ display:flex; align-items:center; gap:var(--space-sm); margin-bottom:var(--space-xs); }
.msg-avatar{
    width:26px; height:26px; border-radius:50%;
    display:flex; align-items:center; justify-content:center;
    font-size:11px; font-weight:var(--weight-bold); color:#fff; flex-shrink:0;
}
.msg-user{ font-size:var(--text-sm); font-weight:var(--weight-semibold); }
.msg-time{
    font-size:12px; font-weight:var(--weight-medium);
    color:var(--secondary); margin-left:auto; flex-shrink:0;
    font-family:var(--font-mono); padding:1px 8px;
    border-radius:6px; background:var(--accent-light);
}
.msg-content{ font-size:var(--text-sm); color:var(--text); line-height:1.6; }
.msg-content p{ margin:0 0 4px; }
.msg-tag{
    display:inline-flex; font-size:10px; padding:1px 6px;
    border-radius:3px; margin-right:4px; font-weight:var(--weight-medium);
}

/* ── Showlist 消息流 ── */
.showlist-body{ background:var(--bg); color:var(--text); }
.showlist-main{ max-width:800px; margin:0 auto; padding:var(--space-lg) var(--space-xl); }
.showlist-card{
    background:var(--surface); border:1px solid var(--border);
    border-radius:var(--radius-lg); margin-bottom:var(--space-sm);
    padding:var(--space-md) var(--space-lg);
}

/* ── 响应式 ── */
@media(max-width:1024px){
    .channels-grid{ grid-template-columns:1fr; }
}
@media(max-width:768px){
    .row-2col{ grid-template-columns:1fr; }
    .nav{ padding:var(--space-sm) var(--space-md); gap:4px; }
    .nav-meta{ gap:4px; flex-wrap:wrap; }
    .nav-meta .nav-btn{ padding:4px 6px; font-size:10px; }
    .nav-meta .nav-btn svg{ width:12px; height:12px; }
    .main{ padding:var(--space-md); }
    .hub-grid{ grid-template-columns:1fr; }
    .hub-page{ padding:var(--space-lg); }
    .hot-card,.insight{ padding:var(--space-lg); }
    #live-nav{ font-size:10px; }
    .sector-grid{ grid-template-columns:1fr; }
}
@media(max-width:480px){
    .hub-title{ font-size:var(--text-xl); }
    .sig-table th,.sig-table td{ padding:6px 8px; font-size:11px; }
    .nav{ padding:var(--space-xs) var(--space-xs); gap:2px; }
    .nav-meta{ gap:2px; }
    .nav-title{ font-size:13px; }
    .nav-meta .nav-btn{ padding:3px 5px; font-size:9px; }
    .nav-meta .nav-btn svg{ width:10px; height:10px; }
}
