/* Harmony Theme Override - unified Web + H5 visual polish */
:root {
  --h-bg-0: #eef3ff;
  --h-bg-1: #f8fbff;
  --h-surface: rgba(255,255,255,.82);
  --h-surface-solid: #ffffff;
  --h-surface-soft: rgba(255,255,255,.62);
  --h-border: rgba(91,111,143,.16);
  --h-border-strong: rgba(91,111,143,.24);
  --h-text: #172033;
  --h-muted: #6b778c;
  --h-primary: #5b6cff;
  --h-primary-2: #7c4dff;
  --h-accent: #00b8d9;
  --h-success: #16b896;
  --h-warning: #f5a524;
  --h-danger: #ef476f;
  --h-radius-sm: 10px;
  --h-radius: 14px;
  --h-radius-lg: 18px;
  --h-radius-xl: 22px;
  --h-shadow-sm: 0 8px 22px rgba(31,45,77,.08);
  --h-shadow: 0 18px 48px rgba(31,45,77,.12);
  --h-shadow-lg: 0 26px 70px rgba(31,45,77,.18);
  --h-ring: 0 0 0 4px rgba(91,108,255,.14);

  --bg: var(--h-bg-1);
  --card-bg: var(--h-surface);
  --text: var(--h-text);
  --border: var(--h-border);
  --primary: var(--h-primary);
  --primary-hover: #4859f6;
  --success: var(--h-success);
  --danger: var(--h-danger);
  --warning: var(--h-warning);
  --gray: var(--h-muted);
  --light-gray: rgba(91,108,255,.06);
  --sidebar-bg: rgba(255,255,255,.78);
  --header-bg: linear-gradient(135deg, #5b6cff 0%, #7c4dff 52%, #00b8d9 100%);
  --shadow: var(--h-shadow-sm);
  --shadow-md: var(--h-shadow);
  --shadow-lg: var(--h-shadow-lg);
}

html { background: var(--h-bg-1); }
body {
  color: var(--h-text);
  background:
    radial-gradient(circle at 8% 4%, rgba(91,108,255,.20), transparent 30vw),
    radial-gradient(circle at 92% 2%, rgba(0,184,217,.16), transparent 34vw),
    linear-gradient(180deg, var(--h-bg-0) 0%, var(--h-bg-1) 46%, #ffffff 100%) !important;
  letter-spacing: .01em;
}

/* ========== 布局修复：彻底解决侧边栏与header重叠问题 ========== */
.app-container {
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: nowrap !important;
  max-width: 1100px !important;
  width: 100% !important;
  box-sizing: border-box !important;
  margin: 20px auto !important;
  padding: 0 24px !important;
  gap: 24px !important;
  align-items: flex-start !important;
  align-content: flex-start !important;
  position: relative !important;
  min-height: calc(100vh - 40px) !important;
}

.sidebar {
  position: static !important;
  top: auto !important;
  left: auto !important;
  right: auto !important;
  bottom: auto !important;
  z-index: auto !important;
  width: 220px !important;
  min-width: 220px !important;
  max-width: 220px !important;
  height: auto !important;
  max-height: none !important;
  flex-shrink: 0 !important;
  flex-grow: 0 !important;
  align-self: flex-start !important;
  order: 0 !important;
  transform: none !important;
  transition: all 0.3s ease !important;
}

.main-content {
  position: static !important;
  top: auto !important;
  left: auto !important;
  right: auto !important;
  z-index: auto !important;
  width: 100% !important;
  min-width: 0 !important;
  flex: 1 1 auto !important;
  align-self: stretch !important;
  order: 1 !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 16px !important;
  min-height: 0 !important;
}
body::before {
  content: '';
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: -1;
  background-image:
    linear-gradient(rgba(91,108,255,.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(91,108,255,.035) 1px, transparent 1px);
  background-size: 36px 36px;
  mask-image: linear-gradient(to bottom, rgba(0,0,0,.75), transparent 70%);
}

.sidebar,
.panel,
.upload-options-panel,
.files-toolbar,
.folder-list,
.record-item,
.grid-item,
.share-item,
.user-info,
.quota-display,
.login-panel,
.register-panel,
.card,
.stat-card,
.admin-header,
.data-table-container,
.tab-content.active {
  background: var(--h-surface) !important;
  border: 1px solid var(--h-border) !important;
  box-shadow: var(--h-shadow-sm) !important;
  backdrop-filter: blur(18px) saturate(1.15);
  -webkit-backdrop-filter: blur(18px) saturate(1.15);
}
.sidebar {
  border-radius: var(--h-radius-lg) !important;
  padding: 14px 12px !important;
}
.sidebar::before { display: none !important; }
.site-branding {
  margin-bottom: 12px;
  padding: 10px 10px;
  border-radius: var(--h-radius);
  background: linear-gradient(135deg, rgba(91,108,255,.11), rgba(0,184,217,.08));
}
.site-title,
.admin-logo h2 {
  color: var(--h-text) !important;
  font-weight: 850 !important;
  letter-spacing: -.03em;
}
.avatar {
  background: linear-gradient(135deg, var(--h-primary), var(--h-accent)) !important;
  box-shadow: 0 8px 18px rgba(91,108,255,.28);
}
.user-details h3,
.user-details p { margin: 0; }
.user-details p,
.quota-info,
.quota-remaining,
.grid-item .meta,
.record-meta,
.folder-count { color: var(--h-muted) !important; }
.quota-bar,
.progress-bar {
  background: rgba(91,108,255,.10) !important;
  border-radius: 999px !important;
  overflow: hidden;
}
.quota-fill,
.progress-fill { background: linear-gradient(90deg, var(--h-primary), var(--h-accent)) !important; }

.nav-links { padding: 0; margin-top: 8px !important; }
.nav-links li { margin: 3px 0; }
.nav-links a,
.admin-nav a,
.logout-btn {
  border-radius: 10px !important;
  color: var(--h-muted) !important;
  font-weight: 600 !important;
  font-size: .85rem !important;
  padding: 7px 10px !important;
  background: transparent !important;
  border: 1px solid transparent !important;
  box-shadow: none !important;
}
.nav-links a:hover,
.nav-links a.active,
.admin-nav a:hover,
.admin-nav a.active {
  color: var(--h-primary) !important;
  background: linear-gradient(135deg, rgba(91,108,255,.13), rgba(0,184,217,.08)) !important;
  border-color: rgba(91,108,255,.16) !important;
  transform: translateX(2px);
}
.logout-btn:hover {
  color: var(--h-danger) !important;
  background: rgba(239,71,111,.10) !important;
}

/* 目录树紧凑 */
.netdisk-tree-panel { margin-top: 10px !important; }
.tree-panel-title {
  font-size: .82rem !important;
  padding: 6px 8px !important;
}
.tree-item {
  padding: 5px 8px !important;
  font-size: .82rem !important;
  border-radius: 10px !important;
}
.logout-btn {
  margin-top: 8px !important;
  padding: 8px 12px !important;
  font-size: .82rem !important;
}

header,
.main-content > header {
  border-radius: var(--h-radius-xl) !important;
  padding: 12px 20px !important;
  background:
    linear-gradient(135deg, rgba(91,108,255,.94), rgba(124,77,255,.90) 52%, rgba(0,184,217,.88)) !important;
  box-shadow: 0 12px 32px rgba(91,108,255,.20) !important;
  position: relative;
  z-index: 50 !important;
  overflow: hidden;
}
header button[style*="44px"],
header .mobile-menu-btn,
header #themeToggle,
header #uploadHistoryBtn {
  width: 34px !important;
  height: 34px !important;
  min-width: 34px !important;
  min-height: 34px !important;
  font-size: 16px !important;
}
header::after,
.main-content > header::after {
  content: '';
  position: absolute;
  width: 140px;
  height: 140px;
  right: -50px;
  top: -60px;
  border-radius: 999px;
  background: rgba(255,255,255,.18);
}
h1 { letter-spacing: -.05em; font-size: 1.4rem !important; margin-bottom: 2px !important; }
.subtitle { opacity: .88 !important; font-size: .76rem !important; }

/* 侧边栏紧凑化 */
.user-info { margin-bottom: 14px !important; padding-bottom: 12px !important; gap: 10px !important; }
.avatar { width: 38px !important; height: 38px !important; font-size: 16px !important; flex-shrink: 0; }
.user-details h3 { font-size: .95rem !important; margin-bottom: 2px !important; }
.user-details p { font-size: .78rem !important; }

/* 面板标题紧凑 */
.panel-title {
  font-size: 1.15rem !important;
  margin-bottom: 10px !important;
  padding-bottom: 8px !important;
}
.panel-title i { font-size: 1.3rem !important; }

/* 工具栏+面包屑紧凑 */
.files-toolbar,
.folder-list {
  border-radius: var(--h-radius) !important;
  padding: 7px 10px !important;
  margin-bottom: 6px !important;
}
.netdisk-pathbar {
  padding: 5px 0 !important;
  margin-bottom: 4px !important;
}
.breadcrumb {
  font-size: .82rem !important;
  padding: 2px 0 !important;
}
.path-summary { font-size: .75rem !important; }
/* 按钮紧凑 */
.btn-small {
  font-size: .78rem !important;
  padding: 5px 9px !important;
}

/* 配额显示紧凑 - 存储和到期时间同一行 */
.quota-display {
  padding: 12px !important;
  margin-bottom: 14px !important;
}
.quota-title {
  font-size: .8rem !important;
  margin-bottom: 6px !important;
}
.quota-bar {
  height: 5px !important;
  margin-bottom: 6px !important;
}
.quota-info {
  font-size: .72rem !important;
  justify-content: space-between !important;
}
/* 存储用量和到期时间放一行 */
.quota-info-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: .72rem !important;
}
.quota-usage {
  color: var(--h-muted) !important;
}
.quota-expire {
  color: var(--h-success) !important;
  font-weight: 600;
  white-space: nowrap;
}

.panel {
  border-radius: var(--h-radius-lg) !important;
  padding: 14px !important;
  overflow: visible !important;
}

/* 右下角浮动按钮不被遮挡 */
#recordsSection {
  position: relative;
}
#recordsSection #paginationControls {
  padding-bottom: 60px !important;
}

/* 文件列表行紧凑 */
.record-item {
  gap: 8px !important;
  padding: 4px 8px !important;  /* 缩小内边距 */
}
.record-item .record-content .record-name {
  margin-bottom: 0 !important;  /* 减少底部间距 */
}
.record-item .record-content .record-meta {
  font-size: .7rem !important;  /* 缩小元信息字体 */
}
.grid-item .thumbnail {
  height: 100px !important;
}
.grid-item .grid-info {
  padding: 6px 8px !important;
}
.panel:hover,
.grid-item:hover,
.record-item:hover,
.folder-item:hover,
.stat-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--h-shadow) !important;
}
.panel-title,
.records-header,
.panel-header {
  border-color: var(--h-border) !important;
}
.panel-title {
  font-weight: 850 !important;
  letter-spacing: -.025em;
}
.upload-section { gap: 10px !important; }
.drop-zone {
  border: 1.5px dashed rgba(91,108,255,.34) !important;
  background:
    linear-gradient(180deg, rgba(91,108,255,.075), rgba(0,184,217,.055)),
    rgba(255,255,255,.58) !important;
  border-radius: var(--h-radius-lg) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.8);
}
.drop-zone:hover,
.drop-zone.dragover {
  border-color: var(--h-primary) !important;
  background: linear-gradient(180deg, rgba(91,108,255,.13), rgba(0,184,217,.09)) !important;
  box-shadow: var(--h-ring), inset 0 1px 0 rgba(255,255,255,.85) !important;
}

.files-toolbar,
.folder-list {
  border-radius: var(--h-radius) !important;
  padding: 10px !important;
}
.folder-item {
  border: 1px solid var(--h-border) !important;
  background: rgba(255,255,255,.74) !important;
  border-radius: 12px !important;
}
.folder-item.active {
  border-color: rgba(91,108,255,.45) !important;
  background: linear-gradient(135deg, rgba(91,108,255,.14), rgba(0,184,217,.08)) !important;
}
.records-grid { gap: 8px !important; }
.grid-item,
.record-item {
  border-radius: var(--h-radius) !important;
  overflow: hidden;
}
.grid-item .thumbnail,
.grid-item .file-icon {
  background: linear-gradient(135deg, rgba(91,108,255,.09), rgba(0,184,217,.06)) !important;
}
.grid-item .actions {
  background: rgba(91,108,255,.045) !important;
  border-color: var(--h-border) !important;
}
.record-item {
  border-left: 4px solid rgba(91,108,255,.28) !important;
}
.record-item.selected,
.grid-item.selected {
  border-color: rgba(91,108,255,.55) !important;
  box-shadow: var(--h-ring), var(--h-shadow-sm) !important;
}

input[type="text"],
input[type="password"],
input[type="number"],
input[type="date"],
input[type="datetime-local"],
input[type="email"],
select,
textarea,
.form-control,
.search-input,
.records-actions input,
#fileTypeFilter,
#viewMode,
#sortBy {
  background: rgba(255,255,255,.78) !important;
  color: var(--h-text) !important;
  border: 1px solid var(--h-border-strong) !important;
  border-radius: 14px !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.75);
  transition: border-color .2s ease, box-shadow .2s ease, background .2s ease;
}
input:focus,
select:focus,
textarea:focus,
.form-control:focus,
.search-input:focus {
  border-color: rgba(91,108,255,.62) !important;
  box-shadow: var(--h-ring), inset 0 1px 0 rgba(255,255,255,.85) !important;
  outline: none !important;
}

button,
.btn,
.btn-small,
.btn-primary,
.login-panel .btn-primary,
.register-panel .btn-primary,
#uploadBtn {
  border-radius: 12px !important;
  border: 1px solid transparent !important;
  font-weight: 760 !important;
  box-shadow: 0 6px 16px rgba(91,108,255,.18) !important;
}
button:not(.btn-danger):not(.btn-secondary):not(.btn-small),
.btn-primary,
#uploadBtn,
.login-panel .btn-primary,
.register-panel .btn-primary {
  background: linear-gradient(135deg, var(--h-primary), var(--h-primary-2)) !important;
  color: #fff !important;
}
button:hover,
.btn:hover,
.btn-small:hover {
  transform: translateY(-1px);
  box-shadow: 0 8px 20px rgba(91,108,255,.24) !important;
}
.btn-secondary,
.btn-small,
.toggle-records,
.clear-local {
  background: rgba(255,255,255,.72) !important;
  color: var(--h-text) !important;
  border-color: var(--h-border) !important;
  box-shadow: var(--h-shadow-sm) !important;
}
.btn-danger { background: linear-gradient(135deg, #ef476f, #f97388) !important; color: #fff !important; }
.btn-success { background: linear-gradient(135deg, #16b896, #22c55e) !important; color: #fff !important; }
.btn-info { background: linear-gradient(135deg, #00b8d9, #38bdf8) !important; color: #fff !important; }
button:disabled,
.btn:disabled { opacity: .55; transform: none !important; box-shadow: none !important; }

/* Admin */
.admin-container {
  background:
    radial-gradient(circle at 9% 5%, rgba(91,108,255,.18), transparent 30vw),
    radial-gradient(circle at 96% 0%, rgba(0,184,217,.14), transparent 32vw),
    linear-gradient(180deg, var(--h-bg-0), var(--h-bg-1)) !important;
}
.admin-sidebar {
  width: 268px !important;
  background: rgba(18,27,49,.86) !important;
  border-right: 1px solid rgba(255,255,255,.10) !important;
  box-shadow: 14px 0 42px rgba(18,27,49,.16) !important;
  backdrop-filter: blur(18px) saturate(1.15);
  -webkit-backdrop-filter: blur(18px) saturate(1.15);
}
.admin-logo {
  margin: 10px 12px 14px !important;
  padding: 14px 14px !important;
  border: 1px solid rgba(255,255,255,.10) !important;
  border-radius: 16px !important;
  background: linear-gradient(135deg, rgba(255,255,255,.14), rgba(255,255,255,.06));
}
.admin-logo h2,
.admin-logo small { color: #fff !important; }
.admin-nav a {
  display: flex !important;
  align-items: center;
  gap: 10px;
  color: rgba(255,255,255,.72) !important;
  margin: 4px 12px !important;
  padding: 10px 12px !important;
}
.admin-nav a:hover,
.admin-nav a.active {
  color: #fff !important;
  background: linear-gradient(135deg, rgba(91,108,255,.42), rgba(0,184,217,.20)) !important;
  border-color: rgba(255,255,255,.14) !important;
  transform: translateX(3px);
}
.admin-main { padding: 16px !important; }
.admin-header {
  border-radius: var(--h-radius-lg) !important;
  padding: 14px 18px !important;
}
.admin-header h1 { font-weight: 850; letter-spacing: -.035em; }
.stat-card {
  border-radius: var(--h-radius-lg) !important;
  min-height: 110px;
}
.stat-card .value { font-weight: 880 !important; letter-spacing: -.04em; }
.panel-header {
  background: linear-gradient(180deg, rgba(91,108,255,.045), transparent) !important;
}
.data-table-container {
  border-radius: var(--h-radius) !important;
  overflow: auto;
}
.data-table {
  border-collapse: separate !important;
  border-spacing: 0 !important;
}
.data-table th {
  background: rgba(91,108,255,.075) !important;
  color: var(--h-muted) !important;
  font-weight: 800 !important;
}
.data-table td,
.data-table th { border-color: var(--h-border) !important; }
.data-table tr:hover { background: rgba(91,108,255,.045) !important; }
.pagination button {
  border-radius: 12px !important;
  background: rgba(255,255,255,.78) !important;
  color: var(--h-text) !important;
}
.pagination button.active { background: linear-gradient(135deg, var(--h-primary), var(--h-primary-2)) !important; color: #fff !important; }

/* Dark theme harmony */
[data-theme="dark"],
.dark {
  --h-bg-0: #111827;
  --h-bg-1: #0b1020;
  --h-surface: rgba(23,31,52,.78);
  --h-surface-solid: #171f34;
  --h-surface-soft: rgba(31,42,70,.64);
  --h-border: rgba(219,226,255,.11);
  --h-border-strong: rgba(219,226,255,.18);
  --h-text: #eef3ff;
  --h-muted: #a9b4cc;
  --bg: var(--h-bg-1);
  --card-bg: var(--h-surface);
  --text: var(--h-text);
  --border: var(--h-border);
  --light-gray: rgba(255,255,255,.055);
  --sidebar-bg: rgba(23,31,52,.78);
}
[data-theme="dark"] body,
.dark body,
body.dark {
  background:
    radial-gradient(circle at 8% 4%, rgba(91,108,255,.22), transparent 30vw),
    radial-gradient(circle at 92% 2%, rgba(0,184,217,.16), transparent 34vw),
    linear-gradient(180deg, #111827 0%, #0b1020 100%) !important;
  color: var(--h-text) !important;
}
[data-theme="dark"] .sidebar,
[data-theme="dark"] .panel,
[data-theme="dark"] .grid-item,
[data-theme="dark"] .record-item,
[data-theme="dark"] .folder-item,
.dark .panel,
.dark .stat-card,
.dark .admin-header,
.dark .data-table-container {
  background: var(--h-surface) !important;
  border-color: var(--h-border) !important;
}
[data-theme="dark"] input,
[data-theme="dark"] select,
[data-theme="dark"] textarea,
.dark input,
.dark select,
.dark textarea,
.dark .form-control {
  background: rgba(15,23,42,.72) !important;
  color: var(--h-text) !important;
  border-color: var(--h-border-strong) !important;
}
[data-theme="dark"] .btn-small,
[data-theme="dark"] .btn-secondary,
.dark .btn-secondary {
  background: rgba(31,42,70,.72) !important;
  color: var(--h-text) !important;
}

@media (max-width: 1024px) {
  .app-container { padding: 0 14px !important; gap: 16px !important; }
  .panel { padding: 20px !important; }
  .admin-main { padding: 16px !important; }
}
@media (max-width: 768px) {
  body { background-attachment: fixed; }
  .app-container { margin: 0 auto !important; padding: 10px !important; gap: 12px !important; }
  .sidebar {
    border-radius: 0 24px 24px 0 !important;
    max-width: 86vw !important;
    background: rgba(255,255,255,.92) !important;
  }
  [data-theme="dark"] .sidebar { background: rgba(23,31,52,.94) !important; }
  .main-content > header,
  header { padding: 16px 14px !important; border-radius: 20px !important; }
  h1 { font-size: 1.75rem !important; }
  .subtitle { font-size: .9rem !important; }
  .panel { border-radius: 22px !important; padding: 16px !important; }
  .upload-section { grid-template-columns: 1fr !important; }
  .records-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 12px !important; }
  .files-toolbar,
  .folder-list,
  .records-header { border-radius: 18px !important; }
  .toolbar-left,
  .toolbar-right,
  .records-actions { justify-content: flex-start !important; }
  .btn,
  button { min-height: 42px; }
  .admin-sidebar {
    width: 280px !important;
    left: -290px !important;
    border-radius: 0 24px 24px 0 !important;
  }
  .admin-sidebar.active { left: 0 !important; }
  .admin-header { margin-left: 42px; }
  .panel-header { align-items: stretch !important; }
  .panel-header > div { width: 100%; }
}
@media (max-width: 480px) {
  .records-grid { grid-template-columns: 1fr !important; }
  .grid-item .thumbnail,
  .grid-item .file-icon { height: 170px !important; }
  .admin-main { padding: 10px !important; }
  .stat-card { min-height: 108px; }
}

/* Standalone login page when rendered by login.php */
.login-page-harmony {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 22px;
}
.login-page-harmony .container {
  width: min(460px, 100%);
  background: rgba(255,255,255,.82) !important;
  border: 1px solid var(--h-border) !important;
  border-radius: var(--h-radius-xl) !important;
  box-shadow: var(--h-shadow-lg) !important;
  backdrop-filter: blur(20px) saturate(1.15);
  -webkit-backdrop-filter: blur(20px) saturate(1.15);
  overflow: hidden;
}
.login-page-harmony .header {
  background: linear-gradient(135deg, rgba(91,108,255,.95), rgba(124,77,255,.9) 58%, rgba(0,184,217,.86)) !important;
  color: #fff !important;
  padding: 34px 28px !important;
  text-align: center;
}
.login-page-harmony .header h1 { color: #fff !important; margin-bottom: 8px; }
.login-page-harmony .header p { color: rgba(255,255,255,.86) !important; }
.login-page-harmony .content { padding: 28px !important; }
.login-page-harmony .form-group { margin-bottom: 18px; }
.login-page-harmony label { color: var(--h-text) !important; font-weight: 750; }
.login-page-harmony input {
  min-height: 46px;
  padding: 12px 14px !important;
  border-radius: 14px !important;
  border: 1px solid var(--h-border-strong) !important;
}
.login-page-harmony .btn,
.login-page-harmony button[type="submit"] {
  width: 100%;
  min-height: 48px;
  margin-top: 8px;
  background: linear-gradient(135deg, var(--h-primary), var(--h-primary-2)) !important;
  color: #fff !important;
  border-radius: 16px !important;
}
.login-page-harmony .links,
.login-page-harmony .footer { color: var(--h-muted) !important; }
@media (max-width: 480px) {
  .login-page-harmony { padding: 12px; align-items: stretch; }
  .login-page-harmony .container { border-radius: 26px !important; margin: auto 0; }
  .login-page-harmony .header { padding: 28px 20px !important; }
  .login-page-harmony .content { padding: 22px 18px !important; }
}

/* Netdisk layout: desktop file-manager shell */
@media (min-width: 769px) {
  body:has(#appContainer:not([style*="display: none"])) {
    overflow: hidden;
  }
  #appContainer {
    height: 100vh;
    overflow: hidden;
  }
  #appContainer .app-container {
    height: 100vh;
    min-height: 100vh !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 14px !important;
    gap: 14px !important;
    display: grid !important;
    grid-template-columns: 272px minmax(0, 1fr);
  }
  #appContainer .sidebar {
    width: auto !important;
    height: calc(100vh - 28px) !important;
    position: sticky !important;
    top: 14px !important;
    display: flex;
    flex-direction: column;
    padding: 16px !important;
    border-radius: 24px !important;
    overflow: hidden auto;
  }
  #appContainer .sidebar.collapsed {
    width: auto !important;
    padding: 16px 10px !important;
  }
  #appContainer .main-content {
    min-height: 0;
    height: calc(100vh - 28px);
    display: grid !important;
    grid-template-rows: auto minmax(0, 1fr);
    gap: 14px !important;
    overflow: hidden;
  }
  #appContainer .main-content > header {
    min-height: 86px;
    padding: 18px 22px !important;
    display: flex !important;
    align-items: center !important;
    text-align: left !important;
    flex-shrink: 0;
  }
  #appContainer .main-content > header h1 {
    font-size: 1.9rem !important;
    margin-bottom: 4px !important;
  }
  #appContainer .main-content > section.panel {
    min-height: 0;
    overflow: auto;
    margin: 0 !important;
  }

  /* My files becomes real netdisk workspace */
  #recordsSection.panel {
    padding: 0 !important;
    overflow: visible !important;
    display: grid !important;
    grid-template-rows: auto auto minmax(0, 1fr) auto;  /* 4行：标题、工具栏、文件列表、分页 */
    background: rgba(255,255,255,.70) !important;
  }
  #recordsSection .panel-title {
    margin: 0 !important;
    padding: 6px 18px 4px !important;  /* 缩小标题栏高度 */
    border-bottom: 0 !important;
    font-size: 1rem !important;  /* 缩小字体 */
    grid-row: 1;
  }
  #recordsSection .files-toolbar {
    margin: 0 12px 2px !important;  /* 缩小底部间距 */
    display: flex !important;
    flex-wrap: wrap !important;  /* 允许换行 */
    justify-content: space-between !important;
    align-items: center !important;
    gap: 6px !important;
    position: sticky;
    top: 0;
    z-index: 18;
    background: rgba(255,255,255,.86) !important;
    padding: 4px 12px !important;  /* 缩小内边距 */
    border-radius: 10px !important;
    grid-row: 2;
    overflow: visible !important;
  }
  #recordsSection .toolbar-left,
  #recordsSection .toolbar-right {
    min-width: 0;
    display: flex !important;
    align-items: center !important;
    gap: 6px !important;
    flex-wrap: wrap !important;  /* 允许换行，确保所有按钮可见 */
  }
  #recordsSection .toolbar-right {
    overflow: visible !important;  /* 确保右侧元素不被裁剪 */
    position: relative !important;
    z-index: 99999 !important;  /* 超高层级，确保下拉菜单在最上层 */
    min-width: auto !important;
    flex: 1 1 auto !important;  /* 允许拉伸填充空间 */
    justify-content: flex-end !important;  /* 内容靠右对齐 */
    max-width: none !important;  /* 不限制最大宽度 */
  }
  /* 工具栏内下拉菜单样式 - 确保正常显示 */
  #recordsSection .toolbar-right .select-dropdown {
    position: relative !important;
    z-index: 999999 !important;
    display: inline-block !important;  /* 确保是inline-block以便正确定位子元素 */
  }
  #recordsSection .toolbar-right .select-dropdown-menu {
    position: absolute !important;
    top: 100% !important;
    right: 0 !important;              /* 改为靠右对齐，避免被裁剪 */
    left: auto !important;
    transform: none !important;       /* 移除transform */
    margin-top: 4px !important;
    z-index: 9999999 !important;      /* 更高的z-index */
    min-width: 150px !important;
    max-width: 200px !important;      /* 限制宽度防止溢出 */
    padding: 10px !important;
    border-radius: 12px !important;
    border: 1px solid var(--h-border, #e0e0e0) !important;
    background: rgba(255,255,255,.99) !important;
    box-shadow: 0 8px 32px rgba(0,0,0,.20) !important;
    white-space: nowrap !important;   /* 防止文字换行 */
  }
  #recordsSection .toolbar-right .select-dropdown-menu .dropdown-item {
    padding: 10px 12px !important;
    cursor: pointer;
    border-radius: 8px !important;
    transition: background .2s ease;
  }
  #recordsSection .toolbar-right .select-dropdown-menu .dropdown-item:hover {
    background: rgba(91,108,255,.10) !important;
    color: var(--h-primary, #5b6cff) !important;
  }
  /* 搜索框和筛选下拉框优化 */
  #recordsSection .toolbar-right input[type="text"],
  #recordsSection .toolbar-right select {
    flex-shrink: 0;
    z-index: 99999;
  }
  /* 全选栏 - 已合并到工具栏，完全隐藏 - 多重保障 */
  #recordsSection .records-header-fixed,
  div#recordsHeaderFixed,
  .records-header-fixed,
  .bulk-select-bar,
  #selectAllCheckbox + label + span,
  [onclick="toggleSelectAll()"] + label + span {
    display: none !important;
    visibility: hidden !important;
    height: 0 !important;
    overflow: hidden !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    position: absolute !important;
    left: -9999px !important;
    top: -9999px !important;
    opacity: 0 !important;
    pointer-events: none !important;
    max-height: 0 !important;
    min-height: 0 !important;
    line-height: 0 !important;
    font-size: 0 !important;
  }
  /* 隐藏全选checkbox及其标签 */
  #recordsSection #selectAllCheckbox,
  #recordsSection #selectAllCheckbox + label {
    display: none !important;
  }
  #recordsSection #filesTitle {
    display: flex;
    align-items: center;
    gap: 8px;
    white-space: nowrap;
    color: var(--h-text) !important;
    font-weight: 850 !important;
  }
  #recordsSection #filesTitle::before {
    content: '☁️';
    width: 34px;
    height: 34px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 12px;
    background: linear-gradient(135deg, rgba(91,108,255,.16), rgba(0,184,217,.10));
  }
  #recordsSection .records-actions {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(120px, 150px)) minmax(220px, 1fr) repeat(3, auto);
    gap: 8px !important;
    justify-content: end;
    align-items: center;
  }
  #recordsSection .records-actions input#searchRecord {
    width: 100% !important;
    min-width: 220px;
  }
  #recordsSection .records-actions button {
    white-space: nowrap;
  }
  /* 滚动区域 - 第4行 */
  #recordsSection #folderList.folder-list {
    margin: 0 12px 6px !important;
    max-height: 100px;
    overflow: auto;
    grid-row: 4;
  }
  #recordsSection #recordsContainer {
    margin: 0 12px !important;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    border: 1px solid rgba(91,108,255,.12) !important;  /* 柔和的边框色 */
    border-radius: 14px !important;  /* 更圆润 */
    background: linear-gradient(180deg, rgba(255,255,255,.75), rgba(255,255,255,.55)) !important;  /* 渐变背景 */
    padding: 8px !important;  /* 紧凑内边距 */
    grid-row: 3;
    box-shadow: 0 2px 12px rgba(91,108,255,.06), inset 0 1px 0 rgba(255,255,255,.8) !important;  /* 柔和阴影 */
  }
  #recordsSection #recordsContainer:has(.record-cards),
  #recordsSection #recordsContainer:has(.records-grid) {
    background: linear-gradient(180deg, rgba(255,255,255,.60), rgba(255,255,255,.40)) !important;
  }
  #recordsSection #paginationControls {
    margin: 8px 12px 20px !important;   /* 增加底部边距 */
    padding: 12px 20px !important;      /* 增加内边距 */
    border: 1px solid var(--h-border);
    border-radius: 12px;
    background: rgba(255,255,255,.80) !important;
    flex-shrink: 0;
    grid-row: 4 !important;             /* 确保在第4行（最后一行） */
    text-align: center !important;
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 16px !important;               /* 增加元素间距 */
    width: auto !important;
    max-width: none !important;
    position: relative !important;
    z-index: 10 !important;
  }
  .record-cards {
    display: flex !important;
    flex-direction: column;
    gap: 6px !important;
  }
  .record-item {
    display: grid !important;
    grid-template-columns: minmax(0, 1.8fr) minmax(110px,.45fr) minmax(130px,.55fr) auto;
    align-items: center;
    gap: 8px;  /* 缩小间距 */
    margin: 0 !important;
    padding: 7px 12px !important;  /* 稍微增加垂直内边距 */
    border-left: 3px solid transparent !important;  /* 左侧装饰条（默认透明） */
    border-radius: 10px !important;
    background: linear-gradient(135deg, rgba(255,255,255,.85), rgba(255,255,255,.70)) !important;  /* 每行独立背景 */
    transition: all .2s ease !important;
  }
  .record-item:hover {
    background: linear-gradient(135deg, rgba(91,108,255,.08), rgba(0,184,217,.05)) !important;
    border-left-color: rgba(91,108,255,.5) !important;  /* hover时显示左侧条 */
    transform: translateX(2px);  /* 微妙右移效果 */
    box-shadow: 0 2px 8px rgba(91,108,255,.10) !important;
  }
  .record-item.selected {
    background: linear-gradient(135deg, rgba(91,108,255,.14), rgba(0,184,217,.08)) !important;
    border-left-color: var(--h-primary) !important;  /* 选中时左侧条高亮 */
    box-shadow: 0 2px 12px rgba(91,108,255,.15) !important;
  }
  .record-info,
  .record-main,
  .record-content {
    min-width: 0;
  }
  .record-name {
    font-weight: 600 !important;  /* 修正：760不是有效值 */
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  /* 列表视图中record-name需要flex布局显示图标和文件名 */
  .netdisk-list-view .record-name {
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;  /* 覆盖style.css的space-between */
    gap: 8px !important;
  }
  .record-meta {
    display: flex;
    gap: 8px;  /* 缩小间距 */
    flex-wrap: wrap;
    font-size: 11px !important;  /* 缩小字体 */
    color: var(--h-muted, #888) !important;  /* 统一颜色 */
  }
  .record-actions {
    justify-self: end;
    display: flex;
    gap: 4px;  /* 紧凑按钮间距 */
    flex-wrap: nowrap;
    align-items: center;
  }
  .record-actions button {
    border-radius: 8px !important;  /* 更圆润 */
    font-size: 11px !important;
    padding: 4px 10px !important;
    transition: all .2s ease !important;
  }
  .records-grid {
    grid-template-columns: repeat(auto-fill, minmax(168px, 1fr)) !important;
  }
}

/* Netdisk layout: H5 bottom-app feeling */
@media (max-width: 768px) {
  #appContainer {
    position: static !important;
    overflow: visible !important;
    transform: none !important;
    filter: none !important;
    perspective: none !important;
  }
  #appContainer .app-container {
    padding: 8px !important;
    margin: 0 !important;
    display: flex !important;
    flex-direction: column !important;
    grid-template-columns: none !important;
    width: 100% !important;
    max-width: 100vw !important;
    min-height: 100vh !important;
    height: auto !important;
    overflow: visible !important;
  }
  #appContainer .sidebar {
    position: fixed !important;
    top: 0 !important;
    left: -100% !important;
    width: 280px !important;
    max-width: 80vw !important;
    height: 100vh !important;
    z-index: 999 !important;
    border-radius: 0 24px 24px 0 !important;
    background: rgba(255,255,255,.96) !important;
    box-shadow: 8px 0 32px rgba(0,0,0,.15) !important;
    transition: left .3s cubic-bezier(.25,.8,.25,1) !important;
    overflow-y: auto !important;
  }
  #appContainer .sidebar.mobile-open {
    left: 0 !important;
  }
  [data-theme="dark"] #appContainer .sidebar {
    background: rgba(23,31,52,.96) !important;
  }
  #appContainer .main-content {
    gap: 10px !important;
    width: 100% !important;
    flex: 1 !important;
    min-width: 0 !important;
    display: flex !important;
    flex-direction: column !important;
    grid-template-rows: none !important;
    height: auto !important;
    min-height: auto !important;
    overflow: visible !important;
  }
  #appContainer .mobile-menu-btn {
    display: flex !important;
  }
  #appContainer .sidebar-toggle {
    display: none !important;
  }
  #sidebarOverlay.sidebar-overlay {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    width: 100vw !important;
    height: 100vh !important;
    background: rgba(0,0,0,.5) !important;
    z-index: 997 !important;
    opacity: 0 !important;
    visibility: hidden !important;
    pointer-events: none !important;
    transition: opacity .3s ease, visibility .3s ease !important;
    display: block !important;
  }
  #sidebarOverlay.sidebar-overlay.active {
    opacity: 1 !important;
    visibility: visible !important;
    pointer-events: auto !important;
    cursor: pointer !important;
  }
  #appContainer .main-content > header {
    min-height: 78px;
    position: sticky;
    top: 8px;
    z-index: 20;
    box-shadow: 0 18px 42px rgba(91,108,255,.22) !important;
  }
  #recordsSection.panel {
    padding: 0 !important;
    overflow: visible !important;  /* 允许下拉菜单溢出显示 */
  }
  #recordsSection .panel-title {
    padding: 6px 16px 4px !important;  /* 缩小标题栏高度 */
    margin: 0 !important;
    border: 0 !important;
    font-size: 1rem !important;
  }
  #recordsSection .files-toolbar,
  #recordsSection .records-header-fixed,
  #recordsSection #folderList,
  #recordsSection #recordsContainer,
  #recordsSection #paginationControls {
    margin-left: 8px !important;
    margin-right: 8px !important;
  }
  #recordsSection .files-toolbar {
    display: flex !important;
    overflow-x: auto;
    flex-wrap: wrap !important;  /* 允许换行 */
    padding: 4px !important;  /* 缩小内边距 */
    margin-bottom: 2px !important;  /* 缩小底部间距 */
  }
  #recordsSection .toolbar-left,
  #recordsSection .toolbar-right {
    flex-wrap: wrap !important;  /* 允许换行，确保所有批量操作按钮可见 */
    min-width: max-content;
  }
  #recordsSection .records-header {
    display: block !important;
    padding: 12px !important;
  }
  #recordsSection #filesTitle {
    margin-bottom: 10px;
    font-weight: 850 !important;
  }
  #recordsSection .records-actions {
    display: grid !important;
    grid-template-columns: 1fr 1fr;
    gap: 8px !important;
    justify-content: stretch !important;
  }
  #recordsSection .records-actions #searchRecord {
    grid-column: 1 / -1;
    max-width: none !important;
    width: 100%;
  }
  #recordsSection .records-actions button {
    width: 100%;
    margin: 0 !important;
  }
  #recordsSection #recordsContainer {
    max-height: none;
    padding: 10px;
    border: 1px solid var(--h-border);
    border-radius: 18px;
    background: rgba(255,255,255,.48);
  }
  .record-cards {
    display: flex !important;
    flex-direction: column;
    gap: 8px !important;
  }
  .record-item {
    display: block !important;
    padding: 8px !important;  /* 缩小内边距 */
    border-radius: 12px !important;  /* 略小圆角 */
    border-left: 0 !important;
  }
  .record-actions {
    margin-top: 6px;  /* 缩小顶部间距 */
    display: grid !important;
    grid-template-columns: repeat(3, 1fr);
    gap: 4px;  /* 缩小按钮间距 */
  }
  .record-actions button,
  .record-actions a {
    width: 100%;
    min-width: 0 !important;
  }
  #paginationControls {
    border-radius: 18px !important;
    padding: 10px !important;
    background: rgba(255,255,255,.70);
  }
  #appContainer .panel {
    border-radius: 20px !important;
    padding: 16px !important;
  }
  #appContainer .panel-title {
    font-size: 1.1rem !important;
    padding-bottom: 8px !important;
  }
  h1 {
    font-size: 1.5rem !important;
  }
  .subtitle {
    font-size: .8rem !important;
  }
  #appContainer header > div {
    flex-wrap: wrap !important;
    gap: 8px !important;
  }
  button, .btn {
    min-height: 44px !important;
    padding: 10px 14px !important;
  }
}

/* Hide/show respects existing JS inline display values */
#recordsSection[style*="display: none"] { display: none !important; }
#recordsSection.panel { display: grid !important; }
#recordsSection[style*="display: none"] { display: none !important; }

/* Upload as netdisk drawer/modal instead of primary page */
.netdisk-upload-btn {
  background: linear-gradient(135deg, var(--h-primary), var(--h-primary-2)) !important;
  color: #fff !important;
  border-color: transparent !important;
}
@media (min-width: 769px) {
  #uploadSection.panel {
    position: fixed !important;
    left: 0;
    right: 0;
    top: 0;
    bottom: 0;
    margin: auto;
    width: min(560px, calc(100vw - 44px));
    max-width: 560px;
    height: fit-content;
    max-height: calc(100vh - 44px);
    z-index: 1200;
    display: none;
    grid-template-rows: auto minmax(0, 1fr);
    padding: 0 !important;
    border-radius: 26px !important;
    overflow: hidden auto !important;
    box-shadow: 0 34px 100px rgba(0,0,0,.38) !important;
    border: 1px solid rgba(255,255,255,.22) !important;
    background: rgba(248,251,255,.96);
    animation: uploadModalIn .24s ease-out;
  }
  #uploadSection.panel[style*="display: block"] { display: grid !important; }
  
  /* 背景遮罩 - 与详情弹窗一致 */
  #uploadSection.panel::before {
    content: '';
    position: fixed;
    inset: 0;
    pointer-events: none;
    background: rgba(6,12,28,.70);
    backdrop-filter: blur(14px) saturate(1.1);
    -webkit-backdrop-filter: blur(14px) saturate(1.1);
    z-index: -1;
  }
  
  #uploadSection .panel-title {
    position: sticky;
    top: 0;
    z-index: 2;
    margin: 0 !important;
    padding: 18px 22px !important;
    background: rgba(248,251,255,.96);
    backdrop-filter: blur(18px);
    -webkit-backdrop-filter: blur(18px);
    font-size: 17px;
    font-weight: 600;
  }
  #uploadSection .panel-title i {
    font-size: 18px;
    margin-right: 4px;
  }
  #uploadSection .panel-title::after {
    content: '关闭后可回到我的网盘';
    display: block;
    font-size: 12px;
    font-weight: 500;
    color: var(--h-muted);
    margin-top: 2px;
  }
  #uploadSection .upload-section {
    grid-template-columns: 1fr !important;
    padding: 14px 22px 22px;
    gap: 14px;
  }
  #uploadSection .upload-section > .panel {
    padding: 16px 18px !important;
    border-radius: 14px !important;
  }
  #uploadSection .drop-zone {
    min-height: 180px;
    padding: 28px 16px !important;
    border-radius: 14px !important;
  }
  #uploadSection .drop-zone div[style*="font-size: 3rem"] {
    font-size: 2.2rem !important;
    margin-bottom: 10px !important;
  }
  #uploadSection .drop-zone div[style*="font-size: 1.3rem"] {
    font-size: 1.1rem !important;
    margin-bottom: 6px !important;
  }
  #uploadSection .preview-container {
    margin: 12px 0;
    gap: 8px;
    max-height: 320px;
    overflow-y: auto;
  }
  #uploadSection .preview-item {
    padding: 8px 10px !important;
    border-radius: 10px !important;
  }
  #uploadSection .preview-thumb {
    width: 44px !important;
    height: 44px !important;
    margin-right: 10px !important;
  }
  #uploadSection .preview-item div[style*="width: 60px; height: 60px"] {
    width: 44px !important;
    height: 44px !important;
  }
  #uploadSection .preview-item div[style*="width: 60px; height: 60px"] div {
    font-size: 1.2rem !important;
  }
  #uploadSection .preview-name {
    font-size: 13px !important;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  #uploadSection .preview-size {
    font-size: 11px !important;
  }
  #uploadSection .remove-preview {
    width: 22px !important;
    height: 22px !important;
    font-size: 14px !important;
  }
  #uploadSection button[id="uploadBtn"],
  #uploadSection #uploadBtn {
    margin-top: 10px !important;
    padding: 12px !important;
    font-size: 14px !important;
    border-radius: 12px !important;
  }
  #uploadSection .upload-options-panel .panel-header {
    padding: 10px 14px !important;
  }
  #uploadSection .upload-options-panel .panel-header h3 {
    font-size: 13px;
  }
  #uploadSection .upload-options-panel .panel-content {
    padding: 12px 14px !important;
  }
  #uploadSection h3[style*="margin-bottom: 20px"] {
    margin-bottom: 12px !important;
    font-size: 14px !important;
  }
  #uploadSection div[style*="margin-bottom: 15px; display: flex"] {
    margin-bottom: 10px !important;
  }
  #uploadSection select[id="uploadFolderSelect"] {
    padding: 6px 10px !important;
    font-size: 13px !important;
  }
  #uploadSection button[onclick="refreshUploadFolderList()"] {
    padding: 6px 10px !important;
  }
  /* 遮罩层由 #uploadOverlay 独立元素提供, ::before 不再使用 */
  #uploadSection .upload-controls-container {
    gap: 6px !important;
  }
  #uploadSection .upload-controls-container button {
    padding: 6px 14px !important;
    font-size: 12px !important;
    border-radius: 8px !important;
  }
  #uploadSection .progress-container {
    margin-top: 4px !important;
  }
  #uploadSection .progress-bar {
    height: 4px !important;
  }
  #uploadSection .quota-error {
    padding: 14px 18px !important;
    margin-bottom: 12px !important;
  }
  @keyframes uploadModalIn {
    from { opacity: 0; transform: scale(.95) translateY(8px); }
    to { opacity: 1; transform: scale(1) translateY(0); }
  }
}
@media (max-width: 768px) {
  #uploadSection.panel {
    position: fixed !important;
    left: 0;
    right: 0;
    bottom: 0;
    top: auto;
    height: min(80vh, 660px);
    z-index: 1200;
    display: none;
    padding: 0 !important;
    border-radius: 24px 24px 0 0 !important;
    overflow: hidden auto !important;
    box-shadow: 0 -28px 70px rgba(15,23,42,.28) !important;
    animation: netdiskSheetIn .24s ease-out;
  }
  #uploadSection.panel[style*="display: block"] { display: block !important; }
  #uploadSection .panel-title {
    position: sticky;
    top: 0;
    z-index: 2;
    margin: 0 !important;
    padding: 14px 16px 8px !important;
    background: rgba(255,255,255,.92);
    backdrop-filter: blur(18px);
    -webkit-backdrop-filter: blur(18px);
  }
  #uploadSection .panel-title::before {
    content: '';
    display: block;
    width: 40px;
    height: 4px;
    border-radius: 999px;
    background: rgba(107,119,140,.3);
    margin: -4px auto 10px;
  }
  #uploadSection .upload-section {
    padding: 10px 14px 18px;
    gap: 12px;
    grid-template-columns: 1fr !important;
  }
  #uploadSection .upload-section > .panel {
    padding: 14px 16px !important;
    border-radius: 14px !important;
  }
  #uploadSection .drop-zone {
    min-height: 160px;
    padding: 24px 14px !important;
    border-radius: 14px !important;
  }
  #uploadSection .drop-zone div[style*="font-size: 3rem"] {
    font-size: 2rem !important;
    margin-bottom: 8px !important;
  }
  #uploadSection .drop-zone div[style*="font-size: 1.3rem"] {
    font-size: 1rem !important;
    margin-bottom: 4px !important;
  }
  #uploadSection .preview-container {
    margin: 10px 0;
    gap: 6px;
    max-height: 280px;
    overflow-y: auto;
  }
  #uploadSection .preview-item {
    padding: 6px 8px !important;
    border-radius: 10px !important;
  }
  #uploadSection .preview-thumb {
    width: 40px !important;
    height: 40px !important;
    margin-right: 8px !important;
  }
  #uploadSection .preview-name {
    font-size: 12px !important;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  #uploadSection .preview-size {
    font-size: 11px !important;
  }
  #uploadSection .remove-preview {
    width: 20px !important;
    height: 20px !important;
    font-size: 12px !important;
  }
  #uploadSection #uploadBtn {
    margin-top: 8px !important;
    padding: 10px !important;
    font-size: 13px !important;
  }
  #uploadSection .upload-options-panel .panel-header {
    padding: 8px 12px !important;
  }
  #uploadSection .upload-options-panel .panel-content {
    padding: 10px 12px !important;
  }
  #uploadSection h3[style*="margin-bottom: 20px"] {
    margin-bottom: 10px !important;
    font-size: 13px !important;
  }
  @keyframes netdiskSheetIn {
    from { opacity: 0; transform: translateY(40px); }
    to { opacity: 1; transform: translateY(0); }
  }
}
[data-theme="dark"] #uploadSection .panel-title { background: rgba(23,31,52,.90) !important; }

/* File list readability + netdisk preview polish */
.bulk-select-bar {
  position: sticky;
  top: 0;
  z-index: 9;
  background: rgba(255,255,255,.82) !important;
  border: 1px solid var(--h-border) !important;
  border-radius: 14px !important;
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
}
.grid-view {
  display: grid !important;
  grid-template-columns: repeat(auto-fill, minmax(176px, 1fr));
  gap: 14px;
}
.record-card.record-item {
  position: relative;
}
.record-select {
  display: flex;
  align-items: center;
  justify-content: center;
}
.record-content {
  min-width: 0;
}
.record-name {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
  color: var(--h-text) !important;
}
.record-name span:first-child,
.grid-name {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.video-icon {
  flex: 0 0 auto;
  width: 30px;
  height: 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 12px;
  background: rgba(91,108,255,.10);
  font-size: 16px;
}
.record-meta {
  margin-top: 5px;
  color: var(--h-muted) !important;
  font-size: 12px !important;
  line-height: 1.55;
}
.visit-count {
  padding: 2px 8px;
  border-radius: 999px;
  background: rgba(91,108,255,.08);
  color: var(--h-primary);
}
.record-actions .btn-outline,
.grid-actions button {
  min-height: 34px !important;
  padding: 7px 10px !important;
  border-radius: 11px !important;
  font-size: 12px !important;
  background: rgba(255,255,255,.72) !important;
  color: var(--h-text) !important;
  border: 1px solid var(--h-border) !important;
  box-shadow: none !important;
}
.record-actions .btn-outline:hover,
.grid-actions button:hover {
  color: var(--h-primary) !important;
  border-color: rgba(91,108,255,.32) !important;
  background: rgba(91,108,255,.09) !important;
}
.record-actions .btn-danger {
  color: #ef476f !important;
}
.grid-item {
  border-radius: 18px !important;
}
.grid-preview {
  height: 146px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  cursor: zoom-in;
  background: linear-gradient(135deg, rgba(91,108,255,.09), rgba(0,184,217,.06));
}
.grid-preview img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .25s ease;
}
.grid-item:hover .grid-preview img {
  transform: scale(1.045);
}
.file-placeholder {
  width: 76px;
  height: 76px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 24px;
  background: rgba(255,255,255,.68);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.75);
  font-size: 36px;
}
.grid-info {
  padding: 12px;
}
.grid-name {
  font-weight: 760;
  color: var(--h-text);
  margin-bottom: 10px;
}
.grid-actions {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}
.select-checkbox,
#selectAllCheckbox {
  width: 16px;  /* 稍小 */
  height: 16px;
  accent-color: var(--h-primary);
  cursor: pointer;
  transition: transform .15s ease !important;
}
.select-checkbox:hover {
  transform: scale(1.1);  /* hover时微微放大 */
}

#previewModal.modal {
  background: rgba(6,12,28,.70) !important;
  backdrop-filter: blur(14px) saturate(1.1);
  -webkit-backdrop-filter: blur(14px) saturate(1.1);
  z-index: 3000 !important;
}
#previewModal .close-modal {
  position: fixed !important;
  top: 18px !important;
  right: 22px !important;
  width: 44px;
  height: 44px;
  border-radius: 16px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(255,255,255,.12);
  color: #fff !important;
  font-size: 30px !important;
  line-height: 1;
  z-index: 3010;
  transition: background .2s ease, transform .2s ease;
}
#previewModal .close-modal:hover {
  background: rgba(255,255,255,.22);
  transform: scale(1.05);
}
#previewModal .modal-content {
  width: min(1180px, calc(100vw - 42px)) !important;
  height: min(88vh, 860px) !important;
  max-width: none !important;
  max-height: none !important;
  margin: 5vh auto !important;
  padding: 0 !important;
  border-radius: 26px !important;
  overflow: hidden !important;
  background: rgba(248,251,255,.96) !important;
  border: 1px solid rgba(255,255,255,.22) !important;
  box-shadow: 0 34px 100px rgba(0,0,0,.38) !important;
}
#previewModal .modal-content img,
#previewModal .modal-content video {
  max-width: 100% !important;
  max-height: 100% !important;
  object-fit: contain;
}
#previewModal .modal-content > img,
#previewModal .modal-content > video {
  width: 100%;
  height: 100%;
  background: #050816;
}
#previewModal iframe {
  background: #fff;
}
#previewModal .preview-toolbar,
#previewModal .modal-content > div > div:first-child[style*="toolbar"],
#previewModal .modal-content div[style*="border-bottom"] {
  background: rgba(255,255,255,.86) !important;
  border-color: var(--h-border) !important;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}
#previewModal pre {
  border-radius: 0 !important;
}
[data-theme="dark"] .bulk-select-bar,
[data-theme="dark"] #recordsSection #recordsContainer {
  background: rgba(23,31,52,.66) !important;
}
[data-theme="dark"] .record-actions .btn-outline,
[data-theme="dark"] .grid-actions button,
[data-theme="dark"] .file-placeholder {
  background: rgba(31,42,70,.72) !important;
  color: var(--h-text) !important;
}
[data-theme="dark"] #previewModal .modal-content {
  background: rgba(14,22,40,.97) !important;
}
@media (min-width: 769px) {
  .record-actions {
    max-width: 520px;
    overflow-x: auto;
    padding-bottom: 2px;
  }
  .record-actions::-webkit-scrollbar { height: 4px; }
  .record-actions::-webkit-scrollbar-thumb { background: rgba(91,108,255,.28); border-radius: 99px; }
}
@media (max-width: 768px) {
  .grid-view { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .grid-preview { height: 128px; }
  .record-meta { font-size: 11px !important; }
  .record-actions .btn-outline { font-size: 11px !important; padding: 7px 6px !important; }
  #previewModal .modal-content {
    width: 100vw !important;
    height: 92vh !important;
    margin: 8vh 0 0 !important;
    border-radius: 24px 24px 0 0 !important;
  }
  #previewModal .close-modal {
    top: 10px !important;
    right: 12px !important;
  }
}
@media (max-width: 420px) {
  .grid-view { grid-template-columns: 1fr; }
  .grid-preview { height: 180px; }
}
.file-type-badge {
  flex: 0 0 auto;
  width: 34px;
  height: 34px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 13px;
  background: linear-gradient(135deg, rgba(91,108,255,.14), rgba(0,184,217,.09));
  font-size: 17px;
}
.grid-meta {
  color: var(--h-muted);
  font-size: 12px;
  margin: -4px 0 10px 44px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.grid-name .file-type-badge {
  width: 32px;
  height: 32px;
  margin-right: 8px;
}

/* Netdisk v2: breadcrumb + table columns */
.netdisk-toolbar {
  grid-template-columns: minmax(0, 1fr) auto !important;
  align-items: center;
}
.netdisk-primary-actions {
  gap: 9px !important;
}
.netdisk-pathbar {
  margin: 0 18px 10px;
  padding: 12px 14px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  border: 1px solid var(--h-border);
  border-radius: 18px;
  background: rgba(255,255,255,.62);
  box-shadow: var(--h-shadow-sm);
}
.breadcrumb {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
  color: var(--h-muted);
  font-weight: 700;
}
.breadcrumb strong {
  min-width: 0;
  color: var(--h-text);
  font-weight: 850;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.breadcrumb .sep { opacity: .5; }
.path-summary {
  flex: 0 0 auto;
  color: var(--h-muted);
  font-size: 13px;
  padding: 6px 10px;
  border-radius: 999px;
  background: rgba(91,108,255,.08);
}
.netdisk-table-head {
  display: grid;
  grid-template-columns: minmax(260px, 1fr) 120px 170px 120px 350px;
  gap: 12px;
  width: 100%;
  align-items: center;
  color: var(--h-muted);
  font-size: 12px;
  font-weight: 850;
  letter-spacing: .04em;
  text-transform: uppercase;
}
.netdisk-table-head .col-actions { text-align: right; }
#recordsSection .records-header {
  grid-template-columns: minmax(0, 1fr) !important;
  gap: 12px !important;
}
#recordsSection .records-actions {
  width: 100%;
  justify-content: stretch !important;
}
@media (min-width: 769px) {
  .netdisk-list-view .record-item {
    grid-template-columns: 42px minmax(200px, 2fr) 100px 150px 80px minmax(220px, 320px) !important;
    gap: 10px !important;  /* 稍大间距 */
    min-height: 46px;  /* 稍高一点 */
    padding: 8px 14px !important;  /* 更舒适的内边距 */
    border-radius: 10px !important;
    margin-bottom: 3px !important;  /* 行间距 */
  }
  
  /* 修复：文件名列（第2列）- 确保图标和文件名在一起 */
  .netdisk-list-view .record-content {
    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
    gap: 2px !important;
    min-width: 0 !important;
    overflow: hidden !important;
  }
  
  /* 文件名行 - 图标和文件名水平排列 */
  .netdisk-list-view .record-name {
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;  /* 覆盖style.css的space-between */
    gap: 8px !important;  /* 图标和文件名间距 */
    min-width: 0 !important;
    white-space: nowrap !important;
    overflow: hidden !important;
  }
  
  /* 文件类型图标 - 不被压缩 */
  .netdisk-list-view .record-name .file-type-badge {
    flex-shrink: 0 !important;
    font-size: 20px !important;
    line-height: 1 !important;
  }
  
  /* 文件名文本 - 允许截断 */
  .netdisk-list-view .record-name span:last-child {
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    min-width: 0 !important;
  }
  
  /* 元信息行 */
  .netdisk-list-view .record-meta {
    display: block !important;
    font-size: 11px !important;
    color: var(--h-muted, #888) !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
  }
  .record-size-cell,
  .record-time-cell,
  .record-views-cell {
    color: var(--h-muted);
    font-size: 12px;  /* 稍大的字体 */
    white-space: nowrap;
  }
  .record-time-cell { font-variant-numeric: tabular-nums; }
  .record-views-cell .visit-count { display: inline-flex; align-items: center; }
  .netdisk-list-view .record-actions {
    justify-self: end;
    max-width: 380px;
    gap: 4px !important;
  }
  #recordsSection #recordsContainer {
    padding-top: 6px !important;
    padding-bottom: 6px !important;
  }
}
@media (max-width: 1100px) and (min-width: 769px) {
  .netdisk-table-head {
    grid-template-columns: minmax(220px, 1fr) 96px 150px 96px 280px;
  }
  .netdisk-list-view .record-item {
    grid-template-columns: 38px minmax(220px, 1fr) 96px 150px 96px minmax(220px, 280px) !important;
  }
}
@media (max-width: 768px) {
  .netdisk-pathbar {
    margin: 0 10px 10px;
    align-items: flex-start;
    flex-direction: column;
  }
  .path-summary { font-size: 12px; }
  .netdisk-table-head { display: none; }
  .record-size-cell,
  .record-time-cell,
  .record-views-cell {
    display: inline-flex;
    margin: 8px 8px 0 0;
    color: var(--h-muted);
    font-size: 12px;
  }
  .record-size-cell::before { content: '大小：'; }
  .record-time-cell::before { content: '时间：'; }
  .record-views-cell::before { content: '访问：'; }
  #recordsSection .records-actions {
    grid-template-columns: 1fr 1fr !important;
  }
}

/* Netdisk v3: sidebar directory tree + real drawer close */
.netdisk-tree-panel {
  margin-top: 14px;
  padding: 12px;
  border: 1px solid var(--h-border);
  border-radius: 18px;
  background: linear-gradient(180deg, rgba(91,108,255,.06), rgba(255,255,255,.34));
}
.tree-panel-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 8px;
  color: var(--h-muted);
  font-size: 13px;
  font-weight: 850;
}
.tree-panel-title button {
  width: 28px !important;
  height: 28px !important;
  min-width: 28px !important;
  min-height: 28px !important;
  padding: 0 !important;
  border-radius: 10px !important;
  box-shadow: none !important;
}
.netdisk-folder-tree {
  display: flex;
  flex-direction: column;
  gap: 4px;
  max-height: 34vh;
  overflow: auto;
  padding-right: 2px;
}
.tree-item {
  width: 100%;
  min-height: 38px !important;
  display: grid !important;
  grid-template-columns: 24px minmax(0,1fr) auto;
  align-items: center;
  gap: 8px;
  padding: 8px 10px !important;
  border-radius: 13px !important;
  background: transparent !important;
  color: var(--h-muted) !important;
  border: 1px solid transparent !important;
  box-shadow: none !important;
  text-align: left;
}
.tree-item strong {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 13px;
  font-weight: 750;
}
.tree-item em {
  font-style: normal;
  font-size: 11px;
  color: var(--h-muted);
  padding: 2px 7px;
  border-radius: 999px;
  background: rgba(91,108,255,.08);
}
.tree-item:hover,
.tree-item.active {
  color: var(--h-primary) !important;
  background: rgba(91,108,255,.10) !important;
  border-color: rgba(91,108,255,.16) !important;
  transform: translateX(2px);
}
.upload-drawer-close {
  float: right;
  width: 36px !important;
  height: 36px !important;
  min-width: 36px !important;
  min-height: 36px !important;
  padding: 0 !important;
  border-radius: 14px !important;
  background: rgba(15,23,42,.08) !important;
  color: var(--h-text) !important;
  box-shadow: none !important;
  font-size: 24px !important;
  line-height: 1 !important;
}
.upload-drawer-close:hover {
  background: rgba(239,71,111,.12) !important;
  color: var(--h-danger) !important;
}

@media (max-width: 768px) {
  .netdisk-tree-panel {
    display: none;
  }
  .upload-drawer-close {
    float: none;
    position: absolute;
    right: 14px;
    top: 14px;
  }
}
[data-theme="dark"] .netdisk-tree-panel {
  background: linear-gradient(180deg, rgba(91,108,255,.10), rgba(23,31,52,.42));
}

/* Netdisk v4: clean primary toolbar */
.netdisk-actions-polished {
  display: grid !important;
  grid-template-columns: minmax(260px, 1fr) auto auto auto !important;
  align-items: center;
  gap: 10px !important;
}
.netdisk-search-group {
  position: relative;
  min-width: 0;
}
.netdisk-search-group .search-icon {
  position: absolute;
  left: 13px;
  top: 50%;
  transform: translateY(-50%);
  z-index: 1;
  opacity: .62;
  pointer-events: none;
}
.netdisk-search-group #searchRecord {
  width: 100% !important;
  min-width: 0 !important;
  padding-left: 40px !important;
  height: 42px;
}
.netdisk-filter-group {
  display: flex;
  gap: 8px;
  align-items: center;
  padding: 4px;
  border: 1px solid var(--h-border);
  border-radius: 16px;
  background: rgba(255,255,255,.52);
}
.netdisk-filter-group select {
  min-width: 118px !important;
  height: 36px !important;
  padding: 7px 10px !important;
  border-radius: 12px !important;
  box-shadow: none !important;
}
.netdisk-more-actions {
  position: relative;
}
.netdisk-more-menu {
  right: 0;
  left: auto !important;
  min-width: 190px;
  padding: 8px !important;
  border-radius: 16px !important;
  border: 1px solid var(--h-border) !important;
  background: rgba(255,255,255,.94) !important;
  box-shadow: var(--h-shadow) !important;
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  z-index: 99999;
  position: absolute;
}
.netdisk-menu-button,
.netdisk-more-menu .dropdown-item {
  width: 100% !important;
  min-height: 38px !important;
  display: flex !important;
  align-items: center;
  justify-content: flex-start;
  padding: 9px 10px !important;
  border-radius: 12px !important;
  background: transparent !important;
  color: var(--h-text) !important;
  border: 0 !important;
  box-shadow: none !important;
  text-align: left;
}
.netdisk-more-menu .dropdown-item:hover,
.netdisk-menu-button:hover {
  background: rgba(91,108,255,.10) !important;
  color: var(--h-primary) !important;
}
[data-theme="dark"] .netdisk-filter-group,
[data-theme="dark"] .netdisk-more-menu {
  background: rgba(23,31,52,.94) !important;
}
@media (max-width: 980px) and (min-width: 769px) {
  .netdisk-actions-polished {
    grid-template-columns: minmax(220px, 1fr) auto auto !important;
  }
  .netdisk-filter-group {
    overflow-x: auto;
    max-width: 360px;
  }
}
@media (max-width: 768px) {
  .netdisk-actions-polished {
    grid-template-columns: 1fr auto !important;
  }
  .netdisk-search-group {
    grid-column: 1 / -1;
  }
  .netdisk-filter-group {
    grid-column: 1 / -1;
    overflow-x: auto;
  }
  .netdisk-filter-group select {
    min-width: 130px !important;
  }
}

/* Netdisk v5: compact file row actions */
.netdisk-file-actions {
  display: inline-flex !important;
  align-items: center;
  justify-content: flex-end;
  gap: 7px !important;
  position: relative;
  overflow: visible !important;
}
.netdisk-file-actions > button,
.netdisk-file-actions .file-more-btn {
  min-height: 34px !important;
  height: 34px !important;
  padding: 7px 11px !important;
  border-radius: 12px !important;
  border: 1px solid rgba(91,108,255,.14) !important;
  box-shadow: none !important;
  white-space: nowrap;
  font-size: 13px !important;
}
.netdisk-file-actions .action-primary {
  background: rgba(91,108,255,.12) !important;
  color: var(--h-primary) !important;
}
.netdisk-file-actions .action-secondary {
  background: rgba(6,182,212,.10) !important;
  color: #0891b2 !important;
}
.file-more-wrap {
  position: relative;
  display: inline-flex;
}
.file-more-btn {
  width: 36px !important;
  min-width: 36px !important;
  padding: 0 !important;
  font-size: 20px !important;
  line-height: 1 !important;
  background: rgba(15,23,42,.05) !important;
  color: var(--h-muted) !important;
}
.file-more-menu {
  display: none;
  position: absolute;
  right: 0;
  top: calc(100% + 8px);
  z-index: 99999;
  min-width: 176px;
  padding: 8px;
  border: 1px solid var(--h-border);
  border-radius: 16px;
  background: rgba(255,255,255,.96);
  box-shadow: var(--h-shadow);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
}
.file-more-wrap.open .file-more-menu {
  display: grid;
  gap: 3px;
}
.file-more-menu button {
  width: 100% !important;
  min-height: 36px !important;
  display: flex !important;
  align-items: center;
  justify-content: flex-start;
  padding: 8px 10px !important;
  border: 0 !important;
  border-radius: 11px !important;
  background: transparent !important;
  color: var(--h-text) !important;
  box-shadow: none !important;
  font-size: 13px !important;
  text-align: left;
}
.file-more-menu button:hover {
  background: rgba(91,108,255,.10) !important;
  color: var(--h-primary) !important;
}
.file-more-menu button.danger:hover {
  background: rgba(239,71,111,.12) !important;
  color: var(--h-danger) !important;
}
.netdisk-list-view .record-card,
.grid-item {
  overflow: visible !important;
}
[data-theme="dark"] .file-more-menu {
  background: rgba(23,31,52,.96);
}
@media (max-width: 768px) {
  .netdisk-file-actions {
    width: 100%;
    justify-content: flex-start;
    margin-top: 8px;
  }
  .netdisk-file-actions > button {
    flex: 1 1 auto;
    justify-content: center;
  }
  .file-more-wrap {
    margin-left: auto;
  }
  .file-more-menu {
    right: 0;
    min-width: 190px;
  }
}

/* Netdisk v6: workbench detail pane */
.netdisk-workbench {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 300px;
  gap: 16px;
  align-items: start;
}
.netdisk-main-list {
  min-width: 0;
}
.netdisk-detail-pane {
  position: sticky;
  top: 18px;
  min-height: 360px;
  border: 1px solid var(--h-border);
  border-radius: 24px;
  background: rgba(255,255,255,.72);
  box-shadow: 0 18px 45px rgba(15,23,42,.08);
  padding: 16px;
  overflow: hidden;
}
.detail-empty {
  min-height: 320px;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 10px;
  text-align: center;
  color: var(--h-muted);
}
.detail-empty-icon {
  width: 72px;
  height: 72px;
  display: grid;
  place-items: center;
  border-radius: 24px;
  background: rgba(91,108,255,.10);
  font-size: 34px;
}
.detail-empty strong {
  color: var(--h-text);
  font-size: 17px;
}
.detail-empty p {
  max-width: 220px;
  margin: 0;
  font-size: 13px;
  line-height: 1.6;
}
.detail-pane-head {
  position: relative;
  text-align: center;
  padding: 10px 8px 16px;
  border-bottom: 1px solid var(--h-border);
}
.detail-pane-close {
  position: absolute;
  right: 0;
  top: 0;
  width: 32px !important;
  height: 32px !important;
  min-width: 32px !important;
  min-height: 32px !important;
  padding: 0 !important;
  border-radius: 12px !important;
  background: rgba(15,23,42,.06) !important;
  color: var(--h-muted) !important;
  box-shadow: none !important;
  font-size: 20px !important;
}
.detail-file-icon {
  width: 76px;
  height: 76px;
  display: grid;
  place-items: center;
  margin: 8px auto 12px;
  border-radius: 26px;
  background: linear-gradient(135deg, rgba(91,108,255,.16), rgba(6,182,212,.14));
  font-size: 38px;
}
.detail-file-name {
  font-weight: 850;
  color: var(--h-text);
  line-height: 1.35;
  word-break: break-word;
}
.detail-file-sub {
  margin-top: 6px;
  font-size: 12px;
  color: var(--h-muted);
}
.detail-quick-actions,
.detail-secondary-actions {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  margin: 14px 0;
}
.detail-quick-actions button,
.detail-secondary-actions button {
  min-height: 36px !important;
  padding: 8px 6px !important;
  border-radius: 13px !important;
  font-size: 12px !important;
  box-shadow: none !important;
  border: 1px solid rgba(91,108,255,.14) !important;
  background: rgba(91,108,255,.08) !important;
  color: var(--h-primary) !important;
}
.detail-secondary-actions {
  grid-template-columns: 1fr;
}
.detail-secondary-actions button {
  justify-content: flex-start;
  text-align: left;
  padding: 10px 12px !important;
  color: var(--h-text) !important;
  background: rgba(15,23,42,.04) !important;
}
.detail-secondary-actions button.danger {
  color: var(--h-danger) !important;
  background: rgba(239,71,111,.08) !important;
}
.detail-info-list {
  display: grid;
  gap: 9px;
  margin: 14px 0;
}
.detail-info-list div {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 0;
  border-bottom: 1px dashed rgba(148,163,184,.35);
}
.detail-info-list span,
.detail-link-box span {
  color: var(--h-muted);
  font-size: 12px;
}
.detail-info-list strong {
  min-width: 0;
  text-align: right;
  color: var(--h-text);
  font-size: 13px;
  word-break: break-word;
}
.detail-link-box {
  margin: 14px 0;
  padding: 12px;
  border-radius: 16px;
  background: rgba(15,23,42,.04);
}
.detail-link-box p {
  margin: 6px 0 0;
  color: var(--h-text);
  font-size: 12px;
  line-height: 1.5;
  word-break: break-all;
}
[data-theme="dark"] .netdisk-detail-pane {
  background: rgba(23,31,52,.72);
}
@media (max-width: 1180px) {
  .netdisk-workbench {
    grid-template-columns: minmax(0, 1fr);
  }
  .netdisk-detail-pane {
    display: none;
  }
  .netdisk-detail-pane.has-file {
    display: block;
    position: fixed;
    left: 14px;
    right: 14px;
    bottom: 14px;
    top: auto;
    z-index: 1200;
    max-height: 76vh;
    overflow: auto;
  }
}

/* Netdisk v7: folder tree menu + path sync */
.netdisk-folder-tree .tree-row {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 30px;
  align-items: center;
  gap: 3px;
  border-radius: 14px;
}
.netdisk-folder-tree .tree-row.active {
  background: rgba(91,108,255,.10);
}
.netdisk-folder-tree .tree-row .tree-item {
  grid-template-columns: 24px minmax(0,1fr) auto;
  border-radius: 14px !important;
}
.netdisk-folder-tree .tree-row.active .tree-item {
  color: var(--h-primary) !important;
  background: transparent !important;
  border-color: transparent !important;
}
.tree-more-btn {
  width: 28px !important;
  height: 28px !important;
  min-width: 28px !important;
  min-height: 28px !important;
  padding: 0 !important;
  border-radius: 10px !important;
  background: transparent !important;
  color: var(--h-muted) !important;
  box-shadow: none !important;
  opacity: 0;
  font-size: 18px !important;
}
.tree-row:hover .tree-more-btn,
.tree-row.open .tree-more-btn,
.tree-row.active .tree-more-btn {
  opacity: 1;
}
.tree-more-btn:hover {
  background: rgba(15,23,42,.07) !important;
  color: var(--h-primary) !important;
}
.tree-more-menu {
  display: none;
  position: absolute;
  right: 0;
  top: calc(100% + 6px);
  z-index: 80;
  min-width: 166px;
  padding: 7px;
  border-radius: 15px;
  border: 1px solid var(--h-border);
  background: rgba(255,255,255,.96);
  box-shadow: var(--h-shadow);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
}
.tree-row.open .tree-more-menu {
  display: grid;
  gap: 3px;
}
.tree-more-menu button {
  width: 100% !important;
  min-height: 34px !important;
  justify-content: flex-start;
  padding: 8px 10px !important;
  border: 0 !important;
  border-radius: 11px !important;
  background: transparent !important;
  color: var(--h-text) !important;
  box-shadow: none !important;
  text-align: left;
  font-size: 13px !important;
}
.tree-more-menu button:hover {
  background: rgba(91,108,255,.10) !important;
  color: var(--h-primary) !important;
}
.tree-more-menu button.danger:hover {
  background: rgba(239,71,111,.12) !important;
  color: var(--h-danger) !important;
}
[data-theme="dark"] .tree-more-menu {
  background: rgba(23,31,52,.96);
}

/* Netdisk v8: fix detail-pane collision and restore row actions */
@media (min-width: 1181px) {
  #recordsSection.panel {
    overflow: visible !important;
  }
  .netdisk-workbench {
    grid-template-columns: minmax(0, 1fr) clamp(260px, 22vw, 320px) !important;
    gap: 18px !important;
    width: 100%;
    max-width: 100%;
    overflow: visible;
  }
  .netdisk-main-list {
    min-width: 0 !important;
    overflow: visible !important;
  }
  .netdisk-detail-pane {
    width: auto !important;
    max-width: 320px;
    min-width: 0;
    justify-self: stretch;
    z-index: 1;
  }
  .netdisk-table-head {
    grid-template-columns: minmax(220px, 1fr) 90px 145px 70px 188px !important;
    gap: 10px !important;
  }
  .netdisk-list-view .record-item {
    grid-template-columns: 34px minmax(220px, 1fr) 90px 145px 70px 188px !important;
    gap: 10px !important;
    width: 100%;
    max-width: 100%;
    overflow: visible !important;
  }
  .netdisk-list-view .record-content {
    min-width: 0;
  }
  .netdisk-list-view .record-name span:last-child {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .netdisk-list-view .record-actions.netdisk-file-actions {
    width: 188px !important;
    max-width: 188px !important;
    min-width: 0 !important;
    justify-self: end !important;
    justify-content: flex-end !important;
    flex-wrap: nowrap !important;
    gap: 5px !important;
  }
  .netdisk-list-view .record-actions.netdisk-file-actions > button {
    min-width: 0 !important;
    padding: 7px 9px !important;
    font-size: 12px !important;
  }
  .netdisk-list-view .record-actions.netdisk-file-actions .file-more-btn {
    width: 32px !important;
    min-width: 32px !important;
  }
}
@media (min-width: 769px) and (max-width: 1380px) {
  .netdisk-workbench {
    grid-template-columns: minmax(0, 1fr) !important;
  }
  .netdisk-detail-pane {
    display: none;
  }
  .netdisk-detail-pane.has-file {
    display: block;
    position: fixed;
    right: 18px;
    top: 92px;
    bottom: 18px;
    z-index: 1200;
    width: min(360px, calc(100vw - 36px));
    max-width: min(360px, calc(100vw - 36px));
    overflow: auto;
  }
  .netdisk-table-head {
    grid-template-columns: minmax(220px, 1fr) 100px 155px 82px 190px !important;
  }
  .netdisk-list-view .record-item {
    grid-template-columns: 34px minmax(220px, 1fr) 100px 155px 82px 190px !important;
  }
  .netdisk-list-view .record-actions.netdisk-file-actions {
    width: 190px !important;
    max-width: 190px !important;
  }
}
@media (max-width: 768px) {
  .netdisk-detail-pane.has-file {
    left: 10px !important;
    right: 10px !important;
    bottom: 10px !important;
    max-height: 72vh !important;
    border-radius: 22px 22px 18px 18px !important;
  }
}
.detail-preview-actions {
  display: grid;
  margin: -4px 0 12px;
}
.detail-preview-actions button {
  min-height: 38px !important;
  border-radius: 14px !important;
  background: linear-gradient(135deg, var(--h-primary), var(--h-secondary)) !important;
  color: #fff !important;
  box-shadow: 0 10px 24px rgba(91,108,255,.22) !important;
}

/* Netdisk v9: remove right detail pane, restore full-width file manager */
.netdisk-workbench,
.netdisk-main-list,
.netdisk-detail-pane,
.detail-empty,
.detail-pane-head,
.detail-quick-actions,
.detail-secondary-actions,
.detail-info-list,
.detail-link-box,
.detail-preview-actions {
  display: none !important;
}
#recordsSection #recordsContainer {
  width: 100% !important;
  max-width: 100% !important;
}
@media (min-width: 769px) {
  .netdisk-table-head {
    grid-template-columns: minmax(320px, 1fr) 120px 180px 100px 260px !important;
    gap: 12px !important;
  }
  .netdisk-list-view .record-item {
    grid-template-columns: 42px minmax(320px, 1fr) 120px 180px 100px minmax(230px, 260px) !important;
    gap: 12px !important;
  }
  .netdisk-list-view .record-actions.netdisk-file-actions {
    width: auto !important;
    max-width: 260px !important;
    min-width: 230px !important;
  }
}
@media (min-width: 769px) and (max-width: 1180px) {
  .netdisk-table-head {
    grid-template-columns: minmax(260px, 1fr) 96px 150px 80px 220px !important;
  }
  .netdisk-list-view .record-item {
    grid-template-columns: 38px minmax(260px, 1fr) 96px 150px 80px 220px !important;
  }
  .netdisk-list-view .record-actions.netdisk-file-actions {
    min-width: 210px !important;
    max-width: 220px !important;
  }
}

/* Netdisk v10: responsive file rows, keep all action buttons visible */
#recordsSection #recordsContainer {
  overflow-x: hidden !important;
  overflow-y: auto !important;
  box-sizing: border-box;
}
#recordsSection .record-cards,
#recordsSection .netdisk-list-view {
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box;
}
@media (min-width: 769px) {
  .netdisk-table-head {
    grid-template-columns: minmax(220px, 1fr) minmax(72px, .28fr) minmax(120px, .44fr) minmax(58px, .20fr) 172px !important;
    gap: 8px !important;
    min-width: 0 !important;
  }
  .netdisk-list-view .record-item {
    grid-template-columns: 34px minmax(220px, 1fr) minmax(72px, .28fr) minmax(120px, .44fr) minmax(58px, .20fr) 172px !important;
    gap: 8px !important;
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    overflow: visible !important;
    padding-left: 10px !important;
    padding-right: 10px !important;
  }
  .netdisk-list-view .record-select,
  .netdisk-list-view .record-content,
  .netdisk-list-view .record-size-cell,
  .netdisk-list-view .record-time-cell,
  .netdisk-list-view .record-views-cell,
  .netdisk-list-view .record-actions {
    min-width: 0 !important;
  }
  .netdisk-list-view .record-size-cell,
  .netdisk-list-view .record-time-cell,
  .netdisk-list-view .record-views-cell {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .netdisk-list-view .record-actions.netdisk-file-actions {
    width: 172px !important;
    min-width: 172px !important;
    max-width: 172px !important;
    justify-self: end !important;
    justify-content: flex-end !important;
    flex-wrap: nowrap !important;
    gap: 5px !important;
  }
  .netdisk-file-actions > button {
    min-width: 0 !important;
    height: 34px !important;
    min-height: 34px !important;
    padding: 7px 9px !important;
    font-size: 12px !important;
  }
  .netdisk-file-actions .action-primary,
  .netdisk-file-actions .action-secondary {
    max-width: 66px;
  }
  .netdisk-file-actions .file-more-btn {
    width: 30px !important;
    min-width: 30px !important;
    height: 34px !important;
  }
}
@media (min-width: 769px) and (max-width: 1280px) {
  .netdisk-table-head {
    grid-template-columns: minmax(200px, 1fr) 82px 132px 160px !important;
  }
  .netdisk-table-head .col-views {
    display: none !important;
  }
  .netdisk-list-view .record-item {
    grid-template-columns: 34px minmax(200px, 1fr) 82px 132px 160px !important;
  }
  .netdisk-list-view .record-views-cell {
    display: none !important;
  }
  .netdisk-list-view .record-actions.netdisk-file-actions {
    width: 160px !important;
    min-width: 160px !important;
    max-width: 160px !important;
  }
  .netdisk-file-actions .action-primary,
  .netdisk-file-actions .action-secondary {
    max-width: 60px;
    padding-left: 7px !important;
    padding-right: 7px !important;
  }
}
@media (min-width: 769px) and (max-width: 1060px) {
  .netdisk-table-head {
    grid-template-columns: minmax(190px, 1fr) 80px 152px !important;
  }
  .netdisk-table-head .col-time,
  .netdisk-table-head .col-views {
    display: none !important;
  }
  .netdisk-list-view .record-item {
    grid-template-columns: 34px minmax(190px, 1fr) 80px 152px !important;
  }
  .netdisk-list-view .record-time-cell,
  .netdisk-list-view .record-views-cell {
    display: none !important;
  }
  .netdisk-list-view .record-actions.netdisk-file-actions {
    width: 152px !important;
    min-width: 152px !important;
    max-width: 152px !important;
  }
  .netdisk-file-actions .action-primary,
  .netdisk-file-actions .action-secondary {
    max-width: 56px;
  }
}
@media (max-width: 768px) {
  #recordsSection #recordsContainer {
    overflow-x: hidden !important;
  }
  .netdisk-list-view .record-item {
    grid-template-columns: 32px minmax(0, 1fr) !important;
  }
  .netdisk-list-view .record-size-cell,
  .netdisk-list-view .record-time-cell,
  .netdisk-list-view .record-views-cell,
  .netdisk-list-view .record-actions {
    grid-column: 2 / -1;
  }
  .netdisk-list-view .record-actions.netdisk-file-actions {
    max-width: 100% !important;
    width: 100% !important;
  }
}

/* Netdisk v11: make the whole app shell truly adaptive/full-width */
@media (min-width: 769px) {
  html,
  body {
    width: 100% !important;
    max-width: none !important;
  }
  #appContainer {
    width: 100vw !important;
    max-width: none !important;
  }
  #appContainer .app-container {
    width: 100vw !important;
    max-width: none !important;
    box-sizing: border-box !important;
    grid-template-columns: clamp(232px, 15.5vw, 292px) minmax(0, 1fr) !important;
  }
  #appContainer .main-content {
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
    justify-self: stretch !important;
    overflow: hidden !important;
  }
  #appContainer .main-content > header,
  #appContainer .main-content > section.panel,
  #recordsSection.panel,
  #recordsSection .files-toolbar,
  #recordsSection .netdisk-pathbar,
  #recordsSection .records-header,
  #recordsSection #recordsContainer,
  #recordsSection #paginationControls {
    width: 100% !important;
    max-width: none !important;
    box-sizing: border-box !important;
  }
  #recordsSection.panel {
    justify-self: stretch !important;
  }
  #recordsSection #recordsContainer {
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
  #recordsSection .netdisk-pathbar,
  #recordsSection #paginationControls {
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
  .netdisk-toolbar {
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
}

/* Netdisk v12: keep action labels full and lift the more menu above following rows */
@media (min-width: 769px) {
  .netdisk-table-head {
    grid-template-columns: minmax(260px, 1fr) 110px 170px 82px max-content !important;
  }
  .netdisk-list-view .record-item {
    grid-template-columns: 34px minmax(260px, 1fr) 110px 170px 82px max-content !important;
    isolation: isolate;
  }
  .netdisk-list-view .record-actions.netdisk-file-actions {
    width: max-content !important;
    min-width: max-content !important;
    max-width: none !important;
    justify-self: end !important;
    overflow: visible !important;
  }
  .netdisk-file-actions > button,
  .netdisk-file-actions .file-more-btn {
    width: auto !important;
    max-width: none !important;
    min-width: max-content !important;
    flex: 0 0 auto !important;
    padding-left: 12px !important;
    padding-right: 12px !important;
  }
  .netdisk-file-actions .file-more-btn {
    width: 38px !important;
    min-width: 38px !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
}
@media (min-width: 769px) and (max-width: 1320px) {
  .netdisk-table-head {
    grid-template-columns: minmax(240px, 1fr) 100px 150px max-content !important;
  }
  .netdisk-table-head .col-views {
    display: none !important;
  }
  .netdisk-list-view .record-item {
    grid-template-columns: 34px minmax(240px, 1fr) 100px 150px max-content !important;
  }
  .netdisk-list-view .record-views-cell {
    display: none !important;
  }
}
@media (min-width: 769px) and (max-width: 1120px) {
  .netdisk-table-head {
    grid-template-columns: minmax(240px, 1fr) 100px max-content !important;
  }
  .netdisk-table-head .col-time,
  .netdisk-table-head .col-views {
    display: none !important;
  }
  .netdisk-list-view .record-item {
    grid-template-columns: 34px minmax(240px, 1fr) 100px max-content !important;
  }
  .netdisk-list-view .record-time-cell,
  .netdisk-list-view .record-views-cell {
    display: none !important;
  }
}
.netdisk-list-view .record-item:has(.file-more-wrap.open),
.grid-item:has(.file-more-wrap.open) {
  z-index: 5000 !important;
  position: relative;
}
.file-more-wrap.open {
  z-index: 5100 !important;
}
.file-more-wrap.open .file-more-menu {
  z-index: 5200 !important;
  min-width: 220px !important;
  width: max-content !important;
  max-width: min(280px, calc(100vw - 32px)) !important;
  overflow: visible !important;
}
.file-more-menu button {
  white-space: nowrap !important;
  min-width: 190px !important;
  width: 100% !important;
}
.netdisk-list-view,
.record-cards,
.grid-view {
  overflow: visible !important;
}
@media (max-width: 768px) {
  .file-more-wrap.open .file-more-menu {
    min-width: 210px !important;
    right: 0 !important;
    left: auto !important;
  }
  .file-more-menu button {
    min-width: 180px !important;
  }
}

/* Netdisk v13: modal split — small dialogs fit content, previews stay large */
#previewModal.modal {
  position: fixed !important;
  inset: 0 !important;
  display: none;
  align-items: flex-start;
  justify-content: center;
  padding: 7vh 20px 24px !important;
  overflow: auto !important;
  background: rgba(6,12,28,.70) !important;
  backdrop-filter: blur(14px) saturate(1.1);
  -webkit-backdrop-filter: blur(14px) saturate(1.1);
  z-index: 9000 !important;
}
#previewModal.modal[style*="display: block"] {
  display: flex !important;
}
#previewModal .close-modal {
  position: fixed !important;
  top: 18px !important;
  right: 22px !important;
  width: 48px !important;
  height: 48px !important;
  min-width: 48px !important;
  min-height: 48px !important;
  padding: 0 !important;
  border-radius: 17px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  background: rgba(255,255,255,.16) !important;
  color: #fff !important;
  border: 1px solid rgba(255,255,255,.22) !important;
  font-size: 32px !important;
  font-weight: 800 !important;
  line-height: 1 !important;
  cursor: pointer !important;
  pointer-events: auto !important;
  z-index: 9020 !important;
  box-shadow: 0 12px 32px rgba(0,0,0,.22) !important;
}
#previewModal .close-modal:hover {
  background: rgba(255,255,255,.28) !important;
  transform: scale(1.05);
}
#previewModal .modal-content {
  width: fit-content !important;
  min-width: min(520px, calc(100vw - 40px)) !important;
  max-width: min(760px, calc(100vw - 40px)) !important;
  height: auto !important;
  max-height: 86vh !important;
  margin: 0 auto !important;
  padding: 0 !important;
  border-radius: 24px !important;
  overflow: auto !important;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
}
#previewModal .modal-content > div {
  width: auto !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
  border-radius: 24px !important;
  box-shadow: 0 30px 86px rgba(0,0,0,.28) !important;
}
#previewModal .modal-content:has(> img),
#previewModal .modal-content:has(> video),
#previewModal .modal-content:has(> iframe),
#previewModal .modal-content:has(.preview-toolbar),
#previewModal .modal-content:has(#hlsVideo),
#previewModal .modal-content:has(#tsVideo) {
  width: min(1180px, calc(100vw - 42px)) !important;
  max-width: min(1180px, calc(100vw - 42px)) !important;
  height: min(88vh, 860px) !important;
  max-height: min(88vh, 860px) !important;
  background: rgba(248,251,255,.96) !important;
  border: 1px solid rgba(255,255,255,.22) !important;
  box-shadow: 0 34px 100px rgba(0,0,0,.38) !important;
  overflow: hidden !important;
}
#previewModal .modal-content:has(> img) > img,
#previewModal .modal-content:has(> video) > video,
#previewModal .modal-content:has(> iframe) > iframe {
  width: 100% !important;
  height: 100% !important;
  max-width: 100% !important;
  max-height: 100% !important;
}
#previewModal .modal-content .btn,
#previewModal .modal-content button {
  pointer-events: auto !important;
  position: relative !important;
  z-index: 10 !important;
  cursor: pointer !important;
}

/* 确保详情弹窗中所有操作按钮可点击 */
#previewModal.dialog-mode .modal-content button,
#previewModal.dialog-mode .modal-content .btn,
#previewModal.dialog-mode .modal-content > div button,
#previewModal.modal[style*="block"] .modal-content button,
#previewModal.modal[style*="block"] .modal-content .btn {
  pointer-events: auto !important;
  position: relative !important;
  z-index: 100 !important;
  cursor: pointer !important;
  touch-action: manipulation !important;
  visibility: visible !important;
  opacity: 1 !important;
}

/* 替换文件按钮特殊处理 - 确保可点击 */
button[onclick*="showReplaceFileDialog"],
button[onclick*="replaceFile"],
.btn-outline[onclick*="replace"] {
  pointer-events: auto !important;
  position: relative !important;
  z-index: 2147483647 !important;
  cursor: pointer !important;
}
@media (max-width: 768px) {
  #previewModal.modal {
    padding: 56px 10px 10px !important;
    align-items: flex-start;
  }
  #previewModal .modal-content {
    min-width: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
    max-height: calc(100vh - 76px) !important;
  }
  #previewModal .modal-content:has(> img),
  #previewModal .modal-content:has(> video),
  #previewModal .modal-content:has(> iframe),
  #previewModal .modal-content:has(.preview-toolbar),
  #previewModal .modal-content:has(#hlsVideo),
  #previewModal .modal-content:has(#tsVideo) {
    width: 100% !important;
    height: calc(100vh - 76px) !important;
    max-height: calc(100vh - 76px) !important;
    border-radius: 22px !important;
  }
  #previewModal .close-modal {
    top: 10px !important;
    right: 10px !important;
    width: 42px !important;
    height: 42px !important;
    min-width: 42px !important;
    min-height: 42px !important;
  }
}

/* Netdisk v14: class-based modal modes + cache-busted CSS */
#previewModal.dialog-mode .modal-content {
  width: auto !important;
  min-width: 0 !important;
  max-width: min(720px, calc(100vw - 40px)) !important;
  height: auto !important;
  max-height: calc(100vh - 80px) !important;  /* 增加可用高度 */
  margin: 0 auto !important;
  background: transparent !important;
  box-shadow: none !important;
  border: 0 !important;
  overflow: visible !important;  /* 改为visible，防止裁剪按钮 */
}
#previewModal.dialog-mode .modal-content > div {
  width: min(560px, calc(100vw - 40px)) !important;
  max-width: min(560px, calc(100vw - 40px)) !important;
  margin: 0 auto !important;
  box-sizing: border-box !important;
}
#previewModal.dialog-mode .modal-content:has(#fileStatsContainer) > div,
#previewModal.dialog-mode .modal-content:has(#fileHistoryContainer) > div {
  width: min(640px, calc(100vw - 40px)) !important;
  max-width: min(640px, calc(100vw - 40px)) !important;
}
#previewModal.preview-mode .modal-content {
  width: min(1180px, calc(100vw - 42px)) !important;
  max-width: min(1180px, calc(100vw - 42px)) !important;
  height: min(88vh, 860px) !important;
  max-height: min(88vh, 860px) !important;
  background: rgba(248,251,255,.96) !important;
  border: 1px solid rgba(255,255,255,.22) !important;
  box-shadow: 0 34px 100px rgba(0,0,0,.38) !important;
  overflow: hidden !important;
}
@media (max-width: 768px) {
  #previewModal.dialog-mode .modal-content,
  #previewModal.dialog-mode .modal-content > div,
  #previewModal.dialog-mode .modal-content:has(#fileStatsContainer) > div,
  #previewModal.dialog-mode .modal-content:has(#fileHistoryContainer) > div {
    width: 100% !important;
    max-width: 100% !important;
  }
}

/* Netdisk v15: close button must always be clickable */
#previewModal .close-modal {
  pointer-events: auto !important;
  user-select: none !important;
  touch-action: manipulation !important;
  z-index: 2147483647 !important;
}
#previewModal .modal-content {
  z-index: 9010 !important;
  position: relative !important;
}

/* Netdisk v16: universal popup close controls */
.close-modal,
.share-modal-close,
.iv-close,
.fv-close,
.ie-close,
.wm-close,
.uh-btn[data-action="close"],
[data-action="close"],
[data-action="cancel"] {
  pointer-events: auto !important;
  cursor: pointer !important;
  touch-action: manipulation !important;
}
#previewModal .close-modal,
.share-modal-close,
.iv-close,
.fv-close,
.ie-close,
.wm-close {
  z-index: 2147483647 !important;
}
#previewModal[style*="display:none"],
#previewModal[style*="display: none"] {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

/* Netdisk v17: center dialog contents after universal close fix */
#previewModal.modal {
  align-items: center !important;
  justify-content: center !important;
  padding: 56px 20px 24px !important;  /* 减少顶部padding */
}

/* 确保详情弹窗内部容器不裁剪按钮 */
#previewModal.dialog-mode .modal-content > div,
#previewModal.dialog-mode .modal-content:has(#fileStatsContainer) > div,
#previewModal.dialog-mode .modal-content:has(#fileHistoryContainer) > div {
  overflow: visible !important;
  position: relative !important;
}
#previewModal.dialog-mode .modal-content,
#previewModal.preview-mode .modal-content,
#previewModal .modal-content {
  margin-left: auto !important;
  margin-right: auto !important;
}
#previewModal.dialog-mode .modal-content {
  align-self: center !important;
}
#previewModal.dialog-mode .modal-content > div {
  margin: 0 auto !important;
}
.modal-overlay,
.share-modal-overlay,
.iv-overlay,
.fv-overlay,
.ie-overlay,
.wm-overlay,
.uh-overlay {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 20px !important;
  box-sizing: border-box !important;
}
.modal-overlay > *,
.share-modal-overlay > *,
.iv-overlay > *,
.fv-overlay > *,
.ie-overlay > *,
.wm-overlay > *,
.uh-overlay > * {
  margin-left: auto !important;
  margin-right: auto !important;
}
@media (max-width: 768px) {
  #previewModal.modal {
    align-items: center !important;
    padding: 56px 10px 10px !important;
  }
  .modal-overlay,
  .share-modal-overlay,
  .iv-overlay,
  .fv-overlay,
  .ie-overlay,
  .wm-overlay,
  .uh-overlay {
    padding: 10px !important;
  }
}

/* Netdisk v18: opened modal must be visible and centered after hard-close reset */
#previewModal.modal[style*="display: block"] {
  display: flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  align-items: center !important;
  justify-content: center !important;
}
#previewModal.modal[style*="display: block"] .modal-content {
  transform: none !important;
  position: relative !important;
  left: auto !important;
  right: auto !important;
  top: auto !important;
  bottom: auto !important;
}

/* Netdisk v19: popup audit fixes — do not auto-show hidden share/viewer overlays */
.share-modal-overlay {
  display: none !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 20px !important;
  box-sizing: border-box !important;
}
.share-modal-overlay.active {
  display: flex !important;
}
.share-modal-overlay .share-modal,
.share-modal-overlay > * {
  margin-left: auto !important;
  margin-right: auto !important;
}
#image-viewer:not(.active),
#file-viewer:not(.active),
#image-editor:not(.active),
#watermark-settings:not(.active) {
  display: none !important;
}
#image-viewer.active,
#file-viewer.active,
#image-editor.active,
#watermark-settings.active {
  display: block !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
}
#image-editor.active .ie-dialog,
#watermark-settings.active .wm-dialog {
  position: absolute !important;
  top: 50% !important;
  left: 50% !important;
  transform: translate(-50%, -50%) !important;
  margin: 0 !important;
}
.modal-overlay {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
}
.modal-overlay .modal-box,
.modal-overlay > .modal-box {
  margin: auto !important;
  width: min(520px, calc(100vw - 40px)) !important;
  max-width: min(520px, calc(100vw - 40px)) !important;
  box-sizing: border-box !important;
}
@media (max-width: 768px) {
  .share-modal-overlay {
    padding: 10px !important;
  }
  .share-modal-overlay .share-modal,
  .modal-overlay .modal-box,
  .modal-overlay > .modal-box {
    width: min(100%, calc(100vw - 20px)) !important;
    max-width: min(100%, calc(100vw - 20px)) !important;
  }
}

/* Netdisk v20: final share modal guard and visible share action */
body .share-modal-overlay:not(.active),
html body .share-modal-overlay:not(.active),
#shareModal:not(.active),
#batchShareModal:not(.active) {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}
body .share-modal-overlay.active,
html body .share-modal-overlay.active,
#shareModal.active,
#batchShareModal.active {
  display: flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  align-items: center !important;
  justify-content: center !important;
}
.netdisk-file-actions [data-action="share"] {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  white-space: nowrap !important;
}

/* Netdisk v21: desktop-grade right-click context menus */
.netdisk-context-menu {
  position: fixed;
  z-index: 2147483600;
  min-width: 214px;
  padding: 8px;
  border-radius: 16px;
  border: 1px solid rgba(148,163,184,.28);
  background: rgba(255,255,255,.96);
  box-shadow: 0 24px 72px rgba(15,23,42,.22);
  backdrop-filter: blur(18px) saturate(1.2);
  -webkit-backdrop-filter: blur(18px) saturate(1.2);
}
.netdisk-context-menu button {
  width: 100%;
  border: 0;
  background: transparent;
  color: var(--h-text, #182033);
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border-radius: 12px;
  cursor: pointer;
  font-size: 14px;
  text-align: left;
  white-space: nowrap;
}
.netdisk-context-menu button:hover {
  background: rgba(91,108,255,.12);
  color: var(--h-primary, #5b6cff);
}
.netdisk-context-menu button.danger:hover {
  background: rgba(239,68,68,.12);
  color: #dc2626;
}
.netdisk-context-menu .ctx-sep {
  height: 1px;
  margin: 6px 4px;
  background: rgba(148,163,184,.26);
}
[data-theme="dark"] .netdisk-context-menu {
  background: rgba(17,24,39,.96);
  border-color: rgba(148,163,184,.22);
}
[data-theme="dark"] .netdisk-context-menu button {
  color: var(--h-text, #e5e7eb);
}
@media (max-width: 768px) {
  .netdisk-context-menu { display: none !important; }
}

/* Netdisk v22: bottom status strip for file workspace */
.netdisk-status-strip {
  margin: 10px 0 0 !important;
  padding: 10px 14px;
  border-radius: 16px;
  border: 1px solid rgba(148,163,184,.22);
  background: rgba(255,255,255,.58);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  color: var(--h-muted, #667085);
  font-size: 13px;
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
}
.netdisk-status-strip .status-left,
.netdisk-status-strip .status-right {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.netdisk-status-strip .status-chip,
.netdisk-status-strip .status-action {
  border: 1px solid rgba(148,163,184,.22);
  background: rgba(255,255,255,.72);
  color: inherit;
  border-radius: 999px;
  padding: 7px 11px;
}
.netdisk-status-strip .status-action {
  cursor: pointer;
  color: var(--h-primary, #5b6cff);
  font-weight: 700;
}
.netdisk-status-strip .status-action:hover {
  background: rgba(91,108,255,.12);
}
[data-theme="dark"] .netdisk-status-strip {
  background: rgba(17,24,39,.58);
}
[data-theme="dark"] .netdisk-status-strip .status-chip,
[data-theme="dark"] .netdisk-status-strip .status-action {
  background: rgba(31,41,55,.72);
}
@media (max-width: 768px) {
  .netdisk-status-strip {
    align-items: stretch;
    flex-direction: column;
    margin: 8px 10px 0 !important;
  }
  .netdisk-status-strip .status-right {
    justify-content: stretch;
  }
  .netdisk-status-strip .status-action {
    flex: 1;
  }
}

/* Netdisk v23: drag files directly onto the workspace */
.netdisk-drop-target {
  position: fixed;
  inset: 0;
  z-index: 2147483000;
  display: none;
  align-items: center;
  justify-content: center;
  background: rgba(15,23,42,.28);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  pointer-events: none;
}
.netdisk-drop-target.active {
  display: flex;
}
.netdisk-drop-target .drop-card {
  min-width: min(420px, calc(100vw - 40px));
  padding: 34px 38px;
  border-radius: 28px;
  border: 2px dashed rgba(91,108,255,.72);
  background: rgba(255,255,255,.94);
  box-shadow: 0 34px 96px rgba(15,23,42,.30);
  text-align: center;
  color: var(--h-text, #182033);
}
.netdisk-drop-target .drop-icon {
  font-size: 56px;
  margin-bottom: 12px;
}
.netdisk-drop-target .drop-title {
  font-size: 22px;
  font-weight: 900;
  margin-bottom: 8px;
}
.netdisk-drop-target .drop-subtitle {
  color: var(--h-muted, #667085);
  font-size: 14px;
}
[data-theme="dark"] .netdisk-drop-target .drop-card {
  background: rgba(17,24,39,.95);
  color: var(--h-text, #e5e7eb);
}
@media (max-width: 768px) {
  .netdisk-drop-target { display: none !important; }
}

/* Netdisk v13: fix pathbar/header ghosting after adding separate breadcrumb row */
@media (min-width: 769px) {
  #recordsSection.panel {
    grid-template-rows: auto auto auto auto minmax(0, 1fr) auto auto !important;
  }

  #recordsSection .files-toolbar,
  #recordsSection .netdisk-pathbar,
  #recordsSection .records-header {
    position: relative !important;
    top: auto !important;
    /* 注意：不设置z-index为auto，保留原有的高z-index以确保下拉菜单在最顶层 */
  }

  #recordsSection .files-toolbar {
    flex-shrink: 0;
    margin-bottom: 2px !important;  /* 缩小底部间距 */
  }

  #recordsSection .netdisk-pathbar {
    flex-shrink: 0;
    margin: 0 18px 10px !important;
    min-height: 46px;
    clear: both;
  }

  #recordsSection .records-header {
    flex-shrink: 0;
    margin-top: 0 !important;
    align-self: start;
  }

  #recordsSection #recordsContainer {
    min-height: 0;
    align-self: stretch;
  }
}

/* 2026-04-29: upload drawer header/option polish */
#uploadSection .panel-title {
  display: flex !important;
  align-items: center !important;
  gap: 12px !important;
  padding-right: 78px !important;
  min-height: 72px !important;
}
#uploadSection .panel-title i {
  flex: 0 0 auto !important;
}
#uploadSection .panel-title::after {
  flex: 1 1 auto !important;
  margin-top: 0 !important;
  white-space: nowrap !important;
}
#uploadSection .upload-drawer-close {
  float: none !important;
  position: absolute !important;
  right: 18px !important;
  top: 18px !important;
  transform: none !important;
  z-index: 10 !important;
  cursor: pointer !important;
  width: 36px !important;
  height: 36px !important;
  min-width: 36px !important;
  min-height: 36px !important;
  padding: 0 !important;
  border-radius: 12px !important;
  background: rgba(15,23,42,.08) !important;
  color: var(--h-text) !important;
  box-shadow: none !important;
  font-size: 22px !important;
  line-height: 1 !important;
  border: none !important;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background .2s ease, transform .2s ease;
}
#uploadSection .upload-drawer-close:hover {
  background: rgba(239,71,111,.14) !important;
  color: var(--h-danger) !important;
  transform: scale(1.05) !important;
}
#uploadSection .upload-options-panel.collapsed .panel-content {
  display: none !important;
}
#uploadSection .upload-options-panel.collapsed .panel-header {
  border-bottom: 0 !important;
}
#uploadSection .upload-options-panel .toggle-icon {
  transform: none !important;
}
#uploadSection .upload-options-panel:not(.collapsed) .toggle-icon {
  transform: rotate(0deg) !important;
}

/* 上传选项横向排布 + 压缩高度 */
#uploadSection .upload-options-panel .panel-content > div[style*="flex-direction: column"] {
  flex-direction: row !important;
  flex-wrap: wrap !important;
  gap: 6px !important;
}
#uploadSection .upload-options-panel .panel-content > div[style*="flex-direction: column"] > label {
  flex: 0 0 auto !important;
  padding: 4px 10px !important;
  margin: 0 !important;
  border-radius: 8px !important;
  background: rgba(91,108,255,.08) !important;
  transition: background .2s ease;
  font-size: 13px !important;
}
#uploadSection .upload-options-panel .panel-content > div[style*="flex-direction: column"] > label:hover {
  background: rgba(91,108,255,.16) !important;
}
#uploadSection .upload-options-panel .panel-content > div[style*="flex-direction: column"] > label input[type="checkbox"] {
  width: 14px !important;
  height: 14px !important;
  margin: 0 !important;
  accent-color: var(--primary, #4361ee);
}
#uploadSection .upload-options-panel .panel-content > div[style*="flex-direction: column"] > label span {
  font-size: 13px !important;
  line-height: 1 !important;
}
#uploadSection .upload-options-panel .panel-content > div[style*="font-weight: 600"] {
  margin-bottom: 6px !important;
  font-size: 12px !important;
}
@media (max-width: 768px) {
  #uploadSection .panel-title {
    padding-right: 72px !important;
  }
  #uploadSection .upload-drawer-close {
    right: 14px !important;
    top: 14px !important;
  }
}

/* 2026-04-29: H5 sidebar toggle close fix */
@media (max-width: 768px) {
  #sidebar.sidebar {
    left: -100% !important;
    transform: translateX(-100%) !important;
    transition: left .24s ease, transform .24s ease !important;
  }
  #sidebar.sidebar.mobile-open {
    left: 0 !important;
    transform: translateX(0) !important;
  }
  #sidebarOverlay.sidebar-overlay.active {
    opacity: 1 !important;
    visibility: visible !important;
    pointer-events: auto !important;
  }
}

/* 2026-04-29: make My Shares action buttons reliably clickable */
#sharesSection .share-item,
#recordsContainer .share-item {
  position: relative !important;
  z-index: 1 !important;
}
#sharesSection .share-actions,
#recordsContainer .share-actions,
#sharesSection .share-actions .btn-small,
#recordsContainer .share-actions .btn-small,
#sharesSection .share-delete-btn,
#recordsContainer .share-delete-btn {
  position: relative !important;
  z-index: 30 !important;
  pointer-events: auto !important;
}

/* ========== 全局下拉菜单修复 - 确保在顶层显示 ========== */
/* 修复所有select-dropdown-menu的z-index和显示问题 */
/* 注意：不再强制display:block，允许通过JS控制显示/隐藏 */
.select-dropdown-menu,
#recordsSection .select-dropdown-menu,
#recordsSection .toolbar-right .select-dropdown-menu,
.select-dropdown[id] .select-dropdown-menu {
  position: absolute !important;
  z-index: 2147483647 !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  max-height: none !important;
  height: auto !important;
  overflow: visible !important;
  clip: auto !important;
  clip-path: none !important;
}

/* 确保下拉菜单容器允许溢出 */
.select-dropdown,
#recordsSection .select-dropdown,
#recordsSection .toolbar-right .select-dropdown {
  position: relative !important;
  z-index: 2147483646 !important;
  overflow: visible !important;
  isolation: isolate; /* 创建新的堆叠上下文 */
}

/* 确保工具栏和父容器不裁剪下拉菜单 */
#recordsSection .files-toolbar {
  overflow: visible !important;
  z-index: 999999 !important; /* 确保工具栏在高层级 */
}

#recordsSection .toolbar-right,
.records-actions {
  overflow: visible !important;
}

/* 确保文件列表容器不覆盖下拉菜单 */
#recordsSection #recordsContainer {
  position: relative;
  z-index: 1; /* 低于工具栏的z-index */
}

/* ========== 批量操作按钮优化 - 确保全部可见可用 ========== */
/* 批量操作按钮容器 - 允许换行显示所有按钮 */
#recordsSection .toolbar-right {
  gap: 4px !important;  /* 缩小间距 */
}

#recordsSection .toolbar-right .btn-small,
#batchMoveBtn,
#batchShareBtn,
#batchDeleteBtn2,
#selectDropdownBtn,
#batchCopyDropdown > .btn-small {
  font-size: 11px !important;  /* 更小字体 */
  padding: 4px 8px !important;  /* 更紧凑内边距 */
  white-space: nowrap !important;  /* 防止文字换行 */
  flex-shrink: 0 !important;  /* 防止被压缩 */
}

/* 已选数量显示优化 */
#selectedCount {
  font-size: 11px !important;
  margin-left: 4px !important;
  white-space: nowrap !important;
  flex-shrink: 0 !important;
}

/* 文件数量徽章 */
#fileCountBadge {
  font-size: 10px !important;
  white-space: nowrap !important;
  flex-shrink: 0 !important;
}

/* ========== 文件列表视觉协调优化 ========== */
.netdisk-list-view .record-item,
.record-item {
  min-height: 42px !important;  /* 最小高度 */
}

/* 文件名字体 */
.record-name,
.netdisk-list-view .record-name {
  font-size: 13px !important;
  font-weight: 600 !important;
}

/* 强制覆盖：确保列表视图中的文件名行使用正确的flex布局 */
.netdisk-list-view .record-item .record-content > .record-name {
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  justify-content: flex-start !important;  /* 关键：覆盖space-between */
  gap: 8px !important;
}

/* 操作按钮统一风格 */
.record-item .record-actions button,
.netdisk-list-view .record-actions button {
  padding: 4px 10px !important;
  font-size: 11px !important;
  border-radius: 8px !important;
  border: 1px solid rgba(91,108,255,.15) !important;
  background: linear-gradient(135deg, rgba(255,255,255,.9), rgba(245,247,250,.9)) !important;
  color: var(--h-text, #333) !important;
  transition: all .2s ease !important;
}
.record-item .record-actions button:hover,
.netdisk-list-view .record-actions button:hover {
  background: linear-gradient(135deg, var(--h-primary), #3a56d4) !important;
  color: white !important;
  border-color: transparent !important;
  transform: translateY(-1px);
  box-shadow: 0 2px 8px rgba(91,108,255,.25) !important;
}

/* 2026-04-29: make My Shares copy buttons reliably clickable */
#sharesSection .share-copy-btn,
#recordsContainer .share-copy-btn {
  position: relative !important;
  z-index: 30 !important;
  pointer-events: auto !important;
}
