@tailwind base;
@tailwind components;
@tailwind utilities;

/* 自定义全局样式 - 微信配色主题 */
@layer base {
  :root {
    /* 微信品牌色 */
    --wechat-green: #07c160;
    --wechat-green-hover: #06ad56;
    --wechat-green-light: #e6f7f0;
    --wechat-green-dark: #059341;

    /* 主色调 */
    --primary-color: #07c160;
    --primary-hover: #06ad56;
    --secondary-color: #4c9e5f;

    /* 危险色 */
    --danger-color: #fa5151;
    --danger-hover: #e94848;

    /* 警告色 */
    --warning-color: #ffc300;
    --warning-hover: #e6ad00;

    /* 背景色 */
    --bg-primary: #f7f8fa;
    --bg-secondary: #ffffff;
    --bg-gray: #ededed;
    --bg-dark: #191919;

    /* 文字颜色 */
    --text-primary: #191919;
    --text-secondary: #576b95;
    --text-light: #888888;
    --text-white: #ffffff;

    /* 边框颜色 */
    --border-color: #e7e7e7;
    --border-light: #f4f4f4;

    /* 统一消息圆角（聊天所有消息共用） */
    --message-radius: 4px;

    /* 主题色板 */
    --sidebar-rail-bg: #e8e7e7;
    --sidebar-rail-border: #dadada;
    --sidebar-rail-hover: #e1e1e1;
    --sidebar-rail-icon-color: #5d5d5d;
    --sidebar-rail-icon-active-color: #07b75b;
    --desktop-titlebar-bg: #ededed;
    --desktop-titlebar-icon: #111111;
    --desktop-titlebar-hover: rgba(0, 0, 0, 0.06);
    --desktop-titlebar-active: rgba(0, 0, 0, 0.1);

    --app-shell-bg: #ededed;
    --app-surface-bg: #ffffff;
    --app-surface-soft: #f7f7f7;
    --app-surface-muted: #f3f3f3;
    --app-surface-overlay: rgba(255, 255, 255, 0.92);
    --app-border: #e7e7e7;
    --app-border-soft: #ececec;
    --app-border-subtle: #f1f1f1;
    --app-text-primary: #191919;
    --app-text-secondary: #5f5f5f;
    --app-text-muted: #909090;
    --app-text-faint: #9e9e9e;
    --app-input-bg: #ffffff;
    --app-input-border: #e7e7e7;
    --app-input-hover: #f7f7f7;
    --app-neutral-btn-bg: #ffffff;
    --app-neutral-btn-hover: #f7f7f7;
    --app-list-hover: #eaeaea;
    --app-list-active: #dedede;
    --app-list-active-hover: #d3d3d3;
    --app-accent: #07c160;
    --app-accent-hover: #06ad56;

    --session-list-bg: #f7f7f7;
    --session-list-search-bg: #f7f7f7;
    --session-list-border: #e5e7eb;
    --session-list-item-border: #f1f1f1;
    --session-list-item-bg: transparent;
    --session-list-item-hover: #eaeaea;
    --session-list-item-selected: #dedede;
    --session-list-item-selected-hover: #d3d3d3;
    --session-list-item-top-bg: #eaeaea;
    --session-list-item-top-hover: #dedede;
    --session-list-item-top-selected: #d2d2d2;
    --session-list-item-top-selected-hover: #c7c7c7;
    --session-list-name: #111827;
    --session-list-meta: #6b7280;
    --session-list-preview: #6b7280;
    --session-list-resizer: rgba(0, 0, 0, 0.12);

    --contact-search-bg: #eaeaea;
    --contact-search-focus-bg: #ffffff;
    --contact-search-focus-ring: rgba(3, 193, 96, 0.2);
    --contact-search-icon: #9ca3af;
    --contact-search-text: #1f2937;
    --contact-search-placeholder: #9ca3af;
    --contact-search-clear: #9ca3af;
    --account-select-bg: #eaeaea;

    --chat-page-bg: #ededed;
    --chat-header-bg: #ededed;
    --chat-header-border: #e5e7eb;
    --chat-header-title: #111827;
    --chat-header-icon: #4b5563;
    --chat-header-icon-hover: #1f2937;
    --message-filter-color: #374151;
    --message-list-status: #6b7280;
    --message-load-more-bg: #ffffff;
    --message-load-more-border: #e5e7eb;
    --message-load-more-text: #374151;
    --jump-to-bottom-bg: rgba(255, 255, 255, 0.9);
    --jump-to-bottom-border: #e5e7eb;
    --jump-to-bottom-text: #374151;
    --chat-date-text: #9e9e9e;
    --chat-sender-name: #6b7280;
    --chat-bubble-sent: #95ec69;
    --chat-bubble-sent-text: #000000;
    --chat-bubble-received: #ffffff;
    --chat-bubble-received-text: #1f2937;
    --quote-bubble-bg: #e1e1e1;
    --quote-bubble-text: #525252;
    --merged-history-bg: #ffffff;
    --merged-history-hover: #f5f5f5;
    --merged-history-title: #161616;
    --merged-history-preview: #6b7280;
    --merged-history-divider: #e8e8e8;
    --merged-history-footer: #b2b2b2;

    --search-panel-bg: #ffffff;
    --search-panel-header-bg: #f9fafb;
    --search-panel-border: #e5e7eb;
    --search-panel-soft: #f9fafb;
    --search-item-hover: #f3f4f6;
    --search-panel-text: #1f2937;
    --search-panel-muted: #9ca3af;
    --search-result-selected: rgba(3, 193, 96, 0.08);
    --search-result-selected-hover: rgba(3, 193, 96, 0.12);
    --search-input-bg: #ffffff;
    --search-input-border: #e5e7eb;

    --calendar-day-bg: #ffffff;
    --calendar-day-border: #e5e7eb;
    --calendar-day-text: #374151;
    --calendar-day-empty-bg: #f3f4f6;
    --calendar-day-empty-border: #f3f4f6;
    --calendar-day-empty-text: #9ca3af;

    --scrollbar-track: #f1f1f1;
    --scrollbar-thumb: #c1c1c1;
    --scrollbar-thumb-hover: #a1a1a1;
  }

  html[data-theme='dark'] {
    --bg-primary: #191919;
    --bg-secondary: #242424;
    --bg-gray: #242424;
    --text-primary: #f5f5f5;
    --text-secondary: #c7c7c7;
    --text-light: #9f9f9f;
    --border-color: #303030;
    --border-light: #262626;

    --sidebar-rail-bg: #2d2d2d;
    --sidebar-rail-border: #2d2d2d;
    --sidebar-rail-hover: #373737;
    --sidebar-rail-icon-color: #a0a0a0;
    --sidebar-rail-icon-active-color: #3eb575;
    --desktop-titlebar-bg: #191919;
    --desktop-titlebar-icon: #d0d0d0;
    --desktop-titlebar-hover: rgba(255, 255, 255, 0.08);
    --desktop-titlebar-active: rgba(255, 255, 255, 0.14);

    --app-shell-bg: #191919;
    --app-surface-bg: #242424;
    --app-surface-soft: #2e2e2e;
    --app-surface-muted: #2f2f2f;
    --app-surface-overlay: rgba(46, 46, 46, 0.92);
    --app-border: #373737;
    --app-border-soft: #3a3a3a;
    --app-border-subtle: #2d2d2d;
    --app-text-primary: #f5f5f5;
    --app-text-secondary: #c7c7c7;
    --app-text-muted: #9f9f9f;
    --app-text-faint: #9f9f9f;
    --app-input-bg: #2f2f2f;
    --app-input-border: #3a3a3a;
    --app-input-hover: #373737;
    --app-neutral-btn-bg: #2f2f2f;
    --app-neutral-btn-hover: #3a3a3a;
    --app-list-hover: #2f2f2f;
    --app-list-active: #3a3a3a;
    --app-list-active-hover: #444444;
    --app-accent: #3eb575;
    --app-accent-hover: #35a86b;

    --session-list-bg: #191919;
    --session-list-search-bg: #191919;
    --session-list-border: #2d2d2d;
    --session-list-item-border: #2d2d2d;
    --session-list-item-bg: #242424;
    --session-list-item-hover: #2f2f2f;
    --session-list-item-selected: #3a3a3a;
    --session-list-item-selected-hover: #444444;
    --session-list-item-top-bg: #2f2f2f;
    --session-list-item-top-hover: #3a3a3a;
    --session-list-item-top-selected: #444444;
    --session-list-item-top-selected-hover: #4e4e4e;
    --session-list-name: #f5f5f5;
    --session-list-meta: #c4c4c4;
    --session-list-preview: #b8b8b8;
    --session-list-resizer: rgba(255, 255, 255, 0.18);

    --contact-search-bg: #2f2f2f;
    --contact-search-focus-bg: #2f2f2f;
    --contact-search-focus-ring: rgba(62, 181, 117, 0.22);
    --contact-search-icon: #9f9f9f;
    --contact-search-text: #f5f5f5;
    --contact-search-placeholder: #9f9f9f;
    --contact-search-clear: #9f9f9f;
    --account-select-bg: #2f2f2f;

    --chat-page-bg: #191919;
    --chat-header-bg: #191919;
    --chat-header-border: #2b2b2b;
    --chat-header-title: #f5f5f5;
    --chat-header-icon: #d0d0d0;
    --chat-header-icon-hover: #ffffff;
    --message-filter-color: #d0d0d0;
    --message-list-status: #9f9f9f;
    --message-load-more-bg: #242424;
    --message-load-more-border: #373737;
    --message-load-more-text: #d8d8d8;
    --jump-to-bottom-bg: rgba(36, 36, 36, 0.94);
    --jump-to-bottom-border: #373737;
    --jump-to-bottom-text: #d8d8d8;
    --chat-date-text: #9f9f9f;
    --chat-sender-name: #b9b9b9;
    --chat-bubble-sent: #3eb575;
    --chat-bubble-sent-text: #ffffff;
    --chat-bubble-received: #2e2e2e;
    --chat-bubble-received-text: #f5f5f5;
    --quote-bubble-bg: #252525;
    --quote-bubble-text: #c9c9c9;
    --merged-history-bg: #2e2e2e;
    --merged-history-hover: #383838;
    --merged-history-title: #f5f5f5;
    --merged-history-preview: #c4c4c4;
    --merged-history-divider: #3a3a3a;
    --merged-history-footer: #a8a8a8;

    --search-panel-bg: #191919;
    --search-panel-header-bg: #191919;
    --search-panel-border: #2b2b2b;
    --search-panel-soft: #2f2f2f;
    --search-item-hover: #2f2f2f;
    --search-panel-text: #f5f5f5;
    --search-panel-muted: #9f9f9f;
    --search-result-selected: #3a3a3a;
    --search-result-selected-hover: #444444;
    --search-input-bg: #2f2f2f;
    --search-input-border: #3a3a3a;

    --calendar-day-bg: #242424;
    --calendar-day-border: #373737;
    --calendar-day-text: #e5e5e5;
    --calendar-day-empty-bg: #1f1f1f;
    --calendar-day-empty-border: #1f1f1f;
    --calendar-day-empty-text: #7f7f7f;

    --scrollbar-track: #232323;
    --scrollbar-thumb: #4b4b4b;
    --scrollbar-thumb-hover: #5b5b5b;
  }

  body {
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif;
    background-color: var(--bg-primary);
    color: var(--text-primary);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    transition: background-color 0.2s ease, color 0.2s ease;
  }
}

/* 微信风格组件样式 */
@layer components {
  /* 聊天气泡尾巴（左右），与高度 42px 居中对齐 */
  .bubble-tail-l, .bubble-tail-r { position: relative; }
  .bubble-tail-l::after {
    content: '';
    position: absolute;
    left: -4px;
    top: 12px; /* 36px 中线 18px，减去 6px ≈ 12px */
    width: 12px; height: 12px;
    background: #FFFFFF;
    transform: rotate(45deg);
    border-radius: 2px;
  }
  .bubble-tail-r::after {
    content: '';
    position: absolute;
    right: -4px;
    top: 12px;
    width: 12px; height: 12px;
    background: #95EC69;
    transform: rotate(45deg);
    border-radius: 2px;
  }
  /* 统一的消息圆角工具类 */
  .msg-radius { border-radius: var(--message-radius); }
  .msg-bubble { @apply leading-normal break-words text-pretty; border-radius: var(--message-radius); }

  /* 隐私模式（通用）：默认模糊，悬停显示 */
  .privacy-blur {
    filter: blur(9px);
    transition: filter 0.2s ease;
  }

  .privacy-blur:hover {
    filter: none;
  }

  /* Wrapped 隐私模式：仅模糊“用户名文本”，头像不模糊（避免把头像也 blur 掉） */
  .wrapped-privacy .wrapped-privacy-name {
    filter: blur(9px);
    transition: filter 0.2s ease;
  }

  .wrapped-privacy .wrapped-privacy-name:hover {
    filter: none;
  }

  /* Wrapped 隐私模式：模糊“消息内容文本”（仅在被标记为 message 的节点上生效） */
  .wrapped-privacy .wrapped-privacy-message {
    filter: blur(9px);
    transition: filter 0.2s ease;
  }

  .wrapped-privacy .wrapped-privacy-message:hover {
    filter: none;
  }

  /* Wrapped 隐私模式：模糊“词云关键词” */
  .wrapped-privacy .wrapped-privacy-keyword {
    filter: blur(9px);
    transition: filter 0.2s ease;
  }

  .wrapped-privacy .wrapped-privacy-keyword:hover {
    filter: none;
  }

  /* Wrapped 隐私模式：模糊头像（含 fallback 字符） */
  .wrapped-privacy .wrapped-privacy-avatar {
    filter: blur(9px);
    transition: filter 0.2s ease;
  }

  .wrapped-privacy .wrapped-privacy-avatar:hover {
    filter: none;
  }
  /* 按钮样式 */
  .btn {
    @apply px-6 py-3 rounded-full font-medium transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 transform active:scale-95;
  }

  .btn-primary {
    @apply bg-[#07c160] text-white hover:bg-[#06ad56] focus:ring-[#07c160] shadow-md hover:shadow-lg;
  }

  .btn-secondary {
    @apply bg-white text-[#07c160] border-2 border-[#07c160] hover:bg-[#e6f7f0] focus:ring-[#07c160];
  }

  .btn-danger {
    @apply bg-[#fa5151] text-white hover:bg-[#e94848] focus:ring-[#fa5151] shadow-md hover:shadow-lg;
  }

  .btn-ghost {
    @apply bg-transparent text-[#576b95] hover:bg-gray-100 focus:ring-gray-300;
  }

  /* 卡片样式 */
  .card {
    @apply bg-white rounded-2xl shadow-sm border border-[#f4f4f4] p-6 hover:shadow-md transition-shadow duration-300;
  }

  .card-hover {
    @apply hover:transform hover:scale-[1.02] transition-all duration-300;
  }

  /* Wrapped (年度总结) 背景纹理 */
  .wrapped-noise {
    background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNjAiIGhlaWdodD0iMTYwIj4KICA8ZmlsdGVyIGlkPSJuIj4KICAgIDxmZVR1cmJ1bGVuY2UgdHlwZT0iZnJhY3RhbE5vaXNlIiBiYXNlRnJlcXVlbmN5PSIwLjgiIG51bU9jdGF2ZXM9IjQiIHN0aXRjaFRpbGVzPSJzdGl0Y2giLz4KICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9InNhdHVyYXRlIiB2YWx1ZXM9IjAiLz4KICA8L2ZpbHRlcj4KICA8cmVjdCB3aWR0aD0iMTYwIiBoZWlnaHQ9IjE2MCIgZmlsdGVyPSJ1cmwoI24pIiBvcGFjaXR5PSIwLjQ1Ii8+Cjwvc3ZnPg==");
    background-repeat: repeat;
    background-size: 320px 320px;
    mix-blend-mode: multiply;
  }

  /* Wrapped 增强噪点纹理（动态抖动） */
  .wrapped-noise-enhanced {
    background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIj4KICA8ZmlsdGVyIGlkPSJuIj4KICAgIDxmZVR1cmJ1bGVuY2UgdHlwZT0iZnJhY3RhbE5vaXNlIiBiYXNlRnJlcXVlbmN5PSIwLjkiIG51bU9jdGF2ZXM9IjUiIHN0aXRjaFRpbGVzPSJzdGl0Y2giLz4KICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9InNhdHVyYXRlIiB2YWx1ZXM9IjAiLz4KICA8L2ZpbHRlcj4KICA8cmVjdCB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgZmlsdGVyPSJ1cmwoI24pIiBvcGFjaXR5PSIwLjUiLz4KPC9zdmc+");
    background-repeat: repeat;
    background-size: 200px 200px;
    mix-blend-mode: multiply;
    animation: noise-jitter 0.5s steps(3) infinite;
  }

  /* Wrapped typography */
  .wrapped-title {
    font-weight: 700;
    letter-spacing: 0.02em;
  }

  .wrapped-title-en {
    font-weight: 700;
    letter-spacing: 0.04em;
  }

  .wrapped-body {
    line-height: 1.8;
  }

  .wrapped-label {
    font-weight: 600;
    letter-spacing: 0.15em;
    text-transform: uppercase;
  }

  .wrapped-number {
    font-variant-numeric: tabular-nums;
  }

  /* 输入框样式 */
  .input {
    @apply w-full px-4 py-3 bg-[#f7f8fa] border border-transparent rounded-xl focus:outline-none focus:ring-2 focus:ring-[#07c160] focus:bg-white focus:border-[#07c160] transition-all duration-200;
  }

  .input-error {
    @apply border-[#fa5151] focus:ring-[#fa5151] focus:border-[#fa5151];
  }

  /* 标签样式 */
  .tag {
    @apply inline-flex items-center px-3 py-1 rounded-full text-xs font-medium;
  }

  .tag-green {
    @apply bg-[#e6f7f0] text-[#07c160];
  }

  .tag-blue {
    @apply bg-blue-100 text-blue-700;
  }

  .tag-red {
    @apply bg-red-100 text-red-700;
  }

  /* 加载动画 */
  .loading-spinner {
    @apply inline-block w-8 h-8 border-4 border-[#e7e7e7] border-t-[#07c160] rounded-full animate-spin;
  }

  .loading-dots {
    @apply inline-flex items-center space-x-1;
  }

  .loading-dots span {
    @apply w-2 h-2 bg-[#07c160] rounded-full animate-bounce;
  }

  /* 微信风格的列表项 */
  .list-item {
    @apply flex items-center justify-between py-4 px-4 hover:bg-[#f7f8fa] transition-colors duration-200 cursor-pointer;
  }

  /* 分割线 */
  .divider {
    @apply border-t border-[#f4f4f4] my-4;
  }

  /* 提示框 */
  .alert {
    @apply p-4 rounded-xl border;
  }

  .alert-success {
    @apply bg-[#e6f7f0] border-[#07c160] text-[#059341];
  }

  .alert-warning {
    @apply bg-yellow-50 border-[#ffc300] text-yellow-800;
  }

  .alert-error {
    @apply bg-red-50 border-[#fa5151] text-red-800;
  }

  /* 动画效果 */
  .fade-enter {
    @apply opacity-0 transform scale-95;
  }

  .fade-enter-active {
    @apply transition-all duration-300 ease-out;
  }

  .fade-enter-to {
    @apply opacity-100 transform scale-100;
  }

  /* 现代化搜索面板样式 */
  .search-panel-container {
    @apply border-b border-gray-200;
    background: linear-gradient(to bottom, #f8f9fa, #f0f1f2);
  }

  .search-panel {
    @apply px-5 py-4;
  }

  /* 搜索输入行 */
  .search-input-row {
    @apply flex items-center gap-3;
  }

  .search-input-wrapper {
    @apply flex-1 flex items-center bg-white border border-gray-200 rounded-lg overflow-hidden transition-all duration-200;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
  }

  .search-input-wrapper:hover {
    @apply border-gray-300;
  }

  .search-input-focused {
    @apply border-[#03C160] ring-2 ring-[#03C160]/20;
  }

  .search-input-icon {
    @apply w-4 h-4 text-gray-400 ml-3 flex-shrink-0;
  }

  .search-input {
    @apply flex-1 px-3 py-2.5 text-sm bg-transparent border-none outline-none;
  }

  .search-input::placeholder {
    @apply text-gray-400;
  }

  .search-clear-btn {
    @apply p-2 text-gray-400 hover:text-gray-600 transition-colors;
  }

  .search-btn-primary {
    @apply px-4 py-2.5 text-sm font-medium text-white bg-[#03C160] rounded-lg hover:bg-[#02a650] transition-all duration-200 flex items-center gap-2 disabled:opacity-60 disabled:cursor-not-allowed;
    box-shadow: 0 2px 4px rgba(3, 193, 96, 0.2);
  }

  .search-btn-primary:hover:not(:disabled) {
    box-shadow: 0 4px 8px rgba(3, 193, 96, 0.3);
    transform: translateY(-1px);
  }

  .search-btn-close {
    @apply p-2.5 text-gray-500 hover:text-gray-700 hover:bg-gray-100 rounded-lg transition-colors;
  }

  /* 搜索控制行 */
  .search-controls-row {
    @apply flex items-center gap-3 mt-3 flex-wrap;
  }

  /* 搜索范围切换器 */
  .search-scope-switcher {
    @apply flex items-center bg-gray-100 rounded-lg p-0.5;
  }

  .scope-btn {
    @apply flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium text-gray-600 rounded-md transition-all duration-200 disabled:opacity-50 disabled:cursor-not-allowed;
  }

  .scope-btn:hover:not(:disabled) {
    @apply text-gray-800;
  }

  .scope-btn-active {
    @apply bg-white text-[#03C160] shadow-sm;
  }

  /* 快捷过滤标签 */
  .quick-filter-tags {
    @apply flex items-center gap-1.5 flex-wrap;
  }

  .filter-tag {
    @apply flex items-center gap-1 px-2.5 py-1.5 text-xs font-medium text-gray-600 bg-white border border-gray-200 rounded-full transition-all duration-200 hover:border-gray-300 hover:bg-gray-50;
  }

  .filter-tag-icon {
    @apply text-sm;
  }

  .filter-tag-active {
    @apply bg-[#03C160]/10 border-[#03C160] text-[#03C160];
  }

  .filter-tag-active:hover {
    @apply bg-[#03C160]/15 border-[#03C160];
  }

  /* 高级过滤器切换 */
  .advanced-filter-toggle {
    @apply flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium text-gray-600 bg-white border border-gray-200 rounded-lg transition-all duration-200 hover:border-gray-300 hover:bg-gray-50 ml-auto;
  }

  .advanced-filter-toggle-active {
    @apply bg-gray-100 border-gray-300;
  }

  /* 高级过滤器面板 */
  .advanced-filters-panel {
    @apply overflow-hidden transition-all duration-300 ease-in-out;
    max-height: 0;
    opacity: 0;
  }

  .advanced-filters-expanded {
    max-height: 200px;
    opacity: 1;
    @apply mt-3;
  }

  .advanced-filters-content {
    @apply flex items-center gap-4 p-3 bg-white rounded-lg border border-gray-200 flex-wrap;
  }

  .filter-group {
    @apply flex items-center gap-2;
  }

  .filter-label {
    @apply text-xs font-medium text-gray-600;
  }

  .filter-select {
    @apply text-xs px-3 py-1.5 rounded-md border border-gray-200 bg-white focus:outline-none focus:ring-2 focus:ring-[#03C160]/20 focus:border-[#03C160] transition-all;
  }

  .filter-checkbox {
    @apply flex items-center gap-2 text-xs cursor-pointer;
  }

  .filter-checkbox-input {
    @apply w-4 h-4 text-[#03C160] border-gray-300 rounded focus:ring-[#03C160]/20;
  }

  .filter-checkbox-label {
    @apply font-medium text-gray-700;
  }

  .filter-checkbox-hint {
    @apply text-gray-400;
  }

  /* 搜索历史面板 */
  .search-history-panel {
    @apply mt-3 p-3 bg-white rounded-lg border border-gray-200;
  }

  .search-history-header {
    @apply flex items-center justify-between mb-2;
  }

  .search-history-title {
    @apply text-xs font-medium text-gray-600;
  }

  .search-history-clear {
    @apply text-xs text-gray-400 hover:text-gray-600 transition-colors;
  }

  .search-history-list {
    @apply flex flex-wrap gap-2;
  }

  .search-history-item {
    @apply flex items-center gap-1.5 px-2.5 py-1.5 text-xs text-gray-600 bg-gray-50 rounded-full hover:bg-gray-100 transition-colors;
  }

  /* 搜索状态栏 */
  .search-status-bar {
    @apply mt-3 text-xs;
  }

  .search-status-error {
    @apply flex items-center gap-2 text-red-600 bg-red-50 px-3 py-2 rounded-lg;
  }

  .search-status-info {
    @apply text-gray-600;
  }

  .search-status-count {
    @apply text-gray-800;
  }

  .search-status-count strong {
    @apply text-[#03C160] font-semibold;
  }

  .search-status-detail {
    @apply text-gray-500;
  }

  .search-status-hint {
    @apply flex items-center gap-2 text-gray-400;
  }

  /* 搜索结果容器 */
  .search-results-container {
    @apply bg-white border-b border-gray-200;
    max-height: 320px;
  }

  .search-results-list {
    @apply overflow-y-auto;
    max-height: 260px;
  }

  /* 搜索结果卡片 */
  .search-result-card {
    @apply px-5 py-3 border-b border-gray-100 cursor-pointer transition-all duration-150;
    border-left: 3px solid transparent;
  }

  .search-result-card:hover {
    @apply bg-gray-50;
    border-left-color: #e5e7eb;
  }

  .search-result-card-selected {
    @apply bg-[#03C160]/5;
    border-left-color: #03C160;
  }

  .search-result-card-selected:hover {
    @apply bg-[#03C160]/10;
    border-left-color: #03C160;
  }

  .search-result-meta {
    @apply flex items-center gap-2 text-[11px] text-gray-500 mb-1;
  }

  .search-result-contact {
    @apply font-medium text-gray-700;
  }

  .search-result-contact::after {
    content: '·';
    @apply ml-2;
  }

  .search-result-time {
    @apply text-gray-400;
  }

  .search-result-sender {
    @apply text-gray-500;
  }

  .search-result-sender::before {
    content: '·';
    @apply mr-2;
  }

  .search-result-content {
    @apply text-sm text-gray-800 truncate leading-relaxed;
  }

  /* 搜索高亮 */
  .search-highlight {
    @apply bg-[#03C160]/20 text-[#03C160] px-0.5 rounded font-medium;
  }

  /* 搜索结果底部 */
  .search-results-footer {
    @apply px-5 py-3 flex items-center justify-between border-t border-gray-100 bg-gray-50/50;
  }

  .search-load-more-btn {
    @apply flex items-center gap-2 text-xs px-3 py-1.5 rounded-md border border-gray-200 bg-white hover:bg-gray-50 text-gray-700 transition-colors disabled:opacity-50 disabled:cursor-not-allowed;
  }

  .search-results-hint {
    @apply text-xs text-gray-400;
  }

  .search-results-hint kbd {
    @apply px-1.5 py-0.5 bg-gray-100 border border-gray-200 rounded text-[10px] font-mono;
  }

  /* 空状态 */
  .search-empty-state {
    @apply py-8 px-5 text-center bg-white border-b border-gray-200;
  }

  .search-empty-icon {
    @apply w-16 h-16 mx-auto text-gray-300 mb-4;
  }

  .search-empty-title {
    @apply text-base font-medium text-gray-600 mb-3;
  }

  .search-empty-tips {
    @apply text-sm text-gray-500 text-left max-w-xs mx-auto;
  }

  .search-empty-tips p {
    @apply mb-2;
  }

  .search-empty-tips ul {
    @apply list-disc list-inside space-y-1 text-gray-400;
  }

  /* 联系人搜索栏样式 */
  .contact-search-wrapper {
    @apply flex items-center bg-[#EAEAEA] rounded-lg overflow-hidden transition-all duration-200;
  }

  .contact-search-wrapper:focus-within {
    @apply ring-2 ring-[#03C160]/20 bg-white;
  }

  .contact-search-icon {
    @apply w-4 h-4 text-gray-400 ml-2.5 flex-shrink-0;
  }

  .contact-search-input {
    @apply flex-1 px-2 py-2 text-sm bg-transparent border-none outline-none;
  }

  .contact-search-input::placeholder {
    @apply text-gray-400;
  }

  .contact-search-clear {
    @apply p-2 text-gray-400 hover:text-gray-600 transition-colors;
  }

  .account-select {
    @apply text-xs px-2 py-2 rounded-lg border border-gray-200 bg-[#EAEAEA] focus:outline-none focus:ring-2 focus:ring-[#03C160]/20 focus:border-[#03C160] transition-all;
  }

  /* 骨架屏动画 */
  .skeleton-pulse {
    animation: skeleton-pulse 1.5s ease-in-out infinite;
  }

  @keyframes skeleton-pulse {
    0%, 100% {
      opacity: 1;
    }
    50% {
      opacity: 0.5;
    }
  }

  /* 聊天头部样式 */
  .chat-header {
    @apply h-14 px-5 flex items-center border-b border-gray-200;
    background-color: #EDEDED;
  }

  .header-btn {
    @apply flex items-center gap-1.5 text-xs px-3 py-1.5 rounded-md bg-white border border-gray-200 text-gray-700 transition-all duration-150 disabled:opacity-50 disabled:cursor-not-allowed shadow-sm;
  }

  .header-btn:hover:not(:disabled) {
    @apply bg-gray-50 border-gray-300 shadow;
  }

  .header-btn:active:not(:disabled) {
    @apply bg-gray-100 scale-95;
  }

  .header-btn svg {
    @apply w-3.5 h-3.5;
  }

  .header-btn-icon {
    @apply w-8 h-8 flex items-center justify-center rounded-lg bg-transparent border border-transparent text-gray-600 transition-all duration-200 disabled:opacity-50 disabled:cursor-not-allowed;
  }

  .header-btn-icon:hover {
    @apply bg-transparent border-transparent text-gray-800;
  }

  .header-btn-icon-active {
    @apply bg-transparent border-transparent text-[#03C160];
  }

  .header-btn-icon-active:hover {
    @apply bg-transparent;
  }

  .message-filter-select {
    @apply text-xs px-2 py-1.5 rounded-lg bg-transparent border-0 text-gray-700 focus:outline-none focus:ring-0 transition-all disabled:opacity-50 disabled:cursor-not-allowed;
  }

  /* 搜索侧边栏样式 */
  .search-sidebar {
    @apply w-[420px] h-full flex flex-col bg-white border-l border-gray-200 flex-shrink-0;
  }

  .search-sidebar-header {
    @apply flex items-center justify-between px-4 py-3 border-b border-gray-200 bg-gray-50;
  }

  .search-sidebar-title {
    @apply flex items-center gap-2 text-sm font-medium text-gray-800;
  }

  .search-sidebar-close {
    @apply p-1.5 text-gray-500 hover:text-gray-700 hover:bg-gray-200 rounded-md transition-colors;
  }

  .search-sidebar-input-section {
    @apply px-3 py-3 border-b border-gray-100;
  }

  /* 时间侧边栏（按日期定位） */
  .time-sidebar {
    @apply w-[420px] h-full flex flex-col bg-white border-l border-gray-200 flex-shrink-0;
  }

  .time-sidebar-header {
    @apply flex items-center justify-between px-4 py-3 border-b border-gray-200 bg-gray-50;
  }

  .time-sidebar-title {
    @apply flex items-center gap-2 text-sm font-medium text-gray-800;
  }

  .time-sidebar-close {
    @apply p-1.5 text-gray-500 hover:text-gray-700 hover:bg-gray-200 rounded-md transition-colors;
  }

  .time-sidebar-body {
    @apply flex-1 overflow-y-auto min-h-0;
  }

  .time-sidebar-status {
    @apply px-4 py-2 text-xs text-gray-600 border-b border-gray-100;
  }

  .time-sidebar-status-error {
    @apply text-red-600;
  }

  .calendar-header {
    @apply flex items-center justify-between px-4 py-3;
  }

  .calendar-nav-btn {
    @apply p-1.5 text-gray-500 hover:text-gray-700 hover:bg-gray-100 rounded-md transition-colors disabled:opacity-50 disabled:cursor-not-allowed;
  }

  .calendar-month-label {
    @apply text-sm font-medium text-gray-800;
  }

  .calendar-month-label-selects {
    @apply flex items-center gap-2;
  }

  .calendar-ym-select {
    @apply text-xs px-2 py-1 rounded-md border border-gray-200 bg-white text-gray-800 hover:border-gray-300 focus:outline-none focus:ring-2 focus:ring-[#03C160]/20 disabled:opacity-60 disabled:cursor-not-allowed;
  }

  .calendar-weekdays {
    @apply grid grid-cols-7 gap-1 px-4 pt-1;
  }

  .calendar-weekday {
    @apply text-[11px] text-gray-400 text-center py-1;
  }

  .calendar-grid {
    @apply grid grid-cols-7 gap-1 px-4 pb-4;
  }

  .calendar-day {
    @apply h-10 rounded-md flex flex-col items-center justify-center gap-[1px] text-xs font-medium transition-colors border border-gray-200 bg-white disabled:cursor-not-allowed;
  }

  .calendar-day-outside {
    @apply bg-transparent border-transparent;
  }

  .calendar-day-empty {
    @apply bg-gray-100 text-gray-400 border-gray-100;
  }

  .calendar-day-has-messages {
    @apply bg-white text-gray-800 border-gray-200 hover:border-[#03C160] hover:bg-[#03C160]/5;
  }

  .calendar-day-selected {
    box-shadow: 0 0 0 2px rgba(3, 193, 96, 0.45);
    border-color: rgba(3, 193, 96, 0.95) !important;
  }

  .calendar-day-number {
    @apply select-none leading-none;
  }

  .calendar-day-count {
    @apply select-none text-[10px] leading-none text-gray-500 tabular-nums;
  }

  .calendar-day-has-messages .calendar-day-count {
    @apply text-gray-700;
  }

  .calendar-day-selected .calendar-day-number,
  .calendar-day-selected .calendar-day-count {
    color: #018a45 !important;
  }

  .time-sidebar-actions {
    @apply px-4 pb-4;
  }

  .time-sidebar-action-btn {
    @apply w-full text-xs px-3 py-2 rounded-md bg-[#03C160] text-white hover:bg-[#02a650] transition-colors disabled:opacity-60 disabled:cursor-not-allowed;
  }

  /* 整合搜索框样式 */
  .search-input-combined {
    @apply flex items-center bg-white border-2 border-gray-200 rounded-lg overflow-hidden transition-all duration-200;
  }

  .search-input-combined:hover {
    @apply border-gray-300;
  }

  .search-input-combined-focused {
    @apply border-[#03C160] ring-2 ring-[#03C160]/20;
  }

  .search-scope-inline {
    @apply flex items-center px-2 border-r border-gray-200 bg-gray-50;
  }

  .scope-inline-btn {
    @apply text-[11px] font-medium text-gray-400 hover:text-gray-600 transition-colors px-1 py-2.5 disabled:opacity-40 disabled:cursor-not-allowed;
  }

  .scope-inline-btn-active {
    @apply text-[#03C160] font-semibold;
  }

  .scope-inline-divider {
    @apply text-gray-300 text-[10px];
  }

  .search-input-inline {
    @apply flex-1 min-w-0 px-3 py-2.5 text-sm bg-transparent border-none outline-none;
  }

  .search-input-inline::placeholder {
    @apply text-gray-400;
  }

  .search-clear-inline {
    @apply p-2 text-gray-400 hover:text-gray-600 transition-colors;
  }

  .search-btn-inline {
    @apply flex items-center justify-center w-10 h-10 bg-[#03C160] text-white hover:bg-[#02a650] transition-colors disabled:opacity-60 disabled:cursor-not-allowed flex-shrink-0;
  }

  /* 筛选条件行 */
  .search-filters-row {
    @apply flex items-center gap-2 mt-2;
  }


  .search-session-type-row {
    @apply flex items-center gap-1 mt-2;
  }

  .search-session-type-btn {
    @apply flex-1 text-[11px] font-medium px-2 py-1.5 rounded-md border border-gray-200 bg-gray-50 text-gray-500 hover:bg-gray-100 hover:text-gray-700 transition-colors;
  }

  .search-session-type-btn-active {
    @apply bg-[#03C160]/10 border-[#03C160] text-[#03C160] font-semibold;
  }

  .search-filter-select {
    @apply flex-1 text-xs px-2 py-1.5 bg-gray-50 border border-gray-200 rounded-md outline-none cursor-pointer transition-all hover:border-gray-300 focus:border-[#03C160] focus:ring-1 focus:ring-[#03C160]/20;
  }

  .search-filter-select-time {
    @apply flex-none w-28;
  }

  .search-filter-input {
    @apply flex-1 text-xs px-2 py-1.5 bg-gray-50 border border-gray-200 rounded-md outline-none transition-all hover:border-gray-300 focus:border-[#03C160] focus:ring-1 focus:ring-[#03C160]/20;
  }

  .search-filter-input::placeholder {
    @apply text-gray-400;
  }

  /* 自定义日期行 */
  .search-custom-date-row {
    @apply flex items-center gap-2 mt-2;
  }

  .search-date-input {
    @apply flex-1 text-xs px-2 py-1.5 bg-gray-50 border border-gray-200 rounded-md outline-none transition-all hover:border-gray-300 focus:border-[#03C160] focus:ring-1 focus:ring-[#03C160]/20;
  }

  .search-date-separator {
    @apply text-xs text-gray-400;
  }

  .search-sidebar-scope {
    @apply px-4 py-3 border-b border-gray-100;
  }

  .search-sidebar-filters {
    @apply px-4 py-3 border-b border-gray-100;
  }

  .quick-filter-tags-vertical {
    @apply flex flex-wrap gap-1.5 mt-2;
  }

  .filter-tag-vertical {
    @apply flex items-center gap-1 px-2 py-1 text-xs font-medium text-gray-600 bg-gray-50 border border-gray-200 rounded-md transition-all duration-200 hover:border-gray-300 hover:bg-gray-100;
  }

  .search-sidebar-advanced {
    @apply px-4 py-3 border-b border-gray-100;
  }

  .sidebar-section-toggle {
    @apply flex items-center justify-between w-full text-left;
  }

  .sidebar-section-title {
    @apply text-xs font-medium text-gray-500 uppercase tracking-wide;
  }

  .sidebar-advanced-content {
    @apply overflow-hidden transition-all duration-300 ease-in-out;
    max-height: 0;
    opacity: 0;
  }

  .sidebar-advanced-expanded {
    max-height: 200px;
    opacity: 1;
    @apply mt-3;
  }

  .sidebar-filter-group {
    @apply mb-3;
  }

  .sidebar-filter-label {
    @apply block text-xs text-gray-600 mb-1;
  }

  .sidebar-filter-select {
    @apply w-full text-xs px-2.5 py-1.5 rounded-md border border-gray-200 bg-white focus:outline-none focus:ring-2 focus:ring-[#03C160]/20 focus:border-[#03C160] transition-all;
  }

  .sidebar-checkbox {
    @apply flex items-center gap-2 text-xs text-gray-600 cursor-pointer;
  }

  .sidebar-checkbox input {
    @apply w-3.5 h-3.5 text-[#03C160] border-gray-300 rounded focus:ring-[#03C160]/20;
  }

  .search-sidebar-history {
    @apply px-4 py-3 border-b border-gray-100;
  }

  .sidebar-section-header {
    @apply flex items-center justify-between mb-2;
  }

  .sidebar-clear-btn {
    @apply text-xs text-gray-400 hover:text-gray-600 transition-colors;
  }

  .sidebar-index-btn {
    @apply px-2 py-1 text-[10px] font-medium text-gray-600 bg-gray-50 border border-gray-200 rounded-md hover:bg-gray-100 hover:border-gray-300 transition-colors disabled:opacity-60 disabled:cursor-not-allowed whitespace-nowrap;
  }

  .sidebar-history-list {
    @apply space-y-1;
  }

  .sidebar-history-item {
    @apply flex items-center gap-2 w-full px-2 py-1.5 text-xs text-gray-600 rounded-md hover:bg-gray-50 transition-colors text-left;
  }

  .search-sidebar-status {
    @apply px-4 py-2 text-xs border-b border-gray-100;
  }

  .sidebar-status-error {
    @apply text-red-600;
  }

  .sidebar-status-info {
    @apply text-gray-600;
  }

  .sidebar-status-info strong {
    @apply text-[#03C160] font-semibold;
  }

  .sidebar-status-detail {
    @apply text-gray-400;
  }

  .search-sidebar-results {
    @apply flex-1 overflow-y-auto min-h-0;
  }

  .sidebar-results-list {
    @apply divide-y divide-gray-100;
  }

  .sidebar-result-card {
    @apply px-4 py-3 cursor-pointer transition-all duration-150 hover:bg-gray-50;
    border-left: 3px solid transparent;
  }

  .sidebar-result-row {
    @apply flex items-start gap-3;
  }

  .sidebar-result-avatar {
    @apply w-9 h-9 rounded-md overflow-hidden bg-gray-300 flex-shrink-0;
  }

  .sidebar-result-avatar-fallback {
    @apply w-full h-full flex items-center justify-center text-white text-[10px] font-bold bg-gray-600;
  }

  .sidebar-result-body {
    @apply min-w-0 flex-1;
  }

  .sidebar-result-card-selected {
    @apply bg-[#03C160]/5;
    border-left-color: #03C160;
  }

  .sidebar-result-card-selected:hover {
    @apply bg-[#03C160]/10;
  }

  .sidebar-result-header {
    @apply flex items-center gap-2 text-[10px] text-gray-400 mb-0.5;
  }

  .sidebar-result-contact {
    @apply font-medium text-gray-600;
  }

  .sidebar-result-time {
    @apply text-gray-400;
  }

  .sidebar-result-sender {
    @apply text-[11px] text-gray-500 mb-1;
  }

  .sidebar-result-sender-clickable {
    @apply block p-0 bg-transparent border-0 text-left cursor-pointer hover:text-[#03C160] hover:underline;
  }

  .sidebar-result-content {
    @apply text-xs text-gray-700 line-clamp-2 leading-relaxed;
  }

  .sidebar-result-badge {
    @apply inline-flex items-center rounded-full bg-[#03C160]/10 text-[#03C160] text-[10px] px-1.5 py-0.5 mr-1 align-middle;
  }

  .sidebar-load-more {
    @apply px-4 py-3;
  }

  .sidebar-load-more-btn {
    @apply w-full text-xs px-3 py-2 rounded-md border border-gray-200 bg-white hover:bg-gray-50 text-gray-600 transition-colors disabled:opacity-50;
  }

  .sidebar-empty-state {
    @apply flex flex-col items-center justify-center py-12 px-4 text-center;
  }

  .sidebar-empty-icon {
    @apply w-12 h-12 text-gray-300 mb-3;
  }

  .sidebar-empty-text {
    @apply text-sm font-medium text-gray-500 mb-1;
  }

  .sidebar-empty-hint {
    @apply text-xs text-gray-400;
  }

  .sidebar-initial-state {
    @apply flex flex-col items-center justify-center py-12 px-4 text-center;
  }

  .sidebar-initial-icon {
    @apply w-16 h-16 text-gray-200 mb-4;
  }

  .sidebar-initial-text {
    @apply text-sm text-gray-500 mb-2;
  }

  .sidebar-initial-hint {
    @apply text-xs text-gray-400;
  }

  .sidebar-initial-hint kbd {
    @apply px-1.5 py-0.5 bg-gray-100 border border-gray-200 rounded text-[10px] font-mono;
  }

  /* 侧边栏滑入动画 */
  .sidebar-slide-enter-active,
  .sidebar-slide-leave-active {
    transition: all 0.3s ease;
  }

  .sidebar-slide-enter-from,
  .sidebar-slide-leave-to {
    transform: translateX(100%);
    opacity: 0;
  }

  .sidebar-slide-enter-to,
  .sidebar-slide-leave-from {
    transform: translateX(0);
    opacity: 1;
  }

  .chat-page-shell,
  .chat-page-main,
  .conversation-pane,
  .message-list {
    background-color: var(--chat-page-bg);
  }

  .session-list-panel {
    background-color: var(--session-list-bg);
    border-color: var(--session-list-border);
  }

  .session-list-search {
    background-color: var(--session-list-search-bg);
    border-color: var(--session-list-border);
  }

  .session-list-scroll {
    background-color: var(--session-list-bg);
  }

  .session-list-status {
    color: var(--session-list-meta);
  }

  .session-list-item {
    background-color: var(--session-list-item-bg);
    border-bottom: 1px solid var(--session-list-item-border);
  }

  .session-list-item:hover {
    background-color: var(--session-list-item-hover);
  }

  .session-list-item--selected {
    background-color: var(--session-list-item-selected);
  }

  .session-list-item--selected:hover {
    background-color: var(--session-list-item-selected-hover);
  }

  .session-list-item--top {
    background-color: var(--session-list-item-top-bg);
  }

  .session-list-item--top:hover {
    background-color: var(--session-list-item-top-hover);
  }

  .session-list-item--top.session-list-item--selected {
    background-color: var(--session-list-item-top-selected);
  }

  .session-list-item--top.session-list-item--selected:hover {
    background-color: var(--session-list-item-top-selected-hover);
  }

  .session-list-item-name {
    color: var(--session-list-name);
    font-weight: 400;
    font-synthesis: none;
  }

  .session-list-item-time {
    color: var(--session-list-meta);
    font-weight: 400;
    font-synthesis: none;
  }

  .session-list-item-preview {
    color: var(--session-list-preview);
    font-weight: 400;
    font-synthesis: none;
  }

  .contact-search-wrapper {
    background-color: var(--contact-search-bg);
  }

  .contact-search-wrapper:focus-within {
    background-color: var(--contact-search-focus-bg);
    box-shadow: 0 0 0 2px var(--contact-search-focus-ring);
  }

  .contact-search-icon {
    color: var(--contact-search-icon);
  }

  .contact-search-input {
    color: var(--contact-search-text);
  }

  .contact-search-input::placeholder {
    color: var(--contact-search-placeholder);
  }

  .contact-search-clear {
    color: var(--contact-search-clear);
  }

  .contact-search-clear:hover {
    color: var(--contact-search-text);
  }

  .account-select {
    background-color: var(--account-select-bg);
    border-color: var(--search-input-border);
    color: var(--contact-search-text);
  }

  .chat-header {
    background-color: var(--chat-header-bg);
    border-bottom-color: var(--chat-header-border);
  }

  .chat-header-title {
    color: var(--chat-header-title);
  }

  .header-btn-icon {
    color: var(--chat-header-icon);
  }

  .header-btn-icon:hover {
    color: var(--chat-header-icon-hover);
  }

  .message-filter-select {
    color: var(--message-filter-color);
  }

  .conversation-empty-title {
    color: var(--chat-header-title);
  }

  .conversation-empty-text,
  .message-list-status {
    color: var(--message-list-status);
  }

  .message-list-load-more {
    background-color: transparent;
    border-color: transparent;
    color: var(--message-load-more-text);
  }

  .message-list-load-more:hover {
    background-color: transparent;
    filter: none;
  }

  .jump-to-bottom-btn {
    background-color: var(--jump-to-bottom-bg);
    border-color: var(--jump-to-bottom-border);
    color: var(--jump-to-bottom-text);
  }

  .jump-to-bottom-btn:hover {
    filter: brightness(1.06);
  }

  .message-time-divider {
    color: var(--chat-date-text);
  }

  .message-sender-name {
    color: var(--chat-sender-name);
  }

  .search-sidebar,
  .time-sidebar,
  .resource-sidebar.resource-sidebar {
    background-color: var(--search-panel-bg);
    border-left-color: var(--search-panel-border);
    color: var(--search-panel-text);
  }

  .search-sidebar-header,
  .time-sidebar-header,
  .resource-sidebar .resource-sidebar-header {
    background-color: var(--search-panel-header-bg);
    border-bottom-color: var(--search-panel-border);
  }

  .search-sidebar-title,
  .time-sidebar-title,
  .calendar-month-label,
  .sidebar-result-contact,
  .sidebar-result-content,
  .sidebar-result-sender,
  .sidebar-empty-text,
  .sidebar-initial-text {
    color: var(--search-panel-text);
  }

  .search-sidebar-close,
  .time-sidebar-close,
  .calendar-nav-btn,
  .sidebar-clear-btn,
  .search-clear-inline {
    color: var(--search-panel-muted);
  }

  .search-sidebar-close:hover,
  .time-sidebar-close:hover,
  .calendar-nav-btn:hover:not(:disabled),
  .sidebar-clear-btn:hover,
  .search-clear-inline:hover {
    color: var(--search-panel-text);
    background-color: var(--search-panel-soft);
  }

  .search-sidebar-input-section,
  .search-sidebar-history,
  .search-sidebar-status,
  .search-sidebar-scope,
  .search-sidebar-filters,
  .search-sidebar-advanced,
  .time-sidebar-status {
    border-color: var(--search-panel-border);
  }

  .search-sidebar-results,
  .time-sidebar-body,
  .resource-sidebar-results {
    background-color: var(--search-panel-bg);
  }

  .resource-sidebar .resource-sidebar-title {
    color: var(--search-panel-text);
  }

  .resource-sidebar .resource-sidebar-icon {
    color: var(--app-accent);
  }

  .resource-sidebar .resource-sidebar-muted,
  .resource-sidebar .resource-status,
  .resource-sidebar .resource-empty,
  .resource-sidebar .resource-group-divider {
    color: var(--search-panel-muted);
  }

  .resource-sidebar .resource-sidebar-select {
    background-color: var(--search-input-bg);
    border-color: var(--search-input-border);
    color: var(--search-panel-text);
    color-scheme: light;
  }

  html[data-theme='dark'] .resource-sidebar .resource-sidebar-select {
    color-scheme: dark;
  }

  .resource-sidebar .resource-sidebar-select option {
    background-color: var(--search-input-bg);
    color: var(--search-panel-text);
  }

  .resource-sidebar .resource-sidebar-close {
    color: var(--search-panel-muted);
  }

  .resource-sidebar .resource-sidebar-close:hover {
    background-color: var(--search-panel-soft);
    color: var(--search-panel-text);
  }

  .resource-sidebar .resource-group-divider {
    background-color: color-mix(in srgb, var(--search-panel-bg) 94%, transparent);
  }

  .resource-sidebar .resource-card {
    background-color: var(--search-panel-soft);
    border-color: var(--search-panel-border);
    color: var(--search-panel-text);
    contain: layout paint style;
  }

  .resource-card-normal,
  .resource-card-compact {
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
  }

  .resource-card-normal:hover,
  .resource-card-compact:hover {
    border-color: rgba(3, 193, 96, 0.6);
    box-shadow: 0 6px 16px rgba(0, 0, 0, 0.12);
  }

  .resource-card-year {
    transition: none;
  }

  .resource-load-more {
    background-color: var(--search-input-bg);
    border-color: var(--search-panel-border);
    color: var(--search-panel-text);
  }

  .resource-load-more:hover {
    background-color: var(--search-panel-soft);
    border-color: rgba(3, 193, 96, 0.55);
    color: var(--search-panel-text);
  }

  .resource-sidebar-error {
    background-color: rgba(239, 68, 68, 0.08);
    border-color: rgba(239, 68, 68, 0.25);
    color: #dc2626;
  }

  html[data-theme='dark'] .resource-card-normal:hover,
  html[data-theme='dark'] .resource-card-compact:hover {
    box-shadow: none;
  }

  html[data-theme='dark'] .resource-sidebar-error {
    color: #fca5a5;
  }

  .chat-overlay-dropdown,
  .chat-context-menu,
  .chat-floating-window,
  .chat-edit-modal {
    background-color: var(--app-surface-bg);
    border: 1px solid var(--app-border);
    color: var(--app-text-primary);
    box-shadow: 0 20px 48px rgba(15, 23, 42, 0.16);
  }

  html[data-theme='dark'] :is(.chat-overlay-dropdown, .chat-context-menu, .chat-floating-window, .chat-edit-modal) {
    box-shadow: 0 24px 56px rgba(0, 0, 0, 0.42);
  }

  .chat-overlay-dropdown input {
    background-color: var(--app-input-bg);
    border-color: var(--app-input-border);
    color: var(--app-text-primary);
  }

  .chat-overlay-dropdown input::placeholder {
    color: var(--app-text-muted);
  }

  .chat-overlay-dropdown :is(.bg-gray-200, .bg-gray-300),
  .chat-floating-window :is(.bg-gray-200, .bg-gray-300) {
    background-color: var(--app-border-soft);
  }

  .chat-overlay-dropdown :is(.border-gray-100, .border-gray-200, .border-gray-300),
  .chat-floating-window :is(.border-gray-100, .border-gray-200, .border-gray-300) {
    border-color: var(--app-border);
  }

  .chat-overlay-dropdown :is(.text-gray-900, .text-gray-800, .text-gray-700),
  .chat-floating-window :is(.text-gray-900, .text-gray-800, .text-gray-700) {
    color: var(--app-text-primary);
  }

  .chat-overlay-dropdown :is(.text-gray-600, .text-gray-500, .text-gray-400),
  .chat-floating-window :is(.text-gray-600, .text-gray-500, .text-gray-400) {
    color: var(--app-text-muted);
  }

  .chat-overlay-option {
    color: var(--app-text-primary);
    transition: background-color 0.15s ease;
  }

  .chat-overlay-option:hover {
    background-color: var(--app-neutral-btn-hover);
  }

  .chat-overlay-option--active {
    background-color: var(--app-surface-soft);
  }

  .chat-overlay-option--active:hover {
    background-color: var(--app-neutral-btn-hover);
  }

  .chat-export-time-range-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 14px minmax(0, 1fr);
    align-items: center;
    column-gap: 8px;
    width: 100%;
    min-width: 0;
    white-space: nowrap;
  }

  .chat-export-datetime-input {
    width: 100%;
    min-width: 0;
    max-width: 100%;
    box-sizing: border-box;
    white-space: nowrap;
  }

  .chat-context-menu__item {
    color: inherit;
    transition: background-color 0.15s ease;
  }

  .chat-context-menu__item:hover {
    background-color: var(--app-neutral-btn-hover);
  }

  .chat-context-menu :is(.border-gray-100, .border-gray-200, .border-gray-300) {
    border-color: var(--app-border);
  }

  .chat-floating-window__header,
  .chat-floating-window__body,
  .chat-floating-window__row {
    background-color: var(--app-surface-soft);
  }

  .chat-floating-window__header {
    border-bottom: 1px solid var(--app-border);
  }

  .chat-floating-window__row {
    border-bottom: 1px solid var(--app-border);
  }

  .chat-floating-window__title {
    color: var(--app-text-primary);
  }

  .chat-floating-window__close {
    color: var(--app-text-secondary);
    transition: background-color 0.15s ease, color 0.15s ease;
  }

  .chat-floating-window__close:hover {
    background-color: var(--app-neutral-btn-hover);
    color: var(--app-text-primary);
  }

  .chat-floating-window .bg-white {
    background-color: var(--app-surface-bg);
  }

  .chat-floating-window .bg-gray-50 {
    background-color: var(--app-surface-soft);
  }

  .chat-floating-window [class*='hover:bg-gray-50']:hover {
    background-color: var(--app-neutral-btn-hover);
  }

  .chat-edit-modal :is(.border-gray-100, .border-gray-200, .border-gray-300) {
    border-color: var(--app-border);
  }

  .chat-edit-modal .bg-white {
    background-color: var(--app-surface-bg);
  }

  .chat-edit-modal .bg-gray-50 {
    background-color: var(--app-surface-soft);
  }

  .chat-edit-modal :is(.text-gray-900, .text-gray-800, .text-gray-700) {
    color: var(--app-text-primary);
  }

  .chat-edit-modal :is(.text-gray-600, .text-gray-500, .text-gray-400) {
    color: var(--app-text-muted);
  }

  .chat-edit-modal :is(input:not([type='checkbox']):not([type='radio']), textarea, select) {
    background-color: var(--app-input-bg);
    border-color: var(--app-input-border);
    color: var(--app-text-primary);
  }

  .chat-edit-modal :is(input:not([type='checkbox']):not([type='radio']), textarea, select)::placeholder {
    color: var(--app-text-muted);
  }

  .chat-edit-modal [class*='hover:bg-gray-50']:hover {
    background-color: var(--app-neutral-btn-hover);
  }

  .search-input-combined {
    background-color: var(--search-input-bg);
    border-color: var(--search-input-border);
  }

  .search-input-combined:hover {
    border-color: var(--search-input-border);
    filter: brightness(1.04);
  }

  .search-scope-inline {
    background-color: var(--search-panel-soft);
    border-right-color: var(--search-panel-border);
  }

  .scope-inline-btn,
  .scope-inline-divider,
  .sidebar-section-title,
  .sidebar-status-info,
  .sidebar-status-detail,
  .calendar-weekday,
  .time-sidebar-status,
  .sidebar-empty-hint,
  .sidebar-initial-hint,
  .sidebar-result-time,
  .sidebar-result-header {
    color: var(--search-panel-muted);
  }

  .search-input-inline,
  .search-filter-select,
  .search-filter-input,
  .search-date-input,
  .sidebar-filter-select,
  .calendar-ym-select {
    color: var(--search-panel-text);
  }

  .search-input-inline::placeholder,
  .search-filter-input::placeholder {
    color: var(--search-panel-muted);
  }

  .search-filter-select,
  .search-date-input,
  .sidebar-filter-select,
  .calendar-ym-select,
  .search-session-type-btn,
  .sidebar-history-item,
  .sidebar-index-btn,
  .sidebar-load-more-btn,
  .sidebar-initial-hint kbd {
    background-color: var(--search-panel-soft);
    border-color: var(--search-input-border);
    color: var(--search-panel-text);
  }

  .search-session-type-btn:hover,
  .sidebar-history-item:hover,
  .sidebar-index-btn:hover,
  .sidebar-load-more-btn:hover {
    background-color: var(--search-item-hover);
  }

  .sidebar-result-card:hover {
    background-color: var(--search-item-hover);
  }

  .sidebar-result-card-selected {
    background-color: var(--search-result-selected);
  }

  .sidebar-result-card-selected:hover {
    background-color: var(--search-result-selected-hover);
  }

  .calendar-day {
    background-color: var(--calendar-day-bg);
    border-color: var(--calendar-day-border);
    color: var(--calendar-day-text);
  }

  .calendar-day-has-messages {
    background-color: var(--calendar-day-bg);
    border-color: var(--calendar-day-border);
    color: var(--calendar-day-text);
  }

  .calendar-day-count {
    color: var(--calendar-day-empty-text);
  }

  .calendar-day-has-messages .calendar-day-count {
    color: var(--calendar-day-text);
    opacity: 0.72;
  }

  .calendar-day-selected .calendar-day-count {
    opacity: 1;
  }

  .calendar-day-empty {
    background-color: var(--calendar-day-empty-bg);
    border-color: var(--calendar-day-empty-border);
    color: var(--calendar-day-empty-text);
  }

  .calendar-day-outside {
    background-color: transparent;
    border-color: transparent;
  }

  .chat-history-modal-panel,
  .chat-history-modal-body,
  .chat-history-modal-header,
  .chat-history-modal-row {
    background-color: var(--chat-page-bg);
  }

  .chat-history-modal-header,
  .chat-history-modal-row {
    border-color: var(--chat-header-border);
  }

  .chat-history-modal-title,
  .chat-history-modal-icon {
    color: var(--chat-header-title);
  }

  .chat-history-modal-icon-btn:hover {
    background-color: var(--search-panel-soft);
  }

  .chat-history-modal-empty,
  .chat-history-modal-sender,
  .chat-history-modal-time {
    color: var(--message-list-status);
  }

  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) {
    color: var(--app-text-primary);
  }

  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page
  ) {
    background-color: var(--app-shell-bg);
  }

  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) .bg-white {
    background-color: var(--app-surface-bg);
  }

  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="bg-white/"] {
    background-color: var(--app-surface-overlay);
  }

  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) .bg-gray-50,
  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="bg-[#f9f9f9]"],
  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="bg-[#fafafa]"],
  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="bg-[#fcfcfc]"],
  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="bg-[#F7F7F7]"] {
    background-color: var(--app-surface-soft);
  }

  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) .bg-gray-100,
  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="bg-[#EDEDED]"] {
    background-color: var(--app-surface-muted);
  }

  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) .bg-gray-200 {
    background-color: var(--app-border-soft);
  }

  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) .bg-gray-300 {
    background-color: #4a4a4a;
  }

  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) :is(.border-gray-100, .border-gray-200, .border-gray-300) {
    border-color: var(--app-border);
  }

  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="border-[#EDEDED]"],
  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="border-[#e2e2e2]"],
  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="border-[#e7e7e7]"],
  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="border-[#eeeeee]"],
  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="border-[#ededed]"],
  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="border-[#efefef]"],
  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="border-[#ececec]"],
  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="border-[#F3F3F3]"],
  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="border-[#eee]"] {
    border-color: var(--app-border);
  }

  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) .divide-y > :not([hidden]) ~ :not([hidden]) {
    border-color: var(--app-border-soft);
  }

  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) :is(.text-gray-900, .text-gray-800, .text-gray-700) {
    color: var(--app-text-primary);
  }

  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) :is(.text-gray-600, .text-gray-500) {
    color: var(--app-text-secondary);
  }

  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) :is(.text-gray-400, .text-gray-300) {
    color: var(--app-text-muted);
  }

  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="text-[#000000e6]"],
  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="text-[#1f1f1f]"],
  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="text-[#222]"],
  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="text-[#111]"],
  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="text-[#333]"] {
    color: var(--app-text-primary);
  }

  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="text-[#444]"] {
    color: var(--app-text-secondary);
  }

  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="text-[#7F7F7F]"],
  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="text-[#666]"],
  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="text-[#777]"],
  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="text-[#5f5f5f]"] {
    color: var(--app-text-secondary);
  }

  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="text-[#909090]"],
  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="text-[#999]"],
  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="text-[#888]"],
  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="text-[#8a8a8a]"],
  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="text-[#9e9e9e]"] {
    color: var(--app-text-muted);
  }

  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) :is(input:not([type='checkbox']):not([type='radio']), textarea, select) {
    background-color: var(--app-input-bg);
    border-color: var(--app-input-border);
    color: var(--app-text-primary);
  }

  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) :is(input:not([type='checkbox']):not([type='radio']), textarea, select)::placeholder {
    color: var(--app-text-muted);
  }

  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) :is(code, pre) {
    background-color: var(--app-surface-muted);
    color: var(--app-text-primary);
    border-color: var(--app-border);
  }

  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="hover:bg-gray-50"]:hover,
  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="hover:bg-gray-100"]:hover,
  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="hover:bg-[#f0f0f0]"]:hover,
  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="hover:bg-[#f2f2f2]"]:hover,
  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="hover:bg-[#f7f7f7]"]:hover,
  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="hover:bg-[#F7F7F7]"]:hover,
  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) [class*="hover:bg-[#EFEFEF]"]:hover {
    background-color: var(--app-neutral-btn-hover);
  }

  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) .bg-amber-50 {
    background-color: rgba(242, 170, 0, 0.14);
  }

  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) :is(.border-amber-200, .border-amber-300) {
    border-color: rgba(242, 170, 0, 0.28);
  }

  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) :is(.text-amber-900, .text-amber-800, .text-amber-700) {
    color: #f7d27a;
  }

  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) .bg-red-50 {
    background-color: rgba(250, 81, 81, 0.14);
  }

  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) :is(.border-red-100, .border-red-200, .border-red-300) {
    border-color: rgba(250, 81, 81, 0.28);
  }

  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) :is(.text-red-700, .text-red-600, .text-red-500) {
    color: #ff8a8a;
  }

  html[data-theme='dark'] .api-status-banner {
    background-color: rgba(250, 81, 81, 0.14);
    border-color: rgba(250, 81, 81, 0.28);
    box-shadow: 0 16px 40px rgba(0, 0, 0, 0.32);
  }

  html[data-theme='dark'] .api-status-banner :is(.text-red-800, .text-red-700, .text-red-600) {
    color: #ff9b9b;
  }

  html[data-theme='dark'] :is(
    .landing-page,
    .decrypt-page,
    .decrypt-result-page,
    .detection-result-page,
    .contacts-page,
    .sns-page,
    .edits-page,
    .settings-dialog-panel,
    .desktop-update-dialog-panel,
    .account-info-dialog-panel
  ) .text-green-600 {
    color: #7cd8a3;
  }

  html[data-theme='dark'] .contacts-page .bg-blue-100 {
    background-color: rgba(96, 122, 255, 0.18);
    color: #bfd0ff;
  }

  html[data-theme='dark'] .contacts-page .bg-green-100 {
    background-color: rgba(62, 181, 117, 0.18);
    color: #8edcaf;
  }

  html[data-theme='dark'] .contacts-page .bg-orange-100 {
    background-color: rgba(242, 170, 0, 0.18);
    color: #f7d27a;
  }

  html[data-theme='dark'] .sns-page [class*="bg-[#F7F7F7]"],
  html[data-theme='dark'] .sns-page [class*="bg-[#EFEFEF]"] {
    background-color: var(--app-surface-soft);
  }

  html[data-theme='dark'] .sns-page [class*="hover:bg-[#EFEFEF]"]:hover {
    background-color: var(--app-neutral-btn-hover);
  }

  html[data-theme='dark'] .detection-result-page [class*="bg-[#07C160]/5"] {
    background-color: rgba(62, 181, 117, 0.14);
  }

  html[data-theme='dark'] .detection-result-page [class*="bg-[#07C160]/5"]:hover {
    background-color: rgba(62, 181, 117, 0.18);
  }

  html[data-theme='dark'] .settings-dialog-panel [class*="bg-[#e7f5ee]"] {
    background-color: rgba(62, 181, 117, 0.16);
  }

  html[data-theme='dark'] .settings-dialog-panel [class*="ring-[#e5e5e5]"] {
    --tw-ring-color: var(--app-border);
  }

  html[data-theme='dark'] .settings-dialog-panel [class*="bg-[#d0d0d0]"] {
    background-color: #4a4a4a;
  }

  html[data-theme='dark'] .settings-dialog .settings-dialog-panel {
    border-width: 0 !important;
    border-color: transparent !important;
    outline: none !important;
    box-shadow: 0 24px 64px rgba(0, 0, 0, 0.46) !important;
  }

  html[data-theme='dark'] .contacts-export-panel {
    background-color: var(--app-surface-bg);
    border-color: var(--app-border);
    box-shadow: 0 18px 36px rgba(0, 0, 0, 0.2);
  }

  html[data-theme='dark'] .chat-export-modal {
    background-color: var(--app-surface-bg);
    border-color: var(--app-border);
    color: var(--app-text-primary);
    box-shadow: 0 24px 64px rgba(0, 0, 0, 0.42);
  }

  html[data-theme='dark'] .chat-export-modal .bg-white {
    background-color: var(--app-surface-bg);
  }

  html[data-theme='dark'] .chat-export-modal .bg-gray-50 {
    background-color: var(--app-surface-soft);
  }

  html[data-theme='dark'] .chat-export-modal :is(.border-gray-100, .border-gray-200) {
    border-color: var(--app-border);
  }

  html[data-theme='dark'] .chat-export-modal :is(.text-gray-900, .text-gray-800, .text-gray-700) {
    color: var(--app-text-primary);
  }

  html[data-theme='dark'] .chat-export-modal :is(.text-gray-600, .text-gray-500, .text-gray-400) {
    color: var(--app-text-muted);
  }

  html[data-theme='dark'] .chat-export-modal .bg-amber-50 {
    background-color: rgba(242, 170, 0, 0.14);
  }

  html[data-theme='dark'] .chat-export-modal .border-amber-200 {
    border-color: rgba(242, 170, 0, 0.28);
  }

  html[data-theme='dark'] .chat-export-modal .text-amber-800 {
    color: #f7d27a;
  }

  html[data-theme='dark'] .chat-export-modal :is(.text-green-600, .text-green-500) {
    color: #7cd8a3;
  }

  html[data-theme='dark'] .chat-export-modal :is(.text-red-600, .text-red-500) {
    color: #ff8a8a;
  }

  html[data-theme='dark'] .chat-export-modal :is(input:not([type='checkbox']):not([type='radio']), textarea, select) {
    background-color: var(--app-input-bg);
    border-color: var(--app-input-border);
    color: var(--app-text-primary);
  }

  html[data-theme='dark'] .chat-export-modal :is(input:not([type='checkbox']):not([type='radio']), textarea, select)::placeholder {
    color: var(--app-text-muted);
  }

  html[data-theme='dark'] .chat-export-modal [class*="hover:bg-gray-50"]:hover {
    background-color: var(--app-neutral-btn-hover);
  }

  html[data-theme='dark'] .chat-export-modal [class*="bg-[#03C160]/5"] {
    background-color: rgba(62, 181, 117, 0.14);
  }

  html[data-theme='dark'] .chat-export-modal [class*="hover:bg-[#03C160]/10"]:hover {
    background-color: rgba(62, 181, 117, 0.18);
  }

  html[data-theme='dark'] .settings-dialog .scrollbar-custom::-webkit-scrollbar-thumb {
    background: rgba(255, 255, 255, 0.18);
  }

  html[data-theme='dark'] .settings-dialog .scrollbar-custom::-webkit-scrollbar-thumb:hover {
    background: rgba(255, 255, 255, 0.28);
  }

  html[data-theme='dark'] .edits-page .edits-sidebar {
    background-color: var(--app-surface-soft);
    border-color: var(--app-border-subtle);
  }

  html[data-theme='dark'] .edits-page .edits-item {
    border-top-color: var(--app-border-subtle);
  }

  html[data-theme='dark'] .edits-page .edits-item:last-child {
    border-bottom-color: var(--app-border-subtle);
  }

  html[data-theme='dark'] .edits-page .edits-divider-arrow {
    background: var(--app-surface-muted);
    color: var(--app-accent);
  }

  html[data-theme='dark'] .edits-page .edits-divider-arrow:hover:not(:disabled) {
    background: var(--app-neutral-btn-hover);
    color: var(--app-accent);
  }

  html[data-theme='dark'] .edits-page [class*="bg-[#DEDEDE]"] {
    background-color: var(--app-list-active);
  }

  html[data-theme='dark'] .edits-page [class*="hover:bg-[#d3d3d3]"]:hover {
    background-color: var(--app-list-active-hover);
  }

  html[data-theme='dark'] .edits-page [class*="hover:bg-[#eaeaea]"]:hover {
    background-color: var(--app-list-hover);
  }

  html[data-theme='dark'] .edits-page .edits-diff-pane::-webkit-scrollbar-thumb {
    background: rgba(255, 255, 255, 0.18);
  }

  html[data-theme='dark'] .edits-page .edits-diff-pane::-webkit-scrollbar-thumb:hover {
    background: rgba(255, 255, 255, 0.28);
  }

  html[data-theme='dark'] .edits-dialog-card {
    background: var(--app-surface-bg);
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.35);
  }

  html[data-theme='dark'] .edits-dialog-title {
    color: var(--app-text-primary);
  }

  html[data-theme='dark'] .edits-dialog-msg,
  html[data-theme='dark'] .edits-dialog-cancel {
    color: var(--app-text-secondary);
  }

  html[data-theme='dark'] .edits-dialog-actions,
  html[data-theme='dark'] .edits-dialog-cancel {
    border-color: var(--app-border);
  }

  html[data-theme='dark'] .edits-dialog-btn:active {
    background: var(--app-neutral-btn-hover);
  }
}

/* Wrapped 动画关键帧 */

@keyframes noise-jitter {
  0% {
    transform: translate(0, 0);
  }
  33% {
    transform: translate(-1px, 1px);
  }
  66% {
    transform: translate(1px, -1px);
  }
  100% {
    transform: translate(0, 0);
  }
}

/* Wrapped 入场动画 */
@keyframes wrapped-fade-in {
  0% {
    opacity: 0;
    transform: translateY(20px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

.wrapped-animate-in {
  animation: wrapped-fade-in 0.6s ease-out forwards;
}
