@charset "UTF-8";
/* ============================================================================
   星云盘 · Nebula Design System v4
   风格：深空极简 · 克制专业 · 商业级
   ---------------------------------------------------------------------------
   设计原则（去 AI 味）：
     ① 单一主色 + 中性色阶，不用紫渐变 / 大面积发光
     ② 8px 间距栅格，圆角统一 6/8/12px
     ③ 细分隔线代替厚重阴影
     ④ 信息密度优先，拒绝大留白 Hero
   ========================================================================== */

/* ---------- 1. 设计令牌 ---------- */
:root{
  /* 背景层（深空） */
  --bg-0:#070A12;
  --bg-1:#0B1020;
  --bg-2:#101728;
  --bg-3:#16203A;
  --bg-4:#1D2947;

  /* 分隔线与边框 */
  --line:rgba(255,255,255,.075);
  --line-2:rgba(255,255,255,.13);

  /* 文字 */
  --text:#EAF0FA;
  --text-2:#A9B6CE;
  --muted:#6E7F9B;
  --dim:#4C5A75;

  /* 主色（专业蓝） */
  --pri:#3B7DFF;
  --pri-2:#5B96FF;
  --pri-3:#8FB8FF;
  --pri-soft:rgba(59,125,255,.14);
  --pri-line:rgba(59,125,255,.4);

  /* 强调色（星光青 · 仅点缀） */
  --acc:#22D3EE;
  --acc-soft:rgba(34,211,238,.13);

  /* 语义色 */
  --ok:#2ED47A;
  --warn:#F5A623;
  --err:#FF5C5C;
  --ok-soft:rgba(46,212,122,.13);
  --warn-soft:rgba(245,166,35,.13);
  --err-soft:rgba(255,92,92,.13);

  /* 圆角 */
  --r-sm:6px;
  --r:8px;
  --r-lg:12px;
  --r-pill:999px;

  /* 阴影（克制） */
  --sh-1:0 1px 2px rgba(0,0,0,.32);
  --sh-2:0 4px 16px rgba(0,0,0,.34);
  --sh-3:0 12px 32px rgba(0,0,0,.4);
  --focus:0 0 0 3px rgba(59,125,255,.28);

  /* 字体 */
  --font:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei","Helvetica Neue",Helvetica,Arial,sans-serif;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;
}

/* ---------- 2. 基础 ---------- */
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;
  font-family:var(--font);
  font-size:14px;
  line-height:1.65;
  color:var(--text);
  background:var(--bg-0);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}
body::before{
  content:"";
  position:fixed;inset:0;z-index:0;pointer-events:none;
  background-image:
    radial-gradient(1px 1px at 12% 18%, rgba(255,255,255,.42), transparent 100%),
    radial-gradient(1px 1px at 68% 8%,  rgba(255,255,255,.32), transparent 100%),
    radial-gradient(1px 1px at 34% 62%, rgba(255,255,255,.26), transparent 100%),
    radial-gradient(1px 1px at 88% 44%, rgba(255,255,255,.3),  transparent 100%),
    radial-gradient(1px 1px at 52% 82%, rgba(255,255,255,.22), transparent 100%),
    radial-gradient(1px 1px at 8%  78%, rgba(255,255,255,.2),  transparent 100%);
  background-size:640px 520px;
  opacity:.75;
}
body::after{
  content:"";
  position:fixed;top:-240px;left:50%;
  width:900px;height:480px;transform:translateX(-50%);
  background:radial-gradient(ellipse at center, rgba(59,125,255,.16), rgba(34,211,238,.06) 45%, transparent 70%);
  pointer-events:none;z-index:0;
}
a{color:var(--pri-2);text-decoration:none;transition:color .16s}
a:hover{color:var(--pri-3)}
img{max-width:100%}
hr{border:0;border-top:1px solid var(--line);margin:18px 0}
::selection{background:rgba(59,125,255,.32);color:#fff}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:var(--bg-1)}
::-webkit-scrollbar-thumb{background:#22304F;border-radius:8px;border:2px solid var(--bg-1)}
::-webkit-scrollbar-thumb:hover{background:#2E3F66}

/* ---------- 3. 布局 ---------- */
.container{
  width:100%;max-width:1120px;margin:0 auto;padding:0 20px;
  position:relative;z-index:1;
}
.nb-main{padding:26px 0 64px;position:relative;z-index:1}

/* ---------- 4. 顶部导航 ---------- */
.nb-nav{
  position:sticky;top:0;z-index:50;
  background:rgba(11,16,32,.86);
  backdrop-filter:saturate(150%) blur(14px);
  -webkit-backdrop-filter:saturate(150%) blur(14px);
  border-bottom:1px solid var(--line);
}
.nb-nav-inner{
  max-width:1120px;margin:0 auto;padding:0 20px;height:60px;
  display:flex;align-items:center;gap:14px;
}
.nb-logo{
  display:flex;align-items:center;gap:10px;
  font-size:16px;font-weight:600;color:var(--text);
  letter-spacing:.2px;white-space:nowrap;
}
.nb-logo:hover{color:var(--text)}
.nb-logo-mark{
  width:30px;height:30px;flex:0 0 30px;
  display:inline-flex;align-items:center;justify-content:center;
  border-radius:var(--r-sm);
  background:linear-gradient(135deg,var(--pri) 0%, #2E6BE6 55%, var(--acc) 140%);
  color:#fff;font-size:13px;
  box-shadow:0 2px 8px rgba(59,125,255,.32);
}
.nb-nav-links{display:flex;align-items:center;gap:4px;margin-left:14px}
.nb-nav-links a{
  display:inline-flex;align-items:center;gap:7px;
  padding:7px 12px;font-size:13.5px;font-weight:500;
  color:var(--text-2);border-radius:var(--r-sm);
  transition:background .16s,color .16s;
}
.nb-nav-links a i{font-size:12.5px;opacity:.9}
.nb-nav-links a:hover{background:var(--bg-3);color:var(--text)}
.nb-nav-links a.active{background:var(--pri-soft);color:var(--pri-3)}
.nb-nav-right{margin-left:auto;display:flex;align-items:center;gap:10px}
.nb-nav-right a{
  display:inline-flex;align-items:center;gap:7px;
  padding:7px 13px;font-size:13.5px;font-weight:500;
  color:var(--text-2);border:1px solid var(--line-2);
  border-radius:var(--r-sm);transition:.16s;
}
.nb-nav-right a:hover{background:var(--bg-3);color:var(--text);border-color:var(--pri-line)}
.nb-nav-toggle{
  display:none;margin-left:auto;
  width:38px;height:34px;background:transparent;
  border:1px solid var(--line-2);border-radius:var(--r-sm);
  color:var(--text-2);font-size:15px;cursor:pointer;transition:.16s;
}
.nb-nav-toggle:hover{background:var(--bg-3);color:var(--text)}

/* ---------- 5. 页面标题栏 ---------- */
.nb-pagebar{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin:4px 0 20px}
.nb-page-title{
  display:flex;align-items:center;gap:10px;margin:0;
  font-size:20px;font-weight:600;letter-spacing:.2px;color:var(--text);
}
.nb-page-title > i{color:var(--pri-2);font-size:17px}
.nb-page-count{
  margin-left:2px;font-size:12px;font-weight:500;color:var(--muted);
  background:var(--bg-2);border:1px solid var(--line);
  border-radius:var(--r-pill);padding:2px 10px;
}

/* ---------- 6. 卡片 / 面板 ---------- */
.nb-card{
  background:var(--bg-2);border:1px solid var(--line);
  border-radius:var(--r-lg);box-shadow:var(--sh-1);
}
.nb-card-head{
  padding:14px 18px;border-bottom:1px solid var(--line);
  font-size:14px;font-weight:600;color:var(--text);
  display:flex;align-items:center;gap:9px;
}
.nb-card-head i{color:var(--pri-2);font-size:13px}
.nb-card-body{padding:18px}
.nb-section-title{
  display:flex;align-items:center;gap:9px;
  font-size:15px;font-weight:600;color:var(--text);margin:26px 0 12px;
}
.nb-section-title::before{
  content:"";width:3px;height:15px;border-radius:2px;
  background:linear-gradient(180deg,var(--pri),var(--acc));
}

/* ---------- 7. 按钮 ---------- */
.nb-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  padding:9px 16px;font-size:13.5px;font-weight:500;font-family:var(--font);
  line-height:1.2;border:1px solid transparent;border-radius:var(--r);
  cursor:pointer;white-space:nowrap;
  transition:background .16s,border-color .16s,color .16s,transform .1s;
  -webkit-tap-highlight-color:transparent;
}
.nb-btn i{font-size:13px}
.nb-btn:active{transform:translateY(1px)}
.nb-btn-primary{background:var(--pri);color:#fff;box-shadow:0 2px 10px rgba(59,125,255,.28)}
.nb-btn-primary:hover{background:var(--pri-2);color:#fff}
.nb-btn-ghost{background:var(--bg-3);color:var(--text-2);border-color:var(--line-2)}
.nb-btn-ghost:hover{background:var(--bg-4);color:var(--text);border-color:var(--pri-line)}
.nb-btn-outline{background:transparent;color:var(--pri-3);border-color:var(--pri-line)}
.nb-btn-outline:hover{background:var(--pri-soft);color:var(--pri-3)}
.nb-btn-sm{padding:6px 11px;font-size:12.5px;border-radius:var(--r-sm)}
.nb-btn-sm i{font-size:11.5px}
.nb-btn-block{width:100%}

/* ---------- 8. 表单 ---------- */
.nb-input,.nb-select,.nb-textarea{
  width:100%;padding:10px 13px;font-size:13.5px;font-family:var(--font);
  color:var(--text);background:var(--bg-1);
  border:1px solid var(--line-2);border-radius:var(--r);outline:none;
  transition:border-color .16s,box-shadow .16s,background .16s;
}
.nb-input::placeholder,.nb-textarea::placeholder{color:var(--dim)}
.nb-input:focus,.nb-select:focus,.nb-textarea:focus{
  border-color:var(--pri);background:var(--bg-2);box-shadow:var(--focus);
}
.nb-textarea{min-height:110px;resize:vertical}
.nb-label{display:block;font-size:13px;font-weight:500;color:var(--text-2);margin-bottom:7px}
.nb-hint{font-size:12px;color:var(--muted);margin-top:6px}
.nb-check{
  display:inline-flex;align-items:center;gap:9px;
  font-size:13.5px;color:var(--text-2);cursor:pointer;user-select:none;
  padding:8px 12px;background:var(--bg-1);
  border:1px solid var(--line);border-radius:var(--r);transition:.16s;
}
.nb-check:hover{border-color:var(--line-2);background:var(--bg-2)}
.nb-check input[type=checkbox]{width:16px;height:16px;margin:0;accent-color:var(--pri);cursor:pointer}

/* ---------- 9. 搜索栏 ---------- */
.nb-search{
  display:flex;align-items:center;gap:0;position:relative;
  background:var(--bg-1);border:1px solid var(--line-2);
  border-radius:var(--r-lg);padding:5px 5px 5px 42px;margin-bottom:18px;
  transition:border-color .16s,box-shadow .16s;
}
.nb-search:focus-within{border-color:var(--pri);box-shadow:var(--focus)}
.nb-search-ico{
  position:absolute;left:15px;top:50%;transform:translateY(-50%);
  color:var(--muted);font-size:14px;pointer-events:none;
}
.nb-search input{
  flex:1;min-width:0;padding:8px 10px 8px 0;
  font-size:14px;font-family:var(--font);color:var(--text);
  background:transparent;border:0;outline:none;
}
.nb-search input::placeholder{color:var(--dim)}
.nb-search button{
  display:inline-flex;align-items:center;gap:7px;
  padding:9px 18px;font-size:13.5px;font-weight:500;font-family:var(--font);
  color:#fff;background:var(--pri);border:0;border-radius:var(--r);
  cursor:pointer;white-space:nowrap;transition:background .16s;
}
.nb-search button:hover{background:var(--pri-2)}

/* ---------- 10. 文件列表 ---------- */
.nb-list{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden}
.nb-item{
  display:flex;align-items:center;gap:14px;padding:13px 18px;
  border-bottom:1px solid var(--line);transition:background .14s;
}
.nb-item:last-child{border-bottom:0}
.nb-item:hover{background:var(--bg-3)}
.nb-item-icon{
  width:40px;height:40px;flex:0 0 40px;
  display:flex;align-items:center;justify-content:center;
  border-radius:var(--r);background:var(--bg-1);
  border:1px solid var(--line);font-size:16px;color:var(--pri-3);
}
.nb-item-main{flex:1;min-width:0}
.nb-item-name{
  font-size:14px;font-weight:500;color:var(--text);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.nb-item-meta{
  display:flex;align-items:center;flex-wrap:wrap;gap:6px 14px;
  margin-top:5px;font-size:12px;color:var(--muted);
}
.nb-item-meta span{display:inline-flex;align-items:center;gap:5px}
.nb-item-meta i{font-size:11px;opacity:.85}
.nb-tag{
  display:inline-flex;align-items:center;padding:1px 8px;
  font-size:10.5px;font-weight:600;letter-spacing:.4px;
  color:var(--acc);background:var(--acc-soft);
  border-radius:var(--r-sm);text-transform:uppercase;
}
.nb-item-acts{display:flex;align-items:center;gap:8px;flex-shrink:0}

/* ---------- 11. 空状态 ---------- */
.nb-empty{
  text-align:center;padding:64px 24px;background:var(--bg-2);
  border:1px dashed var(--line-2);border-radius:var(--r-lg);
}
.nb-empty > i{font-size:38px;color:var(--dim);display:block;margin-bottom:16px}
.nb-empty p{color:var(--muted);font-size:14px;margin:0 0 20px}

/* ---------- 12. 分页 ---------- */
.nb-pager{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;margin:22px 0 0}
.nb-page{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:36px;height:36px;padding:0 12px;
  font-size:13px;font-weight:500;color:var(--text-2);
  background:var(--bg-2);border:1px solid var(--line);
  border-radius:var(--r);transition:.16s;
}
.nb-page:hover{background:var(--bg-3);color:var(--text);border-color:var(--pri-line)}
.nb-page-cur{background:var(--pri-soft);border-color:var(--pri-line);color:var(--pri-3)}

/* ---------- 13. 提示条 ---------- */
.nb-alert{
  display:flex;align-items:flex-start;gap:11px;padding:13px 16px;
  font-size:13.5px;line-height:1.6;border:1px solid var(--line);
  border-radius:var(--r);background:var(--bg-2);color:var(--text-2);
}
.nb-alert i{font-size:14px;margin-top:2px}
.nb-alert-info{border-color:var(--pri-line);background:var(--pri-soft);color:var(--pri-3)}
.nb-alert-warn{border-color:rgba(245,166,35,.35);background:var(--warn-soft);color:#FFD48A}
.nb-alert-err{border-color:rgba(255,92,92,.35);background:var(--err-soft);color:#FFB0B0}
.nb-alert-ok{border-color:rgba(46,212,122,.35);background:var(--ok-soft);color:#8BEDBB}
.nb-tip-list{list-style:none;margin:0;padding:0}
.nb-tip-list li{
  display:flex;gap:10px;padding:11px 18px;
  font-size:13px;color:var(--text-2);line-height:1.6;
  border-bottom:1px solid var(--line);
}
.nb-tip-list li:last-child{border-bottom:0}
.nb-tip-list li i{color:var(--pri-2);font-size:12px;margin-top:4px}

/* ---------- 14. 内容页 ---------- */
.nb-doc{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden}
.nb-doc-head{
  padding:26px 30px 20px;border-bottom:1px solid var(--line);
  background:linear-gradient(180deg,rgba(59,125,255,.07),transparent);
}
.nb-doc-head h1{
  margin:0 0 8px;font-size:22px;font-weight:600;color:var(--text);
  display:flex;align-items:center;gap:11px;
}
.nb-doc-head h1 i{color:var(--pri-2);font-size:19px}
.nb-doc-head p{margin:0;font-size:13px;color:var(--muted)}
.nb-doc-body{padding:26px 30px 34px;font-size:14px;line-height:1.85;color:var(--text-2)}
.nb-doc-body h2{
  font-size:16px;font-weight:600;color:var(--text);
  margin:30px 0 12px;padding-left:12px;border-left:3px solid var(--pri);
}
.nb-doc-body h2:first-child{margin-top:0}
.nb-doc-body h3{font-size:14.5px;font-weight:600;color:var(--text);margin:22px 0 10px}
.nb-doc-body h4{font-size:14px;font-weight:600;color:var(--text);margin:20px 0 8px}
.nb-doc-body p{margin:10px 0}
.nb-doc-body ul,.nb-doc-body ol{margin:10px 0;padding-left:22px}
.nb-doc-body li{margin:6px 0}
.nb-doc-body strong{color:var(--text);font-weight:600}
.nb-doc-body code{
  font-family:var(--mono);font-size:12.5px;padding:2px 6px;
  border-radius:4px;background:var(--bg-0);border:1px solid var(--line);color:var(--acc);
}
.nb-doc-body table{width:100%;border-collapse:collapse;margin:14px 0;font-size:13px}
.nb-doc-body th,.nb-doc-body td{padding:10px 13px;text-align:left;border:1px solid var(--line)}
.nb-doc-body th{background:var(--bg-3);color:var(--text);font-weight:600}
.nb-doc-body tr:nth-child(even) td{background:rgba(255,255,255,.015)}

/* ---------- 15. 徽章 ---------- */
.nb-badge{
  display:inline-flex;align-items:center;gap:5px;
  padding:2px 9px;font-size:11.5px;font-weight:600;
  border-radius:var(--r-pill);background:var(--bg-3);color:var(--text-2);
  border:1px solid var(--line);
}
.nb-badge-ok{background:var(--ok-soft);color:#8BEDBB;border-color:rgba(46,212,122,.3)}
.nb-badge-warn{background:var(--warn-soft);color:#FFD48A;border-color:rgba(245,166,35,.3)}
.nb-badge-err{background:var(--err-soft);color:#FFB0B0;border-color:rgba(255,92,92,.3)}

/* ---------- 16. 登录页 ---------- */
.nb-auth-wrap{
  min-height:calc(100vh - 60px);display:flex;align-items:center;justify-content:center;
  padding:48px 20px;position:relative;z-index:1;
}
.nb-auth{
  width:100%;max-width:400px;background:var(--bg-2);
  border:1px solid var(--line);border-radius:var(--r-lg);
  box-shadow:var(--sh-3);padding:36px 32px 32px;text-align:center;
}
.nb-auth-logo{
  width:54px;height:54px;margin:0 auto 18px;
  display:flex;align-items:center;justify-content:center;border-radius:14px;
  background:linear-gradient(135deg,var(--pri) 0%, #2E6BE6 55%, var(--acc) 140%);
  color:#fff;font-size:22px;box-shadow:0 6px 22px rgba(59,125,255,.34);
}
.nb-auth h1{margin:0 0 6px;font-size:19px;font-weight:600;color:var(--text)}
.nb-auth-sub{font-size:13px;color:var(--muted);margin:0 0 26px}
.nb-auth-btns{display:flex;flex-direction:column;gap:11px}
.nb-oauth{
  display:flex;align-items:center;justify-content:center;gap:9px;
  width:100%;padding:12px;font-size:14px;font-weight:500;font-family:var(--font);
  border:1px solid var(--line-2);border-radius:var(--r);
  background:var(--bg-1);color:var(--text);cursor:pointer;transition:.16s;
}
.nb-oauth i{font-size:17px}
.nb-oauth:hover{background:var(--bg-3);border-color:var(--line-2);transform:translateY(-1px)}
.nb-oauth.qq:hover{border-color:rgba(18,183,245,.5);color:#5BC8F5}
.nb-oauth.wx:hover{border-color:rgba(46,212,122,.5);color:#7BE8A8}
.nb-auth-foot{margin-top:22px;font-size:12px;color:var(--dim);line-height:1.7}

/* ---------- 17. 上传页 ---------- */
.nb-upload-grid{display:grid;grid-template-columns:1fr 320px;gap:20px;align-items:start}
.nb-dropzone{
  background:var(--bg-2);border:1px solid var(--line);
  border-radius:var(--r-lg);padding:38px 28px 44px;text-align:center;
}
.nb-dropzone-ico{
  width:64px;height:64px;margin:0 auto 18px;
  display:flex;align-items:center;justify-content:center;border-radius:16px;
  background:var(--pri-soft);border:1px solid var(--pri-line);
  color:var(--pri-2);font-size:25px;
}
.nb-dropzone h2{margin:0 0 8px;font-size:17px;font-weight:600;color:var(--text)}
.nb-dropzone-sub{font-size:13px;color:var(--muted);margin:0 0 24px}
.nb-upload-opts{
  display:flex;flex-direction:column;gap:10px;
  margin-top:24px;padding-top:22px;border-top:1px solid var(--line);text-align:left;
}
.nb-pwd-box{display:flex;flex-direction:column}
.nb-progress{
  height:8px;border-radius:var(--r-pill);background:var(--bg-1);
  border:1px solid var(--line);overflow:hidden;
}
.nb-progress-bar{
  height:100%;background:linear-gradient(90deg,var(--pri),var(--acc));
  border-radius:var(--r-pill);transition:width .25s ease;
}
.nb-progress-meta{
  display:flex;justify-content:space-between;align-items:center;gap:12px;
  margin-top:9px;font-size:12px;color:var(--muted);
}
.nb-progress-meta .nb-fname{
  flex:1;min-width:0;white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis;text-align:center;
}

/* ---------- 18. 表格 ---------- */
.nb-table-wrap{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-lg);overflow:auto}
.nb-table{width:100%;border-collapse:collapse;font-size:13px}
.nb-table th{
  padding:12px 16px;text-align:left;font-weight:600;color:var(--text-2);
  background:var(--bg-1);border-bottom:1px solid var(--line);white-space:nowrap;
}
.nb-table td{padding:12px 16px;color:var(--text-2);border-bottom:1px solid var(--line);vertical-align:middle}
.nb-table tbody tr:last-child td{border-bottom:0}
.nb-table tbody tr:hover td{background:var(--bg-3)}

/* ---------- 19. 页脚 ---------- */
.nb-footer{background:var(--bg-1);border-top:1px solid var(--line);position:relative;z-index:1}
.nb-footer-inner{
  max-width:1120px;margin:0 auto;padding:40px 20px 0;
  display:grid;grid-template-columns:1.6fr 1fr 1fr;gap:32px;
}
.nb-footer-brand .nb-logo{margin-bottom:12px}
.nb-footer-brand p{font-size:12.5px;color:var(--muted);line-height:1.8;margin:0;max-width:330px}
.nb-footer h4{font-size:12.5px;font-weight:600;color:var(--text);margin:0 0 14px;letter-spacing:.3px}
.nb-footer ul{list-style:none;margin:0;padding:0}
.nb-footer ul li{margin:9px 0}
.nb-footer ul li a{font-size:12.5px;color:var(--muted)}
.nb-footer ul li a:hover{color:var(--pri-3)}
.nb-footer-bottom{
  max-width:1120px;margin:32px auto 0;padding:18px 20px;
  border-top:1px solid var(--line);
  display:flex;flex-wrap:wrap;align-items:center;justify-content:center;
  gap:6px 10px;font-size:12px;color:var(--dim);text-align:center;
}
.nb-footer-bottom a{color:var(--muted)}
.nb-footer-bottom a:hover{color:var(--pri-3)}
.nb-sep{color:var(--dim);opacity:.5}
.nb-police{display:inline-flex;align-items:center;gap:5px}
.nb-police i{font-size:11px;color:var(--muted)}

/* ---------- 20. 工具类 ---------- */
.nb-text-c{text-align:center}
.nb-text-r{text-align:right}
.nb-muted{color:var(--muted)}
.nb-mt-0{margin-top:0}
.nb-mt-1{margin-top:10px}
.nb-mt-2{margin-top:20px}
.nb-mt-3{margin-top:30px}
.nb-mb-0{margin-bottom:0}
.nb-mb-2{margin-bottom:20px}

/* ---------- 21. Bootstrap 深色覆盖 ---------- */
.well{
  background:var(--bg-2) !important;border:1px solid var(--line) !important;
  border-radius:var(--r-lg) !important;box-shadow:var(--sh-1) !important;
  color:var(--text-2) !important;padding:20px !important;
}
.panel{
  background:var(--bg-2) !important;border:1px solid var(--line) !important;
  border-radius:var(--r-lg) !important;box-shadow:var(--sh-1) !important;
}
.panel-heading{
  background:var(--bg-1) !important;border-bottom:1px solid var(--line) !important;
  border-radius:var(--r-lg) var(--r-lg) 0 0 !important;
  color:var(--text) !important;padding:13px 18px !important;
}
.panel-title{font-size:14px !important;font-weight:600 !important;color:var(--text) !important}
.panel-primary{border-color:var(--line) !important}
.list-group-item{
  background:transparent !important;border-color:var(--line) !important;
  color:var(--text-2) !important;font-size:13px !important;
  line-height:1.7 !important;padding:11px 18px !important;
}
.form-control{
  background:var(--bg-1) !important;border:1px solid var(--line-2) !important;
  border-radius:var(--r) !important;color:var(--text) !important;
  box-shadow:none !important;height:auto !important;
  padding:10px 13px !important;font-size:13.5px !important;
}
.form-control:focus{border-color:var(--pri) !important;box-shadow:var(--focus) !important}
.form-control::placeholder{color:var(--dim) !important}
.btn{border-radius:var(--r) !important;font-size:13.5px !important;font-weight:500 !important;border:0 !important;transition:.16s !important}
.btn-primary{background:var(--pri) !important;color:#fff !important}
.btn-primary:hover{background:var(--pri-2) !important}
.btn-default{background:var(--bg-3) !important;color:var(--text-2) !important;border:1px solid var(--line-2) !important}
.btn-default:hover{background:var(--bg-4) !important;color:var(--text) !important}
.btn-info{background:#12A5DC !important;color:#fff !important}
.btn-success{background:var(--ok) !important;color:#04240F !important}
.btn-danger{background:var(--err) !important;color:#fff !important}
.btn-warning{background:var(--warn) !important;color:#2A1A00 !important}
.btn-raised{box-shadow:0 3px 12px rgba(59,125,255,.3) !important}
.alert{border-radius:var(--r) !important;border-width:1px !important;font-size:13.5px !important}
.alert-info{background:var(--pri-soft) !important;border-color:var(--pri-line) !important;color:var(--pri-3) !important}
.alert-danger{background:var(--err-soft) !important;border-color:rgba(255,92,92,.35) !important;color:#FFB0B0 !important}
.alert-warning{background:var(--warn-soft) !important;border-color:rgba(245,166,35,.35) !important;color:#FFD48A !important}
.alert-success{background:var(--ok-soft) !important;border-color:rgba(46,212,122,.35) !important;color:#8BEDBB !important}
.text-muted{color:var(--muted) !important}
.text-primary{color:var(--pri-3) !important}
.text-danger{color:#FFB0B0 !important}
.text-success{color:#8BEDBB !important}
a.text-muted:hover{color:var(--pri-3) !important}
.label{border-radius:var(--r-sm) !important;font-weight:600 !important;font-size:11px !important;padding:3px 8px !important}
.label-primary{background:var(--pri-soft) !important;color:var(--pri-3) !important}
.label-success{background:var(--ok-soft) !important;color:#8BEDBB !important}
.label-danger{background:var(--err-soft) !important;color:#FFB0B0 !important}
.label-default{background:var(--bg-3) !important;color:var(--text-2) !important}
.modal-content{
  background:var(--bg-2) !important;border:1px solid var(--line-2) !important;
  border-radius:var(--r-lg) !important;color:var(--text) !important;
}
.modal-header,.modal-footer{border-color:var(--line) !important}
.modal-title{color:var(--text) !important}
.close{color:var(--text-2) !important;opacity:.7;text-shadow:none !important}
.close:hover{color:var(--text) !important;opacity:1}
.dropdown-menu{
  background:var(--bg-2) !important;border:1px solid var(--line-2) !important;
  border-radius:var(--r) !important;box-shadow:var(--sh-2) !important;
}
.dropdown-menu > li > a{color:var(--text-2) !important;font-size:13px !important;padding:9px 16px !important}
.dropdown-menu > li > a:hover,.dropdown-menu > li > a:focus{background:var(--bg-3) !important;color:var(--text) !important}
.dropdown-menu .divider{background:var(--line) !important}
.progress{
  background:var(--bg-1) !important;border-radius:var(--r-pill) !important;
  height:8px !important;box-shadow:none !important;
  border:1px solid var(--line) !important;overflow:hidden;
}
.progress-bar{background:linear-gradient(90deg,var(--pri),var(--acc)) !important;box-shadow:none !important}
.table > thead > tr > th{border-bottom:1px solid var(--line) !important;color:var(--text-2) !important;font-weight:600 !important}
.table > tbody > tr > td{border-top:1px solid var(--line) !important;color:var(--text-2) !important}
.table-striped > tbody > tr:nth-of-type(odd){background:rgba(255,255,255,.015) !important}
.table-hover > tbody > tr:hover{background:var(--bg-3) !important}
.pagination > li > a,.pagination > li > span{
  background:var(--bg-2) !important;border-color:var(--line) !important;color:var(--text-2) !important;
}
.pagination > .active > a{background:var(--pri) !important;border-color:var(--pri) !important;color:#fff !important}
.thumbnail{background:var(--bg-2) !important;border:1px solid var(--line) !important;border-radius:var(--r) !important}
code{background:var(--bg-0) !important;color:var(--acc) !important;border-radius:4px !important}
pre{background:var(--bg-0) !important;border:1px solid var(--line) !important;color:var(--text-2) !important;border-radius:var(--r) !important}
.colorful_loading_frame{display:none !important}

/* ---------- 22. 响应式 ---------- */
@media (max-width:900px){
  .nb-footer-inner{grid-template-columns:1fr 1fr;gap:26px}
  .nb-footer-brand{grid-column:1 / -1}
  .nb-upload-grid{grid-template-columns:1fr}
}
@media (max-width:768px){
  .container{padding:0 14px}
  .nb-nav-inner{padding:0 14px;height:56px}
  .nb-nav-toggle{display:inline-flex;align-items:center;justify-content:center}
  .nb-nav-links{
    display:none;position:absolute;top:56px;left:0;right:0;
    flex-direction:column;align-items:stretch;gap:2px;
    margin:0;padding:10px;background:var(--bg-1);
    border-bottom:1px solid var(--line-2);box-shadow:var(--sh-2);
  }
  .nb-nav-links.open{display:flex}
  .nb-nav-links a{padding:11px 14px;font-size:14px}
  .nb-nav-right{margin-left:0}
  .nb-nav-right a{padding:7px 11px}
  .nb-logo span:last-child{font-size:15px}
  .nb-main{padding:18px 0 48px}
  .nb-pagebar{margin-bottom:16px}
  .nb-page-title{font-size:17px}
  .nb-item{flex-wrap:wrap;gap:11px;padding:12px 14px}
  .nb-item-acts{width:100%;justify-content:flex-end}
  .nb-item-acts .nb-btn{flex:1;max-width:50%}
  .nb-doc-head{padding:20px 18px 16px}
  .nb-doc-head h1{font-size:18px}
  .nb-doc-body{padding:20px 18px 26px;font-size:13.5px}
  .nb-footer-inner{grid-template-columns:1fr;gap:24px;padding:30px 18px 0}
  .nb-footer-bottom{padding:16px 18px;flex-direction:column;gap:6px}
  .nb-auth{padding:30px 22px 26px}
  .nb-dropzone{padding:30px 18px 36px}
  .nb-search{padding-left:38px}
  .nb-search button{padding:9px 14px}
  .nb-search button span{display:none}
}
@media (max-width:480px){
  .nb-page-count{display:none}
  .nb-item-icon{width:36px;height:36px;flex-basis:36px;font-size:15px}
}

/* ---------- 23. 页头操作区 / 备注 ---------- */
.nb-pagebar-acts{
  margin-left:auto;
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
}
.nb-page-note{
  font-size:12px;font-weight:400;color:var(--muted);
  margin-left:6px;
}

/* ---------- 24. 文件类型图标配色 ---------- */
.nb-icon-img{color:#4ADE80;background:rgba(74,222,128,.1);border-color:rgba(74,222,128,.24)}
.nb-icon-vid{color:#A78BFA;background:rgba(167,139,250,.1);border-color:rgba(167,139,250,.24)}
.nb-icon-aud{color:#F472B6;background:rgba(244,114,182,.1);border-color:rgba(244,114,182,.24)}
.nb-icon-zip{color:#FBBF24;background:rgba(251,191,36,.1);border-color:rgba(251,191,36,.24)}
.nb-icon-code{color:#22D3EE;background:rgba(34,211,238,.1);border-color:rgba(34,211,238,.24)}
.nb-icon-doc{color:#60A5FA;background:rgba(96,165,250,.1);border-color:rgba(96,165,250,.24)}
.nb-icon-file{color:var(--pri-3);background:var(--pri-soft);border-color:var(--pri-line)}

/* ---------- 25. 深色主题下第三方组件微调 ---------- */
.layui-layer{border-radius:var(--r-lg) !important;box-shadow:var(--sh-3) !important}
.layui-layer-title{
  background:var(--bg-2) !important;color:var(--text) !important;
  border-bottom:1px solid var(--line) !important;
  border-radius:var(--r-lg) var(--r-lg) 0 0 !important;
}
.layui-layer-content{background:var(--bg-2) !important;color:var(--text-2) !important}
.layui-layer-btn{background:var(--bg-2) !important;border-top:1px solid var(--line) !important}
.layui-layer-btn a{
  border-radius:var(--r) !important;font-size:13px !important;
  background:var(--pri) !important;border-color:var(--pri) !important;color:#fff !important;
}
.layui-layer-btn .layui-layer-btn1{
  background:var(--bg-3) !important;border-color:var(--line-2) !important;color:var(--text-2) !important;
}
.aplayer{background:var(--bg-2) !important;color:var(--text) !important}

/* ---------- 26. Bootstrap 组件补全（file.php / 后台通用） ---------- */
.panel-body{background:transparent !important;color:var(--text-2) !important}
.panel-info,.panel-success,.panel-warning,.panel-danger{
  border-color:var(--line) !important;background:var(--bg-2) !important;
}
.panel-info > .panel-heading,.panel-success > .panel-heading,
.panel-warning > .panel-heading,.panel-danger > .panel-heading{
  background:var(--bg-1) !important;border-bottom:1px solid var(--line) !important;
  color:var(--text) !important;
}
.panel-default{border-color:var(--line) !important;background:var(--bg-2) !important}
.panel-default > .panel-heading{
  background:var(--bg-1) !important;border-bottom:1px solid var(--line) !important;color:var(--text) !important;
}

/* 选项卡 */
.nav-tabs{
  border-bottom:1px solid var(--line) !important;
  padding:0 12px;
}
.nav-tabs > li > a{
  color:var(--text-2) !important;
  border:0 !important;
  border-bottom:2px solid transparent !important;
  border-radius:0 !important;
  font-size:13.5px;
  margin-right:4px;
  padding:11px 14px !important;
  transition:.16s;
}
.nav-tabs > li > a:hover{
  background:var(--bg-3) !important;
  border-bottom-color:var(--line-2) !important;
  color:var(--text) !important;
}
.nav-tabs > li.active > a,
.nav-tabs > li.active > a:hover,
.nav-tabs > li.active > a:focus{
  background:transparent !important;
  border:0 !important;
  border-bottom:2px solid var(--pri) !important;
  color:var(--pri-3) !important;
}
.nav > li > a:focus,.nav > li > a:hover{background:var(--bg-3) !important}
.tab-content{background:transparent}
.tab-pane{padding-top:4px}

/* 输入组 */
.input-group-addon{
  background:var(--bg-3) !important;border:1px solid var(--line-2) !important;
  color:var(--text-2) !important;
}
.input-group .form-control{border-radius:var(--r) 0 0 var(--r) !important}
.input-group-btn .btn{
  border-radius:0 var(--r) var(--r) 0 !important;
  height:100%;padding:10px 18px !important;
}
.control-label{color:var(--text-2) !important;font-weight:500 !important;font-size:13px}
.help-block{color:var(--muted) !important;font-size:12px !important;margin-top:6px}
.checkbox label,.radio label{color:var(--text-2) !important;font-size:13.5px}

/* 表格 */
.table-bordered{border-color:var(--line) !important}
.table-bordered > thead > tr > th,
.table-bordered > tbody > tr > th,
.table-bordered > tfoot > tr > th,
.table-bordered > thead > tr > td,
.table-bordered > tbody > tr > td,
.table-bordered > tfoot > tr > td{
  border-color:var(--line) !important;
}
.table > tbody > tr > th{color:var(--text-2) !important;background:var(--bg-3) !important;font-weight:600}
.fileinfo-table{margin:0 !important}
.fileinfo-table th{background:var(--bg-1) !important;font-weight:600 !important;color:var(--text-2) !important}

/* 文件查看页 */
.image_view img.image{
  max-width:100%;border-radius:var(--r);
  border:1px solid var(--line);background:var(--bg-0);
}
.videoplayer,.view{width:100%}
.elseview{text-align:center;padding:44px 20px}
.elseview .tubiao{
  width:76px;height:76px;margin:0 auto 18px;
  display:flex;align-items:center;justify-content:center;
  border-radius:18px;background:var(--pri-soft);
  border:1px solid var(--pri-line);color:var(--pri-2);font-size:32px;
}
.elsetext p{font-size:14px;color:var(--text-2);margin:8px 0}
.elsetext .btn{margin-top:14px}

/* 分页 / 徽标 / 进度综合 */
.badge{background:var(--bg-3) !important;color:var(--text-2) !important;font-weight:600}
.breadcrumb{background:var(--bg-2) !important;border:1px solid var(--line) !important;border-radius:var(--r) !important}
.breadcrumb > li + li::before{color:var(--dim) !important}
.breadcrumb > .active{color:var(--text) !important}
.breadcrumb a{color:var(--pri-2) !important}
.jumbotron{background:var(--bg-2) !important;border:1px solid var(--line) !important;color:var(--text) !important;border-radius:var(--r-lg) !important}
.caret{color:var(--muted)}
.popover{background:var(--bg-2) !important;border-color:var(--line-2) !important;color:var(--text-2) !important}
.popover-title{background:var(--bg-1) !important;border-bottom-color:var(--line) !important;color:var(--text) !important}
.tooltip-inner{background:var(--bg-4) !important;color:var(--text) !important}
.tooltip.top .tooltip-arrow{border-top-color:var(--bg-4) !important}
.tooltip.bottom .tooltip-arrow{border-bottom-color:var(--bg-4) !important}
.media-body,.media-heading{color:var(--text-2) !important}
.media-heading{color:var(--text) !important}
.text-warning{color:#FFD48A !important}
.bg-primary{background:var(--pri) !important}
.btn-group > .btn + .btn{margin-left:1px}

/* ---------- 27. 未包裹 nb-main 的页面（file.php 等）自动留白 ---------- */
.nb-nav + .container{padding-top:26px;padding-bottom:64px}

/* ---------- 28. 文件查看页专项 ---------- */
.nb-qr-panel .panel-body{padding:18px !important}
#qrcode{display:inline-block;padding:8px;background:#fff;border-radius:var(--r)}
#qrcode img,#qrcode canvas{display:block}
.view .tubiao{font-size:30px}
input[readonly].form-control{color:var(--muted) !important;background:var(--bg-0) !important}
.copy-btn{white-space:nowrap}
