/* ============================================================
   文档管理模块（Documents）样式——对齐 D:\DataWebRS 的 Odoo 后端视觉
   （2026-10-18：以 RS 版本为样式基线，保留本仓顶栏/拖放等外壳规则）
   ============================================================ */

:root {
  --doc-primary: #714B67;        /* Odoo 品牌紫 */
  --doc-primary-dark: #5c3b54;
  --doc-primary-soft: #f3eaf0;
  --doc-gray-100: #f6f7f9;
  --doc-gray-200: #eceef1;
  --doc-gray-300: #dfe2e6;
  --doc-gray-600: #6b7280;
  --doc-gray-800: #343a40;
  --doc-border: #e2e5e9;
  --doc-radius: 8px;
  --doc-shadow: 0 1px 2px rgba(0,0,0,.05), 0 1px 4px rgba(0,0,0,.05);
  --doc-shadow-lg: 0 4px 16px rgba(0,0,0,.10);
}

.cursor-pointer { cursor: pointer; }

/* ---------- 布局 ---------- */
.documents-layout { background: var(--doc-gray-100); font-family: system-ui, -apple-system, "Segoe UI", "Microsoft YaHei", sans-serif; }
/* 顶栏与 MainLayout .top-row 对齐：浅灰底 + 同色底边框 + 深色文字 */
.documents-topbar { background: #f7f7f7; color: var(--doc-gray-800); border-bottom: 1px solid #d6d5d5; }
.documents-brand { color: var(--doc-gray-800); font-size: 1.08rem; }
.documents-brand:hover { color: var(--doc-primary); }
/* 顶栏品牌区与下方目录侧栏同宽：`.documents-sidebar` 是 220px，顶栏 `.px-3` 已占 1rem，
   故品牌链接宽度取 `220px - 1rem`，右边缘正好落在侧栏分界线上。
   移动端侧栏变成抽屉，这里恢复自适应，避免挤掉「文档管理」与面包屑。 */
.documents-brand-logo { width: calc(220px - 1rem); }
@media (max-width: 767.98px) {
    .documents-brand-logo { width: auto; }
}
/* 品牌标志图的尺寸规则在 `app.css` 的 `.site-logo`（三个外壳共用一份）——
   ⛔ 这里不再写第二份 `.documents-logo`：那正是"同一件事两处口径"的起点。 */
/* 模块导航：**下划线页签**（与内容门户 `website-nav` 同一形态）。
   形状（内边距 / 下划线 / 透明边框）在 `app.css` 的 `.site-nav` 里，这里只给本模块的配色。
   ⚠ 为什么从 `.nav-pills` 改过来：胶囊是"按钮"的语言，而这是导航；改为下划线后，
     与内容门户、仪表盘大屏三处的导航语言一致。

   ★ 本批（专业度）：两条一起做，都只作用于 `documents-nav`，⛔ 不动共用的 `.site-nav`：
     ① **图标 + 文字**的间距（图标与字之间要有呼吸感，否则像"符号粘着字"）；
     ② **悬停**给极浅底色：原来的"只变文字色"在浅灰顶栏上几乎看不出可点。

   🔴 2026-10-18（现场反馈"logo 和 文档 中间那个 | 能不能删掉"）：**删掉选中态的左侧 3px 竖条**。
      那条竖条的定位是 `left: -.3rem`（伸到页签外面），在"品牌 → 第一个页签"这个位置读起来
      就像一根**分隔符**，而不是"选中标记" —— 用户第一眼就是这么理解的，说明这个装饰失败了。
      现在选中态 = **颜色 + 下划线 + 加粗**：下划线与字重同样不依赖颜色，
      无障碍要求的"第二重指示"由这两者承担，⛔ 不需要再补一条形状标记。
      ⚠ 顺带与内容门户的 `.website-nav` 对齐了：那边从来没有这条竖条。 */
.documents-nav .nav-link { color: var(--doc-gray-600); }

/* 页签间距回到共用 `.site-nav` 的 `.25rem`：原来放宽到 `.5rem` 是为了给"选中态左侧竖条"让位，
   竖条删掉后这个补偿也就不需要了（改小也让两个外壳的页签节奏一致）。
   ⛔ 只调本模块：`.site-nav` 是内容门户/文档管理共用的一层，改它会连带改别处。 */
.documents-nav { gap: .25rem; }

/* 图标与文字：图标略淡一档，让**文字**仍是主体（图标是辅助识别，不是主角） */
.documents-nav .nav-link > i {
  margin-right: .4rem;
  opacity: .85;
}

/* 「配置 ▾」触发器：外观与相邻 `.nav-link` 一致（它是 <button>，需清掉 Bootstrap 按钮的底色/边框）。
   ⚠ 不加这条会出现"文档是灰字、配置是白底按钮"的割裂感 —— 位置在 `.documents-nav .nav-link` 之后，
     以便同样拿到 hover/active 的颜色规则。 */
.documents-nav .btn.nav-link {
  background: none;
  /* ⚠ 纵向边框归零，但**保留下边**：`.site-nav .nav-link` 的选中态是靠 `border-bottom-color`
     上色的（见 app.css），写成 `border: 0` 会把那条下划线一起抹掉。 */
  border: 0;
  border-bottom: 2px solid transparent;
  font: inherit;
  padding: .25rem .5rem .35rem;
}
.documents-nav .btn.nav-link:focus-visible { outline: 2px solid var(--doc-primary); outline-offset: 2px; }

.documents-nav .nav-link.active {
  color: var(--doc-primary);
  border-bottom-color: var(--doc-primary);
  font-weight: 600;
}


.documents-nav .nav-link:not(.active):hover {
  color: var(--doc-gray-800);
  /* 极浅底色：`--doc-gray-100` 与顶栏 `#f7f7f7` 太接近 ⇒ 用 gray-200 才看得出 */
  background: var(--doc-gray-200);
  border-radius: 4px 4px 0 0;
}
.documents-main { min-height: 0; }

/* ---------- 左侧搜索面板 / 文件夹树 ---------- */
/* 搜索面板宽度：桌面对齐 Odoo 变量 `$o-search-panel-width: 220px`（web/.../search_panel.variables.scss）。
   ⚠ 2026-10-18 审核：宽度原来写在标记的**内联 style** 上 —— 内联样式会盖掉媒体查询，
     移动端抽屉没法单独设宽（只能跟着 220px，手机上太窄）。现在搬到 CSS，断点各管各的。 */
.documents-sidebar { width: 220px; }

.documents-search-panel { width: 100%; background: #fff; }
/* 行度量对齐 Odoo 搜索面板（`web/static/src/search/search_panel/search_panel.scss`）：
   `--treeEntry-padding-h: 1rem`、条目上下内边距 = spacers(2) − SearchPanelHeader-margin-y(0.25rem) = 0.25rem；
   `list-group-item` 横向 padding 为 0 ⇒ 行是**通栏**的（旧版写了 `margin: 0 .35rem` + 圆角，看起来像一颗颗独立按钮）。
   面板宽 220px 也取自 Odoo 变量 `$o-search-panel-width`。 */
.documents-tree { font-size: .875rem; padding: .25rem 0; }
.documents-tree-item {
  display: flex; align-items: center; gap: .35rem;
  padding: .25rem 1rem; cursor: pointer; white-space: nowrap;
  color: var(--doc-gray-800); border-radius: var(--bs-border-radius, .375rem); margin: 0;
}
.documents-tree-item:hover { background: var(--doc-gray-100); }
.documents-tree-item.active { background: var(--doc-primary-soft); color: var(--doc-primary); font-weight: 600; }
.documents-tree-children { border-left: 1px solid var(--doc-gray-300); margin-left: 1.1rem; }
/* ── Odoo 风格导航（2026-10-18）─────────────────────────────────────────────
   虚拟根是**可展开的树节点**（公司 / 我的驱动器 / 与我分享），文件夹子树挂在各自下面；
   箭头必须是独立按钮（见 RootNode.razor），否则点箭头会连带触发跳转。 */
.documents-tree-root { gap: .15rem; }
.documents-tree-toggle {
    width: 1.1rem; display: inline-flex; align-items: center; justify-content: center;
    color: var(--doc-gray-600); text-decoration: none; line-height: 1; font-size: .8rem;
}
.documents-tree-toggle:hover { color: var(--doc-primary); text-decoration: none; }
.documents-tree-all { padding-left: 1rem; }
/* 根节点下的子树缩进一档：与 Odoo 的 o_treeEntry 层级感一致 */
.documents-tree-root + .documents-tree-children { margin-left: 1.6rem; }
.documents-tree-separator { height: 1px; background: var(--doc-gray-200); margin: .45rem 0; }
.documents-tree-title { font-size: .72rem; text-transform: uppercase; letter-spacing: .06em; color: var(--doc-gray-600); }
.documents-tag-dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }
.documents-tree-item.drop-target { background: var(--doc-primary-soft); outline: 2px dashed var(--doc-primary); outline-offset: -2px; }
/* 计数：对齐 Odoo `o_search_panel_counter`（右对齐、小一号、等宽数字）。
   ⛔ 不要再用 `badge text-bg-light border`：那是"标签"的形状，会把导航行压成两层视觉。 */
.documents-tree-counter {
  margin-left: auto; font-size: .78rem; line-height: 1;
  color: var(--doc-gray-600); font-variant-numeric: tabular-nums;
}

/* ---------- 标签颜色选择器（色块 1..11） ---------- */
.documents-color-swatch {
    width: 24px; height: 24px; border-radius: 50%;
    border: 2px solid rgba(0, 0, 0, .18);
    padding: 0; margin: 0;
    display: inline-flex; align-items: center; justify-content: center;
    color: #fff; font-size: .72rem; line-height: 1;
    cursor: pointer;
    transition: transform .12s ease, box-shadow .12s ease, border-color .12s ease;
}
.documents-color-swatch:hover { transform: scale(1.18); border-color: rgba(0, 0, 0, .35); }
.documents-color-swatch.selected {
    border-color: #212529;
    box-shadow: 0 0 0 2px #fff inset, 0 0 0 3px rgba(33, 37, 41, .4);
}
.documents-color-swatch i { text-shadow: 0 1px 2px rgba(0, 0, 0, .65); pointer-events: none; }

/* ---------- 概览统计条 ---------- */
.documents-stats { background: #fff; color: var(--doc-gray-600); }
.documents-stats b { color: var(--doc-gray-800); font-weight: 600; }

/* ---------- 控制面板 / 面包屑 ---------- */
.documents-control-panel { min-height: 0; background: #fff; }
.documents-breadcrumb { font-size: .9rem; }
.documents-breadcrumb-link { color: var(--doc-gray-600); text-decoration: none; cursor: pointer; border-radius: 4px; padding: 0 .2rem; }
.documents-breadcrumb-link:hover { color: var(--doc-primary); text-decoration: none; background: var(--doc-gray-100); }
.documents-breadcrumb-current { color: var(--doc-gray-800); font-weight: 600; }
.documents-search-input { max-width: 300px; }
.documents-search-input .form-control { border-color: var(--doc-gray-300); }
.documents-search-input .form-control:focus { border-color: var(--doc-primary); box-shadow: 0 0 0 .2rem rgba(113,75,103,.12); }

/* 按钮主色对齐 Odoo 紫 */
.documents-control-panel .btn-primary, .documents-modal .btn-primary, .documents-share-page .btn-primary {
  background: var(--doc-primary); border-color: var(--doc-primary);
}
.documents-control-panel .btn-primary:hover, .documents-modal .btn-primary:hover { background: var(--doc-primary-dark); border-color: var(--doc-primary-dark); }
.documents-control-panel .btn-outline-secondary, .documents-modal .btn-outline-secondary { color: var(--doc-gray-800); border-color: var(--doc-gray-300); }
.documents-control-panel .btn-outline-secondary:hover { background: var(--doc-gray-100); border-color: var(--doc-gray-300); color: var(--doc-gray-800); }
.documents-control-panel .dropdown-menu { border-radius: 6px; box-shadow: var(--doc-shadow-lg); border-color: var(--doc-border); }
.documents-control-panel .dropdown-item.active { background: var(--doc-primary-soft); color: var(--doc-primary); }

/* ---------- 看板 ---------- */
.documents-kanban { background: var(--doc-gray-100); animation: doc-fadein .18s ease; }
.documents-list { background: #fff; animation: doc-fadein .18s ease; }
@keyframes doc-fadein { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }
/* 分组标题（对齐 Odoo 看板的「文件夹 / 文件」两组：组头 + 独立网格） */
.documents-kanban-section { padding: 0 .2rem; }
.documents-kanban-section-title {
  font-size: .95rem; font-weight: 600; color: var(--doc-gray-600);
  margin: .6rem .2rem .1rem;
}
.documents-kanban-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: .8rem;
  padding: .4rem;
}
/* 文件夹网格：卡片是横向的（图标+文字），比文件卡窄不了太多，但不需要那么高 */
.documents-kanban-grid-folders { grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); }
.documents-kanban-card {
  overflow: hidden; background: #fff; border: 1px solid var(--doc-border);
  border-radius: var(--doc-radius); box-shadow: var(--doc-shadow);
  transition: box-shadow .12s ease, border-color .12s ease, transform .12s ease;
}
.documents-kanban-card:hover { box-shadow: 0 4px 12px rgba(0,0,0,.10); border-color: var(--doc-gray-300); }
.documents-kanban-card.documents-selected { border-color: var(--doc-primary); box-shadow: 0 0 0 2px var(--doc-primary); }
.documents-kanban-card.documents-details-open { background: var(--doc-primary-soft); }
.documents-kanban-card.drag-source { opacity: .5; }
.documents-card-preview {
  height: 130px; background: var(--doc-gray-200); overflow: hidden;
  display: flex; align-items: center; justify-content: center;
  text-decoration: none; color: inherit; border-bottom: 1px solid var(--doc-gray-200);
  position: relative;
  /* 缩略图加载占位 shimmer */
  background-image: linear-gradient(90deg, #eceef1 25%, #f6f7f9 50%, #eceef1 75%);
  background-size: 200% 100%;
  animation: doc-shimmer 1.5s infinite;
}
.documents-card-preview img.documents-card-thumb { position: absolute; inset: 0; animation: none; }
@keyframes doc-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }
.documents-card-thumb { width: 100%; height: 100%; object-fit: cover; }
.documents-card-thumb-svg { object-fit: contain; background: #fff; }
.documents-favorite { line-height: 1; padding: 0 .2rem; color: var(--doc-gray-600); }
.documents-favorite:hover { color: #f5a623; }
.documents-card-check { line-height: 1; }
.documents-card-badge { background: rgba(255,255,255,.9); border-radius: 4px; padding: 0 .32rem; color: var(--doc-gray-600); }
.documents-folder-icon { font-size: 3rem; color: #e8a33d; }
/* 文件夹卡片：横向布局（图标左 / 名称+位置右），对齐 Odoo `o_documents_folder_details` */
.documents-folder-card {
  display: flex; align-items: center; gap: .65rem;
  padding: .7rem .75rem; min-height: 76px;
}
/* 多选模式下左上角有勾选圈，横向布局要给它让位（否则压住文件夹图标） */
.documents-folder-card-selecting { padding-left: 1.9rem; }
.documents-folder-card .documents-folder-icon { font-size: 2.2rem; flex-shrink: 0; line-height: 1; }
.documents-folder-meta { min-width: 0; flex-grow: 1; }
.documents-folder-location {
  font-weight: 300; font-size: .8rem; color: var(--doc-gray-600);
  line-height: 1.3;
}
/* 名称行里的星标（文件夹卡片用）：与 `position-absolute` 那个同观感，但不占卡片角落 */
.documents-favorite-inline { line-height: 1; color: var(--doc-gray-600); }
.documents-favorite-inline:hover { color: #f5a623; }
.documents-empty { color: #9ca3af; font-size: .9rem; }
/* 空状态受理文件拖放时的高亮（2026-10-17）：与 `.documents-dropzone` 同观感，
   ⛔ 不要另造一套配色 —— 用户应认出"这里能放文件"与上传对话框是同一件事。 */
.documents-empty.documents-drop-active {
    color: var(--doc-primary);
    background: var(--doc-primary-soft);
    outline: 2px dashed var(--doc-primary);
    outline-offset: -6px;
}

.documents-kanban-grouped { overflow-x: auto; }
.documents-kanban-column { width: 264px; max-height: 100%; background: var(--doc-gray-200); border-radius: var(--doc-radius); }
.documents-kanban-column-header { background: #fff; border-radius: var(--doc-radius) var(--doc-radius) 0 0; }

/* ---------- 列表 ---------- */
.documents-list { background: #fff; }
.documents-list-table td { padding: .38rem .55rem; font-size: .875rem; }
.documents-list-table tbody tr:hover { background: var(--doc-gray-100); }
.documents-list-table thead th { font-size: .75rem; text-transform: uppercase; letter-spacing: .04em; color: var(--doc-gray-600); }
.documents-list-star { cursor: pointer; color: var(--doc-gray-600); }
.documents-list-star:hover { color: #f5a623; }
.documents-list-name { cursor: pointer; color: var(--doc-gray-800); }
.documents-list-name:hover { color: var(--doc-primary); }

/* ---------- 详情面板 ---------- */
.documents-details-overlay { z-index: 20; box-shadow: -4px 0 16px rgba(0,0,0,.08); }
.documents-details-panel { font-size: .875rem; background: #fff; }
.documents-details-header { background: #fff; }
.documents-details-tabs .nav-link { font-size: .8rem; padding: .45rem .5rem; color: var(--doc-gray-600); border: 0; border-bottom: 2px solid transparent; }
.documents-details-tabs .nav-link.active { color: var(--doc-primary); border-bottom-color: var(--doc-primary); background: transparent; }
.documents-activity-item { font-size: .82rem; border-radius: 6px; border-color: var(--doc-border) !important; }
.documents-chatter-body { white-space: pre-wrap; word-break: break-word; background: var(--doc-gray-100); border-radius: 6px; padding: .4rem .55rem; }

/* ---------- 选择框（底部工具条） ---------- */
.documents-selection-box { font-size: .875rem; background: #fff; box-shadow: 0 -1px 4px rgba(0,0,0,.06); }

/* ---------- 对话框 ---------- */
.documents-modal { z-index: 1055; }
.documents-modal .modal-content { box-shadow: 0 12px 40px rgba(0,0,0,.22); border-radius: 10px; border: 0; }
.documents-modal .modal-header { border-bottom: 1px solid var(--doc-gray-200); }
.documents-modal .modal-footer { border-top: 1px solid var(--doc-gray-200); }
.documents-modal .form-control:focus, .documents-modal .form-select:focus { border-color: var(--doc-primary); box-shadow: 0 0 0 .2rem rgba(113,75,103,.12); }
.documents-move-tree { font-size: .875rem; }
.documents-dropzone { background: var(--doc-gray-100); border: 2px dashed var(--doc-gray-300) !important; transition: border-color .12s, background .12s; }
.documents-dropzone:hover { border-color: var(--doc-primary) !important; }
.documents-dropzone.drag-over { border-color: var(--doc-primary) !important; background: var(--doc-primary-soft); box-shadow: inset 0 0 0 2px var(--doc-primary); }

/* ---------- 右键上下文菜单 ---------- */
.documents-context-menu {
  position: fixed; z-index: 2000; min-width: 200px;
  background: #fff; border: 1px solid var(--doc-border); border-radius: 8px;
  box-shadow: var(--doc-shadow-lg); padding: .3rem 0; font-size: .875rem;
}
.documents-context-item {
  display: flex; align-items: center; gap: .6rem;
  padding: .42rem .85rem; cursor: pointer; color: var(--doc-gray-800);
}
.documents-context-item:hover { background: var(--doc-gray-100); }
.documents-context-item.danger { color: #c0392b; }
.documents-context-item.danger:hover { background: #fdf0ee; }
.documents-context-sep { height: 1px; background: var(--doc-gray-200); margin: .25rem 0; }

/* ---------- 头像 / 标签 ---------- */
.documents-avatar {
  width: 24px; height: 24px; font-size: .68rem;
  color: #fff; flex-shrink: 0; font-weight: 600;
}
.documents-tag { font-size: .7rem; font-weight: 500; }
.documents-link { color: var(--doc-primary); text-decoration: none; cursor: pointer; }
.documents-link:hover { text-decoration: underline; }
.documents-activity-row { font-size: .875rem; border-color: var(--doc-border) !important; border-radius: 6px; }

/* ---------- 预览弹层 ---------- */
.documents-preview-modal {
  position: fixed; inset: 0; z-index: 1060;
  background: rgba(15, 13, 20, .94);
  display: flex; flex-direction: column;
}
.documents-preview-header { background: #2b2630; }
.documents-preview-body { flex: 1; min-height: 0; }
.documents-preview-img { max-width: 100%; max-height: 100%; object-fit: contain; }
.documents-preview-media { max-width: 100%; max-height: 100%; }
.documents-preview-frame { width: 100%; height: 100%; border: 0; background: #fff; }

/* ---------- 门户分享页 ---------- */
.documents-share-page { background: var(--doc-gray-100); }
.documents-share-preview { background: var(--doc-gray-200); }

/* ---------- 移动端响应式（抽屉式详情面板等） ---------- */
@media (max-width: 768px) {
  .documents-sidebar {
    /* 移动端抽屉：宽度由视口决定（220px 在手机上会挤成一条） */
    width: min(85vw, 300px);
    display: block;
    position: fixed; left: 0; top: 0; bottom: 0; z-index: 70;
    transform: translateX(-100%);
    transition: transform .2s ease;
    box-shadow: 2px 0 12px rgba(0,0,0,.12);
  }
  .documents-sidebar.open { transform: none; }
  .documents-sidebar-backdrop {
    position: fixed; inset: 0; z-index: 69; background: rgba(0,0,0,.35);
  }
  .documents-stats { flex-wrap: wrap; gap: .6rem !important; }
  .documents-control-panel .documents-search-input { max-width: 150px; }
  .documents-kanban-grid { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: .5rem; }
  .documents-card-preview { height: 100px; }
  .documents-details-overlay {
    position: fixed; inset: 0; width: 100% !important; z-index: 60;
    animation: doc-drawer .2s ease;
  }
  @keyframes doc-drawer { from { transform: translateX(100%); } to { transform: none; } }
  .documents-breadcrumb { font-size: .82rem; }
  .documents-control-panel .btn { padding: .2rem .45rem; }
}

/* ============================================================
   本仓保留：RS 样式之外的当前模块规则
   （RS 把顶栏改成页签，删掉了 min-height 与面包屑外壳规则；本仓仍是
     “面包屑 + 齿轮”外壳 ⇒ 这些不能跟着丢，否则顶栏会呼吸、面包屑没样式。）
   ============================================================ */

/* 顶栏高度恒定（40px logo + 上下各 8px），避免登录态切换时整条栏“呼吸” */
.documents-topbar { min-height: 56px; }

/* 顶栏面包屑：RS 把 `.documents-breadcrumb` 用于控制面板/工具条，这里按外壳作用域找回 */
.documents-topbar .documents-breadcrumb { color: var(--doc-gray-600); font-size: 1.02rem; min-width: 0; }
.documents-breadcrumb-sep { font-size: .7rem; color: var(--doc-gray-400, #b8b8b8); }
.documents-crumb { color: var(--doc-gray-600); text-decoration: none; }
.documents-crumb:hover { color: var(--doc-primary); }
.documents-crumb.current { color: var(--doc-gray-800); font-weight: 600; }
@media (max-width: 575.98px) {
  .documents-topbar .documents-breadcrumb { display: none !important; }
}

/* 快捷方式行（对齐 Odoo list decoration-info）：淡青底提示“这是快捷方式” */
.documents-list-table tbody tr.documents-shortcut-row > td { background-color: rgba(13, 202, 240, .07); }

/* 视图级拖放上传（对齐 Odoo documents_drop_zone）——RS 的看板空状态只覆盖“空文件夹”，
   本仓还有“整块内容区”的拖放遮罩，不能丢。 */
.documents-drop-overlay { display: none; position: absolute; inset: 0; z-index: 40; align-items: center; justify-content: center; pointer-events: none; }
.documents-drop-zone.documents-drop-active .documents-drop-overlay { display: flex; }
.documents-drop-overlay-inner {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  width: calc(100% - 24px); height: calc(100% - 24px);
  border: 2px dashed var(--doc-primary); border-radius: 10px;
  background: rgba(255, 255, 255, .92); color: var(--doc-primary); font-weight: 600;
}
.documents-drop-zone.documents-drop-reject .documents-drop-overlay-inner {
  border-color: var(--doc-gray-600); color: var(--doc-gray-800); background: rgba(255, 255, 255, .95);
}
/* ============================================================
   2026-10-23 Odoo 20 Documents 视觉复核（行为对齐批次）
   参考：/odoo/documents 看板（1600px）：灰底、四列横向文件夹卡、
   卡片白底细边、标题在左、搜索约 520px。
   ============================================================ */
.documents-control-panel { border-bottom: 0; padding: .25rem .5rem; }
.documents-control-panel .documents-search-input {
  max-width: 520px;
  flex: 0 1 520px;
  margin-left: auto;
  margin-right: auto;
}
.documents-kanban { padding: 1rem 1.25rem; background: #f9fafb; }
.documents-kanban-section-title {
  margin: .75rem .25rem .5rem;
  font-size: 1rem;
  font-weight: 600;
  color: #374151;
}
.documents-kanban-grid-folders {
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 1rem;
}
.documents-kanban-card {
  border: 1px solid #e5e7eb;
  border-radius: 4px;
  background: #fff;
  box-shadow: none;
}
.documents-kanban-card:hover {
  border-color: #d1d5db;
  box-shadow: 0 2px 8px rgba(0, 0, 0, .08);
}
.documents-folder-card { min-height: 72px; }
.documents-folder-icon { flex: 0 0 auto; font-size: 1.35rem; color: #6b7280; }
.documents-folder-title { font-size: .95rem; font-weight: 600; color: #111827; }
.documents-folder-subtitle { margin-top: .1rem; font-size: .8rem; color: #9ca3af; }
.documents-mobilebar { min-height: 38px; }
