/* ==============================================
   Template-specific styles (extracted from system templates)
   Consolidated from per-template CSS files
   ============================================== */

/* --- chat_history.html --- */
.ch-page{padding:20px;max-width:800px;margin:0 auto}
.ch-header{display:flex;align-items:baseline;gap:12px;margin-bottom:20px}
.ch-header h2{font-size:1.25rem;font-weight:700;color:var(--text-deep);margin:0}
.ch-count{font-size:.8125rem;color:var(--text-tertiary)}
.ch-list{display:flex;flex-direction:column;gap:8px}
.ch-item{display:flex;align-items:center;gap:12px;padding:14px 16px;background:#fff;border:1px solid var(--border,rgba(0,0,0,.08));border-radius:10px;cursor:pointer;transition:.2s}
.ch-item:hover{border-color:var(--primary);box-shadow:0 1px 6px rgba(22,101,52,.08)}
.ch-item-icon{font-size:1.5rem;flex-shrink:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:var(--bg-secondary,#f8f9fa);border-radius:10px}
.ch-item-body{flex:1;min-width:0}
.ch-item-title{font-size:.9375rem;font-weight:500;color:var(--text-deep);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ch-item-meta{font-size:.75rem;color:var(--text-tertiary);margin-top:3px}
.ch-item-del{flex-shrink:0;width:32px;height:32px;border:none;border-radius:8px;background:transparent;color:var(--text-tertiary);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.2s}
.ch-item-del:hover{background:rgba(255,77,79,.08);color:var(--danger,#e03)}
.ch-loading{padding:40px;text-align:center;color:var(--text-tertiary)}
.ch-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:60px 20px}
.ch-empty-icon{font-size:3rem;opacity:.5}
.ch-empty-text{font-size:.9375rem;color:var(--text-tertiary)}

/* --- my_page.html --- */
.my-card{background:rgba(255,255,255,0.6);backdrop-filter:blur(12px);border-radius:0.75rem;padding:0.75rem;margin-bottom:0.5rem;border:1px solid rgba(255,255,255,0.3)}
.my-card-title{font-size:0.8125rem;font-weight:600;color:var(--text-secondary);margin-bottom:0.25rem}
.my-stat-val{font-size:1.25rem;font-weight:700;color:var(--text-primary)}
.my-grid{display:grid;grid-template-columns:1fr 1fr;gap:0.5rem}
.my-section{margin-bottom:0.75rem}
.my-section-title{font-size:0.8rem;font-weight:600;color:var(--text-tertiary);margin-bottom:0.375rem;text-transform:uppercase;letter-spacing:0.5px}
.my-item{display:flex;justify-content:space-between;align-items:center;padding:0.375rem 0;font-size:0.85rem}
.my-item-label{color:var(--text-secondary)}
.my-item-val{font-weight:500;color:var(--text-primary)}
/* my_page.html utility */
.my-header{display:flex;align-items:center;gap:1rem;padding:1.25rem 1rem;background:linear-gradient(135deg,var(--primary),var(--primary-hover));color:#fff}
.my-avatar{width:3.5rem;height:3.5rem;border-radius:50%;border:2px solid rgba(255,255,255,0.3);object-fit:cover}
.my-name{font-size:1.125rem;font-weight:600}
.my-dept{font-size:0.8125rem;opacity:.8;margin-top:0.25rem}
.my-level{text-align:right}
.my-level-val{font-size:1.5rem;font-weight:700}
.my-level-lbl{font-size:0.75rem;opacity:.7}
.my-scroll{flex:1;overflow-y:auto;padding:0.75rem}
.my-grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:0.5rem;text-align:center}
.my-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:0.5rem}
.my-dim-row{margin-top:0.5rem;padding-top:0.5rem;border-top:1px solid var(--border)}
.my-progress-row{display:flex;align-items:center;gap:0.5rem;margin-top:0.5rem}
.my-progress-track{flex:1;height:6px;background:var(--bg-secondary);border-radius:3px;overflow:hidden}
.my-progress-fill{height:100%;border-radius:3px;transition:width .5s}
.my-progress-text{font-size:0.75rem;color:var(--text-tertiary);white-space:nowrap}
.my-checkin-btn{width:100%;padding:0.75rem;font-size:1rem}
.my-result-text{font-size:0.875rem;color:var(--success);margin-top:0.5rem}
.my-entry-icon{font-size:1.25rem}
.my-arrow{color:var(--text-tertiary);font-size:0.75rem}
/* my_page.html 最近记录 */
.my-log-row{display:flex;align-items:center;justify-content:space-between;padding:0.625rem 0;border-bottom:1px solid rgba(0,0,0,0.04);font-size:0.875rem}
.my-log-row:last-child{border-bottom:none}
.my-log-action{font-weight:500;color:var(--text-primary)}
.my-log-time{font-size:0.75rem;color:var(--text-tertiary);margin-top:2px}

/* --- notification_list.html --- */
.nt-page{display:flex;flex-direction:column;height:100%;padding:1.25rem}
.nt-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:0.75rem}
.nt-header h2{font-size:1.125rem;font-weight:700;color:var(--text-deep,#222);margin:0;display:flex;align-items:center;gap:0.5rem}
.nt-actions{display:flex;gap:0.5rem}
.nt-tabs{display:flex;gap:2px;background:var(--bg-secondary,#f5f5f5);padding:3px;border-radius:10px;margin:0 0 0.75rem}
.nt-tabs button{flex:1;padding:7px 12px;text-align:center;font-size:.8125rem;border:none;border-radius:7px;background:transparent;color:var(--text-tertiary);cursor:pointer;transition:.2s}
.nt-tabs button.on{background:#fff;color:var(--text-primary);font-weight:600;box-shadow:0 1px 3px rgba(0,0,0,.08)}
.nt-badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;height:1.25rem;padding:0 0.375rem;border-radius:0.625rem;background:var(--danger,#ef4444);color:#fff;font-size:0.6875rem;font-weight:600}
.nt-list{flex:1;overflow-y:auto}
.nt-item{display:flex;gap:12px;padding:14px 0;border-bottom:1px solid var(--border,rgba(0,0,0,.06));cursor:pointer;transition:.2s}
.nt-item.unread{background:rgba(22,101,52,.03);margin:0 -1.25rem;padding:14px 1.25rem;border-radius:8px}
.nt-item-icon{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1rem;flex-shrink:0}
.nt-item-body{flex:1;min-width:0}
.nt-item-title{font-size:.875rem;color:var(--text-primary);margin-bottom:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nt-item-meta{font-size:.75rem;color:var(--text-tertiary,#999)}
.nt-item-status{flex-shrink:0;display:flex;align-items:center}
.nt-dot{width:0.5rem;height:0.5rem;border-radius:50%;background:var(--primary,#166534)}
.nt-status{padding:2rem;text-align:center;color:var(--text-tertiary);font-size:0.875rem}
.nt-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:60px 20px}
.nt-empty-icon{font-size:3rem;opacity:.5;color:var(--text-tertiary)}
.nt-empty-text{font-size:.9375rem;color:var(--text-tertiary)}
.nl-item-title{font-size:.875rem;color:var(--text-primary);margin-bottom:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nl-item-desc{font-size:.75rem;color:var(--text-tertiary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nl-item-time{font-size:.6875rem;color:var(--text-quaternary);margin-top:2px}

/* --- medal_dashboard.html --- */
.dash-card{background:rgba(255,255,255,0.75);backdrop-filter:blur(8px);border-radius:0.625rem;padding:0.875rem 1rem;border:1px solid rgba(0,0,0,0.06);text-align:center}
.dash-val{font-size:1.5rem;font-weight:700;color:var(--primary,#166534);line-height:1.3}
.dash-lbl{font-size:0.75rem;color:var(--text-tertiary,#888);margin-top:0.25rem}
.dash-section{background:rgba(255,255,255,0.75);backdrop-filter:blur(8px);border-radius:0.625rem;padding:0.875rem 1rem;border:1px solid rgba(0,0,0,0.06)}
.dash-section-title{font-size:0.875rem;font-weight:600;color:var(--text-secondary,#555);padding-bottom:0.5rem;margin-bottom:0.5rem;border-bottom:1px solid rgba(0,0,0,0.04)}
.dash-row{display:flex;align-items:center;gap:0.5rem;padding:0.375rem 0;font-size:0.8125rem}
.dash-rank{width:1.25rem;height:1.25rem;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:0.6875rem;font-weight:600;color:#fff;flex-shrink:0}
.dash-rank.dr1{background:linear-gradient(135deg,#f59e0b,#ef4444)}
.dash-rank.dr2{background:linear-gradient(135deg,#94a3b8,#64748b)}
.dash-rank.dr3{background:linear-gradient(135deg,#d97706,#92400e)}
.dash-dept-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-primary,#222)}
.dash-bar-bg{flex:2;height:0.5rem;background:rgba(0,0,0,0.06);border-radius:0.25rem;overflow:hidden;min-width:3rem}
.dash-bar-fill{height:100%;background:var(--primary,#166534);border-radius:0.25rem;transition:width .4s ease}
.dash-bar-blue{background:var(--primary,#166534)}
.dash-bar-green{background:#22c55e}
.dash-dept-score{width:2.5rem;text-align:right;font-weight:600;color:var(--text-secondary,#555);flex-shrink:0}

/* --- universal_detail.html --- */
.ud-wrap{flex:1;overflow:auto;min-height:0;padding:0.875rem;display:flex;flex-direction:column;gap:0.75rem}
.ud-panel{background:rgba(255,255,255,0.75);backdrop-filter:blur(8px);border-radius:0.625rem;padding:0.875rem 1rem;border:1px solid rgba(0,0,0,0.06)}
.ud-panel-hd{font-size:0.875rem;font-weight:600;color:var(--text-secondary);padding-bottom:0.5rem;margin-bottom:0.5rem;border-bottom:1px solid rgba(0,0,0,0.04)}
.ud-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:0 1.25rem}
.ud-form-row{display:flex;align-items:flex-start;padding:0.375rem 0;border-bottom:1px solid rgba(0,0,0,0.03);font-size:0.875rem;gap:0.5rem}
.ud-form-row label{width:auto;min-width:5rem;flex-shrink:0;color:var(--text-tertiary);padding-top:0.125rem;font-size:0.8125rem}
.ud-form-row .ud-val{flex:1;color:var(--text-primary);min-width:0;word-break:break-all}
.ud-edit-row label{width:8rem;flex-shrink:0}
.ud-edit-row .ud-val{flex:1;min-width:0;word-break:break-all}
.ud-form-full{grid-column:1/-1}
.ud-detail-hd{display:flex;align-items:center;gap:0.625rem;margin-bottom:0.25rem}
.ud-detail-title{font-size:1rem;font-weight:600;color:var(--text-primary);flex:1}
.ud-comment-input-wrap{display:flex;flex-direction:column;gap:0.5rem;margin-bottom:0.75rem}
.ud-comment-input{min-height:5rem;resize:vertical;padding-bottom:3rem}
.ud-photo-upload{display:flex;gap:0.5rem;flex-wrap:wrap}
.ud-photo-thumb{position:relative;width:4rem;height:4rem;border-radius:0.375rem;overflow:hidden;border:1px solid rgba(0,0,0,0.08)}
.ud-photo-thumb img{width:100%;height:100%;object-fit:cover;cursor:pointer}
.ud-photo-del{position:absolute;top:2px;right:2px;width:1.25rem;height:1.25rem;border-radius:50%;border:none;background:rgba(0,0,0,0.5);color:#fff;font-size:0.625rem;cursor:pointer;display:flex;align-items:center;justify-content:center}
.ud-photo-add{width:4rem;height:4rem;border:2px dashed rgba(0,0,0,0.12);border-radius:0.375rem;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-tertiary);font-size:1.5rem;transition:.2s}
.ud-photo-add:hover{border-color:var(--primary);color:var(--primary)}
.ud-photo-add input{display:none}
.ud-actions{display:flex;justify-content:flex-end}
.ud-comment-row{position:relative}
.ud-comment-actions{position:absolute;bottom:0.5rem;right:0.5rem;display:flex;flex-direction:row;gap:0.375rem;flex-shrink:0;align-items:center}
.ud-photo-btn{width:2.5rem;height:2.5rem;border-radius:50%;border:1px solid var(--border,rgba(0,0,0,0.1));display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-tertiary,#888);background:#fff;transition:.2s;flex-shrink:0;font-size:1rem}
.ud-photo-btn:hover{border-color:var(--primary);color:var(--primary)}
.ud-photo-btn.on{border-color:var(--danger,#ef4444);color:var(--danger,#ef4444);animation:ud-pulse 1.2s infinite}
@keyframes ud-pulse{0%,100%{box-shadow:0 0 0 0 rgba(239,68,68,0.3)}50%{box-shadow:0 0 0 6px rgba(239,68,68,0)}}
/* 语音输入按钮 - 通用样式，浮在 textarea 右下角 */
.bk-textarea-voice-wrap{position:relative;display:block}
.bk-textarea-voice-wrap textarea{padding-bottom:2.5rem}
.bk-voice-btn{position:absolute;bottom:0.375rem;right:0.375rem;width:2rem;height:2rem;border-radius:50%;border:1px solid var(--border,rgba(0,0,0,0.1));display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-tertiary,#888);background:#fff;transition:.2s;font-size:0.875rem;z-index:2}
.bk-voice-btn:hover{border-color:var(--primary);color:var(--primary)}
.bk-voice-btn.on{border-color:var(--danger,#ef4444);color:var(--danger,#ef4444);animation:ud-pulse 1.2s infinite}
.ud-photo-btn input{display:none}
.ud-send-btn{width:2.5rem;height:2.5rem;border-radius:50%;border:none;background:var(--primary,#166534);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.2s;flex-shrink:0;font-size:1rem}
.ud-send-btn:hover{opacity:.9;background:var(--primary-hover,#1a7a40)}
.ud-send-btn:disabled{background:#ccc;cursor:not-allowed}
.ud-comment-list{display:flex;flex-direction:column;gap:0.5rem}
.ud-comment-item{padding:0.625rem 0;border-bottom:1px solid rgba(0,0,0,0.04)}
.ud-comment-item:last-child{border-bottom:none}
.ud-comment-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:0.25rem}
.ud-comment-user{font-size:0.8125rem;font-weight:600;color:var(--text-primary)}
.ud-comment-time{font-size:0.75rem;color:var(--text-tertiary)}
.ud-comment-body{font-size:0.875rem;color:var(--text-secondary);line-height:1.6;word-break:break-word}
.ud-comment-photos{display:flex;gap:0.375rem;margin-top:0.375rem;flex-wrap:wrap}
.ud-comment-photos img{width:5rem;height:5rem;object-fit:cover;border-radius:0.375rem;cursor:pointer}
.ud-preview-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.75);display:flex;align-items:center;justify-content:center;z-index:9999}
.ud-preview-box{position:relative;max-width:90vw;max-height:90vh;border-radius:0.5rem;overflow:hidden;background:#000}
.ud-preview-box img{max-width:90vw;max-height:90vh;display:block}
.ud-preview-close{position:absolute;top:0.5rem;right:0.5rem;width:2rem;height:2rem;border-radius:50%;background:rgba(0,0,0,0.5);color:#fff;border:none;cursor:pointer;font-size:1rem;display:flex;align-items:center;justify-content:center}
.ud-req{color:var(--danger,#ef4444)}
.ud-empty{padding:1.25rem 0;text-align:center;color:var(--text-tertiary);font-size:0.875rem}

/* --- universal_form.html --- */
.uf-tip{font-size:.75rem;color:var(--text-tertiary);margin-top:4px}

/* --- universal_list.html --- */
.ul-table-wrap .bk-table{width:100%;border-collapse:collapse}
.ul-table-wrap .bk-table th{font-weight:600;font-size:0.8125rem;color:var(--text-secondary);padding:0.5rem 0.75rem;border-bottom:1px solid rgba(0,0,0,0.06);text-align:left;white-space:nowrap;background:var(--bg-page,#f5f6fa)}
.ul-table-wrap .bk-table td{padding:0.5rem 0.75rem;font-size:0.875rem;border-bottom:1px solid rgba(0,0,0,0.04);color:var(--text-primary)}
.ul-table-wrap .bk-table tr{transition:background .15s}
.ul-table-wrap .bk-table tr:hover td{background:rgba(var(--primary-rgb),0.04)}
.ul-table-wrap .bk-table .col-name{cursor:pointer;color:var(--primary);font-weight:500}
.ul-table-wrap .bk-table .col-name:hover{text-decoration:underline}
.ul-table-wrap .bk-table .col-action{text-align:right;white-space:nowrap}

/* Header toolbar */
.ul-header{display:flex;align-items:center;justify-content:space-between;padding:0.75rem 1rem;border-bottom:1px solid rgba(0,0,0,0.06);background:rgba(255,255,255,0.6);backdrop-filter:blur(12px);flex-shrink:0;gap:0.75rem;flex-wrap:wrap}
.ul-header-title{display:flex;align-items:center;gap:0.5rem;font-size:1rem;font-weight:700;color:var(--text-primary);font-family:var(--font-family-base)}
.ul-header-title i{color:var(--primary);font-size:0.9375rem}
.ul-header-count{font-size:0.75rem;font-weight:400;color:var(--text-tertiary);background:rgba(0,0,0,0.04);padding:0.125rem 0.5rem;border-radius:0.75rem;margin-left:0.25rem;white-space:nowrap}
.ul-header-actions{display:flex;align-items:center;gap:0.5rem;flex-wrap:wrap}
.ul-header-actions .bk-btn-sm{height:2.25rem;padding:0 0.75rem;font-size:0.8125rem;display:inline-flex;align-items:center;justify-content:center}
.ul-header-actions select.page-input{height:2.25rem;padding:0 0.5rem 0 0.75rem;font-size:0.8125rem;border-radius:0.5rem;border:1px solid var(--border);background:rgba(255,255,255,0.7);outline:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238898aa' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;color:var(--text-primary);cursor:pointer;min-width:6rem}

/* Search box with inner icon */
.ul-search-group{position:relative;display:flex;align-items:center}
.ul-search-group .ul-search-icon{position:absolute;left:0.625rem;color:var(--text-tertiary);font-size:0.8125rem;pointer-events:none;z-index:2}
.ul-search-group .page-input.ul-search{padding-left:1.875rem;min-width:10rem;max-width:18rem;height:2.25rem;font-size:0.8125rem}

/* Compact action buttons in table */
.ul-actions{display:flex;align-items:center;justify-content:flex-end;gap:0.25rem}
.ul-actions .bk-btn-xs{padding:0.25rem 0.5rem;font-size:0.75rem;border-radius:0.375rem}
.ul-actions .bk-btn-ghost{border-color:transparent;background:transparent}
.ul-actions .bk-btn-ghost:hover{background:rgba(var(--primary-rgb),0.08);border-color:transparent}
.ul-actions .bk-btn-danger.bk-btn-ghost{color:var(--danger);border-color:transparent;background:transparent}
.ul-actions .bk-btn-danger.bk-btn-ghost:hover{background:rgba(255,77,79,0.08);border-color:transparent}

/* Empty state */
.ul-empty{text-align:center;padding:3rem 1.25rem;color:var(--text-tertiary)}
.ul-empty-icon{font-size:2.5rem;margin-bottom:0.75rem;opacity:.4}

/* Pagination */
.ul-pager{display:flex;align-items:center;justify-content:space-between;padding:0.625rem 1rem;flex-shrink:0;flex-wrap:wrap;gap:0.5rem;border-top:1px solid rgba(0,0,0,0.04);background:rgba(255,255,255,0.4)}
.ul-pager-info{font-size:0.75rem;color:var(--text-tertiary)}
.ul-pager-btns{display:flex;align-items:center;gap:0.25rem}
.ul-pager button{padding:0.3125rem 0.625rem;border:1px solid rgba(0,0,0,0.08);border-radius:0.375rem;background:#fff;cursor:pointer;color:var(--text-secondary);font-size:0.8125rem;transition:.15s;min-width:2rem;display:inline-flex;align-items:center;justify-content:center}
.ul-pager button:hover{border-color:var(--primary);color:var(--primary)}
.ul-pager button.on{background:var(--primary);color:#fff;border-color:var(--primary)}
.ul-pager button:disabled{opacity:.35;cursor:not-allowed}

/* Modal */
.ul-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.5);display:flex;align-items:center;justify-content:center;z-index:9999;padding:1.25rem}
.ul-modal{background:#fff;border-radius:0.625rem;width:100%;max-width:34rem;max-height:80vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 8px 32px rgba(0,0,0,0.12)}
.ul-modal-hd{display:flex;align-items:center;justify-content:space-between;padding:0.875rem 1rem;border-bottom:1px solid rgba(0,0,0,0.06)}
.ul-modal-hd span{font-weight:600;font-size:0.9375rem}
.ul-modal-bd{flex:1;overflow:auto;padding:1rem}

/* --- today_analysis.html --- */
.ta-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-bottom:16px}
.ta-card{text-align:center;padding:16px;background:var(--card-bg);border:1px solid var(--border);border-radius:10px}
.ta-val{font-size:1.75rem;font-weight:700;margin-top:4px}

/* --- legal_stats.html --- */
.ls-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}
.ls-card{text-align:center;padding:16px;background:var(--card-bg);border:1px solid var(--border);border-radius:10px}
.ls-val{font-size:1.625rem;font-weight:700;margin-top:4px}

/* --- case_board.html --- */
.cb-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:16px}
.cb-card{text-align:center;padding:14px;background:var(--card-bg);border:1px solid var(--border);border-radius:10px}
.cb-val{font-size:1.5rem;font-weight:700;margin:4px 0 0}
.cb-label{font-size:.8rem;color:var(--text-tertiary)}
.cb-section{margin-bottom:20px}
.cb-section-title{font-size:.9rem;font-weight:600;margin-bottom:10px}
.cb-row{display:flex;align-items:center;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--border,rgba(0,0,0,.06));font-size:.85rem}
.cb-row-label{color:var(--text-secondary)}
.cb-row-val{font-weight:500}
.cb-bar-wrap{height:6px;background:var(--bg-secondary,#f0f0f0);border-radius:3px;overflow:hidden;margin-top:8px}
.cb-bar-fill{height:100%;border-radius:3px;transition:width .6s ease}
.cb-bar-fill.green{background:var(--success,#22c55e)}
.cb-bar-fill.blue{background:var(--primary,#166534)}
.cb-bar-fill.orange{background:var(--warning,#f59e0b)}
.cb-bar-fill.red{background:var(--danger,#ef4444)}

/* --- legal_kb_search.html --- */
.lks-page{display:flex;flex-direction:column;height:100%}
.lks-search{display:flex;gap:8px;padding:0 16px 12px}
.lks-search .bk-input{flex:1}
.lks-list{flex:1;overflow-y:auto;padding:0 16px}
.lks-item{padding:14px 0;border-bottom:1px solid var(--border,rgba(0,0,0,.06));cursor:pointer}
.lks-item:hover h4{color:var(--primary)}
.lks-item h4{margin:0 0 4px;font-size:.9rem;transition:.2s}
.lks-item p{margin:0;font-size:.8rem;color:var(--text-tertiary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.lks-meta{font-size:.7rem;color:var(--text-quaternary);margin-top:6px}
.lks-empty{text-align:center;padding:60px 20px;color:var(--text-tertiary)}

/* --- legal_doc_gen.html --- */
.loading { animation: spin 1s linear infinite; }
@keyframes spin { to { transform:rotate(360deg) } }
.form-card { background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:20px; }
.card-title { margin:0 0 16px 0;font-size:0.9rem;display:flex;align-items:center;gap:8px; }

/* --- analysis_overview.html --- */
.ao-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}

/* --- feature_manage.html --- */
.fm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px}

/* --- contract_review.html --- */
.loading { animation: spin 1s linear infinite; }
@keyframes spin { to { transform:rotate(360deg) } }
.form-card { background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:20px; }
.card-title { margin:0 0 14px 0;font-size:0.9rem;display:flex;align-items:center;gap:8px; }

/* --- module_manage.html --- */
.mm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.mm-card{padding:16px;border:1px solid var(--border-color);border-radius:10px;cursor:pointer;transition:.2s}
.mm-card:hover{border-color:var(--primary);box-shadow:0 2px 8px rgba(0,0,0,.06)}

/* --- opencode.html --- */
.oc-output{background:#1e1e1e;color:#d4d4d4;padding:16px;border-radius:8px;font-family:"Cascadia Code","Fira Code",monospace;font-size:.8125rem;line-height:1.6;overflow-x:auto;white-space:pre-wrap;max-height:400px;overflow-y:auto}

/* --- case_detail.html --- */
.cd-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-bottom:20px}
.cd-meta-item{display:flex;flex-direction:column;gap:2px}
.cd-meta-label{font-size:.8rem;color:var(--text-tertiary)}
.cd-meta-value{font-size:.9rem;font-weight:500}
.cd-timeline{position:relative;padding-left:24px}
.cd-tl-item{position:relative;padding:0 0 24px 16px;border-left:2px solid var(--border)}
.cd-tl-item:last-child{border-left-color:transparent;padding-bottom:0}
.cd-tl-dot{position:absolute;left:-7px;top:0;width:12px;height:12px;border-radius:50%;background:var(--primary)}
.cd-tl-date{font-size:.75rem;color:var(--text-tertiary);margin-bottom:2px}
.cd-tl-text{font-size:.85rem;color:var(--text-primary)}
.cd-tl-user{font-size:.75rem;color:var(--text-quaternary);margin-top:2px}
.cd-section{margin-bottom:24px}
.cd-section-title{font-size:.95rem;font-weight:600;margin-bottom:12px;padding-bottom:6px;border-bottom:1px solid var(--border)}
.cd-doc-item{display:flex;align-items:center;gap:10px;padding:10px 14px;border:1px solid var(--border);border-radius:8px;margin-bottom:8px;cursor:pointer;transition:.2s}
.cd-doc-item:hover{border-color:var(--primary)}
.cd-doc-icon{flex-shrink:0;font-size:1.25rem}
.cd-doc-info{flex:1;min-width:0}
.cd-doc-name{font-size:.85rem;font-weight:500}
.cd-doc-meta{font-size:.75rem;color:var(--text-tertiary)}
.cd-empty{text-align:center;padding:40px 20px;color:var(--text-tertiary)}
.cd-evidence-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px}
.cd-evidence-item{aspect-ratio:1;background:var(--bg-secondary);border-radius:8px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;cursor:pointer;transition:.2s;border:1px solid transparent;font-size:.8rem;color:var(--text-secondary)}
.cd-evidence-item:hover{border-color:var(--primary)}

/* --- chat_panel.html --- */
.cp-container{display:flex;flex-direction:column;height:100%;background:var(--bg-page,#f0f0f0);position:relative}
.cp-header{display:flex;align-items:center;gap:8px;padding:10px 16px;background:#fff;border-bottom:1px solid rgba(0,0,0,.06);flex-shrink:0;z-index:2}
.cp-back{width:32px;height:32px;border:none;background:var(--bg-secondary,#f5f5f5);border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:.9rem}
.cp-back:hover{background:#e5e5e5}
.cp-title{font-size:.95rem;font-weight:600}
.cp-messages{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px}
.cp-msg{max-width:80%;padding:10px 14px;border-radius:12px;font-size:.85rem;line-height:1.6;word-break:break-word;animation:cpFadeIn .2s ease}
.cp-msg.left{background:#fff;align-self:flex-start;border-bottom-left-radius:4px}
.cp-msg.right{background:var(--primary,#166534);color:#fff;align-self:flex-end;border-bottom-right-radius:4px}
.cp-msg-time{font-size:.65rem;opacity:.6;margin-top:4px}
.cp-input-area{display:flex;gap:8px;padding:12px 16px;background:#fff;border-top:1px solid rgba(0,0,0,.06)}
.cp-input{flex:1;border:1px solid rgba(0,0,0,.1);border-radius:20px;padding:8px 16px;outline:none;font-size:.85rem;font-family:inherit}
.cp-input:focus{border-color:var(--primary)}
.cp-send{width:36px;height:36px;border:none;background:var(--primary);color:#fff;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.cp-send:disabled{opacity:.5;cursor:not-allowed}
.cp-empty{align-self:center;padding:40px 0;color:var(--text-tertiary);text-align:center}
@keyframes cpFadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}

/* --- client_detail.html --- */
.cd-tabs{display:flex;gap:4px;background:var(--bg-secondary,#f5f5f5);padding:3px;border-radius:10px;margin-bottom:12px;overflow-x:auto}
.cd-tab{flex-shrink:0;padding:6px 14px;font-size:.8rem;border:none;border-radius:7px;background:transparent;color:var(--text-tertiary);cursor:pointer;white-space:nowrap;transition:.2s}
.cd-tab.on{background:#fff;color:var(--text-primary);font-weight:600;box-shadow:0 1px 3px rgba(0,0,0,.08)}
.cd-section{margin-bottom:20px}
.cd-section-title{font-size:.85rem;font-weight:600;color:var(--text-secondary);margin-bottom:8px}
.cd-field{display:flex;padding:6px 0;border-bottom:1px solid var(--border,rgba(0,0,0,.04));font-size:.85rem}
.cd-field-label{width:100px;flex-shrink:0;color:var(--text-tertiary)}
.cd-field-value{flex:1;color:var(--text-primary)}
.cd-doc-item{display:flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid var(--border);border-radius:8px;margin-bottom:6px;font-size:.82rem}
.cd-doc-icon{flex-shrink:0;font-size:1rem}
.cd-doc-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cd-doc-link{color:var(--primary);text-decoration:none;font-size:.8rem}
.cd-empty{text-align:center;padding:30px;color:var(--text-tertiary)}

/* --- finance_payroll.html --- */
.fp-wrap{flex:1;overflow-y:auto;padding:1rem;display:flex;flex-direction:column;gap:0.75rem}
.fp-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:0.75rem}
.fp-stat-card{display:flex;align-items:center;gap:0.75rem;background:#fff;border:1px solid var(--border,rgba(0,0,0,0.08));border-radius:0.75rem;padding:1rem;transition:.2s}
.fp-stat-icon{width:2.5rem;height:2.5rem;border-radius:0.625rem;display:flex;align-items:center;justify-content:center;font-size:1.125rem;color:var(--stat-color,#166534);background:var(--stat-bg,rgba(22,101,52,0.06));flex-shrink:0}
.fp-stat-body{flex:1;min-width:0}
.fp-stat-value{font-size:1.125rem;font-weight:700;color:var(--text-primary,#222)}
.fp-stat-label{font-size:0.75rem;color:var(--text-tertiary,#888);margin-top:0.125rem}
.fp-toolbar{display:flex;align-items:center;justify-content:space-between;gap:0.75rem;flex-wrap:wrap}
.fp-search-group{display:flex;align-items:center;gap:0.5rem;flex-wrap:wrap}
.fp-input{height:2.25rem;padding:0 0.75rem;border:1px solid var(--border,rgba(0,0,0,0.12));border-radius:0.5rem;font-size:0.8125rem;background:#fff;color:var(--text-primary);outline:none;transition:.2s;min-width:0}
.fp-input:focus{border-color:var(--primary,#166534)}
.fp-select{min-width:7rem}
.fp-actions{display:flex;gap:0.5rem}
.fp-table-panel{background:#fff;border:1px solid var(--border,rgba(0,0,0,0.06));border-radius:0.75rem;overflow:hidden}
.fp-employee{display:flex;align-items:center;gap:0.625rem}
.fp-avatar{width:2.25rem;height:2.25rem;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:0.8125rem;font-weight:600;flex-shrink:0}
.fp-emp-name{font-size:0.875rem;font-weight:500;color:var(--text-primary)}
.fp-emp-no{font-size:0.6875rem;color:var(--text-tertiary,#999)}
.fp-amount{font-weight:600}
.fp-amount-net{color:var(--primary,#166534)}
.fp-badge{display:inline-flex;padding:0.125rem 0.5rem;border-radius:0.25rem;font-size:0.75rem;font-weight:500}
.fp-badge-success{background:rgba(22,101,52,0.08);color:#166534}
.fp-badge-warn{background:rgba(245,158,11,0.1);color:#d97706}
.fp-modal-form{display:flex;flex-direction:column;gap:0.75rem}
.fp-form-row{display:grid;grid-template-columns:1fr 1fr;gap:0.75rem}
.fp-form-item{display:flex;flex-direction:column;gap:0.25rem}
.fp-form-item label{font-size:0.8125rem;color:var(--text-secondary,#555);font-weight:500}

/* --- ai_session_sync.html --- */
.ss-header{display:flex;align-items:center;gap:8px;margin-bottom:16px}
.ss-header h3{margin:0;font-size:1rem}
.ss-sessions{display:flex;flex-direction:column;gap:8px}
.ss-item{display:flex;align-items:center;gap:12px;padding:12px 16px;border:1px solid var(--border);border-radius:8px;background:var(--card-bg);cursor:pointer;transition:.2s}
.ss-item:hover{border-color:var(--primary);box-shadow:0 1px 4px rgba(0,0,0,.05)}
.ss-item-icon{flex-shrink:0;width:36px;height:36px;border-radius:50%;background:var(--bg-secondary,#f5f5f5);display:flex;align-items:center;justify-content:center;font-size:1rem}
.ss-item-info{flex:1;min-width:0}
.ss-item-title{font-size:.875rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ss-item-meta{font-size:.75rem;color:var(--text-tertiary);margin-top:2px}
.ss-item-action{flex-shrink:0}
.ss-empty{text-align:center;padding:40px;color:var(--text-tertiary)}

/* --- audit_log.html --- */
.al-meta{display:flex;gap:16px;margin-bottom:16px;flex-wrap:wrap}
.al-meta-item{font-size:.85rem}
.al-meta-label{color:var(--text-tertiary);margin-right:6px}
.al-table{table-layout:fixed;width:100%}
.al-table th,.al-table td{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.al-empty{text-align:center;padding:60px 20px;color:var(--text-tertiary)}

/* --- project_dev.html --- */
.pd-header{display:flex;align-items:center;gap:10px;margin-bottom:16px}
.pd-status{padding:2px 8px;border-radius:4px;font-size:.75rem}
.pd-section{margin-bottom:20px}
.pd-section-title{font-size:.95rem;font-weight:600;margin-bottom:12px;display:flex;align-items:center;gap:6px}
.pd-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px;margin-bottom:16px}
.pd-meta-item{font-size:.82rem}
.pd-meta-label{color:var(--text-tertiary);margin-right:4px}
.pd-empty{text-align:center;padding:40px;color:var(--text-tertiary)}

/* --- user_manage.html --- */
.um-filter{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.um-filter .bk-input{width:auto;min-width:140px}
.um-table{table-layout:fixed;width:100%}
.um-table .um-cell-uid{width:60px}
.um-table .um-cell-role{width:100px}
.um-table .um-cell-status{width:70px;text-align:center}
.um-table .um-cell-action{width:80px;text-align:center}
.um-form-row label{color:var(--text-secondary)}
.um-table-actions{display:flex;flex-wrap:nowrap;gap:6px}
.um-footer-meta{margin-right:auto;padding-top:2px}
.um-perm-col{flex:1;min-width:280px}
.um-perm-section-label{font-size:var(--fs-sm,0.875rem);font-weight:600;display:block;margin-bottom:8px;color:var(--text-secondary)}
.um-perm-all-label{font-weight:600;color:var(--text-secondary)}
.um-perm-empty{padding:20px;text-align:center}
.um-flex-col-fill{flex:1;display:flex;flex-direction:column;min-height:0}
.um-nav-btn{font-size:1.2rem}

/* --- 部门树形 --- */
.um-tree{border:1px solid var(--border);border-radius:8px;overflow:hidden}
.um-tree-header{display:flex;align-items:center;padding:8px 12px;background:var(--bg-secondary,#f6f8fa);font-size:0.8rem;color:var(--text-tertiary);font-weight:600;border-bottom:1px solid var(--border)}
.um-tree-body{max-height:calc(100vh - 220px);overflow-y:auto}
.um-tree-row{display:flex;align-items:center;padding:8px 12px;border-bottom:1px solid var(--border);font-size:0.875rem;transition:background .15s}
.um-tree-row:last-child{border-bottom:none}
.um-tree-row:hover{background:var(--bg-hover,#f0f2f5)}
.um-tree-toggle{width:20px;flex-shrink:0;cursor:pointer;color:var(--text-tertiary);font-size:0.75rem;user-select:none}
.um-tree-arrow{display:inline-block;transition:transform .2s;font-size:0.7rem;font-style:normal}
.um-tree-arrow.open{transform:rotate(90deg)}
.um-tree-dot{color:var(--border);font-size:0.6rem;cursor:default}
.um-tcol-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 8px}
.um-tcol-count{width:50px;flex-shrink:0;text-align:center;color:var(--text-secondary)}
.um-tcol-level{width:80px;flex-shrink:0;text-align:center}
.um-tcol-action{width:270px;flex-shrink:0;text-align:right}

/* --- dify_kb.html --- */
.dkb-header{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.dkb-back{width:32px;height:32px;border:none;background:var(--bg-secondary,#f5f5f5);border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}
.dkb-back:hover{background:#e5e5e5}
.dkb-title{font-size:.95rem;font-weight:600;flex:1}
.dkb-list{display:flex;flex-direction:column;gap:8px}
.dkb-item{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--border);border-radius:8px;cursor:pointer;transition:.2s;background:var(--card-bg)}
.dkb-item:hover{border-color:var(--primary);box-shadow:0 1px 4px rgba(22,101,52,.06)}
.dkb-item-icon{flex-shrink:0;width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:1.1rem}
.dkb-item-info{flex:1;min-width:0}
.dkb-item-title{font-size:.875rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dkb-item-meta{font-size:.75rem;color:var(--text-tertiary);margin-top:2px}
.dkb-item-action{flex-shrink:0}
.dkb-empty{text-align:center;padding:40px;color:var(--text-tertiary)}
.dkb-search{display:flex;gap:8px;margin-bottom:12px}
.dkb-search .bk-input{flex:1}
.dkb-upload-area{border:2px dashed var(--border);border-radius:12px;padding:40px;text-align:center;cursor:pointer;transition:.2s}
.dkb-upload-area:hover{border-color:var(--primary);background:rgba(22,101,52,.02)}
.dkb-result{background:var(--bg-secondary,#f8f9fa);border-radius:8px;padding:14px;font-size:.85rem;line-height:1.7;white-space:pre-wrap;max-height:300px;overflow-y:auto;margin-top:12px}

/* --- monitor.html --- */
.mon-header{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.mon-back{width:32px;height:32px;border:none;background:var(--bg-secondary,#f5f5f5);border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}
.mon-back:hover{background:#e5e5e5}
.mon-title{font-size:1rem;font-weight:600;flex:1}
.mon-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-bottom:16px}
.mon-stat-card{text-align:center;padding:14px;border:1px solid var(--border);border-radius:10px;background:var(--card-bg)}
.mon-stat-val{font-size:1.375rem;font-weight:700}
.mon-stat-label{font-size:.75rem;color:var(--text-tertiary);margin-top:2px}
.mon-section{margin-bottom:20px}
.mon-section-title{font-size:.95rem;font-weight:600;margin-bottom:10px;display:flex;align-items:center;gap:6px}
.mon-item{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--border,rgba(0,0,0,.06));font-size:.85rem}
.mon-item:last-child{border-bottom:none}
.mon-item-icon{flex-shrink:0;font-size:1rem;width:24px;text-align:center}
.mon-item-info{flex:1;min-width:0}
.mon-item-title{font-weight:500}
.mon-item-meta{font-size:.75rem;color:var(--text-tertiary)}
.mon-item-action{flex-shrink:0}
.mon-empty{text-align:center;padding:40px;color:var(--text-tertiary)}

/* --- today_analysis.html --- */
.ta-page{flex-direction:column;padding:20px;box-sizing:border-box;overflow-y:auto}
.ta-period-tabs{display:flex;gap:4px;margin-bottom:16px;flex-wrap:wrap}
.ta-loading{text-align:center;padding:80px 20px;color:var(--text-tertiary)}
.ta-loading-icon{font-size:2.5rem;margin-bottom:16px}
.ta-error{text-align:center;padding:60px 20px}
.ta-error-icon{font-size:3rem;margin-bottom:12px;color:var(--danger)}
.ta-error-msg{font-size:1rem;margin-bottom:8px;color:var(--danger)}
.ta-banner{background:linear-gradient(135deg,var(--primary,#1890ff),#096dd9);border-radius:var(--radius-lg);padding:20px;margin-bottom:16px;color:#fff}
.ta-findings{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
.ta-finding-tag{background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:8px 14px;font-size:0.85rem;display:flex;align-items:center;gap:6px}
.ta-sections{display:flex;flex-direction:column;gap:16px}
.ta-section{background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-lg);overflow:hidden}
.ta-section-body{padding:16px 20px 0 20px}
.ta-section-text{margin:0 0 12px 0;font-size:0.875rem;color:var(--text-secondary);line-height:1.7;white-space:pre-wrap}
.ta-suggestions{background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:20px;margin-top:16px}
.ta-suggestion-item{display:flex;align-items:flex-start;gap:8px;padding:6px 0;border-bottom:1px solid var(--border-color,rgba(0,0,0,0.04));font-size:0.875rem}
.ta-empty{text-align:center;padding:80px 20px;color:var(--text-tertiary)}

/* --- legal_doc_gen.html --- */
.ldg-page{flex-direction:column;box-sizing:border-box;overflow-y:auto}
.ldg-toolbar{flex-wrap:wrap;gap:8px;padding:16px 20px}
.ldg-back{font-size:0.85rem}
.ldg-body{padding:0 20px 20px;display:flex;flex-direction:column;gap:16px}
.ldg-case-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px 20px}
.ldg-label{color:var(--text-tertiary)}
.ldg-flex-row{display:flex;gap:8px}
.ldg-flex-center{display:flex;gap:8px;align-items:center}
.ldg-gen-btn{display:flex;align-items:center;gap:6px;font-size:0.85rem}
.ldg-sm-btn{font-size:0.8rem}
.ldg-generating{padding:60px 20px;text-align:center}
.ldg-generating-icon{font-size:2.5rem;margin-bottom:16px}
.ldg-generating-title{font-size:1rem}
.ldg-generating-desc{font-size:0.85rem;margin-top:8px;color:var(--text-tertiary)}
.ldg-card-hd{display:flex;align-items:center;justify-content:space-between}
.ldg-card-note{font-size:0.75rem;color:var(--text-tertiary);font-weight:400}
.ldg-error{text-align:center;padding:30px;color:var(--danger);font-size:0.85rem}

/* --- legal_kb_search.html --- */
.lks-page{flex-direction:column;box-sizing:border-box;overflow-y:auto}
.lks-search-input{flex:1;padding:10px 14px;border:1px solid var(--border-color);border-radius:var(--radius-md);font-size:0.85rem}
.lks-search-btn{font-size:0.85rem;padding:0 20px;display:flex;align-items:center;gap:6px}
.lks-tags{margin-top:8px;display:flex;gap:6px;flex-wrap:wrap}
.lks-loading{text-align:center;padding:60px 20px;color:var(--text-tertiary)}
.lks-loading-icon{font-size:2rem;margin-bottom:12px}
.lks-result-count{font-size:0.85rem;color:var(--text-tertiary);margin-bottom:12px}
.lks-result-num{background:var(--primary);color:#fff;border-radius:50%;width:22px;height:22px;display:flex;align-items:center;justify-content:center;font-size:0.72rem;flex-shrink:0;margin-top:2px}
.lks-result-body{flex:1}
.lks-result-source{margin-top:6px;font-size:0.75rem;color:var(--text-tertiary)}
.lks-empty{text-align:center;padding:60px 20px;color:var(--text-tertiary)}
.lks-welcome{text-align:center;padding:60px 20px;color:var(--text-tertiary)}

/* --- monitor.html utility classes (extracted from inline styles) --- */
.mon-api-tag{font-size:0.75rem;color:var(--text-tertiary);margin-right:auto;padding-top:2px}
.mon-section-sub{font-size:0.75rem;font-weight:600;color:var(--text-tertiary);margin-bottom:6px;text-transform:uppercase;letter-spacing:0.5px}
.mon-empty-icon-lg{font-size:3rem;margin-bottom:16px}
.mon-flex-min{flex:1;min-width:140px}
.mon-text-tiny{font-size:0.6875rem;color:var(--text-tertiary)}
.mon-flex-wrap-gap3{display:flex;flex-wrap:wrap;gap:3px}
.mon-color-green{color:#10b981}
.mon-color-red{color:#ef4444}
.mon-color-gray{color:#888}
.mon-color-wechat{color:#07c160}
.mon-dot-green{color:#10b981;font-size:0.6rem}
.mon-dot-red{color:#ef4444;font-size:0.6rem}
.mon-dot-gray{color:#888;font-size:0.6rem}

/* --- code_generator.html --- */
.cg-field-text{flex:1;min-width:0;font-size:0.9375rem;color:var(--text-primary);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cg-btn-xs{padding:2px 4px;font-size:0.75rem}
.cg-resize-v{resize:vertical}
.cg-api-label{font-size:0.75rem;color:var(--text-tertiary);margin-right:auto;padding-top:2px}
.cg-btn-ai{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;border:none}
.cg-input-sm{font-size:0.875rem}
.cg-file-meta{flex:1;text-align:right;color:var(--text-tertiary);font-size:0.75rem}
.cg-check-label{display:flex;align-items:center;gap:4px;cursor:pointer;font-size:var(--fs-sm,0.875rem);color:var(--text-secondary)}
.cg-th-sm{width:50px;text-align:center}
.cg-relate-input{font-size:0.875rem;flex:1;min-width:60px}
.cg-text-center{text-align:center}
.cg-chk-box{cursor:pointer;width:16px;height:16px}
.cg-panel-tip{padding:8px;color:var(--text-light);font-size:0.75rem}

/* --- wecom_admin.html --- */
.wa-hint{color:var(--muted);font-weight:400}
.wa-muted{color:var(--muted)}
.wa-muted-sm{font-size:0.875rem;color:var(--muted)}
.wa-muted-xs{font-size:0.75rem;color:var(--muted)}
.wa-empty-cell{text-align:center;padding:2rem;color:var(--muted)}
.wa-mt-12{margin-top:12px}

/* --- dify_kb.html --- */
.dkb-empty{text-align:center;padding:40px 20px;color:var(--text-tertiary)}
.dkb-empty-icon{font-size:2rem;margin-bottom:8px}
.dkb-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.dkb-label{font-size:0.75rem;color:var(--text-tertiary);margin-right:auto;padding-top:2px}
.dkb-text-sm{font-size:var(--fs-sm,0.875rem);color:var(--text-secondary)}
.dkb-empty-sm{text-align:center;padding:20px;color:var(--text-tertiary)}
.dkb-chip{padding:0.5rem 0.875rem;font-size:0.875rem;cursor:pointer;white-space:nowrap}
.dkb-meta-icon{margin-right:0.375rem;font-size:0.75rem;opacity:.7}
.dkb-hint{color:var(--text-tertiary);font-size:var(--fs-sm,0.875rem);margin-top:8px}
.dkb-green{color:#07c160}

/* --- case_detail.html --- */
.cd-empty-sm{text-align:center;padding:30px;color:var(--text-tertiary);font-size:0.85rem}
.cd-list-row{padding:10px 0;border-bottom:1px solid var(--border-color,rgba(0,0,0,.04));display:flex;align-items:center;gap:12px;font-size:0.85rem}
.cd-state-msg{text-align:center;padding:16px;color:var(--text-tertiary)}
.cd-text-danger{color:var(--danger)}

/* --- client_detail.html --- */
.cld-page{flex-direction:column;box-sizing:border-box;overflow-y:auto}
.cld-btn-sm{font-size:0.8rem}
.cld-btn-icon{font-size:0.8rem;display:flex;align-items:center;gap:4px}
.cld-empty-tab{text-align:center;padding:20px;color:var(--text-tertiary);font-size:0.85rem}
.cld-meta{font-size:0.8rem;color:var(--text-tertiary)}

/* --- Shared utility classes --- */
.flex-fill{flex:1;min-width:0}
.flex-row{display:flex;align-items:center}
.flex-between{display:flex;align-items:center;justify-content:space-between}
.flex-center{display:flex;align-items:center;justify-content:center}
.flex-gap-xs{display:flex;gap:0.375rem}
.flex-gap-sm{display:flex;gap:0.5rem}
.flex-gap-md{display:flex;gap:0.75rem}
.text-meta{font-size:0.75rem;color:var(--text-tertiary)}
.text-sm{font-size:var(--fs-sm,0.875rem)}
.text-xs{font-size:0.75rem}
.text-sec{color:var(--text-secondary)}
.text-tert{color:var(--text-tertiary)}
.text-pri{color:var(--primary)}
.empty-state{padding:80px 20px;text-align:center;color:var(--text-tertiary)}
.empty-state-sm{padding:60px 20px;text-align:center;color:var(--text-tertiary)}
.empty-icon{font-size:3rem;margin-bottom:12px}
.section-title{font-size:0.8rem;font-weight:600;color:var(--text-tertiary);margin-bottom:0.375rem;text-transform:uppercase;letter-spacing:0.5px}
.card{background:rgba(255,255,255,0.75);backdrop-filter:blur(8px);border-radius:0.625rem;padding:0.875rem 1rem;border:1px solid rgba(0,0,0,0.06)}

/* ── Spacing utilities ── */
.mt-4{margin-top:4px}
.mt-8{margin-top:8px}
.mt-12{margin-top:12px}
.mb-4{margin-bottom:4px}
.mb-8{margin-bottom:8px}
.mb-12{margin-bottom:12px}
.p-0{padding:0}
.p-4{padding:4px}
.w-full{width:100%}
.hidden{display:none!important}

/* ── Typography utilities ── */
.fw-600{font-weight:600}
.text-nowrap{white-space:nowrap}
.text-base{font-size:1rem}

/* ── Layout utilities ── */
.flex-col{flex-direction:column}
.flex-1{flex:1}
.ml-auto{margin-left:auto}
.gap-4{gap:4px}
.gap-6{gap:6px}
.gap-8{gap:8px}
.flex-wrap{flex-wrap:wrap}
.overflow-auto{overflow:auto}
.cursor-pointer{cursor:pointer}
.text-center{text-align:center}
.text-danger{color:var(--danger)}
.text-success{color:var(--success)}
.text-right{text-align:right}
.block{display:block}
.inline-block{display:inline-block}
.justify-end{justify-content:flex-end}
.justify-between{justify-content:space-between}
.mr-4{margin-right:4px}
.mr-6{margin-right:6px}
.mr-8{margin-right:8px}
.ml-8{margin-left:8px}
.p-8{padding:8px}
.p-12{padding:12px}
.p-14{padding:0.875rem}
.h-32{height:32px}
.pos-relative{position:relative}
.text-tiny{font-size:0.6875rem}
.text-85{font-size:0.85rem}
.text-8{font-size:0.8rem}
.flex-shrink-0{flex-shrink:0}

/* ── Common complex patterns ── */
.empty-icon-lg{font-size:3rem;margin-bottom:12px}
.empty-icon-md{font-size:2rem;margin-bottom:12px}
.empty-icon-sm{font-size:2rem;margin-bottom:8px}
.stat-number{font-size:2rem;font-weight:700}
.card-hover{background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:24px;cursor:pointer;transition:all .2s}
.card-hover-sm{background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:20px}
.chart-container{position:relative;height:240px}
.p-10-14{padding:10px 14px}
.page-panel-content{padding:0 20px 20px;display:flex;flex-direction:column;gap:16px}
.scrollable-content{flex:1;overflow:auto;padding:0.875rem}
.toolbar-row{flex-wrap:wrap;gap:8px;padding:16px 20px}
.full-height-flex{display:flex;flex-direction:column;height:100%}
.flex-col-scroll{flex-direction:column;box-sizing:border-box;overflow-y:auto}
.p-20{padding:20px}
.text-pre-wrap{white-space:pre-wrap}

/* ==========================================
   移动端适配
   ========================================== */
@media(max-width:768px){
  .nt-page{padding:0.75rem}
  .nt-header h2{font-size:1rem}
  .nt-tabs button{padding:6px 10px;font-size:0.75rem}
  .nt-item{gap:8px;padding:10px 0}
  .nt-item.unread{margin:0 -0.75rem;padding:10px 0.75rem}
  .nt-item-icon{width:30px;height:30px;font-size:0.875rem}
  .nt-item-title{font-size:0.8125rem}
  .nt-empty{padding:40px 16px}
  .nt-empty-icon{font-size:2.25rem}
  .nt-empty-text{font-size:0.8125rem}
  .boka-pagination{padding:0.5rem 0}

  .ul-table-wrap .bk-table th,
  .ul-table-wrap .bk-table td{padding:0.5rem 0.5rem;font-size:0.8125rem}
  .ul-table-wrap .bk-table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}

  .page-panel-content{padding:0 12px 12px;gap:12px}
  .toolbar-row{padding:12px 16px}
}
@media(max-width:480px){
  .nt-page{padding:0.5rem}
  .nt-header{flex-direction:column;align-items:flex-start;gap:0.5rem}
  .nt-tabs button{padding:5px 8px;font-size:0.6875rem}
  .nt-item{padding:8px 0}
  .nt-item.unread{margin:0 -0.5rem;padding:8px 0.5rem}
  .nt-item-icon{width:26px;height:26px;font-size:0.75rem}
  .nt-item-title{font-size:0.75rem}
  .nt-item-meta{font-size:0.6875rem}
  .nt-badge{min-width:1rem;height:1rem;font-size:0.625rem}
  .boka-pagination button{padding:0.25rem 0.5rem;font-size:0.75rem}
}
