/* ============================================================
   codex-library.css — 资料库（像素级对标 Codex ChatGPT Library）
   来源：_archive/codex-ref（library-page / library-item-layout /
         library-masonry / browse-layout / PageHeader(_bomwa) /
         Menu(_12y2s) / Button(_eg66f) / i18n zh-CN）
   命名：.cdx-lib-*；尺寸按 Tailwind v4（--spacing .25rem）
   ============================================================ */

:root{
  /* Codex 语义补充（app-shared） */
  --color-border-subtle: color-mix(in oklab, var(--color-foreground) 5%, transparent);
  /* Codex ghost hover（primary-ghost-hover 浅 8% / 深 12%） */
  --libx-hover: color-mix(in oklab, var(--color-foreground) 8%, transparent);
  --libx-hover-50: color-mix(in oklab, var(--color-foreground) 4%, transparent);
  /* shadow-card / menu shadow（app-shared 生产值） */
  --libx-shadow-card: 0 4px 16px 0 color-mix(in oklab, var(--color-foreground) 5%, transparent);
  --libx-shadow-menu: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.1), 0 0 0 .5px var(--color-border-subtle);
  /* 多选浮条：data-theme=dark 深色 pill（两侧主题一致） */
  --libx-bar-bg:#303030;
  --libx-bar-fg:#dcdcdc;
  --libx-bar-solid:#f3f3f3;
  --libx-bar-solid-fg:#0d0d0d;
  --libx-bar-line:color-mix(in oklab, #ffffff 20%, transparent);
  --libx-bar-hover:color-mix(in oklab, #ffffff 9%, transparent);
  --libx-bar-danger:#e03131;
}

/* ---------- 页面壳 ---------- */
.cdx-lib-root{position:relative;height:100%;min-height:0;display:flex;flex-direction:column;overflow:hidden;background:var(--color-menu);color:var(--color-foreground)}
.cdx-lib-scroll{position:relative;flex:1;min-height:0;overflow-y:auto;overflow-x:hidden}

/* ---------- 头部（sticky + collapse） ---------- */
.cdx-lib-header{position:sticky;top:0;z-index:30;flex-shrink:0;background:var(--color-menu);border-bottom:1px solid transparent;transition:border-color .15s ease}
.cdx-lib-header.is-stuck{border-bottom-color:var(--color-border-subtle)}
.cdx-lib-header-inner{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2) var(--sp-4);padding:var(--sp-5) var(--page-directory-pad) var(--sp-2)}

/* 标题行：min-h-15(60px) compact；滚动折叠 */
.cdx-lib-titlerow{flex:1;display:flex;align-items:center;min-height:36px;overflow:hidden;transition:min-height .18s ease, opacity .18s ease}
.cdx-lib-header.is-collapsed .cdx-lib-titlerow{min-height:0;opacity:0;pointer-events:none}
.cdx-lib-title{margin:0;font-size:var(--text-ui-xl);font-weight:600;line-height:1.3;letter-spacing:-.01em;color:var(--color-foreground);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* 面包屑（文件夹 / 回收站） */
.cdx-lib-crumbs{display:flex;align-items:center;gap:2px;min-width:0;font-size:var(--text-ui-base)}
.cdx-lib-crumbs .crumb{border:0;background:transparent;padding:4px 6px;border-radius:var(--radius-md);font:inherit;font-size:var(--text-ui-base);color:var(--color-foreground-subtle);cursor:pointer;white-space:nowrap}
.cdx-lib-crumbs .crumb:hover{background:var(--color-hover);color:var(--color-foreground)}
.cdx-lib-crumbs .crumb.cur{color:var(--color-foreground);font-weight:500;cursor:default}
.cdx-lib-crumbs .crumb-sep{display:inline-flex;color:var(--color-foreground-subtle);opacity:.7;line-height:0}

/* 操作行：search(240 固定) + chips + toolbar（对标 _bomwa actions 行） */
.cdx-lib-actionsrow{display:flex;align-items:center;justify-content:flex-end;gap:var(--sp-3);flex:1;min-width:0;user-select:none}

/* 搜索框（PageSearchInput toolbar-compact：h-8 rounded-full border-primary-outline px-3） */
.cdx-lib-search{position:relative;width:240px;flex:0 0 240px;min-width:0;display:flex;align-items:center;height:32px;gap:8px;border:1px solid color-mix(in oklab, var(--color-foreground) 16%, transparent);border-radius:var(--radius-full);background:transparent;padding:0 12px;color:var(--color-foreground)}
.cdx-lib-search-ico{display:inline-flex;color:var(--color-foreground-subtle);line-height:0;flex-shrink:0}
.cdx-lib-search-input{min-width:0;flex:1;border:0;outline:none;background:transparent;font:inherit;font-size:var(--text-ui-base);line-height:20px;color:var(--color-foreground)}
.cdx-lib-search-input::placeholder{color:color-mix(in oklab, var(--color-foreground) 45%, transparent)}
.cdx-lib-search:hover{border-color:color-mix(in oklab, var(--color-foreground) 25%, transparent)}
.cdx-lib-search:focus-within{border-color:color-mix(in oklab, var(--color-foreground) 40%, transparent)}
.cdx-lib-search-clear{display:none;align-items:center;justify-content:center;width:18px;height:18px;border:0;border-radius:var(--radius-full);background:transparent;color:var(--color-foreground-subtle);cursor:pointer;line-height:0;flex-shrink:0}
.cdx-lib-search-clear:hover{color:var(--color-foreground)}
.cdx-lib-search.has-value .cdx-lib-search-clear{display:inline-flex}

/* 筛选 chips（Button outline actionSm radius-full） */
.cdx-lib-filtertags{display:flex;align-items:center;gap:4px;margin:-4px;min-width:0;padding:4px;overflow-x:auto;scrollbar-width:none;flex:0 1 auto}
.cdx-lib-filtertags:empty{display:none}
.cdx-lib-filtertags::-webkit-scrollbar{display:none}
.cdx-lib-ftag{display:inline-flex;align-items:center;gap:5px;height:28px;padding:0 4px 0 10px;border-radius:var(--radius-full);border:1px solid color-mix(in oklab, var(--color-foreground) 15%, transparent);background:transparent;color:var(--color-foreground);font-size:var(--text-ui-sm);font-weight:500;white-space:nowrap;flex-shrink:0}
.cdx-lib-ftag button{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border:0;border-radius:var(--radius-full);background:transparent;color:var(--color-foreground-subtle);cursor:pointer;line-height:0}
.cdx-lib-ftag button:hover{background:var(--color-hover);color:var(--color-foreground)}

/* toolbar（右侧：筛选 / 视图切换 / 新建 / 设置） */
.cdx-lib-toolbar{display:flex;align-items:center;gap:12px;flex-shrink:0;min-width:0;margin-left:auto}
.cdx-lib-toolbar-sep{display:none}

/* PageHeaderButton（ghost secondary：28→32px 高，6px 圆角，hover/selected alpha-08） */
.cdx-lib-pbtn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:32px;padding:0 10px;border:0;border-radius:var(--radius-md);background:transparent;color:var(--color-foreground-subtle);font:inherit;font-size:var(--text-ui-caption);font-weight:500;cursor:pointer;white-space:nowrap;line-height:1;transition:background-color .12s,color .12s}
.cdx-lib-pbtn:hover{background:var(--libx-hover);color:var(--color-foreground)}
.cdx-lib-pbtn.on,.cdx-lib-pbtn[aria-expanded="true"]{background:var(--libx-hover);color:var(--color-foreground)}
.cdx-lib-pbtn.ico{width:32px;padding:0}
.cdx-lib-pbtn .chev{transition:transform .12s;line-height:0;display:inline-flex}
.cdx-lib-pbtn[aria-expanded="true"] .chev{transform:rotate(180deg)}
.cdx-lib-pbtn .cnt{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;border-radius:var(--radius-full);background:var(--color-foreground);color:var(--color-background);font-size:var(--text-ui-2xs);font-weight:600;line-height:1}
.cdx-lib-viewtoggle{display:flex;align-items:center;gap:2px}

/* 新建（solid primary pill） */
.cdx-lib-newbtn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:36px;padding:0 16px;border:0;border-radius:var(--radius-full);background:var(--color-foreground);color:var(--color-background);font:inherit;font-size:var(--text-ui-base);font-weight:500;cursor:pointer;white-space:nowrap;line-height:1;transition:background-color .12s}
.cdx-lib-newbtn:hover{background:color-mix(in oklab, var(--color-foreground) 88%, var(--color-background))}

/* ---------- Tab 条（Tabs variant=browse：h-9 px-4 pill，选中 alpha-08） ---------- */
.cdx-lib-tabs{flex:0 0 100%;display:flex;align-items:center;gap:4px;min-width:0;margin-top:10px;max-width:100%;overflow-x:auto;scrollbar-width:none}
.cdx-lib-tabs::-webkit-scrollbar{display:none}
.cdx-lib-tab{display:inline-flex;align-items:center;height:36px;min-width:0;padding:0 16px;border:1px solid transparent;border-radius:var(--radius-full);background:transparent;color:var(--color-foreground-subtle);font:inherit;font-size:var(--text-ui-base);font-weight:500;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background-color .12s,color .12s}
.cdx-lib-tab:hover{background:var(--libx-hover-50);color:var(--color-foreground)}
.cdx-lib-tab.on{background:var(--libx-hover);color:var(--color-foreground)}

/* ---------- 内容区 ---------- */
.cdx-lib-body{padding:16px 48px 64px}

/* 瀑布流网格（@container：--masonry-columns 1→6，gap 3→4） */
.cdx-lib-gridwrap{container-type:inline-size}
.cdx-lib-grid{position:relative;display:grid;grid-template-columns:repeat(var(--masonry-columns,1),minmax(0,1fr));gap:12px;align-items:start}
@container (min-width:384px){.cdx-lib-grid{--masonry-columns:2}}
@container (min-width:576px){.cdx-lib-grid{--masonry-columns:3}}
@container (min-width:768px){.cdx-lib-grid{--masonry-columns:4}}
@container (min-width:1024px){.cdx-lib-grid{--masonry-columns:5}}
@container (min-width:1280px){.cdx-lib-grid{--masonry-columns:6}}
@media (min-width:640px){.cdx-lib-grid{gap:16px}}
.cdx-lib-grid>[data-masonry-item]{min-width:0}

/* ---------- 网格卡片（library-item-layout：caption 在卡片外） ---------- */
.cdx-lib-card{position:relative;min-width:0;user-select:none;break-inside:avoid}
.cdx-lib-card-main{position:relative;overflow:hidden;border-radius:16px;border:1px solid var(--color-border-subtle);background:var(--color-card);box-shadow:var(--libx-shadow-card);transition:box-shadow .12s}
.cdx-lib-card:hover .cdx-lib-card-main{box-shadow:0 4px 16px 0 color-mix(in oklab, var(--color-foreground) 9%, transparent)}
.cdx-lib-card.sel .cdx-lib-card-main{box-shadow:0 0 0 2px var(--color-foreground)}
.cdx-lib-card.drop .cdx-lib-card-main{box-shadow:0 0 0 2px var(--color-foreground);border-radius:16px}
.cdx-lib-card-btn{position:relative;display:flex;width:100%;flex-direction:column;text-align:start;cursor:pointer;border:0;background:transparent;padding:0;font:inherit;color:inherit}

/* hover 蒙层 bg-text/5 */
.cdx-lib-card-shade{position:absolute;inset:0;z-index:1;background:color-mix(in oklab, var(--color-foreground) 5%, transparent);opacity:0;pointer-events:none;transition:opacity .12s}
.cdx-lib-card:hover .cdx-lib-card-shade{opacity:1}

/* 卡片头（文档 landscape：h-11 ps-3 pe-12 border-b） */
.cdx-lib-card-head{display:flex;height:44px;width:100%;flex-shrink:0;align-items:center;gap:8px;padding:0 12px;border-bottom:1px solid var(--color-border-subtle);color:var(--color-foreground)}
.cdx-lib-card-head .nm{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-ui-base)}
.cdx-lib-card-head .badge{flex-shrink:0;color:var(--color-foreground-subtle);display:inline-flex;line-height:0}

/* 封面体 */
.cdx-lib-card-media{position:relative;display:flex;width:100%;overflow:hidden;flex:1;background:var(--color-card)}
.cdx-lib-card-media.square{aspect-ratio:1/1}
.cdx-lib-card-media.video{aspect-ratio:16/9}
.cdx-lib-watermark{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none}
.cdx-lib-watermark>*{transform:translateY(-3px)}

/* 文件夹堆叠（folderStack：front=surface-elevated / middle=surface-secondary / back=surface-tertiary） */
.cdx-lib-fstackwrap{position:relative;aspect-ratio:4/3;width:50%;margin:auto;transform:translateY(-6px)}
.cdx-lib-fstack{position:absolute;inset:0;border-radius:var(--radius-xl);border:1px solid var(--color-border-subtle);overflow:hidden;transition:transform .15s cubic-bezier(0,0,.2,1)}
.cdx-lib-fstack.back{background:var(--color-surface-tertiary);transform:translateX(-8px) scale(.95) rotate(-6deg)}
.cdx-lib-fstack.middle{background:var(--color-elevated-secondary);transform:translateX(8px) scale(.95) rotate(6deg)}
.cdx-lib-fstack.front{background:var(--color-card);box-shadow:var(--libx-shadow-card);display:flex;align-items:center;justify-content:center;color:var(--color-foreground-subtle)}
.cdx-lib-card-btn:hover~.cdx-lib-fstack,.cdx-lib-card:hover .cdx-lib-fstack.back,.cdx-lib-card-btn:focus-visible~.cdx-lib-fstack.back{transform:translateX(-12px) scale(.95) rotate(-12deg)}
.cdx-lib-card:hover .cdx-lib-fstack.middle,.cdx-lib-card-btn:focus-visible~.cdx-lib-fstack.middle{transform:translateX(12px) scale(.95) rotate(12deg)}

/* 封面缩略图（渐变 + 水印图标） */
.cdx-lib-thumb{position:absolute;inset:0}
.cdx-lib-thumb::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,color-mix(in oklab, var(--color-foreground) 18%, transparent))}

/* 卡片 caption（卡片外）：heading py-3.5 ps-5 pe-14 / footer px-5 py-3.5 text-xs */
.cdx-lib-caption{display:flex;width:100%;flex-direction:column}
.cdx-lib-cap-head{display:flex;flex-shrink:0;align-items:flex-start;gap:4px;padding:14px 56px 14px 20px}
.cdx-lib-cap-title{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;min-width:0;overflow:hidden;overflow-wrap:anywhere;font-size:var(--text-ui-base);font-weight:500;line-height:20px}
.cdx-lib-cap-foot{display:flex;flex-shrink:0;align-items:center;gap:4px;padding:0 20px 14px;font-size:var(--text-ui-sm);color:var(--color-foreground-subtle)}

/* ··· 操作钮（无 header：end-3 top-3；有 header：end-2 top-2 size-7） */
.cdx-lib-card-acts{position:absolute;right:12px;top:12px;z-index:3;opacity:0;pointer-events:none;transition:opacity .12s}
.cdx-lib-card-head~.cdx-lib-card-acts{right:8px;top:8px}
.cdx-lib-card:hover .cdx-lib-card-acts,.cdx-lib-card:focus-within .cdx-lib-card-acts,.cdx-lib-card-acts [aria-expanded="true"]{opacity:1;pointer-events:auto}
.cdx-lib-card:hover .cdx-lib-card-acts *{pointer-events:auto}
.cdx-lib-actbtn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--color-border-subtle);border-radius:var(--radius-full);background:var(--color-card);color:var(--color-foreground);cursor:pointer;line-height:0;box-shadow:0 1px 2px -1px rgba(0,0,0,.08)}
.cdx-lib-actbtn:hover{background:var(--color-surface-tertiary)}

/* 勾选（overlay：end-4.5 bottom-4.5，20px 圆，选中=白底深勾） */
.cdx-lib-check{position:absolute;right:18px;bottom:18px;z-index:3;display:inline-flex;align-items:center;opacity:0;transition:opacity .12s;cursor:pointer}
.cdx-lib-card:hover .cdx-lib-check,.cdx-lib-card:focus-within .cdx-lib-check{opacity:1}
.cdx-lib-card.sel .cdx-lib-check{opacity:1}
.cdx-lib-check input{position:absolute;opacity:0;pointer-events:none}
.cdx-lib-check .box{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:var(--radius-full);border:1px solid color-mix(in oklab, var(--color-foreground) 15%, transparent);background:var(--color-card);color:transparent;line-height:0;box-shadow:0 1px 2px -1px rgba(0,0,0,.08);transition:background-color .12s}
.cdx-lib-check .box:hover{background:var(--color-surface-tertiary)}
.cdx-lib-card.sel .cdx-lib-check .box{color:var(--color-foreground)}

/* 文件类型小图标（行 32px / 卡头 20px） */
.cdx-lib-fico{display:flex;align-items:center;justify-content:center;overflow:hidden;border:1px solid var(--color-border);background:var(--color-card);color:var(--color-foreground-subtle);flex-shrink:0}
.cdx-lib-fico.sm{width:32px;height:32px;border-radius:var(--radius-md)}
.cdx-lib-fico.xs{width:20px;height:20px;border-radius:6px}

/* ---------- 列表视图（library-row：gutter 勾选 + 列宽） ---------- */
.cdx-lib-listwrap{container-type:inline-size}
.cdx-lib-list{display:flex;flex-direction:column;gap:var(--sp-0-5)}
.cdx-lib-listhead{position:relative;display:flex;align-items:center;gap:16px;height:42px;padding:0 12px;font-size:var(--text-ui-base);line-height:20px;color:var(--color-foreground-subtle);user-select:none}
.cdx-lib-listhead::after{content:'';position:absolute;left:12px;right:12px;bottom:0;height:1px;background:var(--color-border-subtle)}
.cdx-lib-listhead .h-gutter{width:24px;flex-shrink:0;display:flex;align-items:center;justify-content:center}
.cdx-lib-listhead .col-name{flex:1;min-width:0}
.cdx-lib-listhead .col-src{width:240px;flex-shrink:0;display:none}
.cdx-lib-listhead .col-size{width:88px;flex-shrink:0;display:none}
.cdx-lib-listhead .col-date{width:160px;flex-shrink:0;display:none}
.cdx-lib-listhead .col-acts{width:36px;flex-shrink:0}
@container (min-width:512px){
  .cdx-lib-listhead .col-size{display:block}
  .cdx-lib-listhead .col-date{display:block}
  .cdx-lib-listhead .col-acts{width:64px}
}
@container (min-width:768px){.cdx-lib-listhead .col-src{display:block}}

.cdx-lib-row{position:relative;display:flex;min-height:40px;align-items:center;gap:16px;padding:0 12px;border-radius:var(--radius-md);cursor:pointer;user-select:none}
.cdx-lib-row:hover{background:var(--color-hover)}
.cdx-lib-row.sel{background:var(--color-selected)}
.cdx-lib-row.drop{box-shadow:0 0 0 2px var(--color-foreground);border-radius:var(--radius-lg)}
.cdx-lib-row .r-gutter{width:24px;flex-shrink:0;display:flex;align-items:center;justify-content:center}
.cdx-lib-row .r-name{display:flex;min-width:0;flex:1;align-items:center;gap:12px}
.cdx-lib-row .r-name .nm{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-ui-base)}
.cdx-lib-row .r-fav{display:inline-flex;color:var(--color-foreground-subtle);line-height:0;flex-shrink:0}
.cdx-lib-row .r-src{width:240px;flex-shrink:0;display:none;align-items:center;gap:8px;font-size:var(--text-ui-base);line-height:20px;color:var(--color-foreground-subtle)}
.cdx-lib-row .r-size{width:88px;flex-shrink:0;display:none;font-size:var(--text-ui-base);line-height:20px;color:var(--color-foreground-subtle)}
.cdx-lib-row .r-date{width:160px;flex-shrink:0;display:none;font-size:var(--text-ui-base);line-height:20px;color:var(--color-foreground-subtle)}
.cdx-lib-row .r-acts{position:relative;z-index:2;display:flex;min-height:36px;min-width:36px;align-items:center;justify-content:flex-end;gap:2px;opacity:0;flex-shrink:0}
.cdx-lib-row:hover .r-acts,.cdx-lib-row:focus-within .r-acts{opacity:1}
.cdx-lib-row .r-act{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:0;border-radius:var(--radius-md);background:transparent;color:var(--color-foreground-subtle);cursor:pointer;line-height:0}
.cdx-lib-row .r-act:hover{background:var(--color-hover);color:var(--color-foreground)}
@container (min-width:512px){.cdx-lib-row .r-size{display:block}.cdx-lib-row .r-date{display:block}.cdx-lib-row .r-acts{min-width:64px}}
@container (min-width:768px){.cdx-lib-row .r-src{display:flex}}

/* 行首勾选（default 变体：18px 方框 radius-xs，选中浅灰底深勾；hover/选择激活时显形） */
.cdx-lib-row .r-check{display:inline-flex;align-items:center;cursor:pointer;opacity:0;transition:opacity .12s}
.cdx-lib-row:hover .r-check,.cdx-lib-row.sel .r-check,.cdx-lib-row:focus-within .r-check{opacity:1}
.cdx-lib-list:has(.cdx-lib-row.sel) .r-check,.cdx-lib-list:has(.cdx-lib-row.sel) .cdx-lib-listhead .r-check{opacity:1}
.cdx-lib-listhead .r-check{opacity:0;transition:opacity .12s}
.cdx-lib-listhead:hover .r-check{opacity:1}
.cdx-lib-row .r-check input,.cdx-lib-listhead .r-check input{position:absolute;opacity:0;pointer-events:none}
.cdx-lib-row .r-check .box,.cdx-lib-listhead .r-check .box{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:4px;border:1.5px solid color-mix(in oklab, var(--color-foreground) 30%, transparent);background:var(--color-card);color:transparent;line-height:0;cursor:pointer;transition:background-color .12s,border-color .12s}
.cdx-lib-row.sel .r-check .box,.cdx-lib-listhead .r-check.all:has(input:checked) .box{background:var(--color-foreground);border-color:var(--color-foreground);color:var(--color-foreground-inverse)}
.cdx-lib-row .r-check .box:hover{border-color:var(--color-foreground)}
.cdx-lib-listhead .r-check{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;cursor:pointer}
.cdx-lib-row .r-check .box,.cdx-lib-listhead .r-check .box{box-sizing:border-box;width:20px;height:20px;border-radius:var(--radius-sm);border-width:1px;flex-shrink:0}
.cdx-lib-listhead .r-check .box.is-mixed{background:var(--color-foreground);border-color:var(--color-foreground);color:var(--color-foreground-inverse)}
.cdx-lib-listhead .r-check .box.is-mixed::after{content:'';width:10px;height:2px;border-radius:var(--radius-full);background:currentColor}
.cdx-lib-listhead .r-check:has(input:focus-visible) .box{outline:2px solid var(--color-ring);outline-offset:2px}

/* ---------- 菜单（Menu：gutter 6px radius-2xl item radius 10px hover alpha-08） ---------- */
.cdx-lib-popwrap{position:relative}
.cdx-lib-pop{position:absolute;top:calc(100% + 6px);left:0;width:max-content;max-width:min(340px,calc(100vw - 32px));min-width:240px;background:var(--color-menu);border:1px solid var(--color-border-subtle);border-radius:16px;box-shadow:var(--libx-shadow-menu);padding:6px;z-index:60;display:none}
.cdx-lib-pop.right{left:auto;right:0}
.cdx-lib-pop.open{display:block;animation:libxPopIn .14s cubic-bezier(.19,1,.22,1)}
@keyframes libxPopIn{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}
.cdx-lib-ctxmenu{position:fixed;min-width:232px;background:var(--color-menu);border:1px solid var(--color-border-subtle);border-radius:16px;box-shadow:var(--libx-shadow-menu);padding:6px;z-index:80;animation:libxPopIn .14s cubic-bezier(.19,1,.22,1)}
.cdx-lib-pop-sec{padding:8px 12px 4px;font-size:var(--text-ui-sm);font-weight:500;color:var(--color-foreground-subtle)}
.cdx-lib-mi{position:relative;display:flex;align-items:center;gap:8px;width:100%;padding:8px 12px;border:0;border-radius:10px;background:transparent;color:var(--color-foreground);font:inherit;font-size:var(--text-ui-base);line-height:20px;cursor:pointer;text-align:left}
.cdx-lib-mi:hover{background:var(--libx-hover)}
.cdx-lib-mi .flex-1{flex:1;min-width:0}
.cdx-lib-mi .mi-ico{display:inline-flex;color:var(--color-foreground-subtle);line-height:0;flex-shrink:0}
.cdx-lib-mi .ck{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:var(--radius-full);background:var(--color-foreground);color:var(--color-background);line-height:0;flex-shrink:0;opacity:0}
.cdx-lib-mi.on .ck{opacity:1}
.cdx-lib-mi.danger{color:var(--color-destructive)}
.cdx-lib-mi.danger:hover{background:var(--color-destructive-surface)}
.cdx-lib-mi.danger .mi-ico{color:var(--color-destructive)}
.cdx-lib-sep{height:1px;background:var(--color-border);margin:6px 0}

/* ---------- 回收站横幅（insetNotice：mb-3） ---------- */
.cdx-lib-trashbanner{display:flex;align-items:center;gap:10px;margin-bottom:12px;padding:12px 16px;border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);background:var(--color-elevated-secondary)}
.cdx-lib-trashbanner .tb-ico{display:inline-flex;color:var(--color-icon-blue);line-height:0;flex-shrink:0}
.cdx-lib-trashbanner .tb-txt{min-width:0;font-size:var(--text-ui-caption);color:var(--color-foreground)}
.cdx-lib-trashbanner .tb-sp{flex:1}
.cdx-lib-trashbanner .tb-btn{display:inline-flex;align-items:center;height:28px;padding:0 12px;border:1px solid color-mix(in oklab, var(--color-foreground) 15%, transparent);border-radius:var(--radius-full);background:var(--color-card);color:var(--color-foreground);font:inherit;font-size:var(--text-ui-sm);font-weight:500;cursor:pointer;white-space:nowrap;flex-shrink:0}
.cdx-lib-trashbanner .tb-btn:hover{background:var(--color-hover)}

/* ---------- 空状态 ---------- */
.cdx-lib-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:96px 24px;text-align:center;color:var(--color-foreground-subtle)}
.cdx-lib-empty .t{font-size:var(--text-ui-lg);font-weight:600;color:var(--color-foreground)}
.cdx-lib-empty .d{font-size:var(--text-ui-base)}
.cdx-lib-empty-cta{display:inline-flex;align-items:center;gap:6px;height:32px;margin-top:10px;padding:0 14px;border:1px solid color-mix(in oklab, var(--color-foreground) 18%, transparent);border-radius:var(--radius-full);background:transparent;color:var(--color-foreground);font:inherit;font-size:var(--text-ui-caption);font-weight:500;cursor:pointer}
.cdx-lib-empty-cta:hover{background:var(--color-hover)}

/* ---------- 多选工具条（46px pill，深色，底部居中） ---------- */
.cdx-lib-seltoolbar{position:absolute;left:50%;bottom:24px;transform:translateX(-50%);z-index:50;display:flex;align-items:center;gap:12px;height:46px;max-width:calc(100% - 96px);padding:0 24px;border-radius:var(--radius-full);background:var(--libx-bar-bg);color:var(--libx-bar-fg);font-size:var(--text-ui-sm);box-shadow:0 4px 8px -2px rgba(0,0,0,.1);overflow-x:auto;scrollbar-width:none;white-space:nowrap}
.cdx-lib-seltoolbar::-webkit-scrollbar{display:none}
.cdx-lib-seltoolbar .cnt{min-width:96px;flex-shrink:0;font-weight:500;font-variant-numeric:tabular-nums;user-select:none}
.cdx-lib-seltoolbar .btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:32px;padding:0 12px;border:0;border-radius:var(--radius-full);background:transparent;color:var(--libx-bar-fg);font:inherit;font-size:var(--text-ui-sm);font-weight:500;cursor:pointer;white-space:nowrap;flex-shrink:0}
.cdx-lib-seltoolbar .btn:hover{background:var(--libx-bar-hover)}
.cdx-lib-seltoolbar .btn.primary{background:var(--libx-bar-solid);color:var(--libx-bar-solid-fg)}
.cdx-lib-seltoolbar .btn.primary:hover{background:color-mix(in oklab, var(--libx-bar-solid) 92%, #000)}
.cdx-lib-seltoolbar .btn.outline{border:1px solid var(--libx-bar-line);background:transparent;color:var(--libx-bar-fg)}
.cdx-lib-seltoolbar .btn.danger{background:var(--libx-bar-danger);color:#fff}
.cdx-lib-seltoolbar .btn.danger:hover{background:color-mix(in oklab, var(--libx-bar-danger) 88%, #000)}
.cdx-lib-seltoolbar .btn-ico{width:32px;padding:0}
.cdx-lib-seltoolbar .sep{width:1px;height:20px;background:var(--libx-bar-line);flex-shrink:0}
.cdx-lib-seltoolbar .cdx-lib-popwrap{flex-shrink:0}

/* ---------- 对话框（Dialog：无关闭钮，[取消|确认]，wide=move） ---------- */
.cdx-lib-dlgmask{position:fixed;inset:0;z-index:100;background:var(--color-overlay);display:flex;align-items:center;justify-content:center;padding:24px;animation:libxMaskIn .15s ease-out}
@keyframes libxMaskIn{from{opacity:0}to{opacity:1}}
.cdx-lib-dlg{width:400px;max-width:100%;background:var(--color-card);border:1px solid var(--color-border-subtle);border-radius:20px;box-shadow:var(--shadow-xl);animation:libxDlgIn .18s cubic-bezier(.19,1,.22,1)}
.cdx-lib-dlg-wide{width:480px}
@keyframes libxDlgIn{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}
.cdx-lib-dlg-head{padding:20px 20px 0;font-size:var(--text-ui-lg);font-weight:600;line-height:1.35}
.cdx-lib-dlg-body{padding:14px 20px 6px}
.cdx-lib-dlg-body .d-desc{margin:0;font-size:var(--text-ui-base);line-height:1.55;color:var(--color-foreground-subtle)}
.cdx-lib-dlg-body .d-desc strong{color:var(--color-foreground);font-weight:600}
.cdx-lib-dlg-body .d-irreversible{margin:10px 0 0;font-size:var(--text-ui-sm);color:var(--color-foreground-subtle)}
.cdx-lib-dlg-body .d-field{display:flex;flex-direction:column;gap:8px}
.cdx-lib-dlg-body .d-label{font-size:var(--text-ui-caption);color:var(--color-foreground)}
.cdx-lib-input{height:36px;width:100%;box-sizing:border-box;border:1px solid var(--color-border-hover);border-radius:var(--radius);background:var(--color-input);color:var(--color-foreground);font:inherit;font-size:var(--text-ui-base);padding:0 12px;outline:none}
.cdx-lib-input:focus{border-color:var(--color-input-border-focused)}
.cdx-lib-input[aria-invalid="true"]{border-color:var(--color-destructive)}
.cdx-lib-dlg-body .d-err{margin:8px 0 0;font-size:var(--text-ui-sm);color:var(--color-destructive)}
.cdx-lib-dlg-foot{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:14px 20px 20px}
.cdx-lib-dlg-foot .flex-1{flex:1}
.d-btn{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 14px;border:0;border-radius:var(--radius);background:transparent;color:var(--color-foreground);font:inherit;font-size:var(--text-ui-caption);font-weight:500;cursor:pointer;white-space:nowrap}
.d-btn:hover{background:var(--color-hover)}
.d-btn.primary{background:var(--color-foreground);color:var(--color-background)}
.d-btn.primary:hover{background:color-mix(in oklab, var(--color-foreground) 88%, var(--color-background))}
.d-btn.danger{background:var(--color-destructive);color:#fff}
.d-btn.danger:hover{background:color-mix(in oklab, var(--color-destructive) 88%, #000)}
.d-btn:disabled{opacity:.4;cursor:default;pointer-events:none}

/* 移动到对话框 */
.cdx-lib-movecrumbs{display:flex;align-items:center;gap:6px;min-width:0;font-size:var(--text-ui-caption)}
.cdx-lib-movecrumbs .crumb{border:0;background:transparent;padding:4px 6px;border-radius:var(--radius-md);font:inherit;font-size:var(--text-ui-caption);color:var(--color-foreground-subtle);cursor:pointer}
.cdx-lib-movecrumbs .crumb:hover{background:var(--color-hover);color:var(--color-foreground)}
.cdx-lib-movecrumbs .crumb.cur{color:var(--color-foreground);font-weight:500;cursor:default}
.cdx-lib-movecrumbs .crumb-sep{color:var(--color-foreground-subtle)}
.cdx-lib-movelist{margin-top:10px;max-height:264px;overflow-y:auto;border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);padding:6px}
.cdx-lib-movelist .move-row{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;border:0;border-radius:var(--radius-md);background:transparent;color:var(--color-foreground);font:inherit;font-size:var(--text-ui-base);cursor:pointer;text-align:left}
.cdx-lib-movelist .move-row:hover{background:var(--color-hover)}
.cdx-lib-movelist .move-row.on{background:var(--color-selected)}
.cdx-lib-movelist .move-row .mi-ico{display:inline-flex;color:var(--color-foreground-subtle);line-height:0}
.cdx-lib-movelist .move-row .flex-1{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cdx-lib-movelist .move-row .ck{display:inline-flex;color:var(--color-foreground);line-height:0}
.cdx-lib-movelist .move-empty{padding:28px 12px;text-align:center;font-size:var(--text-ui-caption);color:var(--color-foreground-subtle)}

/* ---------- 预览浮层（artifact-preview-chrome） ---------- */
.cdx-lib-preview{position:fixed;inset:0;z-index:90;display:flex;flex-direction:column;background:var(--color-background);animation:libxMaskIn .15s ease-out}
.cdx-lib-pv-head{display:flex;align-items:center;gap:10px;height:52px;padding:0 16px;border-bottom:1px solid var(--color-border-subtle);flex-shrink:0}
.cdx-lib-pv-head .pv-fico{display:inline-flex;color:var(--color-foreground-subtle);line-height:0;flex-shrink:0}
.cdx-lib-pv-head .pv-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-ui-base);font-weight:600}
.cdx-lib-pv-head .pv-kind{flex-shrink:0;font-size:var(--text-ui-sm);color:var(--color-foreground-subtle)}
.cdx-lib-pv-head .pv-sp{flex:1}
.pv-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:0;border-radius:var(--radius-md);background:transparent;color:var(--color-foreground-subtle);cursor:pointer;line-height:0}
.pv-btn:hover{background:var(--color-hover);color:var(--color-foreground)}
.cdx-lib-pv-body{flex:1;min-height:0;overflow-y:auto;padding:24px}
.pv-doc{max-width:760px;margin:0 auto;display:flex;flex-direction:column;gap:24px}
.pv-doc .pv-page{background:var(--color-card);border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);padding:44px 48px;min-height:320px}
.pv-sheet{max-width:860px;margin:0 auto;overflow-x:auto;border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);background:var(--color-card)}
.pv-sheet table{border-collapse:collapse;width:100%;font-size:var(--text-ui-sm)}
.pv-sheet td{border:1px solid var(--color-border-subtle);padding:7px 12px;min-width:96px;color:var(--color-foreground-subtle)}
.pv-sheet td.h{background:color-mix(in oklab, var(--color-foreground) 5%, transparent);color:var(--color-foreground);font-weight:500}
.pv-img{position:relative;width:min(80%,960px);aspect-ratio:4/3;margin:0 auto;border-radius:var(--radius-xl);overflow:hidden}
.pv-img-wm{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:color-mix(in oklab, var(--color-card) 82%, transparent)}
.pv-slides{display:flex;gap:0;max-width:1080px;margin:0 auto}
.pv-slide-side{width:200px;flex-shrink:0;display:flex;flex-direction:column;gap:10px;padding-right:20px}
.pv-slide-thumb{aspect-ratio:16/9;border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);background:var(--color-card);padding:10px;cursor:pointer}
.pv-slide-thumb.on{box-shadow:0 0 0 2px var(--color-foreground)}
.pv-slide-main{flex:1;min-width:0;position:relative;aspect-ratio:16/9;max-width:640px;background:var(--color-card);border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);overflow:hidden}

/* ---------- 框选 / 拖放提示 ---------- */
.cdx-lib-marquee{position:absolute;z-index:40;border:1px solid color-mix(in oklab, var(--color-foreground) 35%, transparent);background:color-mix(in oklab, var(--color-foreground) 5%, transparent);pointer-events:none}
.cdx-lib-dropmask{position:absolute;inset:8px;z-index:70;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;border:2px dashed color-mix(in oklab, var(--color-foreground) 30%, transparent);border-radius:var(--radius-xl);background:color-mix(in oklab, var(--color-background) 82%, transparent);color:var(--color-foreground-subtle);font-size:var(--text-ui-base);pointer-events:none}

/* 骨架屏（w-full rounded-2xl bg-text/10） */
.cdx-lib-skel{width:100%;border-radius:16px;background:color-mix(in oklab, var(--color-foreground) 8%, transparent)}

/* ============================================================
   追加：排序 / 加载更多 / 骨架 / 存储横幅 / 上传条 /
         收藏文件夹 / gutter / 换行 / 媒体卡变体 / 焦点环
   ============================================================ */

/* ---------- 列表列头排序 ---------- */
.cdx-lib-listhead .h-sort{display:flex;align-items:center;gap:4px;border:0;background:transparent;padding:0;font:inherit;font-size:var(--text-ui-base);line-height:20px;color:inherit;cursor:pointer;text-align:start;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cdx-lib-listhead .h-sort:hover{color:var(--color-foreground)}
.cdx-lib-listhead .h-sort .h-arrow{display:inline-flex;opacity:0;transition:opacity .12s,transform .12s;line-height:0}
.cdx-lib-listhead .h-sort:hover .h-arrow{opacity:.5}
.cdx-lib-listhead .h-sort[aria-sort="ascending"] .h-arrow{opacity:1;transform:rotate(180deg)}
.cdx-lib-listhead .h-sort[aria-sort="descending"] .h-arrow{opacity:1}
.cdx-lib-listhead .h-sort[aria-sort="ascending"],.cdx-lib-listhead .h-sort[aria-sort="descending"]{color:var(--color-foreground)}
.cdx-lib-listhead .h-sort.col-name{flex:1}
.cdx-lib-listhead .h-sort.col-size,.cdx-lib-listhead .h-sort.col-date{display:none}
@container (min-width:512px){.cdx-lib-listhead .h-sort.col-size,.cdx-lib-listhead .h-sort.col-date{display:flex}}
.cdx-lib-listhead .h-sort.col-size{width:88px;flex-shrink:0}
.cdx-lib-listhead .h-sort.col-date{width:160px;flex-shrink:0}

/* ---------- 加载更多 ---------- */
.cdx-lib-more{display:flex;justify-content:center;padding:20px 0 4px}
.cdx-lib-morebtn{display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 16px;border:1px solid color-mix(in oklab, var(--color-foreground) 15%, transparent);border-radius:var(--radius-full);background:var(--color-card);color:var(--color-foreground);font:inherit;font-size:var(--text-ui-caption);font-weight:500;cursor:pointer}
.cdx-lib-morebtn:hover{background:var(--color-hover)}
.cdx-lib-morebtn:disabled{opacity:.55;cursor:default}

/* ---------- 骨架（列表 + 追加） ---------- */
.skel-bar{display:inline-block;height:8px;border-radius:4px;background:color-mix(in oklab, var(--color-foreground) 8%, transparent)}
.skel-bar.w-40{width:40%}.skel-bar.w-20{width:20%}.skel-bar.w-16{width:16%}.skel-bar.w-10{width:12%}
.skel-box{background:color-mix(in oklab, var(--color-foreground) 8%, transparent);border-color:transparent}
.cdx-lib-row.is-skel{cursor:default}
.cdx-lib-row.is-skel:hover{background:transparent}
.cdx-lib-listhead.is-skel .skel-bar{width:64px}
.cdx-lib-listhead.is-skel .skel-bar:first-of-type{width:120px}

/* ---------- 存储空间横幅（pageNotice edge） ---------- */
.cdx-lib-storagebanner{display:flex;align-items:center;gap:10px;margin-bottom:12px;padding:12px 16px;border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);background:var(--color-elevated-secondary)}
.cdx-lib-storagebanner .sb-ico{display:inline-flex;align-items:center;justify-content:center;width:var(--size-5);height:var(--size-5);color:var(--color-warning);line-height:0;flex-shrink:0}
.cdx-lib-storagebanner .sb-ico svg{display:block;width:100%;height:100%;stroke-width:1.5}
.cdx-lib-storagebanner .sb-txt{min-width:0;font-size:var(--text-ui-caption);color:var(--color-foreground-subtle)}
.cdx-lib-storagebanner .sb-strong{color:var(--color-foreground);font-weight:600}
.cdx-lib-storagebanner .sb-sp{flex:1}
.cdx-lib-storagebanner .sb-btn{display:inline-flex;align-items:center;height:28px;padding:0 12px;border:1px solid color-mix(in oklab, var(--color-foreground) 15%, transparent);border-radius:var(--radius-full);background:var(--color-card);color:var(--color-foreground);font:inherit;font-size:var(--text-ui-sm);font-weight:500;cursor:pointer;white-space:nowrap;flex-shrink:0}
.cdx-lib-storagebanner .sb-btn:hover{background:var(--color-hover)}
.cdx-lib-storagebanner .sb-upgrade{background:var(--color-foreground);color:var(--color-background);border-color:transparent}
.cdx-lib-storagebanner .sb-upgrade:hover{background:color-mix(in oklab, var(--color-foreground) 88%, var(--color-background))}
.cdx-lib-storagebanner .sb-close{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border:0;border-radius:var(--radius-full);background:transparent;color:var(--color-foreground-subtle);cursor:pointer;line-height:0;flex-shrink:0}
.cdx-lib-storagebanner .sb-close:hover{background:var(--color-hover);color:var(--color-foreground)}

/* ---------- 上传条（library-uploads） ---------- */
.cdx-lib-uploads{position:absolute;left:50%;bottom:24px;transform:translateX(-50%);z-index:52;display:flex;flex-direction:column;gap:6px;width:min(420px,calc(100% - 96px));padding:10px 12px;border-radius:var(--radius-xl);background:var(--color-menu);border:1px solid var(--color-border-subtle);box-shadow:var(--libx-shadow-menu)}
.cdx-lib-root:has(.cdx-lib-seltoolbar) .cdx-lib-uploads{bottom:84px}
.cdx-lib-uploads .up-row{display:flex;align-items:center;gap:8px;font-size:var(--text-ui-sm);color:var(--color-foreground)}
.cdx-lib-uploads .up-ico{display:inline-flex;color:var(--color-foreground-subtle);line-height:0;flex-shrink:0}
.cdx-lib-uploads .up-txt{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-foreground-subtle)}
.cdx-lib-uploads .up-name{color:var(--color-foreground)}
.cdx-lib-uploads .up-bar{flex:1;height:4px;min-width:40px;border-radius:var(--radius-full);background:color-mix(in oklab, var(--color-foreground) 10%, transparent);overflow:hidden}
.cdx-lib-uploads .up-bar-in{display:block;height:100%;background:var(--color-foreground);transition:width .2s linear}
.cdx-lib-uploads .up-x{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border:0;border-radius:var(--radius-full);background:transparent;color:var(--color-foreground-subtle);cursor:pointer;line-height:0;flex-shrink:0}
.cdx-lib-uploads .up-x:hover{background:var(--color-hover);color:var(--color-foreground)}

/* ---------- 收藏文件夹飞菜单（favorite-folder-menu） ---------- */
.cdx-lib-favpicker{min-width:264px;padding:6px}
.cdx-lib-favpicker .fav-head{display:flex;align-items:center;justify-content:space-between;gap:8px;height:36px;padding:0 6px 0 12px}
.cdx-lib-favpicker .fav-title{font-size:var(--text-ui-base);font-weight:600;color:var(--color-foreground)}
.cdx-lib-favpicker .fav-add{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border:0;border-radius:var(--radius-full);background:transparent;color:var(--color-foreground-subtle);cursor:pointer;line-height:0}
.cdx-lib-favpicker .fav-add:hover{background:var(--color-hover);color:var(--color-foreground)}
.cdx-lib-favpicker .fav-list{max-height:240px;overflow-y:auto;padding-bottom:4px}
.cdx-lib-favpicker .fav-row{gap:10px}
.cdx-lib-favpicker .fav-thumb{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;flex-shrink:0;border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-card);color:var(--color-foreground-subtle)}
.cdx-lib-favpicker .fav-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-ui-base)}
.cdx-lib-favpicker .fav-newrow{display:flex;align-items:center;gap:6px;padding:4px 6px 2px}
.cdx-lib-favpicker .fav-input{height:32px;font-size:var(--text-ui-caption)}
.cdx-lib-favpicker .fav-ok{height:32px;flex-shrink:0}

/* ---------- 列表勾选槽：不占位（-start-6；选择激活才预留） ---------- */
.cdx-lib-row .r-gutter,.cdx-lib-listhead .h-gutter{position:absolute;right:100%;top:0;bottom:0;width:24px;display:flex;align-items:center;justify-content:center}
.cdx-lib-row,.cdx-lib-listhead{position:relative}
.cdx-lib-list.sel-active{padding-left:24px}
.cdx-lib-list.sel-active .cdx-lib-row .r-check,.cdx-lib-list.sel-active .cdx-lib-listhead .r-check{opacity:1}

/* ---------- 头部：折叠动画 + 窄容器换行（data-wrap-actions） ---------- */
.cdx-lib-titlerow{transition:transform .18s ease,opacity .18s ease}
.cdx-lib-header.is-collapsed .cdx-lib-titlerow{min-height:0}
.cdx-lib-header-inner.is-wrapped{display:block}
.cdx-lib-header-inner.is-wrapped .cdx-lib-actionsrow{flex-wrap:wrap;row-gap:8px}
.cdx-lib-header-inner.is-wrapped .cdx-lib-search{flex:1 1 160px;width:auto;max-width:240px}
.cdx-lib-header-inner.is-wrapped .cdx-lib-toolbar{width:100%;margin-left:0;justify-content:flex-end}

/* ---------- 媒体卡 ··· 变体（mediaTranslucent） ---------- */
.cdx-lib-card.is-media .cdx-lib-actbtn{background:color-mix(in oklab, var(--color-card) 82%, transparent);border-color:transparent;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.cdx-lib-card.is-media .cdx-lib-actbtn:hover{background:color-mix(in oklab, var(--color-card) 96%, transparent)}

/* ---------- 多选工具条禁用态 ---------- */
.cdx-lib-seltoolbar .btn:disabled{opacity:.45;cursor:default;pointer-events:none}

/* ---------- 键盘焦点环（gridcell） ---------- */
.cdx-lib-card-btn:focus-visible,.cdx-lib-row [role="gridcell"]:focus-visible,.cdx-lib-listhead .h-sort:focus-visible,.cdx-lib-card-acts:focus-visible{outline:none}
.cdx-lib-card-btn:focus-visible{box-shadow:inset 0 0 0 2px var(--color-foreground)}
.cdx-lib-row [role="gridcell"]:focus-visible{box-shadow:0 0 0 2px var(--color-foreground);border-radius:6px}

/* ============================================================
   追加（批 2/3）：搜索聚焦 / 上传失败态 / 收藏状态 /
   空态插画 / 预览 chrome / 触屏常显 / 减弱动效 / 菜单环形指示
   ============================================================ */

/* 搜索聚焦展开 */
.cdx-lib-search.is-focused{flex:1 1 auto;width:auto;max-width:420px;border-color:color-mix(in oklab, var(--color-foreground) 40%, transparent)}

/* 上传失败 / 待确认 */
.cdx-lib-uploads .up-row.is-failed .up-ico,.cdx-lib-uploads .up-row.is-checking .up-ico{color:var(--color-warning)}
.cdx-lib-uploads .up-row.is-failed .up-txt{color:var(--color-destructive)}
.cdx-lib-uploads .up-retry{display:inline-flex;align-items:center;height:24px;padding:0 10px;border:1px solid color-mix(in oklab, var(--color-foreground) 15%, transparent);border-radius:var(--radius-full);background:transparent;color:var(--color-foreground);font:inherit;font-size:var(--text-ui-sm);font-weight:500;cursor:pointer;flex-shrink:0}
.cdx-lib-uploads .up-retry:hover{background:var(--color-hover)}

/* 收藏文件夹：检查中 / 空 / 失败 */
.cdx-lib-favpicker .fav-state{display:flex;align-items:center;gap:8px;padding:14px 12px;font-size:var(--text-ui-caption);color:var(--color-foreground-subtle)}
.cdx-lib-favpicker .fav-state.is-error{color:var(--color-destructive)}
.cdx-lib-favpicker .fav-spin{width:14px;height:14px;border-radius:50%;border:1.5px solid color-mix(in oklab, var(--color-foreground) 25%, transparent);border-top-color:var(--color-foreground);animation:libxSpin .7s linear infinite}
@keyframes libxSpin{to{transform:rotate(360deg)}}
.cdx-lib-favpicker .fav-retry{display:inline-flex;align-items:center;height:24px;padding:0 10px;margin-left:auto;border:1px solid color-mix(in oklab, var(--color-foreground) 15%, transparent);border-radius:var(--radius-full);background:transparent;color:var(--color-foreground);font:inherit;font-size:var(--text-ui-sm);cursor:pointer}
.cdx-lib-favpicker .fav-retry:hover{background:var(--color-hover)}

/* 空态插画（token 绘制） */
.cdx-lib-emptyart{display:flex;align-items:center;justify-content:center;margin-bottom:6px;color:var(--color-foreground-subtlest)}
.cdx-lib-emptyart .ea-plate{display:inline-flex;align-items:center;justify-content:center;width:72px;height:72px;border-radius:var(--radius-xl);border:1px solid var(--color-border-subtle);background:var(--color-card)}
.cdx-lib-emptyart svg{width:34px;height:34px}

/* 卡片缩略图（自然比例） */
.cdx-lib-card-media.thumb{width:100%;overflow:hidden}
.cdx-lib-card-media.thumb .cdx-lib-thumb{position:absolute;inset:0}

/* 预览标题区 / 面包屑 */
.cdx-lib-pv-head .pv-titles{display:flex;flex-direction:column;min-width:0;line-height:1.2}
.cdx-lib-pv-head .pv-crumbs{display:flex;align-items:center;gap:2px;min-width:0;font-size:var(--text-ui-xs);color:var(--color-foreground-subtle)}
.cdx-lib-pv-head .pv-crumb{border:0;background:transparent;padding:1px 4px;border-radius:var(--radius-sm);font:inherit;font-size:var(--text-ui-xs);color:var(--color-foreground-subtle);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px}
.cdx-lib-pv-head .pv-crumb:hover{background:var(--color-hover);color:var(--color-foreground)}
.cdx-lib-pv-head .pv-crumb.cur{color:var(--color-foreground-subtle);cursor:default}
.cdx-lib-pv-head .pv-sep{display:inline-flex;line-height:0;opacity:.7}
.cdx-lib-pv-head .pv-title{font-size:var(--text-ui-base);font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pv-btn.is-on{color:var(--color-foreground)}

/* 菜单 checkbox 环形指示器（对标母版 Menu CheckboxItem） */
.cdx-lib-mi .ck{width:18px;height:18px;border-radius:var(--radius-full);background:transparent;box-shadow:inset 0 0 0 1px color-mix(in oklab, var(--color-foreground) 16%, transparent);color:transparent}
.cdx-lib-mi:hover .ck{box-shadow:inset 0 0 0 1px color-mix(in oklab, var(--color-foreground) 25%, transparent)}
.cdx-lib-mi.on .ck{background:var(--color-foreground);box-shadow:none;color:var(--color-background)}
/* 收藏文件夹行的勾（未选中隐形） */
.cdx-lib-favpicker .fav-row .ck{box-shadow:none;background:transparent}
.cdx-lib-favpicker .fav-row.on .ck{background:var(--color-foreground);color:var(--color-background)}

/* 触屏常显（对标 pointer-coarse:opacity-100） */
@media (pointer: coarse){
  .cdx-lib-card-acts,.cdx-lib-check,.cdx-lib-row .r-acts,.cdx-lib-row .r-check,.cdx-lib-listhead .r-check{opacity:1;pointer-events:auto}
}

/* 减弱动效兜底（对标 prefers-reduced-motion） */
@media (prefers-reduced-motion: reduce){
  .cdx-lib-card-main,.cdx-lib-fstack,.cdx-lib-card-shade,.cdx-lib-actbtn,.cdx-lib-check,.cdx-lib-pbtn,.cdx-lib-tab,.cdx-lib-morebtn,.cdx-lib-skel,
  .cdx-lib-pop,.cdx-lib-ctxmenu,.cdx-lib-dlgmask,.cdx-lib-dlg,.cdx-lib-preview,.cdx-lib-titlerow,.cdx-lib-uploads .up-bar-in{transition:none!important;animation:none!important}
  .cdx-lib-favpicker .fav-spin{animation:none}
}

/* ============================================================
   批 A：provider 徽标 / 共享者 / 设置开关 / 分享对话框
   ============================================================ */
.cdx-lib-pbadge{position:absolute;left:12px;bottom:12px;z-index:3;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:var(--radius-full);background:color-mix(in oklab, var(--color-card) 88%, transparent);border:1px solid var(--color-border-subtle);color:var(--color-foreground);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.cdx-lib-card-head~.cdx-lib-card-acts+.cdx-lib-pbadge{left:8px}

.cdx-lib-shared{display:inline-flex;align-items:center;gap:2px;color:var(--color-foreground-subtle);line-height:0}
.cdx-lib-shared em{font-style:normal;font-size:var(--text-ui-2xs);color:var(--color-foreground-subtle)}

/* 列表：来源列 provider 图标 */
.cdx-lib-row .r-src .cdx-lib-pbadge{position:static;width:auto;height:auto;border:0;background:transparent;color:var(--color-foreground-subtle);backdrop-filter:none}
/* 共享者列 */
.cdx-lib-listhead .col-shared,.cdx-lib-row .r-shared{width:240px;flex-shrink:0;display:none;align-items:center;gap:8px;min-width:0;font-size:var(--text-ui-base);line-height:20px;color:var(--color-foreground-subtle)}
@container (min-width:768px){.cdx-lib-listhead .col-shared{display:block}.cdx-lib-row .r-shared{display:flex}}
.cdx-lib-row .r-shared .sh-chip{display:inline-flex;align-items:center;gap:6px;min-width:0}
.cdx-lib-row .r-shared .sh-avatar{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:var(--radius-full);background:var(--color-surface-tertiary);color:var(--color-foreground);font-size:var(--text-ui-2xs);flex-shrink:0}
.cdx-lib-row .r-shared .sh-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* 设置菜单：provider 开关 */
.cdx-lib-mi.prov-row .sw{margin-left:auto;display:inline-flex;align-items:center;width:32px;height:19px;border-radius:var(--radius-full);background:color-mix(in oklab, var(--color-foreground) 18%, transparent);transition:background-color .18s;flex-shrink:0}
.cdx-lib-mi.prov-row .sw .sw-knob{width:13px;height:13px;margin-left:3px;border-radius:var(--radius-full);background:var(--color-card);box-shadow:0 1px 2px rgba(0,0,0,.2);transition:transform .18s}
.cdx-lib-mi.prov-row .sw.on{background:var(--color-foreground)}
.cdx-lib-mi.prov-row .sw.on .sw-knob{transform:translateX(13px)}
.cdx-lib-mi.prov-row.is-account{padding-left:12px}
.cdx-lib-mi.prov-row .prov-acc{font-size:var(--text-ui-caption);color:var(--color-foreground-subtle)}
.cdx-lib-mi.disabled{opacity:.45;cursor:default;pointer-events:none}

/* 分享对话框 */
.cdx-share .cdx-lib-dlg-head{display:flex;align-items:baseline;gap:8px}
.cdx-share .sh-sub{font-size:var(--text-ui-caption);font-weight:400;color:var(--color-foreground-subtle);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cdx-share .share-link{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);background:var(--color-elevated-secondary)}
.cdx-share .sl-ico{display:inline-flex;color:var(--color-foreground-subtle);line-height:0;flex-shrink:0}
.cdx-share .sl-main{display:flex;flex-direction:column;min-width:0;flex:1}
.cdx-share .sl-title{font-size:var(--text-ui-caption);color:var(--color-foreground)}
.cdx-share .sl-desc{font-size:var(--text-ui-xs);color:var(--color-foreground-subtle)}
.cdx-share .share-sec{margin:16px 0 6px;font-size:var(--text-ui-sm);font-weight:500;color:var(--color-foreground-subtle)}
.cdx-share .share-people{display:flex;flex-direction:column;gap:2px}
.cdx-share .sp-row{display:flex;align-items:center;gap:10px;padding:6px 4px;font-size:var(--text-ui-base)}
.cdx-share .sp-avatar{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-full);background:var(--color-surface-tertiary);color:var(--color-foreground);font-size:var(--text-ui-sm);flex-shrink:0}
.cdx-share .sp-avatar.is-owner{background:var(--color-foreground);color:var(--color-background)}
.cdx-share .sp-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cdx-share .sp-role{display:inline-flex;align-items:center;gap:4px;font-size:var(--text-ui-caption);color:var(--color-foreground-subtle)}
.cdx-share .share-teams{display:flex;flex-wrap:wrap;gap:6px}
.cdx-share .share-team{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border:1px solid var(--color-border-subtle);border-radius:var(--radius-full);background:var(--color-card);font-size:var(--text-ui-sm);color:var(--color-foreground)}

/* ============================================================
   批 B：加载失败 / 版本历史面板
   ============================================================ */
.cdx-lib-error{display:flex;flex-direction:column;align-items:center;gap:10px;padding:80px 24px;text-align:center;color:var(--color-foreground-subtle)}
.cdx-lib-error .er-ico{display:inline-flex;color:var(--color-destructive);line-height:0}
.cdx-lib-error .er-t{font-size:var(--text-ui-base);color:var(--color-foreground)}

.cdx-lib-versions{position:absolute;top:0;right:0;bottom:0;width:320px;display:flex;flex-direction:column;background:var(--color-menu);border-left:1px solid var(--color-border-subtle);box-shadow:var(--libx-shadow-menu);animation:libxPanelIn .18s cubic-bezier(.19,1,.22,1)}
@keyframes libxPanelIn{from{transform:translateX(16px);opacity:0}to{transform:none;opacity:1}}
.cdx-lib-versions .vp-head{display:flex;align-items:center;gap:8px;height:52px;padding:0 12px 0 16px;border-bottom:1px solid var(--color-border-subtle)}
.cdx-lib-versions .vp-title{flex:1;font-size:var(--text-ui-base);font-weight:600}
.cdx-lib-versions .vp-x{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:0;border-radius:var(--radius-md);background:transparent;color:var(--color-foreground-subtle);cursor:pointer;line-height:0}
.cdx-lib-versions .vp-x:hover{background:var(--color-hover);color:var(--color-foreground)}
.cdx-lib-versions .vp-list{flex:1;min-height:0;overflow-y:auto;padding:8px}
.cdx-lib-versions .vp-row{position:relative;display:flex;flex-direction:column;gap:2px;padding:10px 12px;border-radius:var(--radius-md)}
.cdx-lib-versions .vp-row:hover{background:var(--color-hover)}
.cdx-lib-versions .vp-row.is-cur{background:var(--color-selected)}
.cdx-lib-versions .vp-when{font-size:var(--text-ui-caption);color:var(--color-foreground)}
.cdx-lib-versions .vp-meta{font-size:var(--text-ui-sm);color:var(--color-foreground-subtle)}
.cdx-lib-versions .vp-cur{position:absolute;right:12px;top:12px;font-size:var(--text-ui-xs);color:var(--color-foreground-subtle)}
.cdx-lib-versions .vp-restore{position:absolute;right:10px;top:10px;height:24px;padding:0 10px;border:1px solid color-mix(in oklab, var(--color-foreground) 15%, transparent);border-radius:var(--radius-full);background:var(--color-card);color:var(--color-foreground);font:inherit;font-size:var(--text-ui-sm);cursor:pointer}
.cdx-lib-versions .vp-restore:hover{background:var(--color-hover)}

/* ============================================================
   批 C：图片预览 lightbox（深色媒体底 + 自然比例居中）
   ============================================================ */
.cdx-lib-preview.is-lightbox{background:var(--color-code-surface);color:var(--color-foreground-inverse)}
.cdx-lib-preview.is-lightbox .cdx-lib-pv-head{border-bottom-color:color-mix(in oklab, var(--color-foreground-inverse) 12%, transparent)}
.cdx-lib-preview.is-lightbox .pv-fico,.cdx-lib-preview.is-lightbox .pv-kind,.cdx-lib-preview.is-lightbox .pv-crumb{color:color-mix(in oklab, var(--color-foreground-inverse) 65%, transparent)}
.cdx-lib-preview.is-lightbox .pv-title{color:var(--color-foreground-inverse)}
.cdx-lib-preview.is-lightbox .pv-crumb:hover{background:color-mix(in oklab, var(--color-foreground-inverse) 12%, transparent);color:var(--color-foreground-inverse)}
.cdx-lib-preview.is-lightbox .pv-btn{color:color-mix(in oklab, var(--color-foreground-inverse) 78%, transparent)}
.cdx-lib-preview.is-lightbox .pv-btn:hover{background:color-mix(in oklab, var(--color-foreground-inverse) 14%, transparent);color:var(--color-foreground-inverse)}
.cdx-lib-pv-body.is-media{display:flex;align-items:center;justify-content:center;padding:56px}
.cdx-lib-pv-body.is-media .pv-img{height:100%;width:auto;max-width:min(92%,1200px);max-height:100%;margin:0;border-radius:var(--radius-xl);overflow:hidden;box-shadow:0 24px 60px rgba(0,0,0,.45)}


/* ============================================================
   批 D：焦点环对齐 / 菜单按压 / 空态（分组·局部提示）/ 骨架 pt-4
   ============================================================ */



/* 卡片：ring-2 ring-text + ring-offset-2（surface）——内含焦点控件时显现 */
.cdx-lib-card-main:has(:focus-visible){box-shadow:0 0 0 2px var(--color-background),0 0 0 4px var(--color-foreground)}
.cdx-lib-card-btn:focus-visible{box-shadow:none}
/* 行 / 单元格 / 勾选 / 表头：ring-2 ring-ring（蓝） */
.cdx-lib-row [role="gridcell"]:focus-visible{box-shadow:0 0 0 2px var(--color-ring);border-radius:6px}
.cdx-lib-row .r-check .box:focus-visible,.cdx-lib-listhead .r-check .box:focus-visible{box-shadow:0 0 0 2px var(--color-ring)}
.cdx-lib-listhead .h-sort:focus-visible{box-shadow:0 0 0 2px var(--color-ring);border-radius:6px}
.cdx-lib-card-acts:focus-visible{box-shadow:0 0 0 2px var(--color-ring);border-radius:var(--radius-full)}

/* 菜单按下反馈（母版 scale(.98)） */
.cdx-lib-mi:active,.cdx-lib-pop-sec+.cdx-lib-mi:active{transform:scale(.98)}
.cdx-lib-tab:active{transform:scale(.98)}

/* 表头排序整格可点 */
.cdx-lib-listhead .h-sort.col-name{flex:1 1 auto;width:auto}
.cdx-lib-listhead .h-sort.col-size,.cdx-lib-listhead .h-sort.col-date{height:100%}

/* 空态：图像分组 / 局部提示条 */
.cdx-lib-grouphead{display:flex;align-items:center;gap:8px;margin:6px 0 10px;font-size:var(--text-ui-base);font-weight:600;color:var(--color-foreground)}
.cdx-lib-grouphead .gh-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:var(--radius-full);background:var(--color-surface-tertiary);color:var(--color-foreground-subtle);font-size:var(--text-ui-xs);font-weight:500}
.cdx-lib-empty.is-inline{padding:36px 24px}
.cdx-lib-emptyart.is-sm .ea-plate{width:52px;height:52px}
.cdx-lib-emptyart.is-sm svg{width:24px;height:24px}
.cdx-lib-notice{display:flex;align-items:center;gap:8px;margin-bottom:12px;padding:10px 14px;border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);background:var(--color-elevated-secondary);font-size:var(--text-ui-caption);color:var(--color-foreground-subtle)}
.cdx-lib-notice .nt-ico{display:inline-flex;color:var(--color-warning);line-height:0}
.cdx-lib-notice .nt-txt{min-width:0;flex:1}
.cdx-lib-notice .nt-btn{display:inline-flex;align-items:center;height:26px;padding:0 10px;border:1px solid color-mix(in oklab, var(--color-foreground) 15%, transparent);border-radius:var(--radius-full);background:var(--color-card);color:var(--color-foreground);font:inherit;font-size:var(--text-ui-sm);cursor:pointer}
.cdx-lib-listwrap.is-skel-wrap{padding-top:16px}   /* 母版骨架 pt-4 */

/* ============================================================
   批 E1：空态（母版 EmptyState）/ 预览头 / 版本历史面板
   ============================================================ */
:root{ --libx-empty-h:320px; }
.cdx-lib-empty{width:100%;flex:1;min-height:var(--libx-empty-h);padding:24px 12px;display:flex;flex-direction:column;align-items:center;justify-content:center}
.cdx-lib-empty.is-browse{display:grid;grid-template-rows:1fr 1fr;justify-items:center}
.cdx-lib-empty.is-browse .em-wrap{grid-row:2;justify-self:start;align-self:start}
.cdx-lib-empty.is-inline{min-height:0;padding:20px 12px}
.em-wrap{display:flex;width:100%;max-width:576px;flex-direction:column;align-items:center;text-align:center;gap:12px}
.cdx-lib-empty.is-page .em-wrap{gap:16px}
.em-wrap.max-w-80{max-width:320px}
.em-art{pointer-events:none;display:flex;align-items:center;justify-content:center}
.em-art.is-tile{width:48px;height:48px;flex-shrink:0;border-radius:var(--radius-lg);background:var(--color-surface-tertiary);color:var(--color-foreground)}
.em-art.is-tile svg{width:24px;height:24px}
.em-art.is-icon{color:var(--color-foreground-subtle);overflow:visible}
.em-art.is-icon svg{width:32px;height:32px}
.cdx-lib-empty.is-browse .em-art.is-icon{height:20px}
.em-body{display:flex;flex-direction:column;align-items:center;gap:8px}
.em-title{margin:0;font-size:var(--text-ui-lg);line-height:24px;font-weight:500;color:var(--color-foreground)}
.em-desc{font-size:var(--text-ui-base);color:var(--color-foreground-subtle)}
.cdx-lib-empty.is-browse .em-desc{min-height:40px}
.em-actions{display:flex;width:100%;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px}

/* 预览头：标题（主）+ 面包屑（次）+ 标题下拉 */
.cdx-lib-pv-head{gap:6px}
.pv-titlebtn{display:flex;align-items:center;gap:8px;max-width:340px;min-width:0;padding:6px 12px 6px 8px;border:0;border-radius:var(--radius-lg);background:transparent;color:var(--color-foreground);cursor:pointer;text-align:start}
.pv-titlebtn:hover{background:var(--color-hover)}
.pv-titlebtn .pv-titles{display:flex;min-width:0;flex-direction:column;gap:1px}
.pv-titlebtn .pv-title{display:block;max-width:168px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-ui-caption);line-height:20px;color:var(--color-foreground)}
.pv-titlebtn .pv-crumbs{display:flex;gap:6px;font-size:var(--text-ui-xs);line-height:16px;color:var(--color-foreground-subtle)}
.pv-titlebtn .pv-crumb-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px}
.pv-btn.has-label{width:auto;gap:6px;padding:0 10px}
.pv-btn.has-label span{font-size:var(--text-ui-caption)}
.pv-vh-title{font-size:var(--text-ui-base);font-weight:500;color:var(--color-foreground)}
.pv-restore{height:30px;border-radius:var(--radius-full)}

/* 版本历史面板（时间轴 + 分组） */
.cdx-lib-versions{width:320px}
.cdx-lib-versions .vp-body{flex:1;min-height:0;overflow-y:auto;padding:16px 12px}
.cdx-lib-versions .vp-loading{display:flex;height:80px;align-items:center;justify-content:center;gap:8px;font-size:var(--text-ui-caption);color:var(--color-foreground-subtle)}
.cdx-lib-versions .vp-err{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 4px;font-size:var(--text-ui-caption);color:var(--color-foreground-subtle)}
.cdx-lib-versions .vp-retry,.cdx-lib-versions .vp-more{display:inline-flex;align-items:center;justify-content:center;height:28px;padding:0 12px;border:1px solid color-mix(in oklab, var(--color-foreground) 15%, transparent);border-radius:var(--radius-full);background:transparent;color:var(--color-foreground);font:inherit;font-size:var(--text-ui-sm);cursor:pointer}
.cdx-lib-versions .vp-more{width:100%;margin-top:10px}
.cdx-lib-versions .vp-sec+.vp-sec{margin-top:24px}
.cdx-lib-versions .vp-day{margin:0 0 12px;padding:0 4px;font-size:var(--text-ui-base);font-weight:500;color:var(--color-foreground-subtle)}
.cdx-lib-versions .vp-ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:0}
.cdx-lib-versions .vp-item{position:relative;padding-inline-start:20px;padding-bottom:20px}
.cdx-lib-versions .vp-item:last-child{padding-bottom:0}
.cdx-lib-versions .vp-line{position:absolute;inset-inline-start:4px;top:24px;bottom:-8px;width:6px}
.cdx-lib-versions .vp-item:last-child .vp-line{display:none}
.cdx-lib-versions .vp-line::before{content:'';position:absolute;inset-inline-start:2.5px;top:0;bottom:0;width:1px;background:var(--color-border)}
.cdx-lib-versions .vp-dot{position:absolute;inset-inline-start:4px;top:14px;width:6px;height:6px;border-radius:var(--radius-full);background:var(--color-foreground-subtlest)}
.cdx-lib-versions .vp-dot.is-cur{background:var(--color-foreground)}
.cdx-lib-versions .vp-hit{display:flex;align-items:flex-start;border-radius:var(--radius-lg);padding:8px;transition:background-color .12s}
.cdx-lib-versions .vp-hit:hover{background:var(--color-hover)}
.cdx-lib-versions .vp-hit.is-sel{background:var(--color-selected)}
.cdx-lib-versions .vp-btnrow{display:flex;flex-direction:column;align-items:flex-start;width:100%;border:0;background:transparent;padding:0;font:inherit;text-align:start;cursor:pointer}
.cdx-lib-versions .vp-time{display:block;font-size:var(--text-ui-base);line-height:20px;color:var(--color-foreground-subtle)}
.cdx-lib-versions .vp-reason{display:block;margin-top:4px;font-size:var(--text-ui-base);line-height:20px;color:var(--color-foreground)}
.cdx-lib-versions .vp-author{display:flex;align-items:center;gap:6px;margin-top:4px;font-size:var(--text-ui-xs);line-height:16px;color:var(--color-foreground-subtle)}
.cdx-lib-versions .vp-ava{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:var(--radius-full);background:var(--color-surface-tertiary);color:var(--color-foreground);font-size:9px}

/* ============================================================
   批 E2a：上传面板（母版）/ provider 徽标形态 / 收藏行 / 表头按钮 / 拖拽遮罩
   ============================================================ */
.cdx-lib-uploads{position:fixed;inset-inline:16px;bottom:16px;z-index:50;user-select:none}
@media (min-width:640px){.cdx-lib-uploads{inset-inline-start:auto;width:384px}}
.cdx-lib-uploads .up-card{pointer-events:auto;overflow:hidden;border-radius:var(--radius-xl);border:1px solid var(--color-border);background:var(--color-elevated-secondary);color:var(--color-foreground);box-shadow:var(--shadow-lg)}
.cdx-lib-uploads .up-head{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--color-border);padding:12px 16px}
.cdx-lib-uploads .up-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-ui-base);font-weight:500;margin:0}
.cdx-lib-uploads .up-headright{display:flex;flex-shrink:0;align-items:center;gap:8px}
.cdx-lib-uploads .up-progress{display:flex;align-items:center;gap:6px;font-size:var(--text-ui-xs);color:var(--color-foreground-subtle)}
.cdx-lib-uploads .up-ring{width:14px;height:14px;border-radius:var(--radius-full);background:conic-gradient(var(--color-foreground) var(--p,0%), color-mix(in oklab, var(--color-foreground) 12%, transparent) 0);-webkit-mask:radial-gradient(circle 5px, transparent 0 4px, #000 4.5px);mask:radial-gradient(circle 5px, transparent 0 4px, #000 4.5px)}
.cdx-lib-uploads .up-count{font-variant-numeric:tabular-nums}
.cdx-lib-uploads .up-iconbtn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:0;border-radius:var(--radius-md);background:transparent;color:var(--color-foreground-subtle);cursor:pointer;line-height:0}
.cdx-lib-uploads .up-iconbtn:hover{background:var(--color-hover);color:var(--color-foreground)}
.cdx-lib-uploads.is-collapsed .up-head .up-iconbtn[aria-expanded] svg{transform:rotate(180deg)}
.cdx-lib-uploads .up-list{max-height:256px;overflow-y:auto}
.cdx-lib-uploads .up-row{display:flex;min-width:0;align-items:center;gap:12px;border-bottom:1px solid var(--color-border);padding:12px 16px}
.cdx-lib-uploads .up-row:last-child{border-bottom:0}
.cdx-lib-uploads .up-type{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;flex-shrink:0;border-radius:var(--radius-lg);border:1px solid var(--color-border);color:var(--color-foreground-subtle)}
.cdx-lib-uploads .up-main{display:flex;min-width:0;flex-direction:column;flex:1}
.cdx-lib-uploads .up-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-ui-base)}
.cdx-lib-uploads .up-status{font-size:var(--text-ui-xs);color:var(--color-foreground-subtle)}
.cdx-lib-uploads .up-row.is-failed .up-status{white-space:normal;color:var(--color-destructive)}
.cdx-lib-uploads .up-row.is-failed .up-type{color:var(--color-destructive)}
.cdx-lib-uploads .up-row.is-success .up-status{color:var(--color-success)}
.cdx-lib-uploads .up-row.is-success .up-type{color:var(--color-success)}

/* provider 徽标：缩略图浮标 / 图标角标 */
.cdx-lib-pfloat{position:absolute;inset-inline-end:18px;bottom:18px;z-index:2;display:flex;width:20px;height:20px;align-items:center;justify-content:center;border-radius:var(--radius-full);border:1px solid var(--color-border);background:var(--color-card);color:var(--color-foreground);transition:opacity .12s}
.cdx-lib-card:hover .cdx-lib-pfloat,.cdx-lib-card.sel .cdx-lib-pfloat,.cdx-lib-card.drop .cdx-lib-pfloat{opacity:0}
.cdx-lib-pcorner{position:absolute;inset-inline-end:-4px;bottom:-4px;display:flex;width:16px;height:16px;align-items:center;justify-content:center;border-radius:var(--radius-full);border:1px solid var(--color-border);background:var(--color-card);color:var(--color-foreground)}
.cdx-lib-fico{position:relative}
/* 行内 provider（standalone row）：20px */
.cdx-lib-row .r-src .cdx-lib-pbadge{position:static;width:20px;height:20px;border:0;background:transparent;color:var(--color-foreground-subtle);backdrop-filter:none;display:inline-flex;align-items:center;justify-content:center}

/* 收藏行缩略 44px */
.cdx-lib-favpicker .fav-thumb{width:44px;height:44px;border-radius:var(--radius-lg)}

/* 表头按钮（母版 Button lg：h-32 / padding 12 / radius 8 / 展开态 60% 背景） */
.cdx-lib-pbtn{padding:0 12px;border-radius:var(--radius)}
.cdx-lib-pbtn.ico{width:32px;padding:0}
.cdx-lib-pbtn[aria-expanded="true"]{background:color-mix(in oklab, var(--color-foreground) 5%, transparent)}
.cdx-lib-pbtn[aria-expanded="true"]:hover{background:var(--libx-hover)}
.cdx-lib-newbtn{border-radius:var(--radius-full)}

/* 拖拽遮罩（母版：bg-surface/80 + 2xl 标题 + w-2/3 说明） */
.cdx-lib-dropmask{position:absolute;inset:0;z-index:70;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;background:color-mix(in oklab, var(--color-surface) 80%, transparent);color:var(--color-foreground);pointer-events:none;user-select:none;border:0;border-radius:0}
.cdx-lib-dropmask .dm-title{margin:0;font-size:var(--text-display-sm);font-weight:600}
.cdx-lib-dropmask .dm-sub{margin:0;width:66%;text-align:center;font-size:var(--text-ui-lg);font-weight:400;color:var(--color-foreground-subtle)}

/* ============================================================
   批 E2b：分享对话框（加人/角色/确认）/ 重命名扩展名 / 图像来源分段
   ============================================================ */
.cdx-share .share-invite{display:flex;align-items:center;gap:8px;margin-top:10px}
.cdx-share .share-invite .cdx-lib-input{height:34px}
.cdx-share .sp-role.is-owner{color:var(--color-foreground-subtle);font-size:var(--text-ui-caption)}
.cdx-share .sp-role-btn{display:inline-flex;align-items:center;gap:4px;height:28px;padding:0 10px;border:0;border-radius:var(--radius-md);background:transparent;color:var(--color-foreground-subtle);font:inherit;font-size:var(--text-ui-caption);cursor:pointer}
.cdx-share .sp-role-btn:hover{background:var(--color-hover);color:var(--color-foreground)}
.cdx-share .role-change{font-size:var(--text-ui-base);color:var(--color-foreground)}
.cdx-lib-dlgmask.is-inner{z-index:110}
.d-inputrow{display:flex;align-items:center;gap:0;position:relative}
.d-inputrow .cdx-lib-input{padding-right:56px}
.d-inputrow .d-ext{position:absolute;right:12px;font-size:var(--text-ui-base);color:var(--color-foreground-subtle);user-select:none;pointer-events:none}

/* 图像来源分段控件（母版 SegmentedControl ghost：轨道透明 + 选中面 surface-tertiary） */
.cdx-lib-seg{display:inline-flex;align-items:center;gap:2px;height:32px;margin-bottom:14px;padding:0;border-radius:var(--radius);background:transparent;position:relative}
.cdx-lib-seg-opt{display:inline-flex;align-items:center;justify-content:center;height:28px;padding:0 12px;border:0;border-radius:var(--radius-md);background:transparent;color:var(--color-foreground-subtle);font:inherit;font-size:var(--text-ui-base);font-weight:600;line-height:1;cursor:pointer;transition:background-color .15s,color .15s}
.cdx-lib-seg-opt:hover{color:var(--color-foreground);background:color-mix(in oklab, var(--color-surface-tertiary) 50%, transparent)}
.cdx-lib-seg-opt.on{background:var(--color-surface-tertiary);color:var(--color-foreground)}
.cdx-lib-seg-opt:active{transform:scale(.97)}

/* 版本历史开启：预览头/正文右侧让出 320px 面板（对标 artifact-accessories 分栏） */
.cdx-lib-preview.has-versions .cdx-lib-pv-head{padding-inline-end:332px}
.cdx-lib-preview.has-versions .cdx-lib-pv-body{padding-inline-end:calc(24px + 320px)}

/* ============================================================
   批 F：按真机截图对齐（标题行合并 / 方形卡内 caption / 类型配色）
   ============================================================ */
.cdx-lib-title{font-size:var(--text-ui-2xl);font-weight:600;line-height:1.4;letter-spacing:0}

/* 标题行与工具行合并为一行：左标题，右控件；窄容器仍可换行 */
.cdx-lib-toolbar{margin-left:auto}
.cdx-lib-tab{height:32px;padding:0 16px}
.cdx-lib-tabs{margin-top:6px}
.cdx-lib-newbtn{gap:10px;height:32px;padding:0 14px;font-weight:500}
.cdx-lib-newbtn svg{width:16px;height:16px;opacity:1;flex-shrink:0}

/* 方形卡：caption 在卡内（名称 / 居中图标 / 已修改 · 日期） */
.cdx-lib-card-main{display:flex;flex-direction:column;aspect-ratio:1/1;overflow:hidden}
.cdx-lib-card-main:has(.cdx-lib-card-media.video){aspect-ratio:auto}
.cdx-lib-card-btn{flex:1;min-height:0}
.cdx-lib-cap-head{flex-shrink:0;padding:14px 56px 10px 20px}
.cdx-lib-cap-title{font-size:var(--text-ui-base);font-weight:500;line-height:20px;-webkit-line-clamp:2}
.cdx-lib-art{position:relative;display:flex;flex:1;min-height:0;align-items:center;justify-content:center;overflow:hidden}
.cdx-lib-art.is-thumb .cdx-lib-thumb{position:absolute;inset:8px;border-radius:var(--radius-md)}
.cdx-lib-art.is-thumb .cdx-lib-watermark{inset:8px}
.cdx-lib-art.is-fileicon{padding:8px 0}
.cdx-lib-art.is-fileicon svg{width:52px;height:52px}
.cdx-lib-cap-foot{flex-shrink:0;padding:0 20px 16px;font-size:var(--text-ui-sm);color:var(--color-foreground-subtle)}
/* landscape（表格/演示）保持：卡内头部 + 16:9 体 + 卡外日期 */
.cdx-lib-card:has(.cdx-lib-card-media.video) .cdx-lib-card-btn{flex:0 0 auto}
/* ··· 常显（真机截图：所有卡片都显示） */
.cdx-lib-card-acts{opacity:1;pointer-events:auto}

/* ============================================================
   批 G：分区标题 / 文件夹卡 / 满幅缩略卡 / 列表列与新图标 / 新建菜单
   ============================================================ */
.cdx-lib-section{margin:6px 0 12px;font-size:var(--text-ui-lg);font-weight:600;color:var(--color-foreground)}
.cdx-lib-grid+.cdx-lib-section{margin-top:28px}

/* 文件夹卡：头部图标 + 大图标体，无日期 */
.cdx-lib-card.is-foldercard .cdx-lib-cap-head{align-items:center;gap:8px;padding:14px 56px 0 20px}
.cdx-lib-card.is-foldercard .cdx-lib-art{flex:1;min-height:0}
.cdx-lib-art.is-folder{display:flex;align-items:center;justify-content:center}
.cdx-lib-art.is-folder .cdx-lib-brand{display:flex;color:inherit}
.cdx-lib-art.is-folder .cdx-lib-brand svg{width:64px;height:64px}
.cdx-lib-art.is-folder .cdx-lib-folderglyph{display:flex;color:var(--color-foreground-subtle)}
.cdx-lib-art.is-folder .cdx-lib-folderglyph svg{width:44px;height:44px}

/* 满幅缩略卡（图片）：无 caption，缩略铺满卡片 */
.cdx-lib-card.is-thumbcard .cdx-lib-card-btn{padding:0}
.cdx-lib-art.is-thumb-full{position:absolute;inset:0;border-radius:inherit;overflow:hidden}
.cdx-lib-art.is-thumb-full .cdx-lib-thumb{position:absolute;inset:0}
.cdx-lib-card.is-thumbcard .cdx-lib-card-acts{top:10px;right:10px}

/* 列表：行首缩略占位 + 锁标；列宽（名称 / 修改日期 / 大小） */
.cdx-lib-row .r-thumbph{display:inline-block;width:26px;height:26px;border-radius:var(--radius-md);background:color-mix(in oklab, var(--color-foreground) 6%, transparent)}
.cdx-lib-row .r-lock{display:inline-flex;color:var(--color-foreground-subtle);line-height:0;flex-shrink:0}
.cdx-lib-listhead .col-src,.cdx-lib-listhead .col-shared,.cdx-lib-row .r-src,.cdx-lib-row .r-shared{display:none}
.cdx-lib-listhead .h-sort.col-date,.cdx-lib-row .r-date{width:160px;flex-shrink:0;display:none}
.cdx-lib-listhead .h-sort.col-size,.cdx-lib-row .r-size{width:88px;flex-shrink:0;display:none}
@container (min-width:512px){
  .cdx-lib-listhead .h-sort.col-date,.cdx-lib-listhead .h-sort.col-size{display:flex}
  .cdx-lib-row .r-date,.cdx-lib-row .r-size{display:block}
}

/* 新建菜单：创建新内容 段 + 连接插件（provider 小图标） */
.cdx-lib-createmenu{min-width:236px}
.cdx-lib-createmenu .mi-prov{margin-left:auto;display:inline-flex;align-items:center;gap:2px}
.cdx-lib-createmenu .pvd-ico{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:var(--radius-full);border:1px solid var(--color-border-subtle);background:var(--color-card);color:var(--color-foreground)}

/* ============================================================
   批 H：标题尺寸面包屑 / 预览 chip / 询问此文件
   ============================================================ */
.cdx-lib-crumbs.is-title{gap:6px}
.cdx-lib-crumbs.is-title .crumb{font-size:var(--text-ui-2xl);font-weight:600;color:var(--color-foreground-subtle);padding:2px 4px;border-radius:var(--radius-md)}
.cdx-lib-crumbs.is-title .crumb:hover{background:var(--color-hover);color:var(--color-foreground)}
.cdx-lib-crumbs.is-title .crumb.cur{color:var(--color-foreground);font-weight:600;cursor:default}
.cdx-lib-crumbs.is-title .crumb-sep{color:var(--color-foreground-subtle);opacity:.8}

/* 预览头 chip（图标 + 名称 + ▾） */
.pv-chip{display:inline-flex;align-items:center;gap:6px;height:32px;max-width:360px;padding:0 12px;border:1px solid var(--color-border-subtle);border-radius:var(--radius-full);background:color-mix(in oklab, var(--color-foreground) 4%, transparent);color:var(--color-foreground);font:inherit;cursor:pointer}
.pv-chip:hover{background:color-mix(in oklab, var(--color-foreground) 8%, transparent)}
.pv-chip .pv-fico{display:inline-flex;color:var(--color-foreground-subtle);line-height:0}
.pv-chip .pv-chip-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-ui-caption);font-weight:500}
.pv-btn:disabled{opacity:.4;cursor:default}

/* 预览底部：询问此文件 */
.cdx-lib-pv-ask{display:flex;align-items:center;gap:8px;margin:0 24px 16px;padding:6px 6px 6px 16px;border:1px solid var(--color-border-subtle);border-radius:var(--radius-full);background:var(--color-card);flex-shrink:0}
.cdx-lib-pv-ask .pv-ask-input{flex:1;min-width:0;border:0;outline:none;background:transparent;font:inherit;font-size:var(--text-ui-base);color:var(--color-foreground);padding:6px 0}
.cdx-lib-pv-ask .pv-ask-input::placeholder{color:var(--color-foreground-subtle)}
.cdx-lib-pv-ask .pv-ask-send{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:0;border-radius:var(--radius-full);background:var(--color-foreground);color:var(--color-background);cursor:pointer;line-height:0;flex-shrink:0}
.cdx-lib-preview.is-lightbox .cdx-lib-pv-ask{background:color-mix(in oklab, var(--color-foreground-inverse) 8%, transparent);border-color:color-mix(in oklab, var(--color-foreground-inverse) 14%, transparent)}
.cdx-lib-preview.is-lightbox .cdx-lib-pv-ask .pv-ask-input{color:var(--color-foreground-inverse)}

/* Actual diagram thumbnails; preserve full figure in the lightbox. */
img.cdx-lib-thumb{width:100%;height:100%;object-fit:cover}

/* Spreadsheet / presentation dates belong inside the card surface. */
.cdx-lib-card-main:has(.cdx-lib-card-media.video) > .cdx-lib-cap-foot{padding-top:12px;padding-right:48px;line-height:20px}
.cdx-lib-card-main:has(.cdx-lib-card-media.video) .cdx-lib-check{bottom:16px}

/* Match the workspace header centerline. */
.cdx-lib-header-inner{padding-top:var(--page-header-inset)}

/* One content boundary for the toolbar, banner and list, including scrollbar space. */
.cdx-lib-scroll{scrollbar-gutter:stable}
.cdx-lib-header-inner{padding-right:calc(var(--page-directory-pad) + var(--lib-scrollbar-width,0px))}
.cdx-lib-body{padding-inline:var(--page-directory-pad)}
.cdx-lib-row,.cdx-lib-listhead{padding-inline:0;padding-inline-start:32px}
.cdx-lib-row .r-gutter,.cdx-lib-listhead .h-gutter{left:0;right:auto}
.cdx-lib-listhead::after{left:0;right:0}
.cdx-lib-list.sel-active{padding-left:0}
