/* =========================
   Memory Manage Modal
   ========================= */
.memory-manage-content {
  max-width: 520px;
  display: flex;
  flex-direction: column;
}
.memory-manage-content .project-modal-header {
  align-items: flex-start;
}
.memory-manage-content .project-modal-close {
  align-self: flex-start;
  margin-top: 0;
  flex-shrink: 0;
}
@media (max-width: 768px), (max-height: 500px) {
  .memory-manage-content .project-modal-close {
    margin-top: -5px;
  }
}

/* Mobile header: hidden on desktop */
/* mobile header shows/hides + lays out via the sheet-head source (.duo-sheet-head, ai-chat-sheet.css);
   only the menu-button extras below are local */

/* 管理按钮（settings 行内） */
.settings-row-actions {
  display: flex;
  align-items: center;
  gap: 12px;
}
.settings-manage-memory-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 7px 12px 6px;
  font-size: 12px;
  line-height: 1;
  font-weight: 500;
  border: 1px solid var(--color-border);
  border-radius: 999px;
  corner-shape: round;
  background: transparent;
  color: var(--color-text);
  cursor: pointer;
  transition: background 0.15s;
  white-space: nowrap;
}
html:not([data-input="touch"]) .settings-manage-memory-btn:hover{
  background: var(--color-bg-hover);
}

.settings-manage-memory-btn:active {
  background: var(--color-bg-hover);
}

/* 副标题 */
.memory-manage-subtitle {
  font-size: 13px;
  color: #666;
  margin: 4px 0 0;
  line-height: 1.4;
  font-weight: 400;
}

/* 工具栏 */
.memory-manage-toolbar {
  display: flex;
  align-items: center;
  gap: 6px;
  /* 右侧 +8 = 列表滚动条槽宽:两处三点落同一竖线 */
  padding: 12px 28px 12px 20px;
  border-bottom: 1px solid var(--color-border);
  flex-shrink: 0;
}
/* 排序+三点 靠最右 */
.memory-manage-toolbar-right {
  display: flex;
  align-items: center;
  gap: 2px;
  margin-left: auto;
  flex-shrink: 0;
}

/* 搜索框 */
.memory-manage-search-wrap {
  flex: 1 1 auto;
  min-width: 0;
  max-width: 360px;
}
.memory-manage-search {
  width: 100%;
  padding: 7px 12px;
  font-size: 14px;
  border: 1px solid var(--color-border);
  border-radius: calc(8px * var(--corner-k));
  outline: none;
  box-sizing: border-box;
  transition: border-color 0.15s;
  background: transparent;
  color: var(--color-text);
}
.memory-manage-search::placeholder {
  color: var(--color-text-tertiary);
}
.memory-manage-search:focus {
  border-color: #000;
}
@media (max-width: 768px), (max-height: 500px) {
  .memory-manage-search-wrap { max-width: 240px; }
}

/* 排序 / 全局菜单按钮 */
.memory-manage-sort-wrap,
.memory-manage-menu-wrap {
  position: relative;
  flex-shrink: 0;
}
.memory-manage-sort-btn,
.memory-manage-menu-btn {
  width: 28px;
  height: 28px;
  border: none;
  background: transparent;
  cursor: pointer;
  border-radius: calc(6px * var(--corner-k));
  display: flex;
  align-items: center;
  justify-content: center;
  color: rgba(0,0,0,0.5);
  transition: background 0.15s, color 0.15s;
}
/* the two toolbar buttons are a pair: both icons take the small size */
.memory-manage-sort-btn svg,
.memory-manage-menu-btn svg { width: var(--icon-size-sm); height: var(--icon-size-sm); }
html:not([data-input="touch"]) .memory-manage-sort-btn:hover,
html:not([data-input="touch"]) .memory-manage-menu-btn:hover{
  background: var(--color-bg-card);
  color: rgba(0,0,0,0.8);
}

.memory-manage-sort-btn:active,
.memory-manage-menu-btn:active {
  background: var(--color-bg-card);
  color: rgba(0,0,0,0.8);
}

/* 排序下拉 */
.memory-manage-sort-dropdown {
  position: absolute;
  right: 0;
  top: 36px;
  z-index: 20;
  background: var(--color-bg-panel);
  border-radius: calc(10px * var(--corner-k));
  min-width: 160px;
  box-shadow: 0 4px 20px var(--color-shadow);
  padding: 4px 0;
}
.memory-manage-sort-dropdown[hidden] {
  display: none;
}
.memory-manage-sort-dropdown-title {
  padding: 8px 16px 4px;
  font-size: 12px;
  color: #999;
  font-weight: 500;
}
.memory-manage-sort-option {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 16px;
  border: none;
  background: none;
  font-size: 14px;
  color: var(--color-text);
  cursor: pointer;
  width: 100%;
  text-align: left;
}
html:not([data-input="touch"]) .memory-manage-sort-option:hover{
  background: var(--color-bg-hover);
}

.memory-manage-sort-option:active {
  background: var(--color-bg-hover);
}
.memory-manage-sort-check {
  font-size: 16px;
  margin-left: 12px;
  opacity: 0;
}
.memory-manage-sort-option.active .memory-manage-sort-check {
  opacity: 1;
}

/* 全局下拉（三点菜单） */
.memory-manage-dropdown {
  position: absolute;
  right: 0;
  top: 36px;
  z-index: 20;
  background: var(--color-bg-panel);
  border-radius: calc(10px * var(--corner-k));
  min-width: 200px;
  box-shadow: 0 4px 20px var(--color-shadow);
  padding: 4px 0;
}
.memory-manage-dropdown[hidden] {
  display: none;
}

/* 自动管理 toggle 行 */
.memory-manage-dropdown-toggle {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 16px;
  cursor: pointer;
  font-size: 14px;
  color: var(--color-text);
  border: none;
  background: none;
  width: 100%;
}
html:not([data-input="touch"]) .memory-manage-dropdown-toggle:hover{
  background: var(--color-bg-hover);
}

.memory-manage-dropdown-toggle:active {
  background: var(--color-bg-hover);
}

.memory-manage-dropdown-toggle.memory-manage-dropdown-item svg {
  width: var(--icon-size);
  height: var(--icon-size);
}
/* 迷你 toggle */
.memory-manage-mini-toggle {
  width: 36px;
  height: 20px;
  background: #ccc;
  border-radius: 10px;
  corner-shape: round;
  position: relative;
  margin-left: auto;
  flex-shrink: 0;
  transition: background 0.2s;
  display: inline-block;
  flex-shrink: 0;
}
.memory-manage-mini-toggle::after {
  content: '';
  position: absolute;
  top: 2px;
  left: 2px;
  width: 16px;
  height: 16px;
  background: #fff;
  border-radius: 50%;
  corner-shape: round;
  transition: transform 0.2s;
}
.memory-manage-dropdown-toggle input {
  display: none;
}
.memory-manage-dropdown-toggle input:checked + .memory-manage-mini-toggle {
  background: #1a1a1a;
}
.memory-manage-dropdown-toggle input:checked + .memory-manage-mini-toggle::after {
  transform: translateX(16px);
}

/* 普通下拉项（导出/导入等） */
.memory-manage-dropdown-item {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  text-align: left;
  padding: 10px 16px;
  border: none;
  background: none;
  font-size: 14px;
  color: var(--color-text);
  cursor: pointer;
}
.memory-manage-dropdown-item svg {
  width: var(--icon-size);
  height: var(--icon-size);
  flex-shrink: 0;
}
html:not([data-input="touch"]) .memory-manage-dropdown-item:hover{
  background: var(--color-bg-hover);
}

.memory-manage-dropdown-item:active {
  background: var(--color-bg-hover);
}
/* 下拉分割线 */
.memory-manage-dropdown-divider {
  height: 1px;
  background: var(--color-border);
  margin: 4px 0;
}

/* 删除全部（危险操作红色） */
.memory-manage-dropdown-danger {
  display: block;
  width: 100%;
  text-align: left;
  padding: 10px 16px;
  border: none;
  background: none;
  font-size: 14px;
  color: #dc3545;
  cursor: pointer;
}
html:not([data-input="touch"]) .memory-manage-dropdown-danger:hover{
  background: var(--color-bg-hover);
}

.memory-manage-dropdown-danger:active {
  background: var(--color-bg-hover);
}
/* 项目记忆下拉中 danger 同时有 dropdown-item 时，用 flex 布局 + 红色 */
.memory-manage-dropdown-item.memory-manage-dropdown-danger {
  display: flex;
  color: #dc3545;
}

/* 记忆列表 — 限高滚动 */
.memory-manage-list {
  max-height: 55vh;
  /* 恒占 8px 滚动条位:行内容与容器外的工具栏才对得齐(工具栏右内距同步 +8) */
  scrollbar-gutter: stable;
  overflow-y: auto;
  padding: 0;
}
/* .memory-manage-list 滚动条走 .duo-scroll 模板（元素已加该 class） */

/* 段标题(等你确认 / 生效中 / 已退役)。字号字重照设置页的组标题基准(.project-settings-label),
   只是这里在列表里,所以上下留白按行距给。段与段之间要能一眼分开,否则分组等于没分。 */
.memory-manage-group {
  font-size: 14px;
  font-weight: 500;
  color: var(--color-text-secondary);
  /* 左右内距跟行一致(.memory-manage-item 的 20px):标题不跟行文字左对齐,一眼就是没对齐 */
  padding: 14px 20px 6px;
  /* 吸顶(桌面):一段六十多条时,滑过分界线就不知道自己在哪一类了。底色不能透,否则行会从标题下面透出来。
     手机 sheet 在下面的媒体块里改成随内容走 —— 这段必须排在那块之前,同权规则靠源码顺序分胜负 */
  position: sticky;
  top: 0;
  z-index: 1;
  background: var(--color-bg-panel);   /* 同弹窗面板本身的底色真源(.project-modal-content) */
}
.dark-mode .memory-manage-group,
.dark-mode-active .memory-manage-group { background: #212121; }   /* = .dark-mode .project-modal-content,吸顶块要跟面板一样否则透字 */
.memory-manage-group:first-child { padding-top: 2px; }

/* 单条记忆 */
.memory-manage-item {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  padding: 14px 20px;
  border-bottom: 1px solid var(--color-border);
}
.memory-manage-item-text {
  flex: 1;
  font-size: 14px;
  line-height: 1.5;
  color: var(--color-text);
  word-break: break-word;
}

/* 每条末尾三点 — 默认隐藏，hover 显示 */
.memory-manage-item-menu-wrap {
  position: static;
  flex-shrink: 0;
  margin-left: 8px;
  width: 28px;
}
.memory-manage-item-menu-btn {
  width: 28px;
  height: 28px;
  border: none;
  background: transparent;
  cursor: pointer;
  border-radius: calc(6px * var(--corner-k));
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--color-text-secondary);
  transition: background 0.15s, opacity 0.15s;
  opacity: 0;
}
html:not([data-input="touch"]) .memory-manage-item:hover .memory-manage-item-menu-btn,
html:not([data-input="touch"]) .memory-manage-item:active .memory-manage-item-menu-btn{
  opacity: 1;
}

/* 触屏设备始终显示 */
@media (hover: none) {
  .memory-manage-item-menu-btn {
    opacity: 1;
  }
}

html:not([data-input="touch"]) .memory-manage-item-menu-btn:hover{
  background: var(--color-bg-card);
}

.memory-manage-item-menu-btn:active {
  background: var(--color-bg-card);
}

/* 单条下拉 — 用 fixed 定位，JS 计算位置，避免被 overflow 裁切 */
/* JS 会根据 dark mode 添加 .memory-dropdown-dark 类 */
.memory-manage-item-dropdown {
  position: fixed;
  /* 挂在 body 上 → 菜单走 float 档,压过开着的弹窗,否则开在弹窗背面=看着像点不开 */
  z-index: var(--z-float);
  background: var(--color-bg-panel);
  border-radius: calc(10px * var(--corner-k));
  min-width: 200px;
  box-shadow: 0 4px 20px var(--color-shadow);
  padding: 4px 0;
}
.memory-manage-item-dropdown.memory-dropdown-dark .memory-manage-item-delete {
  color: #dc3545;
}
html:not([data-input="touch"]) .memory-manage-item-dropdown.memory-dropdown-dark .memory-manage-item-delete:hover{
  background: rgba(255,255,255,0.06);
}

.memory-manage-item-dropdown.memory-dropdown-dark .memory-manage-item-delete:active {
  background: rgba(255,255,255,0.06);
}
.memory-manage-item-dropdown.memory-dropdown-dark .memory-manage-item-date {
  color: rgba(255,255,255,0.35);
}
.memory-manage-item-dropdown[hidden] {
  display: none;
}
.memory-manage-item-delete {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 16px;
  border: none;
  background: none;
  font-size: 14px;
  color: #dc3545;
  cursor: pointer;
  width: 100%;
}
.memory-manage-item-delete svg {
  width: var(--icon-size);
  height: var(--icon-size);
  flex-shrink: 0;
  text-align: left;
}
html:not([data-input="touch"]) .memory-manage-item-delete:hover{
  background: var(--color-bg-hover);
}

.memory-manage-item-delete:active {
  background: var(--color-bg-hover);
}
.memory-manage-item-date {
  padding: 6px 16px 10px;
  font-size: 12px;
  color: #999;
}

/* 空状态 */
.memory-manage-empty {
  padding: 40px 20px;
  text-align: center;
  color: #999;
  font-size: 14px;
}

/* ===== Dark mode ===== */
.dark-mode .settings-manage-memory-btn {
  color: rgba(255,255,255,0.9);
  border-color: rgba(255,255,255,0.2);
}
html:not([data-input="touch"]) .dark-mode .settings-manage-memory-btn:hover{
  background: rgba(255,255,255,0.08);
}

.dark-mode .settings-manage-memory-btn:active {
  background: rgba(255,255,255,0.08);
}
.dark-mode .memory-manage-subtitle {
  color: rgba(255,255,255,0.5);
}
.dark-mode .memory-manage-toolbar {
  border-bottom-color: var(--color-border);
}
.dark-mode .memory-manage-search {
  background: #2a2a2a;
  border-color: var(--color-border);
}
.dark-mode .memory-manage-search:focus {
  border-color: rgba(255,255,255,0.5);
}
.dark-mode .memory-manage-sort-btn,
.dark-mode .memory-manage-menu-btn {
  color: rgba(255,255,255,0.5);
}
html:not([data-input="touch"]) .dark-mode .memory-manage-sort-btn:hover,
html:not([data-input="touch"]) .dark-mode .memory-manage-menu-btn:hover{
  color: rgba(255,255,255,0.9);
}

.dark-mode .memory-manage-sort-btn:active,
.dark-mode .memory-manage-menu-btn:active {
  color: rgba(255,255,255,0.9);
}
.dark-mode .memory-manage-sort-dropdown-title {
  color: rgba(255,255,255,0.4);
}
.dark-mode .memory-manage-sort-option {
  color: rgba(255,255,255,0.9);
}
.dark-mode .memory-manage-dropdown-toggle {
  color: rgba(255,255,255,0.9);
}
.dark-mode .memory-manage-dropdown-item {
  color: rgba(255,255,255,0.9);
}
.dark-mode .memory-manage-dropdown-item.memory-manage-dropdown-danger {
  color: #dc3545;
}
.dark-mode .memory-manage-mini-toggle {
  background: #555;
}
.dark-mode .memory-manage-dropdown-toggle input:checked + .memory-manage-mini-toggle {
  background: #fff;
}
.dark-mode .memory-manage-dropdown-toggle input:checked + .memory-manage-mini-toggle::after {
  background: #1a1a1a;
}
.dark-mode .memory-manage-item-text {
  color: rgba(255,255,255,0.9);
}
.dark-mode .memory-manage-item-date {
  color: rgba(255,255,255,0.35);
}
.dark-mode .memory-manage-empty {
  color: rgba(255,255,255,0.4);
}
/* .memory-manage-list 暗色滚动条走 .duo-scroll 模板 */

/* ===== Mobile: ChatGPT-style full-screen sheet ===== */
@media (max-width: 768px), (max-height: 500px) {
  /* Full-screen slide-up sheet */
  #memoryManageModal {
    align-items: flex-end;
  }
  /* 尺寸/圆角/上滑下滑全在 .duo-sheet 真源(ai-chat-sheet.css),JS 开关走 DuoSheet;overflow 留 hidden(内部自己滚) */
  .memory-manage-content {
    overflow: hidden;
    display: flex;
    flex-direction: column;   /* 手机 sheet 永远从下往上开、从上往下关(owner 2026-08-23);关闭由 JS 挂 duoSheetSlideDown,两条都是 ai-chat-sheet.css 的真源,不再私藏左右滑的 keyframes */
  }

  /* Hide desktop header, show mobile header */
  .memory-manage-header-desktop {
    display: none !important;
  }
  /* header layout + title = the sheet-head source pair (duo-sheet-head + settings-memory-subpanel-title);
     the private flex/17px copies that lived here are gone (2026-08-28 enrolment) */
  .memory-manage-header-mobile .memory-manage-menu-wrap {
    flex-shrink: 0;
    width: 36px;
  }
  .memory-manage-header-mobile .memory-manage-menu-btn {
    width: 36px;
    height: 36px;
    border: none;
    border-radius: 50%;
    corner-shape: round;
    background: transparent;
    color: var(--color-text);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
  }

  /* Toolbar: search at bottom, sort hidden */
  .memory-manage-toolbar {
    order: 3;
    border-bottom: none;
    border-top: 1px solid var(--color-border);
    padding: 12px 16px;
    position: sticky;
    bottom: 0;
    background: var(--color-bg-panel);
    z-index: 2;
  }
  .memory-manage-toolbar-right {
    display: none;
  }
  .memory-manage-search-wrap {
    max-width: none;
  }
  .memory-manage-search {
    border-radius: 999px;
    corner-shape: round;
    padding: 10px 16px;
    background: var(--color-bg-hover);
    border: none;
  }
  .memory-manage-search:focus {
    border: none;
    outline: 2px solid rgba(0,0,0,0.15);
  }

  /* List: fill remaining space, scroll */
  /* 两层选择器:真源 .duo-sheet-body 只定 padding-top,同权且后加载会盖掉单类写法。
     顶部 = 头高 + 20 呼吸距,与其它 sheet body 一致;之前是 0,列表第一行贴在头的玻璃渐变里。 */
  .memory-manage-content .memory-manage-list {
    order: 2;
    flex: 1;
    max-height: none;
    overflow-y: auto;
    padding: 20px 16px 0;
  }
  /* 手机 sheet 里不吸顶:圆角卡片组的段标题随内容走(与行文字同一左缘 16px)。 */
  .memory-manage-group {
    position: static;
    padding-left: 16px;
    padding-right: 16px;
  }

  /* Memory items: rounded cards with dividers */
  .memory-manage-item:has(.project-modal-btn) {
    padding-right: 16px;
  }
  .memory-manage-item {
    padding: 16px 4px 16px 16px;
    background: rgba(0,0,0,0.03);
    border-bottom: 1px solid var(--color-border);
    border-radius: 0;
  }
  .memory-manage-item .memory-manage-item-menu-wrap {
    width: 36px;
  }
  .memory-manage-item .memory-manage-item-menu-btn {
    width: 36px;
    height: 36px;
    border-radius: calc(6px * var(--corner-k));
  }
  .memory-manage-list {
    border-radius: calc(24px * var(--corner-k));
  }
  .memory-manage-item:last-child {
    border-bottom: none;
  }

  /* Empty state */
  .memory-manage-empty {
    order: 2;
    flex: 1;
  }

  /* Dropdown position (shared) */
  .memory-manage-dropdown {
    position: fixed;
    right: 16px;
    top: auto;
    z-index: 10001;
  }
}

/* Project memory manage modal — reuse same mobile styles */
@media (max-width: 768px), (max-height: 500px) {
  #projectMemoryManageModal {
    align-items: flex-end;
  }
}

/* Mobile dark mode */
@media (max-width: 768px), (max-height: 500px) {
  .dark-mode .memory-manage-header-mobile .memory-manage-menu-btn {
    color: rgba(255,255,255,0.85);
  }
  .dark-mode .memory-manage-item {
    background: rgba(255,255,255,0.05);
  }
  .dark-mode .memory-manage-toolbar {
    background: #212121;   /* = .dark-mode .project-modal-content: the bar sits on the sheet, one colour */
    border-top-color: var(--color-border);
  }
  .dark-mode .memory-manage-search {
    background: rgba(255,255,255,0.06);
  }
  .dark-mode .memory-manage-search:focus {
    outline-color: rgba(255,255,255,0.15);
  }
}

/* 未生效的记忆:候选(反思提的归纳,等你点头)与已退役(整理掉的)。它们本来就在库里,只是不注入 ——
   不标出来的话,三种状态在列表里长得一模一样,读起来就是"我什么时候说过这句话"。 */
/* 已退役的整行压暗:它此刻不参与任何回答,不该和生效的抢注意力 */
.memory-manage-item-deprecated .memory-manage-item-text { opacity: 0.55; }

/* 采纳 / 撤回退役 —— 与删除同一形状,只是不用红色(它不是破坏性动作) */
.memory-manage-item-accept {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 16px;
  border: none;
  background: none;
  font-size: 14px;
  color: var(--color-text);
  cursor: pointer;
  width: 100%;
}
/* 两行共用同一个 24px 图标位:文字才起在同一竖线。图形各按自然尺寸,不拉齐 —— 实心的勾
   和描边的垃圾桶同样 24px 时,实心那个会明显更重。 */
.memory-manage-item-icon {
  width: var(--icon-size);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.memory-manage-item-icon svg { display: block; }
html:not([data-input="touch"]) .memory-manage-item-accept:hover { background: var(--color-bg-hover); }
.memory-manage-item-accept:active { background: var(--color-bg-hover); }
html:not([data-input="touch"]) .memory-manage-item-dropdown.memory-dropdown-dark .memory-manage-item-accept:hover { background: rgba(255,255,255,0.06); }
.memory-manage-item-dropdown.memory-dropdown-dark .memory-manage-item-accept:active { background: rgba(255,255,255,0.06); }
