/* v4 styles (same base) */ 
:root{--bg:#0f1115;--panel:#151923;--panel-2:#1c2230;--text:#e6e8ee;--muted:#9aa4b2;--primary:#4da3ff;--danger:#ff6b6b;--success:#21c274;--brand:#d4af37;--border:#232a3a;}
*{box-sizing:border-box} body{margin:0;background:var(--bg);color:var(--text);font:14px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif}
a{color:var(--primary);text-decoration:none} .container{max-width:1080px;margin:24px auto;padding:0 16px}
.header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}
.header h1{font-size:20px;margin:0} .header .actions{display:flex;gap:8px;align-items:center}
.panel{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:16px;margin-bottom:16px}
.panel h2{margin:0 0 12px 0;font-size:16px} .row{display:flex;gap:12px;flex-wrap:wrap}
input[type="text"],input[type="password"],select{background:var(--panel-2);border:1px solid var(--border);border-radius:8px;padding:10px;color:var(--text);min-width:0}
input[type="file"]{background:var(--panel-2);border:1px dashed var(--border);border-radius:8px;padding:14px;width:100%;color:var(--muted)}
.btn{border:none;border-radius:8px;padding:10px 14px;background:#2a3144;color:#fff;cursor:pointer}
.btn.primary{background:var(--primary)} .btn.danger{background:var(--danger)} .btn.ghost{background:transparent;border:1px solid var(--border)}
.table{width:100%;border-collapse:collapse} .table th,.table td{border-bottom:1px solid var(--border);padding:10px;text-align:left;vertical-align:middle}
.table th{color:var(--muted);font-weight:600} .badge{display:inline-block;padding:2px 8px;border-radius:999px;background:#28324a;color:#c7d1e0;font-size:12px}
footer.brand{margin-top:28px;text-align:center;color:var(--brand);font-weight:700;letter-spacing:2px}
.login-body{display:flex;align-items:center;justify-content:center;min-height:100vh;background:radial-gradient(1000px 600px at 50% -10%, #1a2030, #0f1115)}
.login-card{width:360px;background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:20px 20px 12px}
.login-card h1{margin-top:0} .muted{color:var(--muted);margin:-6px 0 12px 0} .alert{padding:10px;border-radius:8px;margin-bottom:10px} .alert-error{background:#3a1620;color:#ffb3c0;border:1px solid #6b1a2a}
.searchbar{display:flex;gap:8px;align-items:center;margin-top:8px} .searchbar input{flex:1}
.qr-modal{position:fixed;inset:0;background:rgba(0,0,0,.6);display:none;align-items:center;justify-content:center}
.qr-card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:16px;width:320px;text-align:center}
.qr-card img{width:180px;height:180px;display:block;margin:8px auto;border-radius:8px;border:1px solid var(--border)} .qr-card .muted{margin-top:8px} .close-x{position:absolute;top:10px;right:12px;cursor:pointer;color:var(--muted)}
.cat-manage{display:grid;grid-template-columns:1fr auto;gap:8px;max-width:520px}
.cat-row{display:contents}


/* 后台文件名后面的预览小按钮 + 布局 */
.name-with-preview{
  display:flex;
  align-items:center;
  gap:8px;
}
.name-with-preview .rename-input{
  flex:1 1 auto;
  min-width:0;
}
.btn-inline{
  padding:6px 10px;
  font-size:12px;
}
