/* 文件工作台样式 —— 我的文件 / 共享文件夹 共用 */
.fm{
  --fm-bg:#f4f6f7;
  --fm-surface:#fff;
  --fm-border:#e9edef;
  --fm-line:#f1f4f5;
  --fm-accent:#00897b;
  --fm-accent-soft:#e4f3f0;
  --fm-folder:#ffb300;
  --fm-text:#2b3a37;
  --fm-muted:#8b9a96;
  background:var(--fm-surface);
  border:1px solid var(--fm-border);
  border-radius:10px;
  overflow:hidden;
  box-shadow:0 1px 3px rgba(20,40,40,.04);
  color:var(--fm-text);
}

/* 顶部工具栏 */
.fm-bar{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  padding:12px 16px;
  background:var(--fm-bg);
  border-bottom:1px solid var(--fm-border);
}
.fm-crumb{display:flex;align-items:center;gap:6px;font-size:15px;font-weight:600;color:var(--fm-text);min-width:0;}
.fm-crumb a{color:var(--fm-muted);text-decoration:none;font-weight:500;}
.fm-crumb a:hover{color:var(--fm-accent);}
.fm-crumb .sep{color:#cdd6d4;font-weight:400;}
.fm-crumb .cur{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:240px;}
.fm-crumb .fa-folder-open-o,.fm-crumb .fa-folder-open{color:var(--fm-folder);}
.fm-spacer{flex:1 1 auto;}
.fm-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}

/* 工具栏按钮：幽灵风格 */
.fm-btn{
  display:inline-flex;align-items:center;gap:6px;
  height:34px;padding:0 14px;
  font-size:13px;line-height:1;
  border:1px solid var(--fm-border);border-radius:7px;
  background:var(--fm-surface);color:var(--fm-text);
  cursor:pointer;text-decoration:none;white-space:nowrap;
  transition:all .15s ease;
}
.fm-btn:hover{border-color:var(--fm-accent);color:var(--fm-accent);background:var(--fm-accent-soft);}
.fm-btn:focus-visible{outline:2px solid var(--fm-accent);outline-offset:2px;}
.fm-btn i{font-size:13px;}
.fm-btn-primary{background:var(--fm-accent);border-color:var(--fm-accent);color:#fff;}
.fm-btn-primary:hover{background:#00766a;border-color:#00766a;color:#fff;}
.fm-btn-danger:hover{border-color:#e05656;color:#e05656;background:#fceaea;}
.fm-btn-go{background:#43a047;border-color:#43a047;color:#fff;}
.fm-btn-go:hover{background:#388e3c;border-color:#388e3c;color:#fff;}

/* 搜索框 */
.fm-search{display:flex;align-items:center;}
.fm-search input{
  height:34px;width:180px;max-width:42vw;
  border:1px solid var(--fm-border);border-right:0;border-radius:7px 0 0 7px;
  padding:0 12px;font-size:13px;outline:none;background:#fff;
}
.fm-search input:focus{border-color:var(--fm-accent);}
.fm-search button{
  height:34px;border:1px solid var(--fm-accent);border-radius:0 7px 7px 0;
  background:var(--fm-accent);color:#fff;padding:0 12px;cursor:pointer;font-size:13px;
}

/* 文件夹网格 */
.fm-folders{padding:16px 16px 4px;}
.fm-folders-title{font-size:12px;color:var(--fm-muted);font-weight:600;letter-spacing:.04em;margin-bottom:10px;text-transform:uppercase;}
.fm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;}
.fm-folder{
  position:relative;display:flex;align-items:center;gap:10px;
  padding:12px 14px;border:1px solid var(--fm-border);border-radius:9px;
  background:var(--fm-surface);text-decoration:none;color:var(--fm-text);
  transition:all .15s ease;
}
.fm-folder:hover{border-color:var(--fm-accent);background:var(--fm-accent-soft);transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,137,123,.1);text-decoration:none;color:var(--fm-text);}
.fm-folder .ic{font-size:30px;color:var(--fm-folder);flex:0 0 auto;}
.fm-folder .meta{min-width:0;}
.fm-folder .nm{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.fm-folder .ct{font-size:12px;color:var(--fm-muted);margin-top:2px;}
.fm-folder .share-tag{position:absolute;top:8px;right:9px;font-size:11px;color:var(--fm-accent);}
.fm-empty-folders{color:var(--fm-muted);font-size:13px;padding:2px 0 8px;}

/* 文件列表 */
.fm-list{width:100%;border-collapse:collapse;}
.fm-list thead th{
  font-size:12px;color:var(--fm-muted);font-weight:600;text-align:left;
  padding:10px 14px;border-bottom:1px solid var(--fm-border);background:var(--fm-surface);
  white-space:nowrap;letter-spacing:.02em;
}
.fm-list thead th a.fm-sort{
  color:inherit;text-decoration:none;cursor:pointer;display:inline-flex;align-items:center;gap:4px;
}
.fm-list thead th a.fm-sort:hover{color:var(--fm-accent);}
.fm-list thead th a.fm-sort.on{color:var(--fm-accent);}
.fm-list thead th a.fm-sort .fa{font-size:12px;}
.fm-list tbody td{
  padding:10px 14px;border-bottom:1px solid var(--fm-line);font-size:13px;vertical-align:middle;
}
.fm-list tbody tr:hover{background:var(--fm-accent-soft);}
.fm-list tbody tr:last-child td{border-bottom:0;}
.fm-name{display:flex;align-items:center;gap:9px;min-width:0;max-width:none;}
.fm-name .fname{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--fm-text);text-decoration:none;}
a.fname:hover{color:var(--fm-accent);text-decoration:none;}
.fm-list a,.fm-list a:focus,.fm-folder:focus{outline:none;}
.fm-list a,.fm-folder,.fm-op{-webkit-tap-highlight-color:transparent;}
.fm-btn:focus,.fm-crumb a:focus,.fm-pager a:focus,.fm-search button:focus{outline:none;}
.fm-btn,.fm-crumb a,.fm-pager a,.fm-search input,.fm-search button{-webkit-tap-highlight-color:transparent;}
.fm-thumb{width:38px;height:38px;object-fit:cover;border-radius:6px;background:#eef1f2;flex:0 0 auto;}
.fm-ficon{width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;font-size:20px;color:#90a4a0;background:#f1f4f5;border-radius:6px;flex:0 0 auto;}
.fm-num{color:var(--fm-muted);font-variant-numeric:tabular-nums;width:38px;}
.fm-ext{display:inline-block;font-size:11px;color:var(--fm-accent);background:var(--fm-accent-soft);padding:2px 8px;border-radius:5px;font-weight:600;}
.fm-time{color:var(--fm-muted);white-space:nowrap;}
.fm-ip{color:#aeb9b6;font-variant-numeric:tabular-nums;}

/* 行内操作 */
.fm-ops{display:flex;align-items:center;gap:2px;white-space:nowrap;}
.fm-op{
  display:inline-flex;align-items:center;justify-content:center;
  width:30px;height:30px;font-size:14px;color:var(--fm-muted);text-decoration:none;
  border-radius:6px;transition:all .12s;
}
.fm-op:hover{background:#fff;color:var(--fm-accent);text-decoration:none;box-shadow:0 1px 3px rgba(20,40,40,.1);}
.fm-op.danger:hover{color:#e05656;}
.fm-op.warn:hover{color:#f57c00;}
.fm-list tbody tr:hover .fm-op{color:var(--fm-text);}

/* 每页行数选择 */
.fm-ps{
  height:26px;padding:0 6px;margin:0 2px;
  border:1px solid var(--fm-border);border-radius:6px;
  background:var(--fm-surface);color:var(--fm-text);font-size:13px;cursor:pointer;
}
.fm-ps:focus{outline:none;border-color:var(--fm-accent);}

/* 复选框列 */
.fm-sel{width:40px;text-align:center;}
.fm-sel input{width:16px;height:16px;cursor:pointer;accent-color:var(--fm-accent);}

/* 底部 */
.fm-foot{
  display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;
  padding:12px 16px;border-top:1px solid var(--fm-border);background:var(--fm-bg);
  font-size:13px;color:var(--fm-muted);
}
.fm-pager{display:flex;gap:4px;flex-wrap:wrap;}
.fm-pager a,.fm-pager span{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:32px;height:32px;padding:0 8px;
  border:1px solid var(--fm-border);border-radius:7px;
  background:var(--fm-surface);color:var(--fm-text);text-decoration:none;font-size:13px;
}
.fm-pager a:hover{border-color:var(--fm-accent);color:var(--fm-accent);}
.fm-pager .cur{background:var(--fm-accent);border-color:var(--fm-accent);color:#fff;}
.fm-pager .off{color:#c5cecb;cursor:default;}

/* 空状态 */
.fm-empty{text-align:center;color:var(--fm-muted);padding:48px 16px;}
.fm-empty .big{font-size:46px;color:#dde4e2;margin-bottom:12px;}
.fm-empty .tip{font-size:14px;}

@media (max-width:767px){
  .fm-list .hide-sm{display:none;}
  .fm-bar{padding:10px 12px;}
  .fm-grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));}
}

@media (prefers-reduced-motion:reduce){
  .fm-folder,.fm-btn,.fm-op{transition:none;}
  .fm-folder:hover{transform:none;}
}

/* 列表内文件夹行 */
.fm-row-folder td{background:linear-gradient(0deg,transparent,transparent);}
.fm-row-folder:hover{background:#fffaf0;}
.fm-row-folder .folder-link{color:var(--fm-text);text-decoration:none;font-weight:600;}
.fm-row-folder .folder-link:hover{color:var(--fm-accent);}

/* 剪贴板提示条 */
.fm-clip{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:9px 16px;background:#fff7e6;border-bottom:1px solid #ffe2a8;
  font-size:13px;color:#9a6b00;
}
.fm-clip i{margin-right:4px;}
.fm-clip a{color:#c0392b;text-decoration:none;font-weight:500;white-space:nowrap;}
.fm-clip a:hover{text-decoration:underline;}

/* 上传弹窗（位于 .fm 容器外，不能用 --fm-* 变量，需用明确色值） */
/* layer 皮肤：高度随内容自适应，仅顶满屏幕时 content 内部滚动 */
.fm-up-layer.layui-layer{height:auto !important;}
.fm-up-layer .layui-layer-content{height:auto !important;max-height:calc(100vh - 120px);overflow-y:auto;overflow-x:hidden;}
.fm-up{padding:18px;box-sizing:border-box;max-width:100%;overflow-x:hidden;}
.fm-up *{box-sizing:border-box;}
.fm-drop{
  border:2px dashed #e9edef;border-radius:10px;
  padding:32px 16px;text-align:center;cursor:pointer;
  transition:all .15s ease;background:#f4f6f7;
}
.fm-drop:hover,.fm-drop.over{border-color:#00897b;background:#e4f3f0;}
.fm-drop .fa{font-size:40px;color:#00897b;margin-bottom:10px;}
.fm-drop-tip{font-size:15px;color:#2b3a37;}
.fm-drop-pick{color:#00897b;font-weight:600;cursor:pointer;margin-left:2px;}
.fm-drop-pick:hover{text-decoration:underline;}
.fm-drop-sub{font-size:12px;color:#8b9a96;margin-top:8px;word-break:break-all;}
.fm-drop-sub b{color:#2b3a37;}

.fm-up-list{list-style:none;margin:14px 0 0;padding:0;overflow-x:hidden;}
.fm-up-item{
  display:block;
  padding:9px 4px;border-bottom:1px solid #f1f4f5;font-size:13px;
}
.fm-up-item:last-child{border-bottom:0;}
.fm-up-top{display:flex;align-items:center;gap:10px;}
.fm-up-item .nm{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#2b3a37;}
.fm-up-item .st{flex:0 0 auto;min-width:56px;text-align:right;color:#8b9a96;font-size:12px;}
.fm-up-bar{height:6px;background:#eef1f2;border-radius:4px;overflow:hidden;margin:6px 0 3px;}
.fm-up-item .fill{display:block;height:100%;width:0;background:#00897b;border-radius:4px;transition:width .2s ease;}
.fm-up-meta{display:flex;justify-content:space-between;font-size:11px;color:#8b9a96;font-variant-numeric:tabular-nums;}
.fm-up-item.done .fill{background:#43a047;}
.fm-up-item.done .st{color:#43a047;}
.fm-up-item.err .fill{background:#e05656;}
.fm-up-item.err .st{color:#e05656;}

/* 批量下载进度面板（右下角悬浮） */
.fm-dlpanel{
  position:fixed;right:20px;bottom:20px;z-index:99999;
  width:320px;max-width:calc(100vw - 40px);
  background:#fff;border:1px solid #e9edef;border-radius:10px;
  box-shadow:0 8px 28px rgba(20,40,40,.18);overflow:hidden;
  font-family:inherit;color:#2b3a37;
}
.fm-dlpanel-head{
  display:flex;align-items:center;gap:8px;
  padding:10px 14px;background:#00897b;color:#fff;font-size:14px;font-weight:600;
}
.fm-dlpanel-head .t{flex:1 1 auto;}
.fm-dlpanel-head .c{font-size:12px;font-weight:500;opacity:.9;}
.fm-dlpanel-head .x{color:#fff;text-decoration:none;font-size:18px;line-height:1;opacity:.85;}
.fm-dlpanel-head .x:hover{opacity:1;}
.fm-dlpanel-tip{padding:7px 14px;background:#fff7e6;color:#9a6b00;font-size:12px;border-bottom:1px solid #ffe2a8;}
.fm-dlpanel-list{list-style:none;margin:0;padding:6px 0;max-height:280px;overflow-y:auto;background:#fff;}
.fm-dl-item{
  display:block;
  padding:8px 14px;font-size:13px;border-bottom:1px solid #f1f4f5;background:#fff;
}
.fm-dl-item:last-child{border-bottom:0;}
.fm-dl-top{display:flex;align-items:center;gap:10px;}
.fm-dl-item .nm{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.fm-dl-item .st{flex:0 0 auto;min-width:64px;text-align:right;color:#8b9a96;font-size:12px;}
.fm-dl-prog{height:5px;background:#eef1f2;border-radius:3px;overflow:hidden;margin:5px 0 3px;}
.fm-dl-fill{display:block;height:100%;width:0;background:#00897b;border-radius:3px;transition:width .2s ease;}
.fm-dl-meta{display:flex;justify-content:space-between;font-size:11px;color:#9aa7a3;font-variant-numeric:tabular-nums;}
.fm-dl-item.done .st{color:#43a047;}
.fm-dl-item.done .fm-dl-fill{background:#43a047;}
.fm-dl-item.err .st{color:#e05656;}
.fm-dl-item.err .fm-dl-fill{background:#e05656;}
.fm-dl-item.wait .st{color:#f57c00;}
