/* ============================================================
   首页专用样式（templates/index.html 独有，其它页面不引用）
   F-01 今日概览 + AI 干预链（2026-10-20）
   F-06 明细下钻入口（2026-10-21）
   独立文件：不改 style.css（1576 行），改样式只回滚本文件即可。
   数据可得性见 team/FRONTEND.md §2 —— 缺数据源的环节必须显示为缺，
   不得借用其它数字冒充。
   ============================================================ */

.fx-today {
    background: var(--card-bg, var(--color-white));
    border: 1px solid var(--border, var(--border));
    border-radius: var(--radius-lg, var(--radius-14));
    padding: var(--space-14) var(--space-18);
    margin-bottom: var(--space-18);
    box-shadow: var(--shadow, 0 1px 3px rgba(0,0,0,0.06));
}

.fx-today-head {
    display: flex;
    align-items: center;
    gap: var(--space-8);
    flex-wrap: wrap;
    padding-bottom: var(--space-12);
    border-bottom: 1px solid var(--border, var(--border));
}

.fx-title {
    font-size: var(--font-14);
    font-weight: 700;
    color: var(--text, var(--text));
    margin-right: var(--space-2);
}

.fx-chip {
    font-size: var(--font-12);
    padding: var(--space-3) var(--space-9);
    border-radius: var(--radius-full);
    background: var(--bg-slate-100);
    color: var(--text-secondary, var(--text-secondary));
    border: 1px solid var(--border, var(--border));
    white-space: nowrap;
}
.fx-chip.ok   { background: var(--success-50b); color: var(--success-700b); border-color: var(--success-200b); }
.fx-chip.warn { background: var(--warning-50); color: var(--warning-700); border-color: var(--warning-200); }
.fx-chip.bad  { background: var(--danger-50); color: var(--danger-700); border-color: var(--danger-200); }
.fx-chip.na   { background: var(--bg-slate-50); color: var(--text-slate-400); border-style: dashed; cursor: help; }

.fx-go {
    margin-left: auto;
    font-size: var(--font-12);
    color: var(--primary, var(--primary));
    text-decoration: none;
}
.fx-go:hover { text-decoration: underline; }

/* F-02 一句话状态：整块的「结论行」，字号比 chip 大、比标题小 */
.fx-say {
    margin-top: var(--space-12);
    font-size: var(--font-13_5);
    line-height: 1.6;
    color: var(--text, var(--text));
    padding: var(--space-8) var(--space-11);
    background: var(--bg-slate-50);
    border-left: 3px solid var(--primary, var(--primary));
    border-radius: var(--radius-6);
}

/* 闸门覆盖范围说明：常驻，防止「无拦截记录」被读成「放行全部」 */
.fx-scope {
    display: block;
    margin-top: var(--space-6);
    color: var(--warning-700);
    font-size: var(--font-11_5);
    line-height: 1.65;
}

.fx-chain {
    display: flex;
    gap: var(--space-8);
    margin-top: var(--space-14);
}

.fx-step { flex: 1; min-width: 0; }

.fx-bar {
    height: 6px;
    border-radius: var(--radius-3);
    background: var(--border);
}
.fx-bar.ok  { background: var(--success, var(--success)); }
/* 🔴 「进行中/未定论」不能只靠颜色区分：绿色(已完成) 与 蓝色(进行中) 在 8px 高的
   条上肉眼极易混淆（连开发者看截图都误判过）。故 run 态改为**斜纹**，
   让「未定论」在**形状**上与「已完成实心」区分，不依赖色觉。 */
.fx-bar.run {
    background: repeating-linear-gradient(90deg,
        var(--primary-400) 0 6px, var(--primary-200) 6px 12px);
}
.fx-bar.warn { background: var(--warning, var(--warning)); }
/* 🔴 partial =「观测到了，但覆盖不全」（2026-10-23 加）。专给环 2「无拦截记录」：
   它不能是绿 —— 绿=已完成/已定论，而这条只覆盖 C 壳闸 23 键，AI 层的样本闸/
   漂移闸/棘轮拦截在 app.py 侧不可见（SCOPE_BLOCKED）⇒ 用户会把绿读成「闸门全放行」。
   也不能是 na（灰，读成「读取失败」）。
   🔴 第一版用 135° 灰蓝斜纹，实测截图发现它与 na(90° 灰斜纹) 在 8px 高的条上
   **形状相同、只有色差** ⇒ 违反本项目「不靠色觉区分」的规矩（F-03 定）。
   故改为**实心石板蓝**：与 ok(实心绿)/warn(实心黄) 形状同但色相反差大；
   与 na/run（斜纹）形状不同。三重可区分：实心 vs 斜纹、绿/黄/蓝灰、深浅。 */
.fx-bar.partial {
    background: var(--text-secondary);
}
.fx-bar.na  {
    background: repeating-linear-gradient(90deg, var(--border-slate-300) 0 4px, transparent 4px 8px);
}

.fx-val {
    font-size: var(--font-13);
    font-weight: 700;
    color: var(--text, var(--text));
    text-align: center;
    margin-top: var(--space-7);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.fx-val.na { color: var(--text-slate-400); font-weight: 400; }
/* 顺延警示：已过到期日仍在窗口内 —— 必须比「未结算」更醒目，否则会被读成「在正常观察」 */
.fx-val.alert { color: var(--warning-700); font-size: var(--font-12); }

.fx-lbl {
    font-size: var(--font-12);
    color: var(--text-secondary, var(--text-secondary));
    text-align: center;
    margin-top: var(--space-2);
}

/* F-05：警示句常驻（NF-015 防误读），技术细节进 details 折叠 */
.fx-warn {
    margin-top: var(--space-10);
    padding: var(--space-5) var(--space-10);
    border-radius: var(--radius-6);
    background: var(--warning-bg, var(--warning-50));
    border-left: 3px solid var(--warning, var(--warning));
    font-size: var(--font-12);
    color: var(--warning-text, var(--warning-800c));
    line-height: 1.5;
}
.fx-note {
    margin-top: var(--space-8);
    font-size: var(--font-12);
    color: var(--text-secondary, var(--text-secondary));
    line-height: 1.7;
}
.fx-note > summary {
    cursor: pointer;
    font-size: var(--font-12);
    color: var(--text-secondary, var(--text-secondary));
    list-style: none;
    user-select: none;
}
.fx-note > summary::-webkit-details-marker { display: none; }
.fx-note > summary::before {
    content: '▸ ';
    color: var(--text-tertiary, var(--text-slate-400));
}
.fx-note[open] > summary::before { content: '▾ '; }
.fx-note[open] > summary { margin-bottom: var(--space-6); }
.fx-note b { color: var(--warning, var(--warning)); }

/* ---------- F-06：明细下钻入口（2026-10-21） ----------
   首页只回答三个问题，持仓/曲线/信号的「明细」下沉二级页。
   这里只留出口，不重复任何明细数据 —— 因此没有数字，也就不会撒谎。 */
.fx-drill {
    display: flex;
    gap: var(--space-12);
    margin-bottom: var(--space-24);
}
.fx-drill a {
    flex: 1 1 0;
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
    padding: var(--space-12) var(--space-16);
    border: 1px solid var(--border, var(--border));
    border-radius: var(--radius, var(--radius-10));
    background: var(--card-bg, var(--color-white));
    text-decoration: none;
    transition: border-color .15s, box-shadow .15s;
}
.fx-drill a:hover {
    border-color: var(--primary, var(--primary));
    box-shadow: var(--shadow-primary-10);
}
.fx-drill-t {
    font-size: var(--font-14);
    font-weight: 600;
    color: var(--text, var(--text-slate-900));
}
.fx-drill-t::after {
    content: " ›";
    color: var(--primary, var(--primary));
    font-weight: 400;
}
.fx-drill-s {
    font-size: var(--font-12);
    color: var(--text-secondary, var(--text-secondary));
}

/* ---------- F-04 待你处理（2026-10-23）----------
   一条一行、默认 3 行内（§6.1 待办区高度预算 ≤110px）；
   「原因」走 <details> 点开，不默认展开占高度。 */
.fx-todo {
    background: var(--card-bg, var(--color-white));
    border: 1px solid var(--border, var(--border));
    border-left: 3px solid var(--danger-600);
    border-radius: var(--radius-lg, var(--radius-14));
    padding: var(--space-10) var(--space-16) var(--space-8);
    margin-bottom: var(--space-12);
    box-shadow: var(--shadow, 0 1px 3px rgba(0,0,0,0.06));
}
.fx-todo-head {
    display: flex;
    align-items: center;
    gap: var(--space-8);
    flex-wrap: wrap;
    padding-bottom: var(--space-7);
    border-bottom: 1px solid var(--border, var(--border));
}
.fx-todo-list { list-style: none; margin: 0; padding: 0; }
.fx-td {
    display: flex;
    align-items: baseline;
    gap: var(--space-8);
    padding: var(--space-6) 0;
    font-size: var(--font-13);
    line-height: 1.45;
    border-bottom: 1px dashed var(--border, var(--border));
}
.fx-td:last-child { border-bottom: 0; }
.fx-td > details { flex: 1; min-width: 0; }
.fx-td > details > summary {
    display: flex;
    align-items: baseline;
    gap: var(--space-8);
    cursor: pointer;
    list-style: none;
}
.fx-td > details > summary::-webkit-details-marker { display: none; }
.fx-td-tag {
    flex: none;
    font-size: var(--font-11);
    padding: var(--space-1) var(--space-7);
    border-radius: var(--radius-full);
    border: 1px solid transparent;
    white-space: nowrap;
}
.fx-td-tag.p { background: var(--warning-50b); color: var(--warning-800); border-color: var(--warning-200b); }
.fx-td-tag.w { background: var(--warning-50); color: var(--warning-700); border-color: var(--warning-200); }
.fx-td-tag.r { background: var(--danger-50); color: var(--danger-700); border-color: var(--danger-200); }
.fx-td-main { font-weight: 600; color: var(--text, var(--text-slate-900)); }
.fx-td-meta, .fx-td-num {
    font-size: var(--font-12);
    color: var(--text-secondary, var(--text-secondary));
    font-variant-numeric: tabular-nums;
}
.fx-td-more, .fx-td-act {
    margin-left: auto;
    font-size: var(--font-12);
    color: var(--primary, var(--primary));
    white-space: nowrap;
}
.fx-td-act { text-decoration: none; }
.fx-td-act:hover { text-decoration: underline; }
.fx-td-d {
    margin: var(--space-7) 0 var(--space-3);
    padding: var(--space-9) var(--space-11);
    border-radius: var(--radius-8);
    background: var(--bg-slate-50);
    font-size: var(--font-12_5);
    line-height: 1.7;
    color: var(--text-slate-600);
}
.fx-td-d b { color: var(--text, var(--text-slate-900)); }
.fx-td-d code {
    background: var(--bg-slate-100b);
    padding: var(--space-1) var(--space-5);
    border-radius: var(--radius-4);
    font-size: var(--font-12);
    color: var(--text-slate-700);
}
.fx-todo-empty {
    margin-top: var(--space-9);
    font-size: var(--font-12_5);
    color: var(--text-secondary, var(--text-secondary));
}
.fx-todo-empty.bad { color: var(--danger-700); }
/* 待办卡的覆盖范围折叠：独立类名（不复用 .fx-note，否则 F-05 的「.fx-note 恰 1 个」判据冲突） */
.fx-todo-scope {
    margin-top: var(--space-8);
    font-size: var(--font-12);
    color: var(--text-secondary, var(--text-slate-400));
    line-height: 1.6;
}
.fx-todo-scope > summary { cursor: pointer; }
.fx-todo-scope > summary::-webkit-details-marker { display: none; }
.fx-todo-scope > summary::before { content: '▸ '; }
.fx-todo-scope[open] > summary::before { content: '▾ '; }

@media (max-width: 640px) {
    .fx-chain { flex-wrap: wrap; }
    .fx-step { flex: 1 1 30%; margin-bottom: var(--space-10); }
    .fx-go { margin-left: 0; }
    .fx-drill { flex-direction: column; gap: var(--space-8); }
    .fx-td, .fx-td > details > summary { flex-wrap: wrap; }
    .fx-td-more, .fx-td-act { margin-left: 0; }
}
