    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }

    body {
      font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
      background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
      min-height: 100vh;
      color: #333;
    }

    .container {
      max-width: 1200px;
      margin: 0 auto;
      padding: 20px;
    }

    .header {
      text-align: center;
      margin-bottom: 30px;
      color: white;
    }

    .header h1 {
      font-size: 2.5em;
      margin-bottom: 10px;
      text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
    }

    .nav-tabs {
      display: flex;
      justify-content: center;
      margin-bottom: 30px;
      background: rgba(255,255,255,0.1);
      border-radius: 10px;
      padding: 5px;
    }

    .nav-tab {
      flex: 1;
      padding: 15px 20px;
      text-align: center;
      color: white;
      cursor: pointer;
      border-radius: 8px;
      transition: all 0.3s ease;
      font-weight: 500;
    }

    .nav-tab.active {
      background: white;
      color: #667eea;
      box-shadow: 0 4px 15px rgba(0,0,0,0.1);
    }

    .nav-tab:hover:not(.active) {
      background: rgba(255,255,255,0.2);
    }

    .tab-content {
      display: none;
      background: white;
      border-radius: 15px;
      padding: 30px;
      box-shadow: 0 10px 30px rgba(0,0,0,0.2);
    }

    .tab-content.active {
      display: block;
    }

    .section {
      margin-bottom: 30px;
    }

    .section h2 {
      color: #667eea;
      margin-bottom: 20px;
      font-size: 1.5em;
    }

    .section-head {
      display: flex;
      justify-content: space-between;
      align-items: center;
      gap: 10px;
      margin-bottom: 20px;
      flex-wrap: wrap;
    }

    .section-head h2 {
      margin-bottom: 0;
    }

    .section-head .head-actions {
      display: flex;
      gap: 8px;
      flex-wrap: wrap;
    }

    .muted {
      color: #999;
      font-size: 12px;
      margin-left: 8px;
    }

    /* ---------- 速记箱 ---------- */
    .note-editor {
      display: flex;
      flex-direction: column;
      gap: 10px;
      margin-bottom: 20px;
    }

    .note-editor textarea {
      width: 100%;
      padding: 12px;
      border: 1px solid #e0e0e0;
      border-radius: 8px;
      font-size: 14px;
      resize: vertical;
    }

    .note-editor-row {
      display: flex;
      gap: 10px;
      align-items: center;
    }

    .note-item {
      background: #f8f9fe;
      border: 1px solid #e8eaf6;
      border-radius: 10px;
      padding: 12px 14px;
      margin-bottom: 10px;
      display: flex;
      justify-content: space-between;
      gap: 12px;
      align-items: flex-start;
    }

    .note-item .note-text {
      flex: 1;
      color: #333;
      white-space: pre-wrap;
      word-break: break-word;
    }

    .note-item .note-meta {
      font-size: 12px;
      color: #999;
      margin-top: 6px;
      display: flex;
      gap: 8px;
      align-items: center;
    }

    .note-item .note-actions {
      display: flex;
      gap: 6px;
      flex-shrink: 0;
    }

    .note-item .btn {
      padding: 4px 12px;
      font-size: 13px;
    }

    .note-cat-tag {
      display: inline-block;
      padding: 1px 8px;
      border-radius: 10px;
      font-size: 11px;
      background: #eef1ff;
      color: #667eea;
    }

    /* ---------- 速记箱筛选与收件箱 ---------- */
    .note-toolbar {
      display: flex;
      flex-direction: column;
      gap: 8px;
      margin-bottom: 14px;
    }
    .note-toolbar-row {
      display: flex;
      align-items: center;
      gap: 8px;
      flex-wrap: wrap;
    }
    .note-tool-label {
      font-size: 12px;
      color: #888;
      flex-shrink: 0;
    }
    .note-filter-tabs {
      display: flex;
      gap: 6px;
      flex-wrap: wrap;
      align-items: center;
    }
    .note-filter-tab {
      padding: 4px 12px;
      border: 1px solid #ddd;
      border-radius: 16px;
      background: white;
      cursor: pointer;
      font-size: 12px;
      color: #555;
      transition: all 0.2s;
    }
    .note-filter-tab:hover { border-color: #667eea; color: #667eea; }
    .note-filter-tab.active { background: #667eea; color: white; border-color: #667eea; }
    .note-filter-tab .cnt {
      font-size: 11px;
      opacity: 0.75;
      margin-left: 3px;
    }
    .note-filter-tab.active .cnt { opacity: 0.9; }
    .note-filter-tab.archived-tab.active { background: #9aa0b5; border-color: #9aa0b5; }
    .note-sort-btn {
      padding: 4px 12px;
      border: 1px solid #ddd;
      border-radius: 16px;
      background: white;
      cursor: pointer;
      font-size: 12px;
      color: #555;
    }
    .note-sort-btn:hover { border-color: #667eea; color: #667eea; }
    .note-sort-btn.active { background: #eef1ff; border-color: #667eea; color: #667eea; }

    .note-group-head {
      display: flex;
      align-items: center;
      gap: 8px;
      margin: 16px 0 8px;
      padding-bottom: 4px;
      border-bottom: 1px solid #eee;
      font-size: 13px;
      font-weight: 700;
      color: #667eea;
    }
    .note-group-head .cnt {
      font-size: 11px;
      font-weight: 400;
      color: #aaa;
    }

    .note-check {
      margin-right: 8px;
      transform: scale(1.15);
      vertical-align: middle;
      flex-shrink: 0;
      margin-top: 4px;
    }
    .note-item.archived {
      opacity: 0.62;
      background: #fafafa;
      border-color: #e5e5e5;
    }
    .note-item .note-main { flex: 1; min-width: 0; }
    .note-status-dot {
      display: inline-block;
      font-size: 11px;
      padding: 1px 7px;
      border-radius: 9px;
      background: #e8f5e9;
      color: #2e7d32;
    }
    .note-item.archived .note-status-dot {
      background: #ececec;
      color: #888;
    }
    .note-pin-btn.active { color: #f59e0b; }
    .note-tags { display: inline-flex; gap: 4px; flex-wrap: wrap; }
    .note-tag {
      display: inline-block;
      padding: 0 7px;
      border-radius: 9px;
      font-size: 11px;
      background: #fff3e0;
      color: #e65100;
      cursor: pointer;
      border: 1px solid transparent;
    }
    .note-tag:hover { border-color: #e65100; }
    .note-text mark {
      background: #ffe58f;
      color: inherit;
      border-radius: 2px;
      padding: 0 1px;
    }
    .note-edit-form { flex: 1; display: flex; flex-direction: column; gap: 8px; }
    .note-edit-form textarea {
      width: 100%;
      padding: 8px 10px;
      border: 1px solid #d0d7f5;
      border-radius: 8px;
      font-size: 13px;
      resize: vertical;
      box-sizing: border-box;
    }
    .note-edit-row { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
    .note-edit-row select, .note-edit-row input {
      padding: 5px 8px;
      border: 1px solid #ddd;
      border-radius: 6px;
      font-size: 12px;
      background: white;
    }
    .nav-badge {
      display: inline-block;
      min-width: 17px;
      margin-left: 5px;
      padding: 0 5px;
      border-radius: 9px;
      background: #f0444f;
      color: white;
      font-size: 11px;
      line-height: 17px;
      text-align: center;
      font-weight: 600;
    }
    html[data-theme="dark"] .note-filter-tab, html[data-theme="dark"] .note-sort-btn {
      background: #2a3042;
      border-color: #3a4152;
      color: #c2c8d6;
    }
    html[data-theme="dark"] .note-filter-tab:hover, html[data-theme="dark"] .note-sort-btn:hover {
      border-color: #9fb0ff; color: #9fb0ff;
    }
    html[data-theme="dark"] .note-filter-tab.active {
      background: #5a6bd8; border-color: #5a6bd8; color: #fff;
    }
    html[data-theme="dark"] .note-filter-tab.archived-tab.active { background: #565b70; border-color: #565b70; }
    html[data-theme="dark"] .note-sort-btn.active { background: #333b52; border-color: #9fb0ff; color: #9fb0ff; }
    html[data-theme="dark"] .note-group-head { border-bottom-color: #3a4152; }
    html[data-theme="dark"] .note-item.archived { background: #242a3a; border-color: #333b4a; }
    html[data-theme="dark"] .note-status-dot { background: #1f3a2a; color: #7fd79b; }
    html[data-theme="dark"] .note-item.archived .note-status-dot { background: #333; color: #999; }
    html[data-theme="dark"] .note-tag { background: #3d2f1c; color: #ffb74d; }
    html[data-theme="dark"] .note-text mark { background: #6d5a1e; color: #fff; }
    html[data-theme="dark"] .note-edit-form textarea {
      background: #23293b; border-color: #3a4152; color: #c2c8d6;
    }
    html[data-theme="dark"] .note-edit-row select, html[data-theme="dark"] .note-edit-row input {
      background: #2a3042; border-color: #3a4152; color: #c2c8d6;
    }

    /* ---------- 专注记录 ---------- */
    .pomo-summary {
      display: flex;
      gap: 16px;
      flex-wrap: wrap;
      margin-bottom: 16px;
    }

    .pomo-summary .pomo-stat {
      background: #f0f4ff;
      border-radius: 10px;
      padding: 10px 16px;
      font-size: 13px;
      color: #555;
    }

    .pomo-summary .pomo-stat b {
      color: #667eea;
      font-size: 16px;
    }

    .pomo-day-group {
      margin-bottom: 12px;
    }

    .pomo-day-group h4 {
      margin: 0 0 6px;
      color: #667eea;
      font-size: 14px;
    }

    .pomo-day-group ul {
      margin: 0;
      padding-left: 20px;
      color: #555;
      font-size: 13px;
    }

    .pomo-day-group li {
      margin: 3px 0;
    }

    .empty-tip {
      color: #aaa;
      text-align: center;
      padding: 30px 0;
    }

    /* ---------- 核价计算器 ---------- */
    .pricing-grid {
      display: grid;
      grid-template-columns: repeat(4, 1fr);
      gap: 10px;
      margin-bottom: 12px;
    }

    .pricing-actions {
      display: flex;
      gap: 8px;
      flex-wrap: wrap;
      margin-bottom: 12px;
    }

    .pricing-result {
      background: #f6f8ff;
      border: 1px solid #e4e9fd;
      border-radius: 10px;
      padding: 14px 16px;
      line-height: 1.9;
      font-size: 14px;
      color: #444;
    }

    .pricing-result .big {
      font-size: 18px;
      font-weight: 600;
      color: #e5533c;
    }

    .pricing-result .good {
      color: #28a745;
      font-weight: 600;
    }

    .pricing-result .bad {
      color: #e5533c;
      font-weight: 600;
    }

    .pricing-result .row {
      display: flex;
      justify-content: space-between;
      flex-wrap: wrap;
      gap: 8px;
    }

    .pricing-result hr {
      border: none;
      border-top: 1px dashed #d6ddf5;
      margin: 8px 0;
    }

    .section-head .btn {
      padding: 8px 16px;
      font-size: 14px;
    }

    /* ---------- 日程筛选栏 ---------- */
    .filter-bar {
      display: flex;
      gap: 10px;
      margin-bottom: 16px;
      flex-wrap: wrap;
      align-items: center;
    }

    .filter-bar input[type="text"] {
      flex: 1;
      min-width: 180px;
      padding: 8px 12px;
      border: 1px solid #ddd;
      border-radius: 8px;
      font-size: 14px;
    }

    .filter-bar select {
      padding: 8px 10px;
      border: 1px solid #ddd;
      border-radius: 8px;
      background: white;
      font-size: 14px;
    }

    /* ---------- 商品分层 / 批量操作 ---------- */
    .tier-badge {
      display: inline-block;
      margin-left: 8px;
      padding: 2px 10px;
      border-radius: 12px;
      font-size: 12px;
      vertical-align: middle;
    }
    .tier-badge.tier-focus { background: #fde8e8; color: #a14e50; border: 1px solid #f3b8b8; }
    .tier-badge.tier-observe { background: #fdf3e3; color: #9a6a2f; border: 1px solid #efd3a4; }
    .tier-badge.tier-cleanup { background: #eef0f3; color: #5f6670; border: 1px solid #d3d7dd; }
    html[data-theme="dark"] .tier-badge.tier-focus { background: #3a2226; color: #f2a6a6; border-color: #6e3a40; }
    html[data-theme="dark"] .tier-badge.tier-observe { background: #352d1f; color: #e8c288; border-color: #6b5735; }
    html[data-theme="dark"] .tier-badge.tier-cleanup { background: #262b33; color: #9aa3af; border-color: #3a4152; }
    .btn-mini { padding: 3px 10px; font-size: 12px; border-radius: 6px; }
    .batch-bar {
      display: flex;
      gap: 8px;
      align-items: center;
      flex-wrap: wrap;
      margin-bottom: 14px;
      padding: 10px 14px;
      background: #f2f6fb;
      border: 1px solid #d5e0ef;
      border-radius: 8px;
      font-size: 13px;
    }
    html[data-theme="dark"] .batch-bar { background: #1b2030; border-color: #3a4152; color: #c2c8d6; }
    .product-check { margin-right: 10px; transform: scale(1.2); vertical-align: middle; }
    .skc-line { margin-top: 2px; }

    /* ---------- 计划状态筛选 ---------- */
    .plan-filter-tabs {
      display: flex;
      gap: 6px;
      margin-bottom: 14px;
      flex-wrap: wrap;
    }

    .filter-tab {
      padding: 6px 14px;
      border: 1px solid #ddd;
      border-radius: 20px;
      background: white;
      cursor: pointer;
      font-size: 13px;
      color: #555;
      transition: all 0.2s;
    }

    .filter-tab:hover { border-color: #667eea; color: #667eea; }

    .filter-tab.active {
      background: #667eea;
      color: white;
      border-color: #667eea;
    }

    /* ---------- 过期计划提示条 ---------- */
    .overdue-banner {
      display: flex;
      align-items: center;
      gap: 12px;
      background: #fdecec;
      border: 1px solid #f5a9a9;
      color: #c0392b;
      padding: 10px 14px;
      border-radius: 10px;
      margin-bottom: 14px;
      font-size: 14px;
      font-weight: 500;
    }

    .overdue-banner .btn { padding: 4px 12px; font-size: 13px; }

    /* 过期/今日到期计划高亮 */
    .list-item.overdue {
      border-color: #e74c3c !important;
      background: #fdf0ef;
      box-shadow: 0 0 0 1px #e74c3c inset;
    }

    .list-item.overdue .plan-title { color: #c0392b; }

    .list-item.due-today {
      border-color: #f39c12 !important;
      background: #fef9ee;
      box-shadow: 0 0 0 1px #f39c12 inset;
    }

    .list-item.due-today .plan-title { color: #b9770e; }

    .form-group {
      margin-bottom: 20px;
    }

    /* 台账表单双列布局 */
    .form-grid {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 0 20px;
      align-items: start;
    }

    .form-grid .form-group { margin-bottom: 14px; }

    .form-grid .form-full { grid-column: 1 / -1; }

    .form-actions {
      display: flex;
      gap: 10px;
      padding-bottom: 4px;
    }

    @media (max-width: 720px) {
      .form-grid { grid-template-columns: 1fr; }
    }

    /* 台账列表辅助样式 */
    .ledger-links a {
      color: #667eea;
      text-decoration: none;
    }

    .ledger-links a:hover { text-decoration: underline; }

    .price-info { font-variant-numeric: tabular-nums; }

    .form-group label {
      display: block;
      margin-bottom: 5px;
      font-weight: 500;
      color: #555;
    }

    .form-group input,
    .form-group textarea,
    .form-group select {
      width: 100%;
      padding: 12px;
      border: 2px solid #e1e5e9;
      border-radius: 8px;
      font-size: 16px;
      transition: border-color 0.3s ease;
    }

    .form-group input:focus,
    .form-group textarea:focus,
    .form-group select:focus {
      outline: none;
      border-color: #667eea;
    }

    .btn {
      background: #667eea;
      color: white;
      border: none;
      padding: 12px 24px;
      border-radius: 8px;
      cursor: pointer;
      font-size: 16px;
      font-weight: 500;
      transition: all 0.3s ease;
    }

    .btn:hover {
      background: #5a67d8;
      transform: translateY(-2px);
      box-shadow: 0 5px 15px rgba(102,126,234,0.4);
    }

    .btn-secondary { background: #6c757d; }
    .btn-secondary:hover { background: #5a6268; }
    .btn-danger { background: #dc3545; }
    .btn-danger:hover { background: #c82333; }
    .btn-success { background: #28a745; }
    .btn-success:hover { background: #218838; }
    .btn-light {
      background: #e9ecef;
      color: #495057;
    }
    .btn-light:hover { background: #dae0e5; }

    .list-item {
      background: #f8f9fa;
      border-radius: 8px;
      padding: 15px;
      margin-bottom: 10px;
      border-left: 4px solid #667eea;
    }

    .list-item.completed {
      opacity: 0.7;
      border-left-color: #28a745;
    }

    .list-item h3 {
      color: #333;
      margin-bottom: 5px;
      display: flex;
      justify-content: space-between;
      align-items: center;
      gap: 8px;
    }

    .list-item p {
      color: #666;
      margin-bottom: 5px;
      word-break: break-word;
    }

    .status-badge {
      padding: 4px 8px;
      border-radius: 4px;
      font-size: 12px;
      font-weight: 500;
      white-space: nowrap;
    }

    .status-pending { background: #ffc107; color: #333; }
    .status-in_progress { background: #17a2b8; color: white; }
    .status-completed { background: #28a745; color: white; }

    /* 供应商状态 */
    .status-potential { background: #adb5bd; color: white; }
    .status-contacted { background: #17a2b8; color: white; }
    .status-active { background: #28a745; color: white; }
    .status-stopped { background: #dc3545; color: white; }

    /* 商品状态 */
    .status-draft { background: #ffc107; color: #333; }
    .status-listed { background: #28a745; color: white; }
    .status-delisted { background: #adb5bd; color: white; }

    /* 循环计划标记 */
    .repeat-badge {
      display: inline-block;
      padding: 2px 8px;
      border-radius: 12px;
      font-size: 11px;
      background: #eef1ff;
      color: #667eea;
      font-weight: 500;
      white-space: nowrap;
    }

    .supply-count {
      display: inline-block;
      margin-left: 8px;
      padding: 2px 8px;
      border-radius: 12px;
      font-size: 11px;
      background: #e6f7ed;
      color: #28a745;
      font-weight: 500;
      white-space: nowrap;
    }

    .supply-products {
      color: #666;
      font-size: 13px;
      background: #fafafa;
      border-radius: 6px;
      padding: 6px 10px;
    }

    .item-actions {
      margin-top: 10px;
      display: flex;
      flex-wrap: wrap;
      gap: 6px;
    }

    .item-actions .btn {
      padding: 6px 12px;
      font-size: 14px;
    }

    .notification {
      position: fixed;
      top: 20px;
      right: 20px;
      background: #28a745;
      color: white;
      padding: 15px 20px;
      border-radius: 8px;
      box-shadow: 0 5px 15px rgba(0,0,0,0.2);
      z-index: 1000;
      transform: translateX(420px);
      transition: transform 0.3s ease;
      max-width: 90vw;
    }

    .notification.show { transform: translateX(0); }
    .notification.error { background: #dc3545; }
    .notification.warning { background: #ffc107; color: #333; }

    /* ---------- 多视图 ---------- */

    .view-controls {
      display: flex;
      flex-wrap: wrap;
      justify-content: space-between;
      align-items: center;
      margin-bottom: 20px;
      padding: 15px;
      background: #f1f3fb;
      border-radius: 10px;
      gap: 10px;
    }

    .view-tabs {
      display: flex;
      gap: 8px;
      flex-wrap: wrap;
    }

    .view-tab {
      padding: 8px 14px;
      background: #e3e7f8;
      color: #555;
      border-radius: 8px;
      cursor: pointer;
      transition: all 0.2s ease;
      font-size: 14px;
      user-select: none;
    }

    .view-tab.active {
      background: #667eea;
      color: white;
    }

    .view-tab:hover:not(.active) { background: #d2d9f5; }

    .view-date-picker {
      display: flex;
      align-items: center;
      gap: 8px;
    }

    .view-date-picker .btn {
      padding: 8px 14px;
      font-size: 14px;
    }

    #current-date-display {
      font-weight: 600;
      color: #444;
      min-width: 150px;
      text-align: center;
    }

    .view-title {
      color: #667eea;
      margin-bottom: 15px;
    }

    .view-empty {
      color: #999;
      padding: 20px;
      text-align: center;
      background: #f8f9fa;
      border-radius: 8px;
    }

    /* 日视图时间轴 */
    .timeline {
      border-left: 3px solid #667eea;
      padding-left: 20px;
      margin-left: 10px;
    }

    .timeline-item {
      margin-bottom: 20px;
      position: relative;
    }

    .time-slot {
      font-weight: bold;
      color: #667eea;
      margin-bottom: 5px;
    }

    .schedule-content {
      background: #f8f9fa;
      padding: 12px;
      border-radius: 8px;
      border-left: 3px solid #28a745;
    }

    .schedule-content.done {
      border-left-color: #adb5bd;
      opacity: 0.75;
    }

    .schedule-content h4 { margin-bottom: 4px; }
    .schedule-content p { color: #666; font-size: 0.95em; margin-bottom: 4px; }

    /* 周视图 */
    .week-grid {
      display: grid;
      grid-template-columns: repeat(7, 1fr);
      gap: 8px;
    }

    .day-column {
      border: 1px solid #ddd;
      border-radius: 8px;
      padding: 8px;
      cursor: pointer;
      transition: all 0.2s ease;
    }

    .day-column:hover { border-color: #667eea; box-shadow: 0 2px 8px rgba(102,126,234,0.25); }
    .day-column.today { border: 2px solid #667eea; }

    .day-header {
      font-weight: bold;
      text-align: center;
      margin-bottom: 8px;
      padding: 5px;
      background: #667eea;
      color: white;
      border-radius: 4px;
      font-size: 0.85em;
    }

    .day-schedules {
      min-height: 40px;
    }

    .empty-text { color: #aaa; font-size: 0.85em; text-align: center; padding-top: 6px; }

    .mini-schedule {
      background: #f0f0f0;
      padding: 5px;
      margin-bottom: 5px;
      border-radius: 4px;
      font-size: 0.85em;
    }

    .mini-schedule.done { opacity: 0.55; }
    .mini-time { font-weight: bold; color: #667eea; }
    .mini-title { margin-top: 2px; word-break: break-word; }

    /* 月视图 */
    .month-grid {
      display: grid;
      grid-template-columns: repeat(7, 1fr);
      gap: 5px;
    }

    .weekday-header {
      text-align: center;
      font-weight: bold;
      padding: 8px;
      background: #667eea;
      color: white;
      border-radius: 4px;
      font-size: 0.9em;
    }

    .day-cell {
      border: 1px solid #ddd;
      border-radius: 4px;
      padding: 5px;
      min-height: 85px;
      cursor: pointer;
      transition: all 0.15s ease;
    }

    .day-cell:hover { border-color: #667eea; background: #f5f7ff; }
    .day-cell.today { border: 2px solid #667eea; background: #eef1ff; }
    .day-cell.empty { border: none; background: transparent; cursor: default; }

    .day-number { font-weight: bold; margin-bottom: 4px; }

    .day-schedule-count { font-size: 0.8em; color: #667eea; margin-bottom: 2px; }
    .day-schedule-preview { font-size: 0.7em; }

    .preview-item {
      background: #f0f0f0;
      padding: 2px 4px;
      margin-bottom: 2px;
      border-radius: 3px;
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
    }

    .preview-more { color: #666; font-style: italic; }

    /* ---------- 番茄钟 ---------- */
    .pomodoro-timer { text-align: center; }

    .timer-display {
      font-size: 6rem;
      font-weight: bold;
      color: #667eea;
      margin: 30px 0;
      font-family: "Courier New", monospace;
    }

    .timer-phase {
      font-size: 1.1em;
      color: #777;
      margin-bottom: 10px;
    }

    .timer-controls {
      display: flex;
      gap: 12px;
      justify-content: center;
      margin-bottom: 30px;
    }

    .timer-controls .btn { padding: 12px 28px; font-size: 17px; }

    .timer-settings {
      max-width: 500px;
      margin: 0 auto 20px;
      text-align: left;
    }

    /* ---------- 统计 ---------- */
    .stats-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
      gap: 20px;
    }

    .stat-card {
      background: #f8f9fa;
      border-radius: 10px;
      padding: 20px;
      text-align: center;
      border-top: 4px solid #667eea;
    }

    .stat-card h3 {
      color: #667eea;
      margin-bottom: 10px;
      font-size: 1em;
    }

    .stat-card .number {
      font-size: 2em;
      font-weight: bold;
      color: #333;
    }

    .stat-card small { color: #888; }

    /* ---------- 导出弹窗 ---------- */
    .modal-overlay {
      position: fixed;
      inset: 0;
      background: rgba(0,0,0,0.45);
      display: none;
      align-items: center;
      justify-content: center;
      z-index: 2000;
      overflow-y: auto;   /* 兜底：弹窗超高时遮罩整体可滚动 */
    }

    .modal-overlay.show { display: flex; }

    .modal-box {
      background: white;
      border-radius: 12px;
      padding: 24px;
      width: 380px;
      max-width: 92vw;
      max-height: calc(100vh - 48px); /* 超高时弹窗内部滚动，上下留边距 */
      overflow-y: auto;
      margin: auto;       /* flex 居中 + 超高时两端都有空间可滚动，头部可达 */
      box-shadow: 0 10px 30px rgba(0,0,0,0.3);
    }

    .modal-box h3 {
      color: #667eea;
      margin-bottom: 16px;
      font-size: 1.2em;
    }

    .modal-wide { width: 520px; }

    .modal-hint {
      color: #888;
      font-size: 13px;
      margin-bottom: 14px;
    }

    .template-item {
      display: flex;
      justify-content: space-between;
      align-items: center;
      gap: 12px;
      padding: 12px 14px;
      border: 1px solid #eee;
      border-radius: 10px;
      margin-bottom: 10px;
    }

    .template-item:hover { border-color: #667eea; }

    .template-item strong { color: #333; }

    .template-item p { color: #666; font-size: 13px; margin: 2px 0; }

    .template-item small { color: #999; font-size: 12px; }

    .template-item .btn { padding: 6px 16px; font-size: 14px; white-space: nowrap; }

    /* ---------- 到期提醒弹窗 ---------- */
    .reminder-section {
      font-weight: 600;
      color: #c0392b;
      margin: 10px 0 4px;
    }

    #reminder-content ul {
      margin: 0 0 8px 22px;
      padding: 0;
    }

    #reminder-content li {
      color: #555;
      margin: 4px 0;
    }

    .modal-form {
      display: flex;
      flex-direction: column;
      gap: 12px;
    }

    .modal-actions {
      display: flex;
      gap: 10px;
      justify-content: flex-end;
      margin-top: 20px;
    }

    .modal-actions .btn {
      padding: 8px 20px;
      font-size: 14px;
    }

    /* ---------- 主题切换 ---------- */
    .header { position: relative; }
    .theme-toggle {
      position: absolute;
      right: 0;
      top: 0;
      width: 40px;
      height: 40px;
      border: none;
      border-radius: 50%;
      background: rgba(255, 255, 255, 0.18);
      color: white;
      font-size: 18px;
      cursor: pointer;
      transition: all 0.3s ease;
    }
    .theme-toggle:hover { background: rgba(255, 255, 255, 0.32); }

    /* ---------- 全局搜索 ---------- */
    .global-search-wrap {
      position: relative;
      max-width: 560px;
      margin: 0 auto 24px;
    }
    .global-search-wrap input {
      width: 100%;
      padding: 12px 18px;
      border: none;
      border-radius: 12px;
      font-size: 15px;
      background: rgba(255, 255, 255, 0.92);
      color: #333;
      box-shadow: 0 4px 18px rgba(0, 0, 0, 0.18);
      outline: none;
      transition: box-shadow 0.25s ease;
    }
    .global-search-wrap input:focus { box-shadow: 0 6px 24px rgba(0, 0, 0, 0.28); }
    .global-search-results {
      position: absolute;
      top: calc(100% + 6px);
      left: 0;
      right: 0;
      background: #fff;
      border-radius: 12px;
      box-shadow: 0 12px 34px rgba(0, 0, 0, 0.25);
      z-index: 100;
      max-height: 420px;
      overflow-y: auto;
      padding: 8px 0;
    }
    .global-search-results.hidden { display: none; }
    .gs-group-title {
      padding: 6px 14px 2px;
      font-size: 12px;
      color: #999;
      font-weight: 600;
    }
    .gs-item {
      display: block;
      width: 100%;
      text-align: left;
      padding: 9px 14px;
      border: none;
      background: none;
      cursor: pointer;
      border-left: 3px solid transparent;
    }
    .gs-item:hover, .gs-item.highlight { background: #f4f6ff; border-left-color: #667eea; }
    .gs-item-title { font-size: 14px; color: #333; font-weight: 500; }
    .gs-item-sub { font-size: 12px; color: #999; margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .gs-history {
      display: flex;
      flex-wrap: wrap;
      gap: 6px;
      padding: 4px 14px 8px;
    }
    .gs-history-tag {
      background: #eef1ff;
      color: #667eea;
      border: none;
      border-radius: 12px;
      padding: 3px 10px;
      font-size: 12px;
      cursor: pointer;
    }
    .gs-history-tag:hover { background: #dde3ff; }
    .gs-clear-history {
      margin-left: auto;
      background: none;
      border: none;
      color: #bbb;
      font-size: 12px;
      cursor: pointer;
      padding: 4px 6px;
    }
    .gs-empty { padding: 16px; text-align: center; color: #999; font-size: 13px; }
    .search-hit { animation: hitFlash 2s ease; }
    @keyframes hitFlash {
      0% { background: #fff7cc; }
      100% { background: transparent; }
    }

    /* ---------- 素材图片箱 ---------- */
    /* 顶部功能汇总栏（上传 + 文字功能按钮 + 选中计数 + 搜索） */
    .asset-toolbar {
      display: flex;
      align-items: center;
      gap: 8px;
      flex-wrap: wrap;
      background: #f7f8fa;
      border: 1px solid #e8eaee;
      border-radius: 10px;
      padding: 8px 12px;
      margin-bottom: 4px;
    }
    .toolbar-divider {
      width: 1px;
      height: 22px;
      background: #dde0e6;
      margin: 0 2px;
    }
    .toolbar-count {
      font-size: 12px;
      color: #8892a6;
      margin-left: 2px;
      white-space: nowrap;
    }
    .toolbar-spacer { flex: 1; }
    .btn-tool {
      padding: 6px 12px;
      font-size: 13px;
      border-radius: 8px;
      white-space: nowrap;
    }
    .assets-grid {
      display: grid;
      grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
      gap: 14px;
      margin-top: 14px;
    }
    /* 速记关联素材弹窗内的网格：限高独立滚动，底部栏与按钮保持可见 */
    #note-asset-grid {
      max-height: 52vh;
      overflow-y: auto;
      padding-right: 4px;
      scrollbar-width: thin;
    }
    .asset-card {
      position: relative;
      background: #fff;
      border-radius: 12px;
      border: 1px solid #eee;
      overflow: hidden;
      box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
      transition: box-shadow 0.2s ease, border-color 0.2s ease;
      cursor: pointer;
    }
    .asset-card:hover { box-shadow: 0 6px 18px rgba(0, 0, 0, 0.14); }
    .asset-card.selected {
      border-color: #4f8cff;
      box-shadow: 0 0 0 3px rgba(79, 140, 255, 0.25);
    }
    /* 卡片左上角勾选框（点击卡片空白处也可切换选中） */
    .asset-check-wrap {
      position: absolute;
      top: 6px;
      left: 6px;
      z-index: 2;
      background: rgba(255, 255, 255, 0.85);
      border-radius: 6px;
      padding: 2px;
      line-height: 0;
    }
    .asset-check { width: 16px; height: 16px; cursor: pointer; }
    .asset-thumb {
      display: block;
      width: 100%;
      height: 140px;
      object-fit: cover;
      background: #f4f4f6;
      cursor: pointer;
    }
    .asset-body { padding: 8px 10px 10px; }
    .asset-name {
      font-size: 13px;
      color: #444;
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
      margin-bottom: 4px;
    }
    .asset-tags { min-height: 18px; margin-bottom: 6px; }
    .asset-tag {
      display: inline-block;
      background: #eef1ff;
      color: #667eea;
      border-radius: 10px;
      padding: 1px 8px;
      font-size: 11px;
      margin: 1px 3px 1px 0;
    }
    .asset-meta { font-size: 11px; color: #aaa; margin-bottom: 8px; }
    /* 卡片内单卡操作按钮 */
    .asset-actions { display: flex; gap: 6px; }
    .asset-actions .btn { padding: 4px 8px; font-size: 12px; }
    /* 底部栏：全选 / 反选 / 总数 + 页码导航 + 前往跳页 + 每页条数 */
    .assets-footer {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 12px;
      flex-wrap: wrap;
      margin-top: 16px;
      padding: 10px 4px;
      border-top: 1px solid #eef0f3;
    }
    .footer-left, .footer-right {
      display: flex;
      align-items: center;
      gap: 8px;
      flex-wrap: wrap;
    }
    .page-info { font-size: 12px; color: #8892a6; }
    .page-nav { display: inline-flex; align-items: center; gap: 4px; }
    .page-num {
      min-width: 28px;
      height: 28px;
      padding: 0 6px;
      border: 1px solid #dde0e6;
      background: #fff;
      border-radius: 6px;
      font-size: 12px;
      color: #556;
      cursor: pointer;
    }
    .page-num:hover { border-color: #4f8cff; color: #4f8cff; }
    .page-num.active {
      background: #4f8cff;
      border-color: #4f8cff;
      color: #fff;
      font-weight: 600;
    }
    .page-dots { color: #8892a6; font-size: 12px; padding: 0 2px; }
    .goto-wrap {
      display: inline-flex;
      align-items: center;
      gap: 4px;
      font-size: 12px;
      color: #8892a6;
    }
    .goto-wrap input {
      width: 44px;
      height: 28px;
      border: 1px solid #dde0e6;
      border-radius: 6px;
      text-align: center;
      font-size: 12px;
    }
    #asset-page-size {
      height: 28px;
      border: 1px solid #dde0e6;
      border-radius: 6px;
      font-size: 12px;
      color: #556;
      background: #fff;
      padding: 0 6px;
      cursor: pointer;
    }

    /* ---------- 电商节日历 ---------- */
    .check-inline {
      display: inline-flex;
      align-items: center;
      gap: 5px;
      font-size: 13px;
      color: #666;
    }
    .event-card {
      display: flex;
      align-items: center;
      gap: 14px;
      background: #fff;
      border: 1px solid #eee;
      border-left: 4px solid #667eea;
      border-radius: 10px;
      padding: 12px 16px;
      margin-bottom: 10px;
    }
    .event-card.type-promo { border-left-color: #ea4335; }
    .event-card.type-festival { border-left-color: #667eea; }
    .event-card.type-supply { border-left-color: #f9ab00; }
    .event-card.is-past { opacity: 0.55; }
    .event-main { flex: 1; min-width: 0; }
    .event-title {
      font-size: 15px;
      font-weight: 600;
      color: #222;
      margin-bottom: 3px;
    }
    .event-meta { font-size: 12px; color: #888; margin-bottom: 3px; }
    .event-notes { font-size: 12px; color: #777; }
    .event-badges { display: flex; flex-wrap: wrap; gap: 5px; margin-bottom: 4px; }
    .event-badge {
      display: inline-block;
      border-radius: 10px;
      padding: 1px 9px;
      font-size: 11px;
      background: #eef1ff;
      color: #5a6fc0;
    }
    .event-badge.badge-market { background: #e6f4ea; color: #1e7e34; }
    .event-badge.badge-supply { background: #fef7e0; color: #b06000; }
    .event-badge.badge-urgent { background: #fce8e6; color: #c5221f; }
    .event-prep {
      text-align: center;
      min-width: 96px;
      padding: 6px 10px;
      border-radius: 8px;
      background: #f5f7ff;
      font-size: 12px;
      color: #5a6fc0;
    }
    .event-prep .prep-days { font-size: 18px; font-weight: 700; display: block; }
    .event-prep.prep-urgent { background: #fce8e6; color: #c5221f; }
    .event-prep.prep-missed { background: #f1f3f4; color: #80868b; }
    .event-actions { display: flex; flex-direction: column; gap: 6px; }
    .event-actions .btn { padding: 4px 12px; font-size: 12px; }

    /* ---------- 桌面通知开关 ---------- */
    .settings-row {
      display: flex;
      align-items: center;
      gap: 10px;
      background: #f8f9ff;
      border-radius: 10px;
      padding: 10px 14px;
      margin-bottom: 16px;
    }
    .switch-label {
      display: flex;
      align-items: center;
      gap: 8px;
      cursor: pointer;
      font-size: 14px;
      color: #444;
    }
    .switch-label input { width: 16px; height: 16px; accent-color: #667eea; }

    /* ---------- 暗色主题 ---------- */
    html[data-theme="dark"] body {
      background: linear-gradient(135deg, #141824 0%, #1e2336 100%);
      color: #d8dce6;
    }
    html[data-theme="dark"] { color-scheme: dark; }
    html[data-theme="dark"] .tab-content {
      background: #222838;
      color: #d8dce6;
      box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
    }
    html[data-theme="dark"] .section h2 { color: #8fa0ff; }
    html[data-theme="dark"] .section-head h2 { color: #8fa0ff; }
    html[data-theme="dark"] .nav-tabs { background: rgba(255, 255, 255, 0.06); }
    html[data-theme="dark"] .nav-tab { color: #cfd4e2; }
    html[data-theme="dark"] .nav-tab.active {
      background: #2f3548;
      color: #8fa0ff;
      box-shadow: 0 4px 15px rgba(0, 0, 0, 0.4);
    }
    html[data-theme="dark"] .nav-tab:hover:not(.active) { background: rgba(255, 255, 255, 0.12); }
    html[data-theme="dark"] .theme-toggle { background: rgba(255, 255, 255, 0.14); }
    html[data-theme="dark"] .global-search-wrap input {
      background: #2a3042;
      color: #e4e8f2;
      box-shadow: 0 4px 18px rgba(0, 0, 0, 0.4);
    }
    html[data-theme="dark"] .global-search-results { background: #262c3c; box-shadow: 0 12px 34px rgba(0, 0, 0, 0.6); }
    html[data-theme="dark"] .gs-item:hover, html[data-theme="dark"] .gs-item.highlight { background: #2f3650; }
    html[data-theme="dark"] .gs-item-title { color: #e4e8f2; }
    html[data-theme="dark"] .gs-item-sub { color: #9aa3b8; }
    html[data-theme="dark"] .gs-history-tag { background: #333b52; color: #9fb0ff; }
    html[data-theme="dark"] .gs-clear-history { color: #7b8499; }
    html[data-theme="dark"] .gs-empty { color: #9aa3b8; }
    html[data-theme="dark"] input[type="text"],
    html[data-theme="dark"] input[type="date"],
    html[data-theme="dark"] input[type="time"],
    html[data-theme="dark"] input[type="number"],
    html[data-theme="dark"] select,
    html[data-theme="dark"] textarea {
      background: #1b2030;
      color: #e4e8f2;
      border-color: #3a4152;
    }
    html[data-theme="dark"] input::placeholder, html[data-theme="dark"] textarea::placeholder { color: #7b8499; }
    html[data-theme="dark"] .filter-bar input, html[data-theme="dark"] .filter-bar select { background: #1b2030; color: #e4e8f2; border-color: #3a4152; }
    html[data-theme="dark"] .btn-secondary { background: #3a4152; }
    html[data-theme="dark"] .btn-secondary:hover { background: #454d63; }
    html[data-theme="dark"] .btn-light { background: #2f3548; color: #cfd4e2; }
    html[data-theme="dark"] .btn-light:hover { background: #3a4152; }
    html[data-theme="dark"] .list-item { background: #2a3042; border-color: #363d50; }
    html[data-theme="dark"] .list-item h3 { color: #e4e8f2; }
    html[data-theme="dark"] .list-item p { color: #c2c8d6; }
    html[data-theme="dark"] .list-item.completed { background: #252b3b; }
    html[data-theme="dark"] .list-item.completed h3 { color: #8b93a8; }
    html[data-theme="dark"] .supply-products { background: #222738; color: #c2c8d6; }
    html[data-theme="dark"] .view-tabs { background: #1b2030; }
    html[data-theme="dark"] .view-tab { color: #c2c8d6; }
    html[data-theme="dark"] .view-tab.active { background: #2f3548; color: #8fa0ff; }
    html[data-theme="dark"] .filter-tab { color: #c2c8d6; }
    html[data-theme="dark"] .filter-tab.active { background: #2f3548; color: #8fa0ff; }
    html[data-theme="dark"] .timeline-item { border-color: #363d50; }
    html[data-theme="dark"] .day-header { background: #2a3042; color: #e4e8f2; }
    html[data-theme="dark"] .day-column, html[data-theme="dark"] .week-grid, html[data-theme="dark"] .month-grid { border-color: #363d50; }
    html[data-theme="dark"] .month-cell, html[data-theme="dark"] .week-cell, html[data-theme="dark"] .day-cell { border-color: #363d50; background: #242a3a; }
    html[data-theme="dark"] .mini-schedule { background: #2f3650; }
    html[data-theme="dark"] .empty-text { color: #7b8499; }
    html[data-theme="dark"] .overdue-banner { background: #3d2427; border-color: #7a3b42; color: #ffb3a7; }
    html[data-theme="dark"] .list-item.overdue { border-color: #7a3b42; }
    html[data-theme="dark"] .list-item.due-today { border-color: #8a6d2f; }
    html[data-theme="dark"] .modal-overlay { background: rgba(0, 0, 0, 0.6); }
    html[data-theme="dark"] .modal-box { background: #262c3c; color: #d8dce6; }
    html[data-theme="dark"] .modal-box h3 { color: #e4e8f2; }
    html[data-theme="dark"] .modal-hint { color: #9aa3b8; }
    html[data-theme="dark"] .notification { background: #2f3548; color: #e4e8f2; box-shadow: 0 6px 20px rgba(0, 0, 0, 0.5); }
    html[data-theme="dark"] .notification.error { background: #5a2c33; }
    html[data-theme="dark"] .notification.warning { background: #5a4a20; }
    html[data-theme="dark"] .note-item { background: #2a3042; border-color: #363d50; }
    html[data-theme="dark"] .note-item p { color: #c2c8d6; }
    html[data-theme="dark"] .note-cat-tag { background: #333b52; color: #9fb0ff; }
    html[data-theme="dark"] .pomo-summary .stat-card, html[data-theme="dark"] .stat-card { background: #2a3042; border-color: #363d50; }
    html[data-theme="dark"] .stat-card h3 { color: #9aa3b8; }
    html[data-theme="dark"] .stat-card .number { color: #e4e8f2; }
    html[data-theme="dark"] .pomo-day-group h4 { color: #e4e8f2; }
    html[data-theme="dark"] .pricing-result { background: #1b2030; border-color: #363d50; color: #c2c8d6; }
    html[data-theme="dark"] .settings-row { background: #2a3042; }
    html[data-theme="dark"] .switch-label { color: #c2c8d6; }
    html[data-theme="dark"] .asset-toolbar { background: #242a3a; border-color: #363d50; }
    html[data-theme="dark"] .toolbar-divider { background: #363d50; }
    html[data-theme="dark"] .toolbar-count { color: #7b8499; }
    html[data-theme="dark"] .assets-footer { border-top-color: #363d50; }
    html[data-theme="dark"] .page-num { background: #242a3a; border-color: #363d50; color: #c2c8d6; }
    html[data-theme="dark"] .page-num.active { background: #4f8cff; border-color: #4f8cff; color: #fff; }
    html[data-theme="dark"] .page-dots { color: #7b8499; }
    html[data-theme="dark"] .goto-wrap input,
    html[data-theme="dark"] #asset-page-size { background: #242a3a; border-color: #363d50; color: #c2c8d6; }
    html[data-theme="dark"] .asset-card { background: #2a3042; border-color: #363d50; }
    html[data-theme="dark"] .asset-card.selected { border-color: #4f8cff; }
    html[data-theme="dark"] .asset-check-wrap { background: rgba(42, 48, 66, 0.85); }
    html[data-theme="dark"] .asset-thumb { background: #1b2030; }
    html[data-theme="dark"] .asset-name { color: #e4e8f2; }
    html[data-theme="dark"] .asset-tag { background: #333b52; color: #9fb0ff; }
    html[data-theme="dark"] .asset-meta { color: #7b8499; }
    html[data-theme="dark"] .page-info { color: #7b8499; }
    html[data-theme="dark"] .event-card { background: #2a3042; border-color: #363d50; }
    html[data-theme="dark"] .event-title { color: #e4e8f2; }
    html[data-theme="dark"] .event-meta { color: #9aa3b8; }
    html[data-theme="dark"] .event-notes { color: #aab2c4; }
    html[data-theme="dark"] .event-badge { background: #333b52; color: #9fb0ff; }
    html[data-theme="dark"] .event-badge.badge-market { background: #1f3d2c; color: #6fd08a; }
    html[data-theme="dark"] .event-badge.badge-supply { background: #453614; color: #f0b860; }
    html[data-theme="dark"] .event-badge.badge-urgent { background: #5a2c33; color: #ff8a80; }
    html[data-theme="dark"] .event-prep { background: #1f2536; color: #9fb0ff; }
    html[data-theme="dark"] .event-prep.prep-urgent { background: #5a2c33; color: #ff8a80; }
    html[data-theme="dark"] .event-prep.prep-missed { background: #1b2030; color: #7b8499; }
    html[data-theme="dark"] .check-inline { color: #c2c8d6; }
    html[data-theme="dark"] .search-hit { animation: hitFlashDark 2s ease; }
    @keyframes hitFlashDark {
      0% { background: #4a4430; }
      100% { background: transparent; }
    }
    html[data-theme="dark"] .timer-display { color: #e4e8f2; }
    html[data-theme="dark"] .timer-phase { color: #9aa3b8; }
    html[data-theme="dark"] code { background: #1b2030; color: #9fb0ff; }

    /* ---------- 速记关联素材图片 ---------- */
    .note-card-thumb {
      width: 72px;
      height: 72px;
      object-fit: cover;
      border-radius: 8px;
      margin-bottom: 6px;
      display: block;
      border: 1px solid #e5e7eb;
      background: #f3f4f6;
    }
    .note-edit-img {
      display: flex;
      align-items: center;
      gap: 8px;
      flex-wrap: wrap;
      padding: 8px 10px;
      background: #f8f9fb;
      border-radius: 8px;
      margin-bottom: 6px;
    }
    .note-edit-img-preview {
      width: 48px;
      height: 48px;
      object-fit: cover;
      border-radius: 6px;
      border: 1px solid #e5e7eb;
      background: #f3f4f6;
    }
    .note-edit-img-name {
      font-size: 12px;
      color: #666;
      max-width: 180px;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }
    html[data-theme="dark"] .note-card-thumb { border-color: #2a3145; background: #1b2030; }
    html[data-theme="dark"] .note-edit-img { background: #1b2030; }
    html[data-theme="dark"] .note-edit-img-preview { border-color: #2a3145; background: #1b2030; }
    html[data-theme="dark"] .note-edit-img-name { color: #9aa3b8; }

    /* ---------- 速记关联图片放大预览 ---------- */
    .note-card-thumb, .note-edit-img-preview { cursor: zoom-in; }
    .note-img-preview-box {
      width: auto;
      max-width: 92vw;
      padding: 10px;
      text-align: center;
    }
    .note-img-preview-box img {
      max-width: 100%;
      max-height: 76vh;
      object-fit: contain;
      border-radius: 8px;
      background: #fff;
      display: block;
      margin: 0 auto;
    }
    .note-img-preview-meta {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 12px;
      margin-top: 10px;
      font-size: 13px;
      color: #666;
      word-break: break-all;
    }
    .note-img-preview-meta #note-img-preview-name { max-width: 70%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    html[data-theme="dark"] .note-img-preview-box img { background: #11161f; }
    html[data-theme="dark"] .note-img-preview-meta { color: #9aa3b8; }

    /* ---------- 通用确认 / 输入弹窗（替代原生 confirm / prompt） ---------- */
    .ui-dialog-msg {
      font-size: 13.5px;
      color: #555;
      line-height: 1.7;
      margin: 4px 0 14px;
      word-break: break-all;
      white-space: pre-wrap;
    }
    html[data-theme="dark"] .ui-dialog-msg { color: #c2c8d6; }

    /* ---------- 每日作战看板 ---------- */
    .dashboard-top {
      display: flex;
      align-items: center;
      gap: 12px;
      flex-wrap: wrap;
      margin-bottom: 18px;
    }
    .dash-date {
      font-size: 20px;
      font-weight: 700;
      color: #667eea;
      white-space: nowrap;
    }
    .dash-chips {
      display: flex;
      gap: 8px;
      flex-wrap: wrap;
      flex: 1;
    }
    .dash-chip {
      background: #f3f5ff;
      border: 1px solid #e3e7f5;
      border-radius: 8px;
      padding: 6px 12px;
      font-size: 13px;
      color: #555;
    }
    .dash-chip b { color: #667eea; }
    .dash-alert {
      font-size: 13px;
      color: #c0392b;
      font-weight: 600;
      white-space: nowrap;
    }
    .dash-alert.ok { color: #27ae60; font-weight: 500; }
    .dashboard-grid {
      display: flex;
      gap: 18px;
      flex-wrap: wrap;
    }
    .dash-col {
      flex: 1;
      min-width: 330px;
      display: flex;
      flex-direction: column;
      gap: 16px;
    }
    .dash-card {
      background: #f8f9fd;
      border: 1px solid #e3e7f5;
      border-radius: 12px;
      padding: 14px 16px;
    }
    .dash-card h3 {
      font-size: 15px;
      color: #667eea;
      margin-bottom: 10px;
      display: flex;
      align-items: center;
      gap: 8px;
    }
    .dash-card h3 .dash-tag {
      font-size: 11px;
      color: #999;
      font-weight: 400;
    }
    .dash-item {
      display: flex;
      align-items: flex-start;
      gap: 8px;
      padding: 7px 0;
      border-bottom: 1px dashed #e6e9f3;
    }
    .dash-item:last-child { border-bottom: none; }
    .dash-item.done { opacity: 0.6; }
    .dash-item .dash-ck { margin-top: 3px; }
    .dash-item-main { flex: 1; min-width: 0; }
    .dash-item-title {
      font-size: 13.5px;
      color: #333;
      line-height: 1.5;
      word-break: break-all;
    }
    .dash-item-sub {
      font-size: 11.5px;
      color: #999;
      margin-top: 2px;
      word-break: break-all;
    }
    .dash-item.overdue .dash-item-title { color: #c0392b; font-weight: 600; }
    .dash-item.due-today .dash-item-title { color: #b9770e; font-weight: 600; }
    .dash-item.daily .dash-item-title::after {
      content: "每天";
      margin-left: 6px;
      font-size: 10px;
      color: #27ae60;
      border: 1px solid #27ae60;
      border-radius: 4px;
      padding: 0 4px;
      vertical-align: 1px;
    }
    .dash-empty {
      color: #aaa;
      font-size: 13px;
      padding: 8px 0;
      line-height: 1.7;
    }
    .dash-btn {
      font-size: 12px;
      padding: 4px 10px;
      white-space: nowrap;
    }
    .dash-progress {
      height: 8px;
      background: #eceef5;
      border-radius: 6px;
      overflow: hidden;
      margin-top: 8px;
    }
    .dash-progress-fill {
      height: 100%;
      background: #667eea;
      border-radius: 6px;
      transition: width 0.3s;
    }
    .dash-progress-label {
      font-size: 12px;
      color: #888;
      margin-top: 5px;
    }
    html[data-theme="dark"] .dash-date { color: #8fa0ff; }
    html[data-theme="dark"] .dash-chip { background: #1b2030; border-color: #3a4152; color: #c2c8d6; }
    html[data-theme="dark"] .dash-chip b { color: #9fb0ff; }
    html[data-theme="dark"] .dash-card { background: #1b2030; border-color: #3a4152; }
    html[data-theme="dark"] .dash-card h3 { color: #8fa0ff; }
    html[data-theme="dark"] .dash-card h3 .dash-tag { color: #7b8499; }
    html[data-theme="dark"] .dash-item { border-bottom-color: #2a3142; }
    html[data-theme="dark"] .dash-item-title { color: #e4e8f2; }
    html[data-theme="dark"] .dash-item-sub { color: #7b8499; }
    html[data-theme="dark"] .dash-progress { background: #262c3c; }
    html[data-theme="dark"] .dash-empty { color: #7b8499; }

    /* ============ 项目 - 阶段 模块（项目页 / 计划分组 / 归属标签） ============ */

    .form-hint {
      font-size: 12px;
      color: #2b7a78;
      margin-top: 5px;
      line-height: 1.5;
    }

    .belong-badge {
      display: inline-block;
      background: #eef4fa;
      color: #1f4e79;
      border: 1px solid #c8d8e8;
      border-radius: 4px;
      padding: 0 6px;
      font-size: 12px;
      line-height: 1.6;
      max-width: 100%;
      word-break: break-all;
    }
    html[data-theme="dark"] .belong-badge {
      background: #1c2b3f;
      color: #9fb8d4;
      border-color: #33465c;
    }

    /* 计划页：时间范围 + 项目筛选栏 */
    .plan-scope-bar {
      display: flex;
      align-items: center;
      gap: 12px;
      flex-wrap: wrap;
      margin-bottom: 10px;
    }
    .plan-project-filter {
      padding: 5px 8px;
      border: 1px solid #ccc;
      border-radius: 6px;
      background: #fff;
      color: #333;
      font-size: 13px;
      max-width: 220px;
    }
    html[data-theme="dark"] .plan-project-filter {
      background: #1b2030;
      border-color: #3a4152;
      color: #e4e8f2;
    }

    /* 计划按项目 → 阶段分组 */
    .plan-group-head {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 10px;
      flex-wrap: wrap;
      margin: 18px 0 8px;
      padding: 8px 12px;
      background: #f0f4f8;
      border-left: 4px solid #1f4e79;
      border-radius: 6px;
    }
    .plan-group-orphan { border-left-color: #829ab1; }
    .plan-group-name { font-weight: 700; color: #243b53; font-size: 14px; }
    .plan-group-meta { font-size: 12px; color: #627d98; }
    .plan-phase-head {
      display: flex;
      align-items: center;
      gap: 8px;
      margin: 10px 0 6px;
      padding: 4px 10px;
      font-size: 13px;
      color: #2b7a78;
      font-weight: 600;
      background: #ecf6f5;
      border-radius: 5px;
    }
    .plan-phase-state {
      font-size: 11px;
      color: #486581;
      background: #fff;
      border: 1px solid #cbd5e1;
      border-radius: 10px;
      padding: 0 7px;
    }
    html[data-theme="dark"] .plan-group-head { background: #1c2b3f; }
    html[data-theme="dark"] .plan-group-name { color: #dbe7f5; }
    html[data-theme="dark"] .plan-group-meta { color: #7b8499; }
    html[data-theme="dark"] .plan-phase-head { background: #162e2d; color: #7fd1cd; }
    html[data-theme="dark"] .plan-phase-state { background: #1b2030; border-color: #3a4152; color: #9aa5b8; }

    /* 项目卡片与阶段 */
    .project-card {
      background: #fff;
      border: 1px solid #dfe6ee;
      border-radius: 10px;
      padding: 14px 16px;
      margin-bottom: 14px;
      box-shadow: 0 1px 3px rgba(16,42,67,.08);
    }
    .project-card.is-completed { opacity: .72; }
    .project-card-head {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 10px;
      flex-wrap: wrap;
    }
    .project-card-head h3 { font-size: 17px; color: #243b53; }
    .proj-status { margin-left: 8px; vertical-align: 2px; }
    .proj-status-planning { background: #e2e8f0; color: #4a5568; }
    .proj-status-active { background: #dff0df; color: #276749; }
    .proj-status-paused { background: #fef3cd; color: #92600a; }
    .proj-status-completed { background: #dbeafe; color: #1e40af; }
    .project-desc { margin: 8px 0 4px; color: #486581; font-size: 13px; line-height: 1.6; }
    .project-dates { color: #829ab1; font-size: 12px; margin-bottom: 8px; }

    .project-stats {
      display: flex;
      gap: 20px;
      flex-wrap: wrap;
      margin: 10px 0 12px;
    }
    .project-stat { flex: 1 1 200px; min-width: 180px; }
    .project-stat > span { font-size: 12px; color: #627d98; display: block; margin-bottom: 4px; }
    .project-stat.hour-over > span { color: #c0392b; font-weight: 600; }
    html[data-theme="dark"] .project-stat.hour-over > span { color: #ff6b6b; }
    .mini-progress {
      height: 7px;
      background: #eceef5;
      border-radius: 6px;
      overflow: hidden;
    }
    .mini-progress-fill {
      height: 100%;
      background: #2b7a78;
      border-radius: 6px;
      transition: width .3s;
    }

    .phases-wrap {
      border-top: 1px dashed #dfe6ee;
      padding-top: 10px;
    }
    .phases-empty { color: #829ab1; font-size: 13px; margin: 6px 0 10px; }
    .phase-card {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 10px;
      flex-wrap: wrap;
      background: #f8fafc;
      border: 1px solid #e2e8f0;
      border-radius: 7px;
      padding: 7px 11px;
      margin-bottom: 7px;
    }
    .phase-status-done { background: #f0faf0; border-color: #c6e6c6; }
    .phase-status-active { background: #f3f8ff; border-color: #c3d9f0; }
    .phase-card-top { display: flex; align-items: center; gap: 8px; flex: 1; min-width: 120px; }
    .phase-name { font-weight: 600; color: #243b53; font-size: 14px; }
    .phase-state { font-size: 11px; color: #486581; border: 1px solid #cbd5e1; border-radius: 10px; padding: 0 7px; }
    .phase-status-done .phase-state { border-color: #27ae60; color: #1e7a3a; }
    .phase-status-active .phase-state { border-color: #2b6cb0; color: #2b6cb0; }
    .phase-plan-count { font-size: 12px; color: #627d98; }
    .phase-ops { display: flex; gap: 4px; }
    .phase-btn {
      border: 1px solid #cbd5e1;
      background: #fff;
      border-radius: 5px;
      padding: 3px 8px;
      font-size: 13px;
      cursor: pointer;
      color: #334e68;
    }
    .phase-btn:hover:not(:disabled) { background: #eef4fa; }
    .phase-btn:disabled { opacity: .4; cursor: default; }
    .phase-btn-danger { color: #c0392b; }
    .phase-add {
      display: flex;
      gap: 8px;
      margin-top: 8px;
    }
    .phase-add-input {
      flex: 1;
      min-width: 160px;
      padding: 6px 9px;
      border: 1px solid #ccc;
      border-radius: 6px;
      font-size: 13px;
      background: #fff;
      color: #333;
    }
    html[data-theme="dark"] .project-card { background: #1b2030; border-color: #3a4152; }
    html[data-theme="dark"] .project-card-head h3 { color: #e4e8f2; }
    html[data-theme="dark"] .project-desc { color: #9aa5b8; }
    html[data-theme="dark"] .project-dates { color: #7b8499; }
    html[data-theme="dark"] .project-stat > span { color: #9aa5b8; }
    html[data-theme="dark"] .mini-progress { background: #262c3c; }
    html[data-theme="dark"] .phases-wrap { border-top-color: #2a3142; }
    html[data-theme="dark"] .phases-empty { color: #7b8499; }
    html[data-theme="dark"] .phase-card { background: #171c2a; border-color: #2a3142; }
    html[data-theme="dark"] .phase-name { color: #dbe7f5; }
    html[data-theme="dark"] .phase-state { color: #9aa5b8; border-color: #3a4152; }
    html[data-theme="dark"] .phase-plan-count { color: #7b8499; }
    html[data-theme="dark"] .phase-btn { background: #1b2030; border-color: #3a4152; color: #c2c8d6; }
    html[data-theme="dark"] .phase-btn:hover:not(:disabled) { background: #232a3b; }
    html[data-theme="dark"] .phase-add-input { background: #1b2030; border-color: #3a4152; color: #e4e8f2; }

    /* 日程：半小时刻度时间轴 */
    .view-hint {
      font-size: 12px;
      color: #8aa0b4;
      margin: 0 0 8px;
    }
    .day-timeline {
      border: 1px solid #e2e8f0;
      border-radius: 8px;
      overflow: hidden;
      max-height: 640px;
      overflow-y: auto;
    }
    .tl-row {
      display: flex;
      border-bottom: 1px solid #eef1f6;
      min-height: 46px;
    }
    .tl-row:last-child { border-bottom: none; }
    .tl-time {
      width: 64px;
      flex: 0 0 64px;
      padding: 6px 8px;
      font-size: 12px;
      color: #627d98;
      border-right: 1px solid #eef1f6;
      background: #f8fafc;
      text-align: right;
      line-height: 1.4;
    }
    .tl-body {
      flex: 1;
      padding: 4px 8px;
      position: relative;
    }
    .tl-slot {
      height: 100%;
      min-height: 38px;
      display: flex;
      align-items: center;
      padding-left: 8px;
      font-size: 12px;
      color: #a0b0c3;
      border: 1px dashed transparent;
      border-radius: 5px;
      cursor: pointer;
    }
    .tl-slot:hover {
      border-color: #2b7a78;
      background: #f0fbfa;
      color: #2b7a78;
    }
    .tl-span {
      height: 100%;
      min-height: 38px;
      display: flex;
      align-items: center;
      padding-left: 8px;
      font-size: 12px;
      color: #b6c2d2;
      background: repeating-linear-gradient(-45deg, #f6f8fb, #f6f8fb 6px, #eef2f7 6px, #eef2f7 12px);
      border-radius: 5px;
    }
    .tl-item {
      background: #eef4fa;
      border: 1px solid #c8d8e8;
      border-left: 4px solid #1f4e79;
      border-radius: 6px;
      padding: 6px 10px;
      margin: 2px 0;
    }
    .tl-item.done {
      background: #f0faf0;
      border-color: #c6e6c6;
      border-left-color: #27ae60;
      opacity: .8;
    }
    .tl-item-title {
      font-weight: 600;
      color: #243b53;
      font-size: 14px;
      display: flex;
      align-items: center;
      gap: 8px;
      flex-wrap: wrap;
    }
    .tl-item-meta {
      font-size: 12px;
      color: #486581;
      margin-top: 2px;
      line-height: 1.5;
    }
    .tl-actions { margin-top: 6px; }
    .tl-actions .btn { font-size: 12px; padding: 3px 9px; }
    html[data-theme="dark"] .day-timeline { border-color: #2a3142; }
    html[data-theme="dark"] .tl-row { border-bottom-color: #232a3b; }
    html[data-theme="dark"] .tl-time { color: #9aa5b8; border-right-color: #232a3b; background: #171c2a; }
    html[data-theme="dark"] .tl-slot { color: #5d6b81; }
    html[data-theme="dark"] .tl-slot:hover { border-color: #2b7a78; background: #142b2a; color: #7fd1cd; }
    html[data-theme="dark"] .tl-span { color: #5d6b81; background: repeating-linear-gradient(-45deg, #171c2a, #171c2a 6px, #141823 6px, #141823 12px); }
    html[data-theme="dark"] .tl-item { background: #1c2b3f; border-color: #33465c; border-left-color: #6f9fd8; }
    html[data-theme="dark"] .tl-item.done { background: #162e25; border-color: #265c3a; border-left-color: #27ae60; }
    html[data-theme="dark"] .tl-item-title { color: #e4e8f2; }
    html[data-theme="dark"] .tl-item-meta { color: #9aa5b8; }

    /* 快速记录框 */
    .quick-add-wrap {
      margin: 10px 0 6px;
    }
    .quick-add-wrap input {
      width: 100%;
      box-sizing: border-box;
      padding: 11px 14px;
      font-size: 14px;
      border: 1px solid #cbd5e1;
      border-radius: 8px;
      background: #f8fafc;
      color: #1f2937;
      outline: none;
      transition: border-color 0.15s, box-shadow 0.15s;
    }
    .quick-add-wrap input:focus {
      border-color: #2b7a78;
      box-shadow: 0 0 0 3px rgba(43, 122, 120, 0.15);
      background: #fff;
    }
    .quick-add-wrap input::placeholder { color: #94a3b8; }
    html[data-theme="dark"] .quick-add-wrap input {
      background: #1b2030;
      border-color: #3a4152;
      color: #e4e8f2;
    }
    html[data-theme="dark"] .quick-add-wrap input:focus {
      background: #20263a;
      border-color: #2b7a78;
    }

    /* 日视图顶部待排计划 */
    .pending-plans {
      border: 1px solid #e2e8f0;
      border-radius: 8px;
      background: #f8fafc;
      padding: 8px 10px;
      margin-bottom: 10px;
    }
    .pending-plans-head {
      font-size: 13px;
      font-weight: 600;
      color: #334155;
      margin-bottom: 6px;
      display: flex;
      align-items: baseline;
      gap: 8px;
    }
    .pending-plans-hint {
      font-weight: 400;
      font-size: 12px;
      color: #94a3b8;
    }
    .pending-plan {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 10px;
      padding: 6px 8px;
      border-radius: 6px;
      background: #fff;
      border: 1px solid #eef1f6;
      margin-bottom: 4px;
    }
    .pending-plan:last-child { margin-bottom: 0; }
    .pending-plan.overdue { border-color: #fca5a5; background: #fef2f2; }
    .pending-plan-info {
      flex: 1;
      min-width: 0;
      display: flex;
      flex-direction: column;
    }
    .pending-plan-title {
      font-size: 13px;
      font-weight: 600;
      color: #1f2937;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }
    .pending-plan-meta {
      font-size: 12px;
      color: #64748b;
      margin-top: 1px;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }
    .btn-sm { font-size: 12px; padding: 4px 10px; }
    html[data-theme="dark"] .pending-plans { background: #161b28; border-color: #2a3142; }
    html[data-theme="dark"] .pending-plans-head { color: #c2c8d6; }
    html[data-theme="dark"] .pending-plans-hint { color: #5d6b81; }
    html[data-theme="dark"] .pending-plan { background: #1b2030; border-color: #232a3b; }
    html[data-theme="dark"] .pending-plan.overdue { border-color: #7f1d1d; background: #2b1515; }
    html[data-theme="dark"] .pending-plan-title { color: #e4e8f2; }
    html[data-theme="dark"] .pending-plan-meta { color: #7b8499; }

    /* ---------- 运营知识库 ---------- */
    .knowledge-card { border-left-color: #8e6fd8; }
    .knowledge-card.k-status-done { border-left-color: #28a745; }
    .knowledge-card.k-status-invalid { border-left-color: #adb5bd; opacity: .82; }
    .knowledge-card h3 { align-items: flex-start; }

    /* 状态徽章：点击即可快捷切换（待实践 → 已实践 → 已验证无效） */
    .status-badge.k-status { cursor: pointer; user-select: none; transition: filter 0.15s; }
    .status-badge.k-status:hover { filter: brightness(0.92); }
    .status-badge.k-status-todo { background: #ffc107; color: #333; }
    .status-badge.k-status-done { background: #28a745; color: #fff; }
    .status-badge.k-status-invalid { background: #adb5bd; color: #fff; }

    .knowledge-meta {
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      gap: 6px 12px;
      font-size: 12.5px;
      color: #64748b;
    }
    .knowledge-chip {
      display: inline-block;
      padding: 2px 8px;
      border-radius: 12px;
      font-size: 11.5px;
      background: #eef1ff;
      color: #667eea;
      font-weight: 500;
      white-space: nowrap;
    }
    .knowledge-chip-source { background: #fdf0e3; color: #b9770e; }
    .knowledge-points {
      margin: 6px 0 6px;
      padding-left: 20px;
      color: #486581;
      font-size: 13.5px;
      line-height: 1.75;
    }
    .knowledge-points li { margin-bottom: 2px; }
    .knowledge-source {
      font-size: 12.5px;
      color: #8aa0b4;
      word-break: break-all;
    }
    .knowledge-source a { color: #667eea; text-decoration: none; }
    .knowledge-source a:hover { text-decoration: underline; }
    .knowledge-plan-tag {
      display: inline-block;
      margin-right: 8px;
      padding: 4px 10px;
      border-radius: 12px;
      font-size: 12px;
      font-weight: 500;
      background: #e8f6ee;
      color: #1e7e46;
      white-space: nowrap;
    }
    html[data-theme="dark"] .knowledge-meta { color: #9aa5b8; }
    html[data-theme="dark"] .knowledge-chip { background: #232a3b; color: #9db2f0; }
    html[data-theme="dark"] .knowledge-chip-source { background: #2e2519; color: #e0a95c; }
    html[data-theme="dark"] .knowledge-points { color: #c2c8d6; }
    html[data-theme="dark"] .knowledge-source { color: #7b8499; }
    html[data-theme="dark"] .knowledge-source a { color: #8ea2f0; }
    html[data-theme="dark"] .knowledge-plan-tag { background: #16301f; color: #7fd1a1; }

    /* ================= 日程页改版（第一批）：工具条收窄 / 定位画布 / 右栏 / 条目悬浮卡 ================= */

    /* ---------- 布局：主区 + 右栏 ---------- */
    .sched-layout { display: flex; align-items: flex-start; gap: 16px; }
    .sched-main { flex: 1 1 auto; min-width: 0; }
    .sched-rail { flex: 0 0 296px; width: 296px; display: flex; flex-direction: column; gap: 12px; }
    .sched-toolbar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 12px; }
    .sched-toolbar .filter-bar { margin-bottom: 0; flex: 1 1 auto; min-width: 0; }
    .sched-toolbar #btn-export-schedule { flex: 0 0 auto; }
    @media (max-width: 1180px) {
      .sched-layout { flex-direction: column; }
      .sched-rail { flex: 1 1 auto; width: 100%; flex-direction: row; }
      .sched-rail > * { flex: 1 1 50%; min-width: 0; }
    }
    @media (max-width: 720px) {
      .sched-rail { flex-direction: column; }
      .sched-rail > * { flex: 1 1 auto; width: 100%; }
    }

    /* ---------- 右栏卡片 ---------- */
    .rail-card { background: #f8fafc; border: 1px solid #e6ebf2; border-radius: 10px; padding: 12px; }
    .rail-card:empty { display: none; }
    .rail-head { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; margin-bottom: 8px; }
    .rail-title { font-size: 13px; font-weight: 600; color: #33414f; }
    .rail-sub { font-size: 11px; color: #93a1b1; }
    .rail-empty { font-size: 12px; color: #9aa8b6; line-height: 1.7; }
    .agenda-item { display: flex; gap: 8px; padding: 6px 8px; border-radius: 8px; cursor: pointer; align-items: flex-start; }
    .agenda-item:hover { background: #eef2f8; }
    .agenda-time { flex: 0 0 40px; font-size: 11px; color: #6b7b8c; padding-top: 1px; }
    .agenda-body { flex: 1 1 auto; min-width: 0; }
    .agenda-title { font-size: 13px; color: #2b3947; line-height: 1.45; word-break: break-word; }
    .agenda-item.done .agenda-title { color: #8a97a5; }
    .agenda-meta { font-size: 11px; color: #93a1b1; margin-top: 2px; }
    .agenda-dot { display: inline-block; width: 6px; height: 6px; border-radius: 50%; margin-right: 5px; vertical-align: 1px; background: var(--cat, #7b8794); }
    .sched-rail .pending-plans { background: none; border: none; padding: 0; margin: 0; }
    .sched-rail .pending-plan { flex-wrap: wrap; padding: 8px 10px; }
    .sched-rail .pending-plan-title { font-size: 13px; }
    .sched-rail .pending-plan-meta { font-size: 11px; }

    /* ---------- 类别六色（左侧 3px 色条 + 同色浅底） ---------- */
    .cat-work { --cat: #3b6fe0; --cat-soft: #eaf1fe; --cat-ink: #1d3d7f; }
    .cat-study { --cat: #6d46e0; --cat-soft: #f1ecfe; --cat-ink: #3b2a78; }
    .cat-rest { --cat: #12a594; --cat-soft: #e4f7f4; --cat-ink: #0a574e; }
    .cat-entertainment { --cat: #d99512; --cat-soft: #fdf3e1; --cat-ink: #7e550a; }
    .cat-exercise { --cat: #e05616; --cat-soft: #fdece3; --cat-ink: #853209; }
    .cat-other { --cat: #7b8794; --cat-soft: #f0f2f5; --cat-ink: #46505c; }
    .cat-dot { display: inline-block; width: 9px; height: 9px; border-radius: 50%; vertical-align: -1px; background: var(--cat, #7b8794); }

    /* ---------- 日视图：定位画布（块高即时长） ---------- */
    .dc-meta { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-bottom: 8px; }
    .dc-meta-title { font-size: 14px; font-weight: 600; color: #33414f; }
    .dc-meta-tip { font-size: 12px; color: #93a1b1; }
    .day-canvas { position: relative; display: flex; border: 1px solid #e2e8f0; border-radius: 10px; background: #fff; overflow: hidden; }
    .dc-hours { position: relative; flex: 0 0 52px; border-right: 1px solid #eef1f6; background: #fbfcfe; }
    .dc-h { position: absolute; right: 7px; font-size: 11px; color: #93a1b1; }
    .dc-body { position: relative; flex: 1 1 auto; min-width: 0; cursor: crosshair; }
    .dc-line { position: absolute; left: 0; right: 0; border-top: 1px solid #eef1f6; }
    .dc-line.half { border-top: 1px dashed #f4f7fb; }
    .dc-now { position: absolute; left: 0; right: 0; height: 0; border-top: 2px solid #e5484d; z-index: 3; pointer-events: none; }
    .dc-now::before { content: ""; position: absolute; left: -4px; top: -4px; width: 8px; height: 8px; border-radius: 50%; background: #e5484d; }
    .dc-now-label { position: absolute; right: 4px; top: -16px; font-size: 10px; font-weight: 600; color: #e5484d; background: #fff; padding: 0 3px; border-radius: 3px; }
    .dc-hover { position: absolute; left: 0; right: 0; border-top: 1px dashed #b9c7d6; pointer-events: none; z-index: 2; }
    .dc-hover-label { position: absolute; left: 4px; top: -15px; font-size: 10px; color: #6b7b8c; background: #fff; padding: 0 3px; border-radius: 3px; }
    .dc-draft { position: absolute; border: 1px dashed #2b7a78; background: rgba(43, 122, 120, 0.1); border-radius: 6px; pointer-events: none; z-index: 2; }
    .dc-draft-label { position: absolute; right: 5px; top: 1px; font-size: 11px; font-weight: 600; color: #2b7a78; }

    /* ---------- 日程条目块 ---------- */
    .ev-block { position: absolute; z-index: 4; box-sizing: border-box; overflow: hidden; border-radius: 6px;
      border-left: 3px solid var(--cat, #7b8794); background: var(--cat-soft, #f0f2f5); color: var(--cat-ink, #46505c);
      padding: 2px 6px; cursor: pointer; }
    .ev-block:hover { box-shadow: 0 2px 8px rgba(30, 41, 59, 0.18); }
    .ev-block.active { box-shadow: 0 0 0 2px var(--cat, #7b8794); }
    .ev-title { font-size: 12px; line-height: 1.25; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .ev-time { font-size: 10px; line-height: 1.2; opacity: 0.75; white-space: nowrap; overflow: hidden; }
    .ev-block.compact { padding: 1px 6px; display: flex; align-items: center; }
    .ev-block.compact .ev-time { display: none; }
    .ev-block.done { opacity: 0.62; }
    .ev-block.done .ev-title::before { content: "✓ "; }

    /* ---------- 条目悬浮卡 ---------- */
    .ev-pop { position: fixed; z-index: 2100; width: 272px; background: #fff; border: 1px solid #e2e8f0; border-radius: 10px;
      box-shadow: 0 10px 28px rgba(15, 23, 42, 0.22); padding: 12px; }
    .ev-pop-head { display: flex; gap: 8px; align-items: flex-start; margin-bottom: 6px; padding-right: 18px; }
    .ev-pop-dot { flex: 0 0 auto; width: 8px; height: 8px; border-radius: 50%; margin-top: 5px; background: var(--cat, #7b8794); }
    .ev-pop-title { font-size: 14px; font-weight: 600; color: #23303c; line-height: 1.4; word-break: break-word; }
    .ev-pop-row { font-size: 12px; color: #5b6a7a; line-height: 1.7; }
    .ev-pop-row b { color: #33414f; font-weight: 600; }
    .ev-pop-plan { display: inline-block; font-size: 11px; background: #eef1ff; color: #5566d6; border-radius: 10px; padding: 1px 8px; }
    .ev-pop-actions { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 10px; }
    .ev-pop-actions .btn { padding: 5px 11px; font-size: 13px; }
    .ev-pop-close { position: absolute; right: 8px; top: 6px; border: none; background: none; color: #9aa8b6; font-size: 15px; cursor: pointer; line-height: 1; }
    .ev-pop-close:hover { color: #5b6a7a; }

    /* ---------- 表单内快捷时长 ---------- */
    .quick-durations { display: flex; gap: 6px; flex-wrap: wrap; }
    .qd-btn { border: 1px solid #dbe2ee; background: #f7f9fd; color: #4a5b6d; border-radius: 8px; padding: 6px 10px; font-size: 12px; cursor: pointer; transition: all 0.2s ease; }
    .qd-btn:hover { border-color: #667eea; color: #5566d6; background: #eef1ff; }

    /* ---------- 计划卡片：压缩为标题 + 元信息 + 摘要 ---------- */
    .plan-card .plan-line { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; font-size: 13px; color: #5b6a7a; margin-bottom: 3px; }
    .plan-card .plan-line strong { color: #33414f; font-weight: 600; }
    .plan-card .plan-meta-chips { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-bottom: 4px; }
    .plan-chip { display: inline-block; font-size: 11px; border-radius: 10px; padding: 1px 8px; background: #eef1ff; color: #5566d6; }
    .plan-chip.chip-overdue { background: #fdeaea; color: #c02c2c; }
    .plan-chip.chip-due { background: #fdf3e1; color: #8a6009; }
    .plan-chip.chip-plain { background: #f0f2f5; color: #5b6a7a; }
    .plan-chip.chip-done { background: #e6f7ed; color: #1f8a4c; }
    .plan-card .plan-desc { font-size: 12px; color: #8a97a5; margin-bottom: 0; word-break: break-word; }
    .plan-card .item-actions { margin-top: 8px; }
    .plan-card .item-actions .btn { padding: 5px 10px; font-size: 13px; }

    /* ---------- 深色主题 ---------- */
    html[data-theme="dark"] .rail-card { background: #1b2030; border-color: #2a3142; }
    html[data-theme="dark"] .rail-title { color: #c2c8d6; }
    html[data-theme="dark"] .rail-sub, html[data-theme="dark"] .dc-meta-tip, html[data-theme="dark"] .rail-empty, html[data-theme="dark"] .agenda-meta { color: #7b8499; }
    html[data-theme="dark"] .agenda-item:hover { background: #232a3b; }
    html[data-theme="dark"] .agenda-time { color: #9aa5b8; }
    html[data-theme="dark"] .agenda-title { color: #d8dce6; }
    html[data-theme="dark"] .agenda-item.done .agenda-title { color: #7b8499; }
    html[data-theme="dark"] .cat-work { --cat: #6e93f5; --cat-soft: #1a2540; --cat-ink: #c6d6fb; }
    html[data-theme="dark"] .cat-study { --cat: #9d84f0; --cat-soft: #241d3d; --cat-ink: #d5c9fb; }
    html[data-theme="dark"] .cat-rest { --cat: #2cc7b4; --cat-soft: #14322f; --cat-ink: #a8eadf; }
    html[data-theme="dark"] .cat-entertainment { --cat: #e8b84b; --cat-soft: #352d18; --cat-ink: #f0d9a0; }
    html[data-theme="dark"] .cat-exercise { --cat: #f07a3d; --cat-soft: #35211a; --cat-ink: #f8c9ae; }
    html[data-theme="dark"] .cat-other { --cat: #9aa5b8; --cat-soft: #262c3c; --cat-ink: #c2c8d6; }
    html[data-theme="dark"] .dc-meta-title { color: #c2c8d6; }
    html[data-theme="dark"] .day-canvas { background: #1f2534; border-color: #2a3142; }
    html[data-theme="dark"] .dc-hours { background: #191e2b; border-right-color: #2a3142; }
    html[data-theme="dark"] .dc-h { color: #7b8499; }
    html[data-theme="dark"] .dc-line { border-top-color: #2a3142; }
    html[data-theme="dark"] .dc-line.half { border-top-color: #242b3b; }
    html[data-theme="dark"] .dc-now-label, html[data-theme="dark"] .dc-hover-label { background: #1f2534; }
    html[data-theme="dark"] .dc-hover { border-top-color: #4a5568; }
    html[data-theme="dark"] .dc-draft { border-color: #4fd1c5; background: rgba(79, 209, 197, 0.14); }
    html[data-theme="dark"] .dc-draft-label { color: #7fd1cd; }
    html[data-theme="dark"] .ev-pop { background: #262c3c; border-color: #333b4f; }
    html[data-theme="dark"] .ev-pop-title { color: #e4e8f2; }
    html[data-theme="dark"] .ev-pop-row { color: #aab3c5; }
    html[data-theme="dark"] .ev-pop-row b { color: #d8dce6; }
    html[data-theme="dark"] .ev-pop-plan { background: #333b52; color: #9fb0ff; }
    html[data-theme="dark"] .ev-pop-close { color: #7b8499; }
    html[data-theme="dark"] .qd-btn { background: #232a3b; border-color: #3a4152; color: #c2c8d6; }
    html[data-theme="dark"] .qd-btn:hover { background: #2f3548; border-color: #8fa0ff; color: #9fb0ff; }
    html[data-theme="dark"] .plan-card .plan-line { color: #aab3c5; }
    html[data-theme="dark"] .plan-card .plan-line strong { color: #d8dce6; }
    html[data-theme="dark"] .plan-card .plan-desc { color: #7b8499; }
    html[data-theme="dark"] .plan-chip { background: #333b52; color: #9fb0ff; }
    html[data-theme="dark"] .plan-chip.chip-overdue { background: #3d2427; color: #ffb3a7; }
    html[data-theme="dark"] .plan-chip.chip-due { background: #3d3520; color: #e8c288; }
    html[data-theme="dark"] .plan-chip.chip-plain { background: #2a3142; color: #9aa5b8; }
    html[data-theme="dark"] .plan-chip.chip-done { background: #16301f; color: #7fd1a1; }

    /* ============ 第二批：周视图真时间网格 + 月视图增密联动 ============ */
    .week-grid { align-items: stretch; }
    .day-column { cursor: default; }
    .day-column:hover { border-color: #ddd; box-shadow: none; }
    .day-header { cursor: pointer; user-select: none; }
    .day-header:hover { filter: brightness(1.08); }
    .day-header.active { outline: 3px solid rgba(102, 126, 234, 0.55); outline-offset: -1px; }
    .wk-body {
      position: relative;
      overflow: hidden;
      border-left: 1px solid #eef1f6;
      border-right: 1px solid #eef1f6;
      cursor: crosshair;
    }
    .wk-line { position: absolute; left: 0; right: 0; border-top: 1px solid #f2f5fa; }
    .wk-body .ev-block { font-size: 11px; }
    .wk-body .ev-title { font-size: 10.5px; }
    .wk-body .ev-time { font-size: 9px; }

    .day-cell.active { border: 2px solid #667eea; background: #eef1ff; }
    .preview-row {
      display: flex;
      align-items: center;
      gap: 4px;
      font-size: 11px;
      line-height: 1.35;
      padding: 1px 4px 1px 6px;
      margin-bottom: 2px;
      border-radius: 3px;
      background: var(--cat-soft);
      color: var(--cat-ink);
      border-left: 3px solid var(--cat);
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
      cursor: pointer;
    }
    .preview-row.done { opacity: 0.6; }
    .preview-row:hover { outline: 1px solid var(--cat); outline-offset: -1px; }

    html[data-theme="dark"] .day-header.active { outline-color: rgba(148, 163, 255, 0.5); }
    html[data-theme="dark"] .day-cell.active { border-color: #667eea; background: #232a40; }
    html[data-theme="dark"] .wk-body { border-left-color: #2a3142; border-right-color: #2a3142; }
    html[data-theme="dark"] .wk-line { border-top-color: #242b3b; }

    /* 月视图：节日条 + 备货截止角标 */
    .day-number {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 4px;
    }
    .prep-badge {
      flex: none;
      font-size: 10px;
      font-weight: 600;
      background: #fde2e2;
      color: #b5302c;
      border: 1px solid #f3b3af;
      border-radius: 3px;
      padding: 1px 4px;
      white-space: nowrap;
      cursor: default;
    }
    .evt-day {
      font-size: 11px;
      line-height: 1.35;
      font-weight: 600;
      padding: 1px 4px 1px 6px;
      margin-bottom: 2px;
      border-radius: 3px;
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
      cursor: pointer;
    }
    .evt-day.type-promo {
      background: #fde6e6;
      color: #b5302c;
      border-left: 3px solid #e3443e;
    }
    .evt-day.type-festival {
      background: #e4f5ec;
      color: #1c7348;
      border-left: 3px solid #22a860;
    }
    .evt-day.type-supply {
      background: #e7eef9;
      color: #345183;
      border-left: 3px solid #5a82c8;
    }
    .evt-day-more {
      font-size: 10.5px;
      color: #7a869a;
      font-style: italic;
      margin-bottom: 2px;
    }

    html[data-theme="dark"] .prep-badge {
      background: #482427;
      color: #ef9a96;
      border-color: #6b3036;
    }
    html[data-theme="dark"] .evt-day.type-promo {
      background: #44252a;
      color: #f0a19d;
      border-left-color: #d95a55;
    }
    html[data-theme="dark"] .evt-day.type-festival {
      background: #1f3a2d;
      color: #85cfa5;
      border-left-color: #2e9460;
    }
    html[data-theme="dark"] .evt-day.type-supply {
      background: #253140;
      color: #92b1db;
      border-left-color: #5a7fb0;
    }

    /* 计划视图切换（列表/看板） */
    .view-switch {
      display: inline-flex;
      border: 1px solid #d8e0ec;
      border-radius: 7px;
      overflow: hidden;
    }
    .vs-btn {
      border: none;
      background: #f3f6fb;
      color: #5b6a7d;
      padding: 7px 14px;
      font-size: 13px;
      cursor: pointer;
    }
    .vs-btn.active { background: #667eea; color: #fff; }
    #plans.kanban-mode #plan-filter-tabs { display: none; }

    /* 看板三列 */
    .kanban-board {
      display: flex;
      gap: 12px;
      align-items: flex-start;
    }
    .kanban-col {
      flex: 1;
      min-width: 0;
      background: #f3f6fb;
      border: 1px solid #e3e9f2;
      border-radius: 10px;
      padding: 10px;
    }
    .kanban-col-head {
      font-size: 14px;
      font-weight: 700;
      display: flex;
      justify-content: space-between;
      align-items: center;
      margin-bottom: 10px;
      padding: 0 2px;
    }
    .kanban-count {
      font-size: 12px;
      background: #fff;
      border: 1px solid #d8e0ec;
      border-radius: 10px;
      padding: 1px 8px;
      color: #69768a;
    }
    .kanban-col-body { min-height: 80px; }
    .kanban-col.kcol-todo .kanban-col-head { color: #2f5bd0; }
    .kanban-col.kcol-doing .kanban-col-head { color: #b06b12; }
    .kanban-col.kcol-done .kanban-col-head { color: #1d7a48; }
    .kanban-card { margin-bottom: 8px; cursor: grab; }
    .kanban-card:active { cursor: grabbing; }
    .kanban-card.dragging { opacity: 0.45; }
    .kanban-empty {
      font-size: 12px;
      color: #9aa6b8;
      text-align: center;
      padding: 14px 0;
      border: 1px dashed #ccd6e4;
      border-radius: 8px;
    }

    /* 今日战报小按钮 + 日报弹窗 */
    .dash-mini { margin-left: 10px; padding: 3px 10px; font-size: 12px; }
    .report-text {
      width: 100%;
      box-sizing: border-box;
      font-family: ui-monospace, Consolas, "Microsoft YaHei", monospace;
      font-size: 13px;
      line-height: 1.6;
      border: 1px solid #d8e0ec;
      border-radius: 8px;
      padding: 10px;
      background: #fafbfd;
      color: #1f2937;
      resize: vertical;
    }

    html[data-theme="dark"] .view-switch { border-color: #2a3142; }
    html[data-theme="dark"] .vs-btn { background: #232a40; color: #aeb8cc; }
    html[data-theme="dark"] .vs-btn.active { background: #667eea; color: #fff; }
    html[data-theme="dark"] .kanban-col { background: #1e2536; border-color: #2a3142; }
    html[data-theme="dark"] .kanban-count { background: #2a3142; border-color: #3a4459; color: #aeb8cc; }
    html[data-theme="dark"] .kanban-empty { border-color: #3a4459; color: #6b7689; }
    html[data-theme="dark"] .report-text { background: #1a2030; border-color: #2a3142; color: #dbe2ee; }

    /* 日程块拖拽：整块 grab / 底缘 ns-resize */
    .ev-block { cursor: grab; }
    .ev-block.dragging { opacity: 0.85; z-index: 50; box-shadow: 0 6px 18px rgba(0, 0, 0, 0.28); }
    .ev-block::after {
      content: "";
      position: absolute;
      left: 0; right: 0; bottom: 0;
      height: 6px;
      cursor: ns-resize;
    }

    /* 顶部用户区：我的/团队切换 + 用户名 + 退出 */
    .user-bar {
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 12px;
      margin-top: 12px;
      flex-wrap: wrap;
    }
    .scope-switch {
      display: inline-flex;
      border: 1px solid #d8deea;
      border-radius: 8px;
      overflow: hidden;
    }
    .scope-btn {
      border: none;
      background: transparent;
      color: #6b7280;
      padding: 6px 16px;
      font-size: 13px;
      cursor: pointer;
    }
    .scope-btn.active { background: #667eea; color: #fff; }
    .scope-btn:disabled { opacity: 0.4; cursor: not-allowed; }
    .user-name { font-size: 13.5px; color: #1f2937; font-weight: 600; }
    .logout-btn {
      border: 1px solid #d8deea;
      background: transparent;
      color: #6b7280;
      border-radius: 8px;
      padding: 6px 14px;
      font-size: 13px;
      cursor: pointer;
    }
    .logout-btn:hover { border-color: #d34141; color: #d34141; }

    /* 深色主题适配用户区 */
    html[data-theme="dark"] .scope-switch { border-color: #2a3346; }
    html[data-theme="dark"] .scope-btn { color: #93a0b8; }
    html[data-theme="dark"] .user-name { color: #e6ebf5; }
    html[data-theme="dark"] .logout-btn { border-color: #2a3346; color: #93a0b8; }

    /* 卡片执行人小标签（团队视图） */
    .owner-tag {
      display: inline-block;
      font-size: 11px;
      line-height: 1.4;
      padding: 1px 7px;
      border-radius: 10px;
      background: rgba(102, 126, 234, 0.14);
      color: #667eea;
      margin-left: 6px;
      vertical-align: middle;
    }

    /* ============ 第二期：项目成员多选与人员标签 ============ */
    .member-pick {
      display: flex;
      flex-wrap: wrap;
      gap: 8px 16px;
      border: 1px solid #d8deea;
      border-radius: 8px;
      padding: 10px 12px;
    }
    .member-opt {
      display: inline-flex;
      align-items: center;
      gap: 6px;
      font-size: 13.5px;
      cursor: pointer;
    }
    .member-opt input { margin: 0; cursor: pointer; }
    .project-people {
      display: flex;
      flex-wrap: wrap;
      gap: 6px;
      margin: 6px 0 2px;
    }
    .project-people .owner-tag,
    .project-people .member-tag { margin-left: 0; }
    .member-tag {
      display: inline-block;
      font-size: 11px;
      line-height: 1.4;
      padding: 1px 7px;
      border-radius: 10px;
      background: #eef1f6;
      color: #5b6472;
    }

    /* 深色适配 */
    html[data-theme="dark"] .member-pick { border-color: #2a3346; background: #1a2030; }
    html[data-theme="dark"] .member-opt { color: #c6cfdf; }
    html[data-theme="dark"] .member-tag { background: #2a3346; color: #9aa5b8; }

    /* ============ 第三期：成员管理页 ============ */
    .card-form {
      border: 1px solid #e2e7f0;
      border-radius: 10px;
      padding: 18px 20px;
      margin-bottom: 20px;
      background: #fff;
    }
    .card-form h3 { margin: 0 0 14px; }
    .members-table { display: flex; flex-direction: column; gap: 10px; }
    .member-row {
      display: flex;
      justify-content: space-between;
      align-items: center;
      gap: 12px;
      border: 1px solid #e2e7f0;
      border-radius: 10px;
      padding: 12px 16px;
      background: #fff;
    }
    .member-info { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 16px; }
    .m-name { font-weight: 600; font-size: 14.5px; }
    .m-self { font-weight: 400; color: #8a93a3; font-size: 12px; }
    .m-email { font-size: 13px; color: #6b7280; }
    .m-role, .m-state { font-size: 11px; padding: 1px 8px; border-radius: 10px; }
    .role-badge-admin { background: rgba(102, 126, 234, 0.14); color: #667eea; }
    .role-badge-member { background: #eef1f6; color: #5b6472; }
    .m-active { background: rgba(34, 197, 94, 0.14); color: #16a34a; }
    .m-stopped { background: rgba(239, 68, 68, 0.12); color: #dc2626; }

    /* 深色适配 */
    html[data-theme="dark"] .card-form,
    html[data-theme="dark"] .member-row { border-color: #2a3346; background: #1a2030; }
    html[data-theme="dark"] .m-email { color: #93a0b8; }
    html[data-theme="dark"] .role-badge-member { background: #2a3346; color: #9aa5b8; }

    /* ============ 通知中心 ============ */
    .notif-wrap { position: relative; display: flex; align-items: center; }
    .notif-bell {
      position: relative;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 34px;
      height: 34px;
      border-radius: 8px;
      border: 1px solid #d8deea;
      background: #fff;
      color: #5b6472;
      cursor: pointer;
    }
    .notif-bell:hover { color: #667eea; border-color: #667eea; }
    .notif-badge {
      position: absolute;
      top: -6px;
      right: -6px;
      min-width: 17px;
      height: 17px;
      padding: 0 4px;
      border-radius: 9px;
      background: #ef4444;
      color: #fff;
      font-size: 10px;
      line-height: 17px;
      text-align: center;
      font-weight: 600;
      border: 2px solid #fff;
      box-sizing: content-box;
    }
    .notif-panel {
      position: absolute;
      top: 42px;
      left: 0;
      width: 330px;
      max-height: 420px;
      display: flex;
      flex-direction: column;
      background: #fff;
      border: 1px solid #e2e7f0;
      border-radius: 10px;
      box-shadow: 0 12px 32px rgba(20, 30, 60, 0.16);
      z-index: 1200;
      overflow: hidden;
    }
    .notif-panel-head {
      display: flex;
      justify-content: space-between;
      align-items: center;
      padding: 12px 14px;
      border-bottom: 1px solid #eef1f6;
      font-weight: 600;
      font-size: 14px;
    }
    .notif-link { border: none; background: none; color: #667eea; font-size: 12.5px; cursor: pointer; padding: 0; }
    .notif-list { overflow-y: auto; }
    .notif-item { display: flex; gap: 10px; padding: 11px 14px; border-bottom: 1px solid #f3f5f9; cursor: pointer; }
    .notif-item:hover { background: #f7f9fd; }
    .notif-item:not(.is-read) { background: rgba(102, 126, 234, 0.06); }
    .notif-item:not(.is-read):hover { background: rgba(102, 126, 234, 0.1); }
    .notif-ic { font-size: 16px; line-height: 1.3; }
    .notif-body { min-width: 0; flex: 1; }
    .notif-title { font-size: 13.5px; font-weight: 600; }
    .notif-text { font-size: 12.5px; color: #6b7280; margin-top: 2px; word-break: break-word; }
    .notif-time { font-size: 11px; color: #9aa3b2; margin-top: 4px; }
    .notif-empty { padding: 28px 14px; text-align: center; color: #9aa3b2; font-size: 13px; }

    /* 深色适配 */
    html[data-theme="dark"] .notif-bell { background: #1a2030; border-color: #2a3346; color: #9aa5b8; }
    html[data-theme="dark"] .notif-panel { background: #1a2030; border-color: #2a3346; }
    html[data-theme="dark"] .notif-panel-head { border-bottom-color: #2a3346; }
    html[data-theme="dark"] .notif-item { border-bottom-color: #232c3f; }
    html[data-theme="dark"] .notif-text { color: #93a0b8; }
    html[data-theme="dark"] .notif-badge { border-color: #1a2030; }

    /* ============ 团队周报 ============ */
    .wr-toolbar {
      display: flex;
      align-items: center;
      gap: 10px;
      margin: 6px 0 12px;
    }
    .wr-mini { padding: 5px 10px; font-size: 12.5px; }
    .wr-mini:disabled { opacity: 0.45; cursor: not-allowed; }
    .wr-range { flex: 1; text-align: center; font-size: 13.5px; font-weight: 600; color: #334155; }
    .wr-table-wrap {
      max-height: 300px;
      overflow-y: auto;
      margin-bottom: 12px;
      border: 1px solid #e5eaf3;
      border-radius: 8px;
    }
    .wr-table { width: 100%; border-collapse: collapse; font-size: 13px; }
    .wr-table thead th {
      position: sticky;
      top: 0;
      background: #f5f7fc;
      color: #475569;
      font-weight: 600;
      text-align: center;
      padding: 9px 8px;
      border-bottom: 1px solid #e5eaf3;
      white-space: nowrap;
    }
    .wr-table thead th:first-child { text-align: left; }
    .wr-table tbody td { padding: 9px 8px; text-align: center; border-bottom: 1px solid #f1f4f9; }
    .wr-table tbody td.wr-name { text-align: left; font-weight: 600; }
    .wr-table tbody tr:last-child td { border-bottom: none; }
    .wr-table tr.wr-sum td {
      background: #f7f9fd;
      font-weight: 600;
      color: #334155;
      border-top: 2px solid #e5eaf3;
    }
    .wr-empty { padding: 26px 12px; text-align: center; color: #8b95a6; font-size: 13px; margin: 0; }

    /* 深色适配 */
    html[data-theme="dark"] .wr-range { color: #cbd5e1; }
    html[data-theme="dark"] .wr-table-wrap { border-color: #2a3346; }
    html[data-theme="dark"] .wr-table thead th {
      background: #232c3f;
      color: #9aa5b8;
      border-bottom-color: #2a3346;
    }
    html[data-theme="dark"] .wr-table tbody td { border-bottom-color: #232c3f; }
    html[data-theme="dark"] .wr-table tr.wr-sum td {
      background: #212a3b;
      color: #cbd5e1;
      border-top-color: #2a3346;
    }

