*{margin:0;padding:0;box-sizing:border-box}
:root{
    --sidebar-w:240px;
    --haier-blue:#0070C0;--haier-blue-dark:#005A9E;--haier-blue-deeper:#003D6B;
    --haier-blue-light:#4A9FD9;--haier-blue-lighter:#D6EAF8;--haier-blue-bg:#EBF5FB;
    --haier-accent:#00A0E9;--haier-gray-dark:#2C3E50;--haier-gray:#666;--haier-gray-light:#999;
    --haier-border:#E2E8F0;--haier-bg-white:#fff;--haier-bg-gray:#F7F9FC;
    --haier-success:#27AE60;--haier-warning:#F5A623;--haier-danger:#E74C3C;
    --shadow:0 1px 8px rgba(0,60,120,.06);--shadow-lg:0 4px 20px rgba(0,60,120,.1);
    --radius:10px;--radius-sm:6px;
}
body{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:var(--haier-gray-dark);background:var(--haier-bg-gray);line-height:1.6;display:flex;min-height:100vh;overflow:hidden}

/* ===== 左侧边栏 ===== */
.sidebar{width:var(--sidebar-w);background:linear-gradient(180deg,#003D6B 0%,#00508A 100%);color:#fff;display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:200;overflow-y:auto}
.sidebar-header{padding:24px 20px 20px;display:flex;align-items:center;gap:12px;border-bottom:1px solid rgba(255,255,255,.1)}
.sidebar-logo{width:38px;height:38px;background:linear-gradient(135deg,#00A0E9,#0070C0);border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:1.2rem;font-weight:800;flex-shrink:0}
.sidebar-brand{display:block;font-size:.95rem;font-weight:700;letter-spacing:1px}
.sidebar-sub{display:block;font-size:.72rem;opacity:.5;margin-top:1px}

.sidebar-nav{flex:1;padding:16px 12px}
.nav-item{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:8px;color:rgba(255,255,255,.65);text-decoration:none;font-size:.88rem;cursor:pointer;transition:all .15s;margin-bottom:4px}
.nav-item:hover{background:rgba(255,255,255,.08);color:#fff}
.nav-item.nav-active{background:rgba(255,255,255,.15);color:#fff;font-weight:600}
.nav-icon{font-size:1.05rem;width:22px;text-align:center}

.sidebar-stats{padding:16px 16px;border-top:1px solid rgba(255,255,255,.1);display:grid;grid-template-columns:1fr 1fr;gap:8px}
.sidebar-stat{text-align:center;padding:8px 0;background:rgba(255,255,255,.06);border-radius:8px}
.sidebar-stat-num{display:block;font-size:1.15rem;font-weight:800}
.sidebar-stat-label{font-size:.65rem;opacity:.5;text-transform:uppercase;letter-spacing:.5px}

.sidebar-footer{padding:16px 20px;border-top:1px solid rgba(255,255,255,.1)}
.sidebar-user{font-size:.9rem;font-weight:700}
.sidebar-role{font-size:.72rem;opacity:.45;margin-top:2px}

/* ===== 右侧主区域 ===== */
.main{margin-left:var(--sidebar-w);flex:1;overflow:hidden;height:100vh;padding:0}

.panel{padding:0;display:flex;flex-direction:column;height:100vh;overflow:hidden}
.panel-header{padding:24px 32px 16px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px}
.panel-title{font-size:1.35rem;font-weight:800;color:var(--haier-gray-dark)}
.panel-fixed{flex-shrink:0;padding:0 32px;border-bottom:1px solid var(--haier-border);padding-bottom:12px;margin-bottom:0}
.panel-scroll{flex:1;overflow-y:auto;padding:16px 32px 40px}

/* Week bar */
.week-bar{display:flex;align-items:center;gap:12px;margin-bottom:10px;background:#fff;padding:10px 16px;border-radius:var(--radius);box-shadow:var(--shadow)}
.current-week{font-size:1rem;font-weight:700;color:var(--haier-blue-dark);min-width:200px;text-align:center}

/* Buttons */
.btn-icon{width:30px;height:30px;border:1px solid var(--haier-border);border-radius:50%;background:#fff;cursor:pointer;font-size:.75rem;display:flex;align-items:center;justify-content:center;transition:all .15s;color:var(--haier-gray)}
.btn-icon:hover{background:var(--haier-blue);color:#fff;border-color:var(--haier-blue)}
.btn-primary{padding:7px 16px;background:linear-gradient(135deg,#0070C0,#005A9E);color:#fff;border:none;border-radius:var(--radius-sm);font-size:.82rem;font-weight:600;cursor:pointer;transition:all .15s}
.btn-primary:hover{box-shadow:0 2px 8px rgba(0,112,192,.25)}
.btn-secondary{padding:7px 14px;background:#fff;color:var(--haier-blue);border:1px solid var(--haier-blue);border-radius:var(--radius-sm);font-size:.82rem;font-weight:600;cursor:pointer;transition:all .15s}
.btn-secondary:hover{background:var(--haier-blue);color:#fff}
.toolbar-right{display:flex;gap:8px;align-items:center}

/* ===== Report Cards ===== */
.report-select-bar{display:flex;align-items:center;gap:14px;margin-bottom:12px;padding:8px 14px;background:#fff;border-radius:var(--radius);box-shadow:var(--shadow)}
.select-all-label{display:flex;align-items:center;gap:6px;font-size:.82rem;color:var(--haier-gray);cursor:pointer}
.select-all-label input[type="checkbox"]{width:15px;height:15px;accent-color:var(--haier-blue);cursor:pointer}
.select-count{font-size:.78rem;color:var(--haier-gray-light)}

.report-cards{display:flex;flex-direction:column;gap:10px}

.report-card{display:flex;background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;transition:all .18s;border:1.5px solid transparent}
.report-card:hover{box-shadow:var(--shadow-lg);border-color:var(--haier-blue-lighter)}
.report-card.rc-selected{border-color:var(--haier-blue-light);background:#FAFCFF}
.report-card.dragging{opacity:.3;transform:scale(.98)}
.report-card.drag-over{border-color:var(--haier-blue);box-shadow:0 0 0 2px rgba(0,112,192,.15)}

.rc-left{display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px 6px 14px 10px;flex-shrink:0}
.rc-drag{color:#ccc;cursor:grab;font-size:1.1rem;user-select:none;line-height:1}
.rc-drag:active{cursor:grabbing;color:var(--haier-blue)}
.rc-check{width:15px;height:15px;accent-color:var(--haier-blue);cursor:pointer}

.rc-body{flex:1;padding:12px 16px 14px 8px;min-width:0}

.rc-header{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.rc-num{width:22px;height:22px;background:linear-gradient(135deg,var(--haier-blue),var(--haier-blue-dark));color:#fff;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:700;flex-shrink:0}
.rc-tags{display:flex;gap:6px;flex:1;flex-wrap:wrap;align-items:center;min-width:0}
.rc-topic-tag{padding:2px 10px;background:var(--haier-blue-bg);color:var(--haier-blue-dark);border-radius:6px;font-size:.78rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}
.rc-sub-tag{padding:2px 8px;background:#F0F4F8;color:var(--haier-gray);border-radius:6px;font-size:.75rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}
.sync-badge{font-size:.72rem;cursor:help}

.rc-actions{flex-shrink:0}
.rc-btn-del{width:24px;height:24px;border:none;background:transparent;color:#ccc;cursor:pointer;border-radius:4px;font-size:.8rem;transition:all .15s;line-height:1}
.rc-btn-del:hover{background:#FEE2E2;color:var(--haier-danger)}

.rc-fields{display:flex;flex-direction:column;gap:8px}
.rc-field-row{display:flex;gap:10px}
.rc-field{flex:1;min-width:0}
.rc-field-topic{flex:1.2}
.rc-field-sub{flex:0.8}
.rc-field label{display:block;font-size:.7rem;font-weight:600;color:var(--haier-gray-light);margin-bottom:2px;text-transform:uppercase;letter-spacing:.5px}
.rc-input{width:100%;border:1px solid var(--haier-border);border-radius:var(--radius-sm);padding:6px 10px;font-size:.84rem;font-family:inherit;background:#FAFBFC;transition:all .15s}
.rc-field-topic .rc-input{font-size:.95rem;font-weight:700;color:var(--haier-blue-dark)}
.rc-input:focus{border-color:var(--haier-blue);outline:none;background:#fff;box-shadow:0 0 0 2px rgba(0,112,192,.08)}
.rc-input:hover{border-color:#CBD5E1}
.rc-textarea{width:100%;border:1px solid var(--haier-border);border-radius:var(--radius-sm);padding:8px 10px;font-size:.84rem;font-family:inherit;line-height:1.55;resize:vertical;background:#FAFBFC;min-height:60px;transition:all .15s}
.rc-textarea:focus{border-color:var(--haier-blue);outline:none;background:#fff;box-shadow:0 0 0 2px rgba(0,112,192,.08)}
.rc-textarea:hover{border-color:#CBD5E1}

/* ===== Todo ===== */
.todo-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:0;flex-wrap:wrap;padding-bottom:12px}
.todo-filters{display:flex;gap:5px}
.filter-btn{padding:5px 13px;border:1px solid var(--haier-border);border-radius:16px;background:#fff;font-size:.8rem;cursor:pointer;transition:all .15s;color:var(--haier-gray)}
.filter-btn.active,.filter-btn:hover{background:var(--haier-blue);color:#fff;border-color:var(--haier-blue)}
.todo-toolbar select{padding:5px 10px;border:1px solid var(--haier-border);border-radius:var(--radius-sm);font-size:.82rem;background:#fff}
.todo-list{display:flex;flex-direction:column;gap:7px}
.todo-item{display:flex;align-items:flex-start;gap:12px;background:#fff;border-radius:var(--radius);padding:12px 16px;box-shadow:var(--shadow);transition:all .15s;border-left:3px solid transparent}
.todo-item:hover{box-shadow:var(--shadow-lg)}
.todo-item.priority-high{border-left-color:var(--haier-warning)}
.todo-item.priority-urgent{border-left-color:var(--haier-danger)}
.todo-item.priority-normal{border-left-color:var(--haier-blue-light)}
.todo-item.is-done{opacity:.55}
.todo-item.is-done .todo-text{text-decoration:line-through;color:var(--haier-gray-light)}
.todo-check{width:18px;height:18px;border:2px solid var(--haier-border);border-radius:50%;cursor:pointer;flex-shrink:0;margin-top:2px;display:flex;align-items:center;justify-content:center;transition:all .15s;font-size:.65rem;color:transparent}
.todo-check:hover{border-color:var(--haier-success)}
.todo-check.checked{background:var(--haier-success);border-color:var(--haier-success);color:#fff}
.todo-body{flex:1;min-width:0}
.todo-text{font-size:.88rem;line-height:1.5;word-break:break-word}
.todo-meta{display:flex;gap:8px;margin-top:5px;flex-wrap:wrap;align-items:center}
.todo-tag{display:inline-block;padding:1px 7px;border-radius:8px;font-size:.68rem;font-weight:600}
.tag-category{background:var(--haier-blue-bg);color:var(--haier-blue)}
.tag-priority-high{background:#FEF3C7;color:#B7791F}
.tag-priority-urgent{background:#FEE2E2;color:#C0392B}
.tag-due{font-size:.72rem;padding:2px 8px;border-radius:6px;font-weight:600;white-space:nowrap}
.tag-due.due-normal{color:var(--haier-gray-light);background:transparent}
.tag-due.due-urgent{color:#fff;background:#E74C3C;animation:pulse-urgent 1.5s ease-in-out infinite}
.tag-due.due-today{color:#fff;background:#DC2626;animation:pulse-today .6s ease-in-out infinite}
.tag-due.due-overdue{color:#fff;background:#991B1B}
@keyframes pulse-urgent{0%,100%{opacity:1}50%{opacity:.7}}
@keyframes pulse-today{0%,100%{opacity:1}50%{opacity:.4}}
.todo-actions{display:flex;gap:3px;flex-shrink:0}
.todo-actions button{width:26px;height:26px;border:none;background:transparent;cursor:pointer;border-radius:4px;font-size:.78rem;color:var(--haier-gray-light);transition:all .15s}
.todo-actions button:hover{background:var(--haier-blue-bg);color:var(--haier-blue)}
.todo-actions .btn-del:hover{background:#FEE2E2;color:var(--haier-danger)}

/* ===== Duties ===== */
.duties-card{background:#fff;border-radius:var(--radius);padding:24px 28px;box-shadow:var(--shadow)}
.duty-item{padding:11px 0;border-bottom:1px solid #f0f3f6;display:flex;gap:12px;align-items:flex-start}
.duty-item:last-child{border-bottom:none}
.duty-num{width:26px;height:26px;background:var(--haier-blue);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700;flex-shrink:0}
.duty-text{font-size:.86rem;line-height:1.65;color:var(--haier-gray-dark);flex:1}
.duty-actions{display:flex;gap:3px;flex-shrink:0}
.duty-actions button{width:26px;height:26px;border:none;background:transparent;cursor:pointer;border-radius:4px;font-size:.78rem;color:var(--haier-gray-light);transition:all .15s}
.duty-actions button:hover{background:var(--haier-blue-bg);color:var(--haier-blue)}
.duty-actions .btn-del:hover{background:#FEE2E2;color:var(--haier-danger)}
.duty-sub{margin-left:38px;padding:3px 0;font-size:.8rem;color:var(--haier-gray)}

/* ===== Modal ===== */
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,20,50,.35);z-index:1000;align-items:center;justify-content:center}
.modal-overlay.show{display:flex}
.modal{background:#fff;border-radius:var(--radius);padding:26px;width:460px;max-width:92vw;box-shadow:0 16px 48px rgba(0,0,0,.18);max-height:80vh;overflow-y:auto}
.modal h3{font-size:1rem;color:var(--haier-blue-dark);margin-bottom:14px}
.modal-hint{font-size:.82rem;color:var(--haier-gray);margin-bottom:14px;line-height:1.55}
.modal-field{margin-bottom:12px}
.modal-field label{display:block;font-size:.8rem;font-weight:600;color:var(--haier-gray-dark);margin-bottom:3px}
.modal-field textarea,.modal-field input,.modal-field select{width:100%;border:1px solid var(--haier-border);border-radius:var(--radius-sm);padding:7px 10px;font-size:.84rem;font-family:inherit;line-height:1.5}
.modal-field textarea:focus,.modal-field input:focus,.modal-field select:focus{border-color:var(--haier-blue);outline:none;box-shadow:0 0 0 3px rgba(0,112,192,.08)}
.modal-row{display:flex;gap:12px}
.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}
.modal-actions button{padding:7px 18px;border:none;border-radius:var(--radius-sm);font-size:.84rem;cursor:pointer;font-weight:600;transition:all .15s}
.modal-actions .btn-save{background:linear-gradient(135deg,#0070C0,#005A9E);color:#fff}
.modal-actions .btn-save:hover{box-shadow:0 2px 8px rgba(0,112,192,.25)}
.modal-actions .btn-cancel{background:#F1F5F9;color:var(--haier-gray)}
.modal-actions .btn-cancel:hover{background:#E2E8F0}
.sync-week-picker{display:flex;align-items:center;gap:12px;justify-content:center;padding:6px 0}
.sync-week-label{font-size:.95rem;font-weight:700;color:var(--haier-blue-dark);min-width:180px;text-align:center}

/* ===== Empty & Flash ===== */
.empty-state{text-align:center;padding:40px 24px;color:var(--haier-gray-light)}
.empty-state p{font-size:.95rem;margin-bottom:14px}
.save-flash{position:fixed;top:18px;right:18px;background:var(--haier-success);color:#fff;padding:7px 16px;border-radius:var(--radius-sm);font-size:.82rem;font-weight:600;opacity:0;transition:opacity .25s;z-index:2000;pointer-events:none}
.save-flash.show{opacity:1}

/* ===== Responsive ===== */
@media(max-width:860px){
    :root{--sidebar-w:56px}
    .sidebar-title,.nav-text,.sidebar-stats,.sidebar-footer,.sidebar-role{display:none}
    .sidebar-header{justify-content:center;padding:16px 8px}
    .sidebar-nav{padding:12px 6px}
    .nav-item{justify-content:center;padding:10px 0}
    .nav-icon{font-size:1.2rem;width:auto}
    .panel-header{padding:16px 16px 12px}
    .panel-fixed{padding:0 16px;padding-bottom:10px}
    .panel-scroll{padding:12px 16px 32px}
    .panel{padding:0}
}
@media(max-width:600px){
    :root{--sidebar-w:0px}
    .sidebar{display:none}
    .panel-header{padding:12px 12px 10px}
    .panel-fixed{padding:0 12px;padding-bottom:8px}
    .panel-scroll{padding:10px 12px 24px}
    .panel{padding:0}
    .modal-row{flex-direction:column;gap:8px}
}

/* ===== AI Button & Modal ===== */
.btn-ai{padding:7px 14px;background:linear-gradient(135deg,#8B5CF6,#6D28D9);color:#fff;border:none;border-radius:var(--radius-sm);font-size:.82rem;font-weight:600;cursor:pointer;transition:all .15s}
.btn-ai:hover{box-shadow:0 2px 10px rgba(109,40,217,.3)}
.btn-ai-view{padding:7px 14px;background:#fff;color:#6D28D9;border:1px solid #8B5CF6;border-radius:var(--radius-sm);font-size:.82rem;font-weight:600;cursor:pointer;transition:all .15s}
.btn-ai-view:hover{background:#6D28D9;color:#fff}

.modal-ai{width:620px;max-width:94vw}
.modal-ai.modal-compare-mode{width:960px;max-width:96vw}

.ai-modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}
.ai-modal-header h3{margin-bottom:0}
.ai-week-info{font-size:.82rem;color:var(--haier-gray-light);font-weight:600}

.ai-source{margin-bottom:14px}
.ai-source-label{font-size:.78rem;color:var(--haier-gray-light);background:var(--haier-bg-gray);padding:4px 10px;border-radius:4px;display:inline-block}

.ai-result{min-height:100px;max-height:50vh;overflow-y:auto;border:1px solid var(--haier-border);border-radius:var(--radius-sm);padding:14px 16px;background:#FAFBFC;margin-bottom:4px}

.ai-loading{display:flex;align-items:center;gap:10px;justify-content:center;padding:28px 0;color:var(--haier-gray)}
.ai-loading span{font-size:.85rem}
.ai-spinner{width:18px;height:18px;border:2.5px solid var(--haier-border);border-top-color:#8B5CF6;border-radius:50%;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* 对比模式 */
.ai-compare{display:flex;gap:12px}
.ai-compare-col{flex:1;min-width:0}
.ai-compare-label{font-size:.78rem;font-weight:600;color:var(--haier-gray);margin-bottom:6px;padding-left:2px}
.ai-result-old{border-color:#E2E8F0;background:#F8F9FA}
.ai-result-new{border-color:#DDD6FE;background:#FAFAFF}

.ai-content{font-size:.86rem;line-height:1.7;color:var(--haier-gray-dark)}
.ai-content h2{font-size:1rem;font-weight:700;color:var(--haier-blue-dark);margin:12px 0 5px;padding-bottom:3px;border-bottom:1px solid var(--haier-border)}
.ai-content h3{font-size:.92rem;font-weight:700;color:var(--haier-gray-dark);margin:10px 0 4px}
.ai-content h4{font-size:.86rem;font-weight:600;color:var(--haier-gray);margin:8px 0 3px}
.ai-content p{margin:5px 0}
.ai-content ul{margin:3px 0 6px 0;padding-left:0;list-style:none}
.ai-content li{padding:2px 0 2px 14px;position:relative;font-size:.84rem}
.ai-content li::before{content:'•';position:absolute;left:2px;color:#8B5CF6;font-weight:700}
.ai-content li .li-num{color:#8B5CF6;font-weight:700;margin-right:2px}
.ai-content strong{color:var(--haier-blue-dark)}

.ai-error{color:var(--haier-danger);font-size:.86rem;padding:10px 0;text-align:center}

/* ===== Todo AI buttons ===== */
.btn-todo-ai,.btn-todo-ai-view{width:26px;height:26px;border:none;background:transparent;cursor:pointer;border-radius:4px;font-size:.78rem;transition:all .15s}
.btn-todo-ai{color:var(--haier-gray-light)}
.btn-todo-ai:hover{background:#EDE9FE;color:#6D28D9}
.btn-todo-ai-view{color:#8B5CF6}
.btn-todo-ai-view:hover{background:#EDE9FE;color:#6D28D9}
.todo-ai-topic{font-size:.86rem;color:var(--haier-gray-dark);background:var(--haier-bg-gray);padding:8px 12px;border-radius:var(--radius-sm);margin-bottom:12px;line-height:1.5;border-left:3px solid #8B5CF6}

/* ===== Todo linked report ===== */
.todo-link-action{margin-top:8px}
.btn-link-report{padding:4px 10px;background:transparent;color:var(--haier-blue);border:1px dashed var(--haier-blue-light);border-radius:var(--radius-sm);font-size:.75rem;cursor:pointer;transition:all .15s}
.btn-link-report:hover{background:var(--haier-blue-bg);border-style:solid}

.todo-linked-report{margin-top:10px;padding:10px 12px;background:var(--haier-blue-bg);border-radius:var(--radius-sm);border:1px solid var(--haier-blue-lighter)}
.tlr-header{margin-bottom:8px}
.tlr-badge{font-size:.72rem;font-weight:600;color:var(--haier-blue-dark);background:#fff;padding:2px 8px;border-radius:4px}
.tlr-fields{display:flex;flex-wrap:wrap;gap:6px}
.tlr-field{flex:1;min-width:120px}
.tlr-field-full{flex-basis:100%}
.tlr-field label{display:block;font-size:.65rem;font-weight:600;color:var(--haier-blue-dark);margin-bottom:1px;text-transform:uppercase;letter-spacing:.3px}
.tlr-input{width:100%;border:1px solid var(--haier-blue-lighter);border-radius:4px;padding:4px 8px;font-size:.8rem;font-family:inherit;background:#fff;transition:border-color .15s}
.tlr-input:focus{border-color:var(--haier-blue);outline:none;box-shadow:0 0 0 2px rgba(0,112,192,.08)}
.tlr-textarea{width:100%;border:1px solid var(--haier-blue-lighter);border-radius:4px;padding:4px 8px;font-size:.8rem;font-family:inherit;line-height:1.5;resize:vertical;background:#fff;min-height:36px;transition:border-color .15s}
.tlr-textarea:focus{border-color:var(--haier-blue);outline:none;box-shadow:0 0 0 2px rgba(0,112,192,.08)}

/* ===== AI hint input ===== */
.ai-hint-row{width:100%;padding:0 0 10px}
.ai-hint-input{width:100%;border:1px solid #DDD6FE;border-radius:var(--radius-sm);padding:7px 10px;font-size:.82rem;font-family:inherit;background:#FAFAFF;transition:border-color .15s}
.ai-hint-input:focus{border-color:#8B5CF6;outline:none;box-shadow:0 0 0 2px rgba(139,92,246,.1)}
.ai-hint-input::placeholder{color:#B4A7D6}

.modal-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:14px}
.modal-actions .ai-hint-row{flex-basis:100%;order:-1}

/* ===== Todo note ===== */
.todo-note{font-size:.78rem;color:var(--haier-gray-light);margin-top:5px;line-height:1.5;padding:4px 8px;background:var(--haier-bg-gray);border-radius:4px;white-space:pre-wrap;word-break:break-word}

/* ===== Drafts ===== */
.draft-count{display:inline-block;background:#E74C3C;color:#fff;font-size:.6rem;font-weight:700;padding:1px 5px;border-radius:8px;margin-left:4px;vertical-align:middle}
.drafts-list{max-height:50vh;overflow-y:auto}
.draft-item{padding:12px;margin-bottom:8px;background:var(--haier-bg-gray);border-radius:var(--radius-sm);border-left:3px solid var(--haier-warning)}
.draft-item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.draft-type{font-size:.72rem;font-weight:600;color:var(--haier-blue-dark);background:var(--haier-blue-bg);padding:1px 8px;border-radius:4px}
.draft-time{font-size:.68rem;color:var(--haier-gray-light)}
.draft-detail{font-size:.8rem;color:var(--haier-gray-dark);line-height:1.5;margin-bottom:8px;word-break:break-word}
.draft-detail code{font-size:.75rem;background:#F1F5F9;padding:1px 4px;border-radius:3px;color:var(--haier-blue-dark)}
.draft-actions{display:flex;gap:6px;justify-content:flex-end}
.draft-actions button{padding:4px 12px;border:none;border-radius:4px;font-size:.78rem;font-weight:600;cursor:pointer;transition:all .15s}
.draft-btn-retry{background:var(--haier-blue);color:#fff}
.draft-btn-retry:hover{box-shadow:0 1px 4px rgba(0,112,192,.3)}
.draft-btn-del{background:#F1F5F9;color:var(--haier-gray)}
.draft-btn-del:hover{background:#FEE2E2;color:var(--haier-danger)}
.drafts-empty{text-align:center;padding:24px;color:var(--haier-gray-light);font-size:.88rem}

/* ===== Error flash ===== */
.error-flash{position:fixed;top:18px;right:18px;background:var(--haier-danger);color:#fff;padding:8px 16px;border-radius:var(--radius-sm);font-size:.82rem;font-weight:600;opacity:0;transition:opacity .25s;z-index:2000;pointer-events:none;max-width:360px}
.error-flash.show{opacity:1}

/* ===== Sidebar drafts entry ===== */
.sidebar-drafts-entry{padding:0 12px 8px}
.sidebar-drafts-entry .nav-item{margin-bottom:0}

/* ===== View toggle ===== */
.view-toggle{display:flex;background:#F1F5F9;border-radius:var(--radius-sm);padding:2px;gap:2px}
.view-btn{padding:5px 12px;border:none;background:transparent;color:var(--haier-gray);font-size:.78rem;font-weight:600;cursor:pointer;border-radius:4px;transition:all .15s}
.view-btn.active{background:#fff;color:var(--haier-blue-dark);box-shadow:0 1px 3px rgba(0,0,0,.08)}

/* ===== Present view ===== */
.todo-list.present-view .todo-actions{display:none}
.todo-list.present-view .todo-link-action{display:none}
.todo-list.present-view .todo-item{cursor:default;padding:14px 20px}
.todo-list.present-view .todo-item:hover{box-shadow:var(--shadow)}

/* Present view: linked report read-only */
.todo-list.present-view .todo-linked-report{pointer-events:none}
.todo-list.present-view .tlr-input,.todo-list.present-view .tlr-textarea{border-color:transparent;background:transparent;pointer-events:none;padding:2px 0;resize:none}

/* Present view: inline editing on dblclick */
.todo-list.present-view .todo-item.pv-editing{border-color:var(--haier-blue-light);box-shadow:var(--shadow-lg)}
.todo-list.present-view .todo-item.pv-editing .todo-actions{display:flex}
.todo-list.present-view .todo-item.pv-editing .todo-link-action{display:block}
.todo-list.present-view .todo-item.pv-editing .todo-linked-report{pointer-events:auto}
.todo-list.present-view .todo-item.pv-editing .tlr-input,.todo-list.present-view .todo-item.pv-editing .tlr-textarea{border-color:var(--haier-blue-lighter);background:#fff;pointer-events:auto;padding:4px 8px;resize:vertical}

/* ===== Report present view ===== */
.report-cards.present-view .rc-left{display:none}
.report-cards.present-view .rc-actions{display:none}
.report-cards.present-view .rc-input,.report-cards.present-view .rc-textarea{border-color:transparent;background:transparent;pointer-events:none;resize:none;padding:2px 0}
.report-cards.present-view .rc-field label{display:none}
.report-cards.present-view .report-card{cursor:default}
.report-cards.present-view .report-card:hover{box-shadow:var(--shadow)}

/* Report present view: dblclick editing */
.report-cards.present-view .report-card.pv-editing{border-color:var(--haier-blue-light);box-shadow:var(--shadow-lg)}
.report-cards.present-view .report-card.pv-editing .rc-left{display:flex}
.report-cards.present-view .report-card.pv-editing .rc-actions{display:block}
.report-cards.present-view .report-card.pv-editing .rc-input,.report-cards.present-view .report-card.pv-editing .rc-textarea{border-color:var(--haier-border);background:#FAFBFC;pointer-events:auto;resize:vertical;padding:6px 10px}
.report-cards.present-view .report-card.pv-editing .rc-field label{display:block}

/* ===== Note inline edit ===== */
.todo-note-empty{color:#ccc;font-style:italic;cursor:text}
.todo-note-edit{width:100%;border:1px solid var(--haier-blue-light);border-radius:4px;padding:4px 8px;font-size:.8rem;font-family:inherit;line-height:1.5;resize:vertical;background:#fff;outline:none;box-shadow:0 0 0 2px rgba(0,112,192,.1)}

/* ===== Bind report button ===== */
.btn-bind-report{border-color:#8B5CF6 !important;color:#6D28D9 !important}
.btn-bind-report:hover{background:#EDE9FE !important;border-color:#6D28D9 !important}

/* ===== Link report modal list ===== */
.link-report-list{max-height:40vh;overflow-y:auto}
.link-report-item{padding:10px 12px;margin-bottom:6px;background:var(--haier-bg-gray);border-radius:var(--radius-sm);cursor:pointer;transition:all .15s;border:1.5px solid transparent}
.link-report-item:hover{border-color:var(--haier-blue);background:var(--haier-blue-bg)}
.link-report-topic{font-size:.88rem;font-weight:600;color:var(--haier-gray-dark)}
.link-report-progress{font-size:.78rem;color:var(--haier-gray-light);margin-top:3px;line-height:1.4}

/* ===== Link week bar & unlink ===== */
.link-week-bar{display:flex;align-items:center;gap:10px;justify-content:center;padding:8px 0 12px}
.link-week-label{font-size:.92rem;font-weight:700;color:var(--haier-blue-dark);min-width:180px;text-align:center}
.tlr-header{display:flex;align-items:center;justify-content:space-between}
.tlr-unlink{border:none;background:transparent;color:var(--haier-gray-light);font-size:.72rem;cursor:pointer;padding:2px 6px;border-radius:4px;transition:all .15s}
.tlr-unlink:hover{background:#FEE2E2;color:var(--haier-danger)}

/* ===== Memo ===== */
.memo-container{flex:1;display:flex;overflow:hidden;margin:0 32px 24px;border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--haier-border)}

.memo-sidebar{width:260px;border-right:1px solid var(--haier-border);display:flex;flex-direction:column;background:#fff;flex-shrink:0;border-radius:var(--radius) 0 0 var(--radius)}
.memo-search{padding:10px 12px;border-bottom:1px solid var(--haier-border)}
.memo-search-input{width:100%;border:1px solid var(--haier-border);border-radius:var(--radius-sm);padding:6px 10px;font-size:.82rem;font-family:inherit;background:var(--haier-bg-gray)}
.memo-search-input:focus{border-color:var(--haier-blue);outline:none;background:#fff}
.memo-list{flex:1;overflow-y:auto}

.memo-item{padding:12px 14px;cursor:pointer;border-bottom:1px solid #f0f3f6;transition:background .12s}
.memo-item:hover{background:var(--haier-bg-gray)}
.memo-item.active{background:var(--haier-blue-bg);border-left:3px solid var(--haier-blue)}
.memo-item-title{font-size:.86rem;font-weight:600;color:var(--haier-gray-dark);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.memo-item-preview{font-size:.75rem;color:var(--haier-gray-light);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.memo-item-time{font-size:.68rem;color:#bbb;margin-top:3px}

.memo-editor{flex:1;display:flex;flex-direction:column;background:#fff;min-width:0;border-radius:0 var(--radius) var(--radius) 0}
.memo-editor-empty{flex:1;display:flex;align-items:center;justify-content:center;color:var(--haier-gray-light);font-size:.95rem}
.memo-editor-active{flex:1;display:flex;flex-direction:column;overflow:hidden}

.memo-toolbar{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--haier-border);flex-shrink:0}
.memo-title-input{flex:1;border:none;background:transparent;font-size:1.1rem;font-weight:700;color:var(--haier-gray-dark);font-family:inherit;outline:none;min-width:0}
.memo-title-input::placeholder{color:#ccc}
.memo-toolbar-right{display:flex;align-items:center;gap:6px;flex-shrink:0}

.memo-view-toggle{display:flex;background:#F1F5F9;border-radius:4px;padding:2px;gap:1px}
.memo-view-btn{width:28px;height:26px;border:none;background:transparent;cursor:pointer;border-radius:3px;font-size:.78rem;color:var(--haier-gray);transition:all .12s}
.memo-view-btn.active{background:#fff;color:var(--haier-blue-dark);box-shadow:0 1px 2px rgba(0,0,0,.08)}

.memo-menu-wrap{position:relative}
.memo-menu-btn{width:28px;height:26px;border:1px solid var(--haier-border);border-radius:4px;background:#fff;cursor:pointer;font-size:.9rem;color:var(--haier-gray);transition:all .12s}
.memo-menu-btn:hover{background:var(--haier-bg-gray)}
.memo-menu{display:none;position:absolute;right:0;top:30px;background:#fff;border:1px solid var(--haier-border);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);z-index:50;min-width:140px}
.memo-menu.show{display:block}
.memo-menu button{display:block;width:100%;text-align:left;border:none;background:transparent;padding:8px 12px;font-size:.82rem;cursor:pointer;transition:background .12s;color:var(--haier-gray-dark)}
.memo-menu button:hover{background:var(--haier-bg-gray)}
.memo-menu-danger{color:var(--haier-danger) !important}
.memo-menu-danger:hover{background:#FEE2E2 !important}

.memo-body{flex:1;display:flex;overflow:hidden}
.memo-edit-pane{flex:1;display:flex;min-width:0}
.memo-preview-pane{flex:1;overflow-y:auto;min-width:0;border-left:1px solid var(--haier-border);padding:14px 16px}
.memo-content-input{flex:1;border:none;background:transparent;font-size:.88rem;color:var(--haier-gray-dark);padding:14px 16px;font-family:'SF Mono','Menlo','Monaco',monospace;line-height:1.7;resize:none;outline:none;tab-size:4}
.memo-content-input::placeholder{color:#ccc;font-family:inherit}
.memo-preview-content{font-size:.88rem;line-height:1.7;color:var(--haier-gray-dark)}
.memo-preview-content h1,.memo-preview-content h2,.memo-preview-content h3,.memo-preview-content h4{color:var(--haier-blue-dark);margin:12px 0 6px}
.memo-preview-content h1{font-size:1.2rem;border-bottom:1px solid var(--haier-border);padding-bottom:4px}
.memo-preview-content h2{font-size:1.05rem}
.memo-preview-content h3{font-size:.95rem}
.memo-preview-content p{margin:5px 0}
.memo-preview-content ul,.memo-preview-content ol{padding-left:20px;margin:4px 0}
.memo-preview-content li{margin:2px 0;font-size:.86rem}
.memo-preview-content code{background:#F1F5F9;padding:1px 4px;border-radius:3px;font-size:.82rem;font-family:'SF Mono',monospace}
.memo-preview-content pre{background:#F1F5F9;padding:10px 12px;border-radius:var(--radius-sm);overflow-x:auto;margin:6px 0}
.memo-preview-content pre code{background:transparent;padding:0}
.memo-preview-content blockquote{border-left:3px solid var(--haier-blue-light);padding:4px 12px;margin:6px 0;color:var(--haier-gray);background:#FAFCFF}
.memo-preview-content strong{color:var(--haier-blue-dark)}
.memo-preview-content a{color:var(--haier-blue)}

/* Memo view modes */
.memo-body.view-edit .memo-preview-pane{display:none}
.memo-body.view-preview .memo-edit-pane{display:none}
.memo-body.view-preview .memo-preview-pane{border-left:none}
.memo-body.view-split .memo-edit-pane,.memo-body.view-split .memo-preview-pane{flex:1}

.memo-editor-footer{display:flex;align-items:center;justify-content:space-between;padding:6px 14px;border-top:1px solid var(--haier-border);flex-shrink:0}
.memo-updated{font-size:.72rem;color:var(--haier-gray-light)}
.memo-save-hint{font-size:.68rem;color:#ccc}

/* Memo history */
.memo-history-list{max-height:50vh;overflow-y:auto}
.memo-history-item{padding:10px 12px;margin-bottom:6px;background:var(--haier-bg-gray);border-radius:var(--radius-sm);cursor:pointer;transition:all .12s;border:1.5px solid transparent}
.memo-history-item:hover{border-color:var(--haier-blue);background:var(--haier-blue-bg)}
.memo-history-time{font-size:.72rem;color:var(--haier-gray-light);margin-bottom:4px}
.memo-history-preview{font-size:.8rem;color:var(--haier-gray-dark);line-height:1.4;max-height:60px;overflow:hidden;white-space:pre-wrap}
.memo-history-empty{text-align:center;padding:24px;color:var(--haier-gray-light);font-size:.85rem}

.memo-list-empty{text-align:center;padding:32px 16px;color:var(--haier-gray-light);font-size:.85rem}

/* ===== News ===== */
.news-date{font-size:.78rem;color:var(--haier-gray-light);font-weight:600}
.news-loading{display:flex;align-items:center;gap:10px;justify-content:center;padding:40px 0;color:var(--haier-gray)}
.news-loading span{font-size:.88rem}

.news-columns{display:flex;gap:16px;overflow-x:auto;padding-bottom:12px;scroll-snap-type:x mandatory}
.news-columns::-webkit-scrollbar{height:6px}
.news-columns::-webkit-scrollbar-thumb{background:#ccc;border-radius:3px}

.news-column{min-width:280px;max-width:320px;flex-shrink:0;scroll-snap-align:start}
.news-col-header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background:#fff;border-radius:var(--radius) var(--radius) 0 0;border-bottom:2px solid var(--haier-border)}
.news-col-title{font-size:.88rem;font-weight:700;color:var(--haier-gray-dark)}
.news-col-count{font-size:.68rem;color:var(--haier-gray-light);background:var(--haier-bg-gray);padding:1px 6px;border-radius:8px}
.news-col-loading{text-align:center;padding:20px;color:var(--haier-gray-light);font-size:.82rem}
.news-col-loading .ai-spinner{display:inline-block;width:14px;height:14px;vertical-align:middle;margin-right:4px}

.news-col-body{background:#fff;border-radius:0 0 var(--radius) var(--radius);max-height:calc(100vh - 200px);overflow-y:auto}

.news-item{padding:10px 12px;border-bottom:1px solid #f0f3f6;cursor:pointer;transition:background .12s;display:block;text-decoration:none;color:inherit}
.news-item:hover{background:var(--haier-blue-bg)}
.news-item:last-child{border-bottom:none}
.news-item-rank{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:4px;font-size:.68rem;font-weight:700;margin-right:6px;flex-shrink:0;background:var(--haier-bg-gray);color:var(--haier-gray-light)}
.news-item-rank.top3{background:var(--haier-blue);color:#fff}
.news-item-title{font-size:.82rem;font-weight:600;color:var(--haier-gray-dark);line-height:1.4;display:inline}
.news-item-new{font-size:.58rem;background:#E74C3C;color:#fff;padding:0 4px;border-radius:4px;font-weight:700;margin-left:4px;vertical-align:middle}
.news-item-summary{font-size:.75rem;color:var(--haier-gray-light);margin-top:4px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.news-item-meta{display:flex;align-items:center;gap:6px;margin-top:4px}
.news-item-source{font-size:.68rem;color:var(--haier-blue)}
.news-item-refresh{width:20px;height:20px;border:none;background:transparent;color:#ccc;cursor:pointer;border-radius:3px;font-size:.68rem;margin-left:auto;transition:all .12s}
.news-item-refresh:hover{background:var(--haier-blue-bg);color:var(--haier-blue)}

.news-col-header.cat-IT科技{border-bottom-color:#3B82F6}
.news-col-header.cat-科技{border-bottom-color:#0EA5E9}
.news-col-header.cat-AI人工智能{border-bottom-color:#8B5CF6}
.news-col-header.cat-项目管理{border-bottom-color:#10B981}
.news-col-header.cat-编程开发{border-bottom-color:#F59E0B}
.news-col-header.cat-出海国际化{border-bottom-color:#EC4899}

/* ===== News title translation ===== */
.news-item-title-cn{font-size:.75rem;color:var(--haier-gray);margin-top:2px;line-height:1.3;font-weight:400}
.news-item-summary-cn{font-size:.72rem;color:var(--haier-blue);margin-top:2px;line-height:1.3;font-style:italic}

/* ===== Translate ===== */
.trans-lang-bar{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:16px}
.trans-lang-btn{padding:6px 20px;border:1px solid var(--haier-border);border-radius:20px;background:#fff;font-size:.88rem;font-weight:600;cursor:pointer;transition:all .15s;color:var(--haier-gray)}
.trans-lang-btn.active{background:var(--haier-blue);color:#fff;border-color:var(--haier-blue)}
.trans-swap-btn{width:36px;height:36px;border:1px solid var(--haier-border);border-radius:50%;background:#fff;cursor:pointer;font-size:1.1rem;display:flex;align-items:center;justify-content:center;transition:all .15s;color:var(--haier-blue)}
.trans-swap-btn:hover{background:var(--haier-blue);color:#fff;transform:rotate(180deg)}

.trans-container{display:flex;gap:16px;min-height:300px}
.trans-panel{flex:1;display:flex;flex-direction:column;background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;min-width:0}
.trans-input{flex:1;border:none;padding:16px 18px;font-size:.92rem;font-family:inherit;line-height:1.7;resize:none;outline:none;min-height:240px;color:var(--haier-gray-dark)}
.trans-input::placeholder{color:#ccc}
.trans-output{flex:1;padding:16px 18px;font-size:.92rem;line-height:1.7;color:var(--haier-gray-dark);overflow-y:auto;min-height:240px;white-space:pre-wrap;word-break:break-word}
.trans-placeholder{color:#ccc}
.trans-panel-footer{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;border-top:1px solid var(--haier-border);background:var(--haier-bg-gray)}
.trans-char-count{font-size:.72rem;color:var(--haier-gray-light)}
.trans-status{font-size:.75rem;color:var(--haier-gray-light)}
.trans-btn{padding:6px 20px}
.trans-copy-btn{padding:5px 14px;font-size:.78rem}
.trans-src{border:2px solid transparent}
.trans-src:focus-within{border-color:var(--haier-blue-light)}
.trans-tgt{border:2px solid transparent;background:#FAFCFF}

/* ===== Todo drag ===== */
.todo-drag{color:#ccc;cursor:grab;font-size:1rem;user-select:none;line-height:1;flex-shrink:0}
.todo-drag:active{cursor:grabbing;color:var(--haier-blue)}
.todo-left{display:flex;flex-direction:column;align-items:center;gap:6px;flex-shrink:0;margin-top:2px}
.todo-item.todo-dragging{opacity:.3;transform:scale(.98)}
.todo-item.todo-drag-over{box-shadow:0 -2px 0 0 var(--haier-blue) inset;background:var(--haier-blue-bg)}
.todo-list.present-view .todo-drag{display:none}

/* ===== Translate back ===== */
.trans-back-section{margin-top:20px}
.trans-back-header{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.trans-back-label{font-size:.9rem;font-weight:700;color:var(--haier-gray-dark)}
.trans-back-hint{font-size:.75rem;color:var(--haier-gray-light)}
.trans-back-original{background:#F8F9FA;color:var(--haier-gray)}
.trans-back-tag{font-size:.7rem;font-weight:600;color:var(--haier-gray-light)}

/* Progress Entries */
.rc-field-progress label { display: flex; align-items: center; gap: 8px; }
.btn-add-progress {
    padding: 3px 12px; border: 1px dashed #0070C0; background: transparent;
    color: #0070C0; border-radius: 4px; font-size: .72rem; cursor: pointer;
    transition: all .15s; line-height: 1.4;
}
.btn-add-progress:hover { background: #D6EAF8; }
.progress-entries { margin-top: 6px; }
.progress-entry {
    display: flex; align-items: flex-start; gap: 8px; margin-bottom: 6px;
    padding: 6px 8px; background: #F8FAFC; border-radius: 6px; border: 1px solid #E2E8F0;
}
.progress-entry:hover { border-color: #0070C0; }
.pe-date {
    width: 130px; flex-shrink: 0; padding: 4px 6px; border: 1px solid #D9E2EC;
    border-radius: 4px; font-size: .82rem; font-family: inherit; color: #0070C0; font-weight: 600;
}
.pe-content {
    flex: 1; border: none; background: transparent; font-size: .85rem;
    font-family: inherit; line-height: 1.5; resize: none; padding: 4px 0;
    min-height: 24px; overflow: hidden;
}
.pe-content:focus { outline: none; }
.pe-del {
    flex-shrink: 0; width: 22px; height: 22px; border: none; background: transparent;
    color: #ccc; cursor: pointer; font-size: .8rem; border-radius: 4px;
    display: flex; align-items: center; justify-content: center; margin-top: 2px;
}
.pe-del:hover { background: #FDEDEC; color: #E74C3C; }
.progress-empty { font-size: .8rem; color: #999; padding: 8px 0; }

/* Dual Translation Columns */
.trans-dual-columns { display: flex; gap: 0; }
.trans-channel { flex: 1; display: flex; flex-direction: column; min-width: 0; }
.trans-channel-header {
    font-size: .78rem; font-weight: 700; padding: 8px 12px;
    color: #0070C0; background: #F0F7FF; border-bottom: 2px solid #D6EAF8;
}
.trans-channel:last-child .trans-channel-header { color: #D97706; background: #FFFBEB; border-bottom-color: #FEF3C7; }
.trans-channel-block { border-bottom: 1px solid #f0f0f0; }
.trans-channel-block:last-child { border-bottom: none; }
.trans-channel-label { font-size: .68rem; color: #999; padding: 6px 12px 0; }
.trans-channel-back { background: #FAFBFC; }
.trans-channel .trans-output { padding: 8px 12px; font-size: .88rem; line-height: 1.6; min-height: 60px; overflow-y: auto; }
.trans-channel .trans-panel-footer { padding: 4px 12px 6px; }
.trans-dual-divider { width: 1px; background: #E2E8F0; flex-shrink: 0; }
.trans-back-original-bar {
    margin-top: 12px; padding: 10px 14px; background: #F8FAFC;
    border: 1px solid #E2E8F0; border-radius: 8px; font-size: .85rem; color: #666; line-height: 1.5;
}
.trans-back-original-bar .trans-back-tag { font-size: .72rem; font-weight: 600; color: #0070C0; margin-right: 8px; }
.trans-back-original-text { margin-top: 4px; white-space: pre-wrap; }

/* ===== Markdown table ===== */
.md-table-wrap{overflow-x:auto;margin:8px 0}
.md-table{width:100%;border-collapse:collapse;font-size:.82rem}
.md-table th{padding:6px 10px;text-align:left;font-weight:600;background:var(--haier-blue-bg);color:var(--haier-blue-dark);border:1px solid var(--haier-border);white-space:nowrap}
.md-table td{padding:6px 10px;border:1px solid var(--haier-border);color:var(--haier-gray-dark);line-height:1.5}
.md-table tr:nth-child(even){background:#FAFBFC}
.md-table tr:hover{background:#F0F7FF}

/* ===== Category manage ===== */
.btn-cat-manage{width:28px;height:28px;border:1px solid var(--haier-border);border-radius:4px;background:#fff;cursor:pointer;font-size:.8rem;transition:all .15s;color:var(--haier-gray)}
.btn-cat-manage:hover{background:var(--haier-blue-bg);color:var(--haier-blue)}
.cat-add-row{display:flex;gap:8px;margin-bottom:14px}
.cat-input{flex:1;border:1px solid var(--haier-border);border-radius:var(--radius-sm);padding:6px 10px;font-size:.84rem;font-family:inherit}
.cat-input:focus{border-color:var(--haier-blue);outline:none}
.cat-list{max-height:40vh;overflow-y:auto}
.cat-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid #f0f3f6}
.cat-item:last-child{border-bottom:none}
.cat-item-name{flex:1;font-size:.86rem;color:var(--haier-gray-dark)}
.cat-item-name input{border:1px solid var(--haier-border);border-radius:4px;padding:3px 8px;font-size:.84rem;font-family:inherit;width:100%}
.cat-item-count{font-size:.7rem;color:var(--haier-gray-light);background:var(--haier-bg-gray);padding:1px 6px;border-radius:8px}
.cat-item-actions button{border:none;background:transparent;cursor:pointer;font-size:.75rem;color:var(--haier-gray-light);padding:3px 6px;border-radius:4px;transition:all .12s}
.cat-item-actions button:hover{background:var(--haier-blue-bg);color:var(--haier-blue)}
.cat-item-actions .cat-del:hover{background:#FEE2E2;color:var(--haier-danger)}
.cat-item-actions .cat-del.disabled{opacity:.3;cursor:not-allowed;pointer-events:none}

/* ===== Memo Markdown toolbar ===== */
.memo-md-toolbar{display:flex;align-items:center;gap:2px;padding:4px 10px;border-bottom:1px solid var(--haier-border);flex-shrink:0;flex-wrap:wrap;background:#FAFBFC}
.memo-md-toolbar button{width:28px;height:26px;border:none;background:transparent;cursor:pointer;border-radius:3px;font-size:.78rem;font-weight:700;color:var(--haier-gray);transition:all .12s;font-family:inherit;display:flex;align-items:center;justify-content:center}
.memo-md-toolbar button:hover{background:var(--haier-blue-bg);color:var(--haier-blue-dark)}
.memo-md-sep{width:1px;height:18px;background:var(--haier-border);margin:0 4px}

/* ===== Memo preview extras ===== */
.memo-preview-content del{text-decoration:line-through;color:var(--haier-gray-light)}
.memo-preview-content hr{border:none;border-top:1px solid var(--haier-border);margin:12px 0}
.memo-preview-content .checklist{list-style:none;margin-left:-20px}
.memo-preview-content .checklist.checked{color:var(--haier-gray-light);text-decoration:line-through}

/* ===== Gantt Chart ===== */
.gantt-hint{font-size:.78rem;color:var(--haier-gray-light);text-align:center;margin-bottom:12px}
.gantt-wrapper{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:0;display:flex;overflow:hidden}
.gantt-labels{flex-shrink:0;overflow-y:auto;border-right:1px solid var(--haier-border);background:#fff;z-index:10}
.gantt-timeline-wrap{flex:1;overflow-x:auto;overflow-y:auto;position:relative}
.gantt-chart{position:relative}

.gantt-header{display:flex;position:relative}
.gantt-header-cell{flex:none;text-align:center;padding:6px 0;font-size:.75rem;font-weight:600;color:var(--haier-blue-dark);min-width:30px;border-left:1px solid #f0f3f6;box-sizing:border-box}
.gantt-header-cell .gantt-week-date{font-size:.65rem;color:var(--haier-gray-light);font-weight:400}

.gantt-today-line{position:absolute;top:0;bottom:0;width:2px;background:#E74C3C;z-index:10;pointer-events:none}
.gantt-today-label{position:absolute;top:-18px;font-size:.6rem;color:#E74C3C;font-weight:600;transform:translateX(-50%);white-space:nowrap}

.gantt-rows{position:relative}
.gantt-row{display:flex;align-items:center;min-height:36px;border-bottom:1px solid #f5f7fa}
.gantt-row:hover{background:#FAFCFF}
.gantt-row-label{display:flex;align-items:center;gap:6px;padding:4px 8px;font-size:.82rem;position:relative;background:#fff}
.gantt-row:hover .gantt-row-label{background:#FAFCFF}
.gantt-row-drag{cursor:grab;color:#ccc;font-size:.9rem;user-select:none}
.gantt-row-drag:active{cursor:grabbing;color:var(--haier-blue)}
.gantt-row-name{font-weight:600;color:var(--haier-gray-dark);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}
.gantt-row-name:hover{color:var(--haier-blue)}
.gantt-row-owner{font-size:.72rem;color:var(--haier-gray-light);white-space:nowrap}
.gantt-row-actions{margin-left:auto;display:flex;gap:2px}
.gantt-row-actions button{width:20px;height:20px;border:none;background:transparent;cursor:pointer;font-size:.68rem;color:#ccc;border-radius:3px;transition:all .12s}
.gantt-row-actions button:hover{background:var(--haier-blue-bg);color:var(--haier-blue)}
.gantt-row-actions .gantt-del:hover{background:#FEE2E2;color:var(--haier-danger)}

.gantt-row-timeline{flex:1;position:relative;min-height:28px}
.gantt-bar{position:absolute;top:8px;height:22px;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:.68rem;font-weight:600;color:#fff;min-width:20px;transition:opacity .12s;user-select:none;z-index:5}
.gantt-bar:hover{opacity:.85;box-shadow:0 2px 6px rgba(0,0,0,.15)}
.gantt-bar-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 6px}

.gantt-bar-resize{position:absolute;top:0;width:8px;height:100%;cursor:ew-resize;z-index:6}
.gantt-bar-resize-left{left:0;border-radius:4px 0 0 4px}
.gantt-bar-resize-right{right:0;border-radius:0 4px 4px 0}

.gantt-milestone{position:absolute;top:10px;width:14px;height:14px;transform:rotate(45deg);z-index:5;cursor:pointer}
.gantt-milestone:hover{opacity:.8}

.gantt-grid-line{position:absolute;top:0;bottom:0;width:1px;background:#f0f3f6;pointer-events:none}

/* Gantt task edit modal */
#ganttProjectSelect{padding:5px 10px;border:1px solid var(--haier-border);border-radius:var(--radius-sm);font-size:.82rem;background:#fff;max-width:180px}
.gantt-color-options{display:flex;gap:6px;flex-wrap:wrap}
.gantt-color-opt{width:24px;height:24px;border-radius:50%;cursor:pointer;border:2px solid transparent;transition:all .12s}
.gantt-color-opt:hover,.gantt-color-opt.active{border-color:var(--haier-gray-dark);transform:scale(1.15)}

/* Gantt view toggle */
.gantt-hint{display:flex;align-items:center;gap:12px;margin-bottom:12px;font-size:.78rem;color:var(--haier-gray-light)}
.gantt-view-toggle{display:flex;background:#F1F5F9;border-radius:4px;padding:2px;gap:1px}
.gantt-view-btn{padding:4px 12px;border:none;background:transparent;cursor:pointer;border-radius:3px;font-size:.78rem;font-weight:600;color:var(--haier-gray);transition:all .12s}
.gantt-view-btn.active{background:#fff;color:var(--haier-blue-dark);box-shadow:0 1px 2px rgba(0,0,0,.08)}

/* Gantt label resizer */
.gantt-labels{position:relative}
.gantt-label-resizer{position:absolute;right:0;top:0;bottom:0;width:4px;cursor:col-resize;background:transparent;z-index:12;transition:background .15s}
.gantt-label-resizer:hover,.gantt-label-resizer:active{background:var(--haier-blue-light)}
.gantt-row-name{max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}

.gantt-row.gantt-drag-over{box-shadow:0 -2px 0 0 var(--haier-blue) inset;background:var(--haier-blue-bg)}

/* Gantt phase (stage) */
.gantt-phase{position:absolute;top:6px;height:26px;border-radius:4px;cursor:pointer;background:rgba(0,112,192,.06);border:1.5px solid rgba(0,112,192,.25);z-index:3;display:flex;align-items:center;user-select:none}
.gantt-phase:hover{background:rgba(0,112,192,.1);border-color:rgba(0,112,192,.4)}
.gantt-phase-text{font-size:.7rem;font-weight:700;color:var(--haier-blue-dark);padding:0 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gantt-row-phase .gantt-row-label{background:#F0F7FF}
.gantt-row-phase .gantt-row-name{font-weight:800;color:var(--haier-blue-dark);font-size:.88rem}
.gantt-row-phase{background:#F8FBFF}

.gantt-label-header{border-bottom:2px solid var(--haier-border);background:#fff}
.gantt-timeline-row{position:relative;overflow:visible}
.gantt-timeline-row.gantt-row-phase{background:#F8FBFF}

/* Gantt tips */
.gantt-tip{font-size:.7rem;flex-shrink:0;cursor:help;line-height:1}
.gantt-bar-tip{position:absolute;top:0;font-size:.7rem;line-height:1;z-index:10;pointer-events:auto}
.gantt-bar-tip-risk{width:18px;height:18px;display:flex;align-items:center;justify-content:center;background:#FEF3C7;border:2px solid #F59E0B;border-radius:50%;font-size:.6rem;cursor:help;box-shadow:0 1px 3px rgba(0,0,0,.15)}
.gantt-bar-tip-pri{width:18px;height:18px;background:#fff;color:#E74C3C;border:2px solid #E74C3C;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.65rem;font-weight:900;cursor:help;box-shadow:0 1px 3px rgba(0,0,0,.15)}

/* ===== Login ===== */
.login-overlay{position:fixed;inset:0;background:linear-gradient(135deg,#003D6B 0%,#0070C0 50%,#00A0E9 100%);z-index:9999;display:flex;align-items:center;justify-content:center}
.login-overlay.hidden{display:none}
.login-card{background:#fff;border-radius:16px;padding:40px 36px;width:360px;max-width:90vw;box-shadow:0 20px 60px rgba(0,0,0,.2);text-align:center}
.login-logo{width:56px;height:56px;background:linear-gradient(135deg,#00A0E9,#0070C0);border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:1.6rem;font-weight:800;color:#fff;margin:0 auto 16px}
.login-title{font-size:1.3rem;font-weight:700;color:var(--haier-gray-dark);margin-bottom:24px}
.login-field{margin-bottom:14px}
.login-field input{width:100%;padding:10px 14px;border:1.5px solid var(--haier-border);border-radius:8px;font-size:.92rem;font-family:inherit;outline:none;transition:border-color .15s}
.login-field input:focus{border-color:var(--haier-blue)}
.login-error{font-size:.82rem;color:var(--haier-danger);min-height:20px;margin-bottom:8px}
.login-btn{width:100%;padding:11px;background:linear-gradient(135deg,#0070C0,#005A9E);color:#fff;border:none;border-radius:8px;font-size:.95rem;font-weight:600;cursor:pointer;transition:all .15s}
.login-btn:hover{box-shadow:0 4px 12px rgba(0,112,192,.3)}
.login-btn:disabled{opacity:.5;cursor:not-allowed}

/* ===== Knowledge Base ===== */
.kb-container{display:flex;gap:16px;flex:1;overflow:hidden;padding:0 32px 24px}
.kb-files-panel{width:380px;flex-shrink:0;background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);display:flex;flex-direction:column;overflow:hidden}
.kb-files-header{padding:10px 14px;font-size:.88rem;font-weight:700;color:var(--haier-blue-dark);border-bottom:1px solid var(--haier-border)}
.kb-files-list{flex:1;overflow-y:auto;padding:8px}

.kb-file-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:var(--radius-sm);margin-bottom:4px;transition:background .12s;border:1px solid transparent}
.kb-file-item:hover{background:var(--haier-bg-gray);border-color:var(--haier-border)}
.kb-file-icon{font-size:1.2rem;flex-shrink:0}
.kb-file-info{flex:1;min-width:0}
.kb-file-name{font-size:.82rem;font-weight:600;color:var(--haier-gray-dark);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}
.kb-file-name:hover{color:var(--haier-blue)}
.kb-file-meta{font-size:.68rem;color:var(--haier-gray-light);margin-top:2px}
.kb-file-actions{display:flex;gap:3px;flex-shrink:0}
.kb-file-actions button{width:24px;height:24px;border:none;background:transparent;cursor:pointer;border-radius:4px;font-size:.72rem;color:var(--haier-gray-light);transition:all .12s}
.kb-file-actions button:hover{background:var(--haier-blue-bg);color:var(--haier-blue)}
.kb-file-actions .kb-del:hover{background:#FEE2E2;color:var(--haier-danger)}
.kb-file-analyzed{font-size:.6rem;background:var(--haier-success);color:#fff;padding:1px 5px;border-radius:4px;font-weight:600}
.kb-file-cat{font-size:.6rem;background:var(--haier-bg-gray);color:var(--haier-gray);padding:1px 5px;border-radius:4px}
.kb-files-empty{text-align:center;padding:24px;color:var(--haier-gray-light);font-size:.85rem}

.kb-chat-panel{flex:1;background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);display:flex;flex-direction:column;overflow:hidden;min-width:0}
.kb-chat-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;font-size:.88rem;font-weight:700;color:var(--haier-blue-dark);border-bottom:1px solid var(--haier-border)}
.kb-chat-clear{border:none;background:transparent;cursor:pointer;font-size:.8rem;color:var(--haier-gray-light);padding:2px 6px;border-radius:4px}
.kb-chat-clear:hover{background:#FEE2E2;color:var(--haier-danger)}
.kb-chat-messages{flex:1;overflow-y:auto;padding:12px 14px}
.kb-chat-msg{margin-bottom:12px;display:flex;gap:8px}
.kb-chat-msg.user{justify-content:flex-end}
.kb-chat-msg.user .kb-chat-bubble{background:var(--haier-blue);color:#fff;border-radius:12px 12px 2px 12px}
.kb-chat-msg.assistant .kb-chat-bubble{background:var(--haier-bg-gray);color:var(--haier-gray-dark);border-radius:12px 12px 12px 2px}
.kb-chat-bubble{max-width:80%;padding:10px 14px;font-size:.86rem;line-height:1.6;word-break:break-word}
.kb-chat-bubble .ai-content{font-size:.86rem}
.kb-chat-refs{font-size:.72rem;color:var(--haier-blue);margin-top:6px;font-style:italic}
.kb-chat-input-wrap{display:flex;gap:8px;padding:10px 14px;border-top:1px solid var(--haier-border)}
.kb-chat-input{flex:1;border:1px solid var(--haier-border);border-radius:var(--radius-sm);padding:8px 10px;font-size:.85rem;font-family:inherit;resize:none;outline:none}
.kb-chat-input:focus{border-color:var(--haier-blue)}
.kb-chat-send{flex-shrink:0;padding:8px 16px}
.kb-chat-typing{font-size:.82rem;color:var(--haier-gray-light);padding:8px 0}

.settings-shell{max-width:1080px}
.settings-section{background:#fff;border:1px solid var(--haier-border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}
.settings-section-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:18px 20px;border-bottom:1px solid var(--haier-border)}
.settings-section-header h2{font-size:1rem;color:var(--haier-blue-dark);margin-bottom:4px}
.settings-section-header p{font-size:.82rem;color:var(--haier-gray);line-height:1.5}
.settings-user-badge{font-size:.75rem;color:var(--haier-blue);background:var(--haier-blue-bg);border:1px solid #CFE8FA;border-radius:999px;padding:4px 10px;white-space:nowrap}
.settings-alert{margin:14px 20px 0;padding:10px 12px;background:#FFF7ED;border:1px solid #FED7AA;color:#9A3412;border-radius:var(--radius-sm);font-size:.84rem}
.user-table-wrap{overflow-x:auto}
.user-table{width:100%;border-collapse:collapse;font-size:.84rem}
.user-table th{background:#F8FAFC;color:var(--haier-gray);font-size:.72rem;text-align:left;text-transform:uppercase;letter-spacing:.02em;padding:10px 14px;border-bottom:1px solid var(--haier-border);white-space:nowrap}
.user-table td{padding:12px 14px;border-bottom:1px solid #EEF2F7;color:var(--haier-gray-dark);vertical-align:middle;white-space:nowrap}
.user-table tr:last-child td{border-bottom:none}
.user-role{display:inline-flex;align-items:center;background:#EEF6FF;color:var(--haier-blue);border-radius:999px;padding:2px 8px;font-size:.72rem;font-weight:700}
.user-scope{display:inline-flex;align-items:center;background:#F1F5F9;color:#475569;border-radius:999px;padding:2px 8px;font-size:.72rem;font-weight:700}
.user-scope.all{background:#F0FDF4;color:#047857}
.user-status{display:inline-flex;align-items:center;background:#ECFDF5;color:#047857;border-radius:999px;padding:2px 8px;font-size:.72rem;font-weight:700}
.user-status.disabled{background:#F1F5F9;color:#64748B}
.user-actions{display:flex;gap:6px}
.user-actions button{border:1px solid var(--haier-border);background:#fff;color:var(--haier-gray);border-radius:4px;padding:4px 8px;font-size:.74rem;cursor:pointer;transition:all .12s}
.user-actions button:hover{border-color:var(--haier-blue);color:var(--haier-blue);background:var(--haier-blue-bg)}
.user-empty{text-align:center;color:var(--haier-gray-light);padding:26px !important}

/* ===== Recur tag ===== */
.tag-recur{background:#EDE9FE;color:#6D28D9}

.login-remember{display:flex;align-items:center;gap:6px;font-size:.82rem;color:var(--haier-gray);margin-bottom:14px;cursor:pointer;justify-content:center}
.login-remember input{accent-color:var(--haier-blue);cursor:pointer}

/* Gantt subtasks */
.gantt-collapse-btn{cursor:pointer;font-size:.6rem;color:var(--haier-gray-light);width:16px;text-align:center;flex-shrink:0;user-select:none;transition:color .12s}
.gantt-collapse-btn:hover{color:var(--haier-blue)}
.gantt-row-child .gantt-row-name{font-size:.78rem;font-weight:400;color:var(--haier-gray)}
.gantt-add-child{width:20px;height:20px;border:1px dashed var(--haier-border);border-radius:3px;background:transparent;cursor:pointer;font-size:.7rem;color:var(--haier-gray-light);transition:all .12s;display:flex;align-items:center;justify-content:center}
.gantt-add-child:hover{border-color:var(--haier-blue);color:var(--haier-blue);background:var(--haier-blue-bg)}

/* Gantt presentation mode */
.gantt-present-overlay{position:fixed;inset:0;background:#fff;z-index:9000;display:flex;flex-direction:column;overflow:hidden}
.gantt-present-header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid var(--haier-border);flex-shrink:0}
.gantt-present-title{font-size:1.3rem;font-weight:800;color:var(--haier-blue-dark)}
.gantt-present-close{padding:6px 16px;border:1px solid var(--haier-border);border-radius:var(--radius-sm);background:#fff;cursor:pointer;font-size:.85rem;font-weight:600;color:var(--haier-gray);transition:all .15s}
.gantt-present-close:hover{background:var(--haier-blue);color:#fff}
.gantt-present-body{flex:1;overflow:auto;padding:16px}
.gantt-present-body .gantt-wrapper{box-shadow:none;border-radius:0}
.gantt-present-body .gantt-row-actions{display:none}
.gantt-present-body .gantt-add-child{display:none}
.gantt-present-body .gantt-row-drag{display:none}
.gantt-present-body .gantt-bar-resize{display:none}
.gantt-present-info{display:flex;gap:20px;padding:12px 24px;border-top:1px solid var(--haier-border);flex-shrink:0;font-size:.78rem;color:var(--haier-gray)}
.gantt-present-info span{display:flex;align-items:center;gap:4px}
.gantt-present-legend{width:14px;height:14px;border-radius:3px;display:inline-block}
