/* ================================================================
   知音 · 艺学堂AI经营系统 — 教研KPI统一样式表 v1.0
   前缀规则: kpi- 用于创建/编辑/设置/我的项目页面
            rk-  用于看板页面 (research-kpi-board)
   日期: 2026-07-02
   ================================================================ */

/* ==================== 动画 ==================== */
@keyframes kpi-toast-in {
    from { opacity:0; transform:translateX(-50%) translateY(-12px); }
    to   { opacity:1; transform:translateX(-50%) translateY(0); }
}
@keyframes kpi-spin {
    to { transform:rotate(360deg); }
}

/* ==================== 公共组件 ==================== */

/* 加载状态 */
.kpi-loading, .rk-loading {
    display:flex; flex-direction:column; align-items:center; justify-content:center;
    padding:80px 20px; color:#999;
}
.kpi-spinner, .rk-spinner {
    width:36px; height:36px;
    border:3px solid #f0f0f0; border-top-color:#F18D24;
    border-radius:50%; animation:kpi-spin 0.8s linear infinite; margin-bottom:12px;
}
.kpi-error, .rk-error {
    text-align:center; padding:80px 20px; color:#ff4d4f;
}
.kpi-empty, .rk-empty {
    text-align:center; padding:60px 20px; color:#999;
}

/* 按钮体系 */
.kpi-btn {
    padding:9px 24px; border-radius:6px; font-size:14px; font-weight:500;
    cursor:pointer; transition:all 0.2s; border:1px solid transparent; font-family:inherit;
    display:inline-flex; align-items:center; gap:6px; line-height:1.4;
}
.kpi-btn-default { background:#fff; border-color:#d9d9d9; color:#555; }
.kpi-btn-default:hover { border-color:#F18D24; color:#F18D24; }
.kpi-btn-primary { background:#F18D24; color:#fff; border-color:#F18D24; }
.kpi-btn-primary:hover { background:#e07b15; border-color:#e07b15; }
.kpi-btn-success { background:#52c41a; color:#fff; border-color:#52c41a; }
.kpi-btn-success:hover { background:#45a714; border-color:#45a714; }
.kpi-btn-danger { background:#fff; color:#ff4d4f; border-color:#ff4d4f; }
.kpi-btn-danger:hover { background:#ff4d4f; color:#fff; }
.kpi-btn:disabled { opacity:0.5; cursor:not-allowed; pointer-events:none; }

/* 小按钮 */
.kpi-btn-sm {
    padding:4px 10px; font-size:12px; border-radius:4px;
}

/* 徽章 */
.kpi-badge, .rk-badge {
    display:inline-block; padding:2px 8px; border-radius:4px;
    font-size:12px; color:#fff; font-weight:500; line-height:1.5;
    white-space:nowrap;
}

/* 表格 */
.kpi-table-wrap, .rk-table-wrap {
    overflow-x:auto;
}
.kpi-table, .rk-table {
    width:100%; border-collapse:collapse; font-size:13px;
}
.kpi-table th, .rk-table th {
    background:#fafafa; padding:10px 12px; text-align:left; font-weight:600;
    color:#555; border-bottom:2px solid #eee; white-space:nowrap;
}
.kpi-table td, .rk-table td {
    padding:10px 12px; border-bottom:1px solid #f5f5f5; color:#333;
}
.kpi-table tr:hover td, .rk-table tr:hover td {
    background:#fafbfc;
}

/* ==================== 看板页面 (rk- 前缀) ==================== */

.rk-board-page {
    max-width:1200px; margin:0 auto; padding:0 24px 60px;
    font-family:system-ui,-apple-system,"Microsoft YaHei",sans-serif;
}
.rk-board-header {
    display:flex; align-items:center; justify-content:space-between;
    padding:24px 0 20px; border-bottom:2px solid #f0f0f0; margin-bottom:24px;
    flex-wrap:wrap; gap:16px;
}
.rk-board-title h2 {
    margin:0; font-size:20px; font-weight:700; color:#1a1a1a;
}
.rk-board-title p {
    margin:4px 0 0; font-size:13px; color:#999;
}
.rk-board-body {
    min-height:400px;
}

/* 视图切换Tab */
.rk-view-tabs {
    display:flex; gap:4px; background:#f5f5f5; padding:4px; border-radius:8px;
}
.rk-view-tab {
    padding:8px 20px; border:none; background:transparent; border-radius:6px;
    cursor:pointer; font-size:13px; font-weight:500; color:#666; transition:all 0.2s;
}
.rk-view-tab:hover { color:#333; background:#eee; }
.rk-view-tab.active { background:#fff; color:#F18D24; box-shadow:0 1px 3px rgba(0,0,0,0.08); }

/* 汇总卡片 */
.rk-cards {
    display:grid; grid-template-columns:repeat(4, 1fr); gap:16px; margin-bottom:24px;
}
.rk-card {
    background:#fff; border-radius:10px; padding:20px; box-shadow:0 1px 4px rgba(0,0,0,0.06);
    border-left:4px solid transparent;
}
.rk-card-num {
    font-size:28px; font-weight:700; margin-bottom:6px;
}
.rk-card-label { font-size:13px; color:#888; }
.rk-card-blue  { border-left-color:#1677ff; } .rk-card-blue  .rk-card-num { color:#1677ff; }
.rk-card-orange{ border-left-color:#F18D24; } .rk-card-orange .rk-card-num { color:#F18D24; }
.rk-card-green { border-left-color:#52c41a; } .rk-card-green .rk-card-num { color:#52c41a; }
.rk-card-purple{ border-left-color:#722ed1; } .rk-card-purple .rk-card-num { color:#722ed1; }

/* 分区 */
.rk-section {
    background:#fff; border-radius:10px; padding:20px 24px;
    box-shadow:0 1px 4px rgba(0,0,0,0.06); margin-bottom:20px;
}
.rk-section h4 {
    margin:0 0 16px; font-size:15px; font-weight:600; color:#1a1a1a;
}

/* 状态条 */
.rk-status-bar {
    display:flex; height:28px; border-radius:4px; overflow:hidden; margin-bottom:12px;
}
.rk-bar-segment {
    display:flex; align-items:center; justify-content:center;
    color:#fff; font-size:11px; font-weight:600;
    min-width:24px; transition:flex 0.3s;
}
.rk-legend {
    display:flex; gap:16px; flex-wrap:wrap;
}
.rk-legend-item {
    display:flex; align-items:center; gap:4px; font-size:12px; color:#666;
}
.rk-legend-item i {
    display:inline-block; width:10px; height:10px; border-radius:2px;
}

/* 分类分布条 */
.rk-cat-bars {
    display:flex; flex-direction:column; gap:10px;
}
.rk-cat-item {
    display:flex; align-items:center; gap:12px;
}
.rk-cat-label {
    width:80px; font-size:12px; color:#666; flex-shrink:0;
}
.rk-cat-bar-bg {
    flex:1; height:10px; background:#f0f0f0; border-radius:5px; overflow:hidden;
}
.rk-cat-bar-fill {
    height:100%; background:#F18D24; border-radius:5px; transition:width 0.5s;
}
.rk-cat-count {
    width:30px; font-size:12px; color:#999; text-align:right;
}

/* 预算行 */
.rk-budget-row {
    display:flex; gap:40px;
}
.rk-budget-item {
    display:flex; flex-direction:column; gap:4px;
}
.rk-budget-item label {
    font-size:12px; color:#999;
}
.rk-budget-item span {
    font-size:20px; font-weight:700; color:#1a1a1a;
}

/* 时间线 */
.rk-timeline {
    display:flex; flex-direction:column; gap:4px;
}
.rk-timeline-row {
    display:flex; align-items:center; gap:16px; padding:8px 0;
    border-bottom:1px solid #f9f9f9;
}
.rk-tl-info {
    display:flex; align-items:center; gap:8px; min-width:220px;
}
.rk-tl-code { font-size:11px; color:#999; font-family:monospace; }
.rk-tl-name { font-size:13px; color:#333; font-weight:500; }
.rk-tl-cat {
    font-size:11px; padding:1px 6px; border-radius:3px;
    background:#f0f0f0; color:#888;
}
.rk-tl-bar-track {
    flex:1; height:22px; background:#f5f5f5; border-radius:4px;
    position:relative; overflow:hidden;
}
.rk-tl-bar {
    height:100%; border-radius:4px; display:flex; align-items:center;
    padding:0 8px; min-width:40px;
}
.rk-tl-label {
    font-size:11px; color:#fff; font-weight:500; white-space:nowrap;
    text-shadow:0 1px 1px rgba(0,0,0,0.2);
}
.rk-tl-meta {
    display:flex; gap:4px; min-width:80px; justify-content:flex-end;
}

/* 无数据 */
.rk-no-data { font-size:13px; color:#bbb; font-style:italic; }

/* ==================== 创建/编辑/设置页面 (kpi- 前缀) ==================== */

.kpi-page {
    max-width:1100px; margin:0 auto; padding:0 24px 100px;
    font-family:system-ui,-apple-system,"Microsoft YaHei",sans-serif;
}
.kpi-header {
    display:flex; align-items:center; justify-content:space-between;
    padding:24px 0 20px; border-bottom:2px solid #f0f0f0; margin-bottom:24px;
}
.kpi-header-left { display:flex; align-items:center; gap:12px; }
.kpi-header-title { font-size:20px; font-weight:700; color:#1a1a1a; margin:0; }
.kpi-project-code {
    font-size:13px; color:#999; background:#f7f7f7; padding:3px 10px; border-radius:4px;
}
.kpi-header-right { display:flex; gap:8px; }

/* 卡片 */
.kpi-card {
    background:#fff; border-radius:12px; box-shadow:0 1px 4px rgba(0,0,0,0.06);
    margin-bottom:20px; overflow:hidden;
}
.kpi-card-header {
    padding:16px 24px; border-bottom:1px solid #f5f5f5; display:flex; align-items:center; gap:8px;
}
.kpi-card-header h3 { margin:0; font-size:15px; font-weight:600; color:#1a1a1a; }
.kpi-card-icon { font-size:18px; }
.kpi-card-body { padding:20px 24px; }

/* 表单网格 */
.kpi-form-grid {
    display:grid; grid-template-columns:1fr 1fr; gap:16px 24px;
}
.kpi-form-grid .kpi-field-full { grid-column:1 / -1; }
.kpi-field-label {
    display:block; font-size:13px; font-weight:500; color:#555; margin-bottom:6px;
}
.kpi-required { color:#ff4d4f; margin-left:2px; }
.kpi-input, .kpi-select, .kpi-textarea {
    width:100%; padding:8px 12px; border:1px solid #d9d9d9; border-radius:6px;
    font-size:14px; color:#333; background:#fff; transition:border-color 0.2s;
    box-sizing:border-box; font-family:inherit;
}
.kpi-input:focus, .kpi-select:focus, .kpi-textarea:focus {
    outline:none; border-color:#F18D24; box-shadow:0 0 0 2px rgba(241,141,36,0.1);
}
.kpi-input::placeholder { color:#bbb; }
.kpi-textarea { resize:vertical; min-height:80px; }
.kpi-hint { font-size:12px; color:#aaa; margin-top:4px; }

/* 指标行 */
.kpi-indicators-container { display:flex; flex-direction:column; gap:12px; }
.kpi-indicator-row {
    background:#fafbfc; border:1px solid #eee; border-radius:8px; padding:16px;
    transition:all 0.25s ease;
}
.kpi-indicator-row:hover { border-color:#d0d0d0; }
.kpi-indicator-grid {
    display:grid; grid-template-columns:1.5fr 0.7fr 0.8fr 0.6fr 0.9fr 1fr 1fr 0.4fr;
    gap:10px 16px; align-items:end;
}
.kpi-field-sm .kpi-input, .kpi-field-sm .kpi-select { font-size:13px; }
.kpi-field-action { display:flex; align-items:end; justify-content:center; }
.kpi-btn-remove {
    background:none; border:1px solid #e8e8e8; color:#999;
    padding:7px 12px; border-radius:6px; cursor:pointer; font-size:13px;
    transition:all 0.2s; white-space:nowrap;
}
.kpi-btn-remove:hover { color:#ff4d4f; border-color:#ff4d4f; background:#fff1f0; }
.kpi-add-row { display:flex; justify-content:center; padding:12px 0 4px; }
.kpi-btn-add {
    background:none; border:2px dashed #d9d9d9; color:#F18D24;
    padding:8px 24px; border-radius:6px; cursor:pointer; font-size:14px; font-weight:500;
    transition:all 0.2s;
}
.kpi-btn-add:hover { border-color:#F18D24; background:#fff7ef; }

/* 底栏 */
.kpi-bottom-bar {
    position:fixed; bottom:0; left:0; right:0; background:#fff;
    border-top:1px solid #eee; padding:16px 24px; display:flex;
    justify-content:center; gap:12px; z-index:100;
    box-shadow:0 -2px 8px rgba(0,0,0,0.04);
}

/* 工具栏 */
.kpi-toolbar {
    display:flex; align-items:center; justify-content:space-between;
    padding:16px 24px; flex-wrap:wrap; gap:12px;
}
.kpi-toolbar-left { display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.kpi-toolbar-right { display:flex; align-items:center; gap:8px; }
.kpi-filter-group { display:flex; align-items:center; gap:6px; }
.kpi-filter-group label { font-size:12px; color:#888; white-space:nowrap; }
.kpi-filter-select {
    padding:6px 10px; border:1px solid #d9d9d9; border-radius:4px;
    font-size:13px; color:#333; background:#fff; cursor:pointer;
}
.kpi-search {
    padding:6px 12px; border:1px solid #d9d9d9; border-radius:4px;
    font-size:13px; width:200px; transition:border-color 0.2s;
}
.kpi-search:focus { outline:none; border-color:#F18D24; }

/* 设置页面Tab */
.kpi-settings-tabs {
    display:flex; gap:0; border-bottom:2px solid #eee; margin-bottom:24px;
}
.kpi-tab {
    padding:10px 24px; border:none; background:transparent; border-bottom:2px solid transparent;
    cursor:pointer; font-size:14px; font-weight:500; color:#888;
    margin-bottom:-2px; transition:all 0.2s;
}
.kpi-tab:hover { color:#555; }
.kpi-tab.active { color:#F18D24; border-bottom-color:#F18D24; }

/* 设置项列表 */
.kpi-settings-list {
    display:flex; flex-direction:column; gap:12px;
}
.kpi-setting-item {
    display:flex; align-items:center; justify-content:space-between;
    padding:14px 18px; background:#fafbfc; border:1px solid #eee;
    border-radius:8px; transition:all 0.2s;
}
.kpi-setting-item:hover { border-color:#d0d0d0; }
.kpi-setting-info { flex:1; }
.kpi-setting-info strong { font-size:14px; color:#1a1a1a; }
.kpi-setting-info p { margin:4px 0 0; font-size:12px; color:#999; }
.kpi-setting-actions { display:flex; gap:6px; margin-left:16px; }

/* 审批链步骤 */
.kpi-approval-steps {
    display:flex; flex-direction:column; gap:8px;
}
.kpi-approval-step {
    display:flex; align-items:center; gap:12px; padding:12px 16px;
    background:#fafbfc; border:1px solid #eee; border-radius:8px;
}
.kpi-approval-step .kpi-step-order {
    width:28px; height:28px; border-radius:50%; background:#F18D24; color:#fff;
    display:flex; align-items:center; justify-content:center;
    font-size:12px; font-weight:700; flex-shrink:0;
}
.kpi-approval-step .kpi-input {
    flex:1; max-width:200px;
}

/* 审批弹窗 */
.kpi-modal-overlay {
    position:fixed; top:0; left:0; right:0; bottom:0;
    background:rgba(0,0,0,0.4); z-index:999;
    display:flex; align-items:center; justify-content:center;
}
.kpi-modal {
    background:#fff; border-radius:12px; padding:28px 32px;
    min-width:420px; max-width:520px; box-shadow:0 8px 32px rgba(0,0,0,0.12);
}
.kpi-modal h3 { margin:0 0 20px; font-size:18px; font-weight:600; color:#1a1a1a; }
.kpi-modal .kpi-textarea { width:100%; min-height:80px; }
.kpi-modal-actions {
    display:flex; justify-content:flex-end; gap:8px; margin-top:20px;
}

/* 响应式 */
@media (max-width:900px) {
    .rk-cards { grid-template-columns:1fr 1fr; }
    .kpi-indicator-grid { grid-template-columns:1fr 1fr; }
    .kpi-form-grid { grid-template-columns:1fr; }
    .rk-budget-row { flex-direction:column; gap:12px; }
    .rk-timeline-row { flex-wrap:wrap; }
}
