*{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#f4f6f9;--card:#fff;--line:#e7eaf0;--text:#161920;--muted:#737c8c;
  --accent:#3b6ef6;--soft:#eef3ff;--ok:#0f9d58;--danger:#e5484d;
  --r:14px;--sh:0 1px 2px rgba(16,24,40,.04),0 12px 32px -20px rgba(16,24,40,.35)
}
@media (prefers-color-scheme:dark){
  :root{
    --bg:#0e1014;--card:#171a21;--line:#242833;--text:#e9ebef;--muted:#8b93a3;
    --soft:#1b2231;--sh:0 1px 2px rgba(0,0,0,.5),0 12px 32px -20px rgba(0,0,0,.9)
  }
}
html{-webkit-text-size-adjust:100%}
body{
  font:15px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  background:var(--bg);color:var(--text);min-height:100vh;-webkit-font-smoothing:antialiased
}
a{color:inherit;text-decoration:none}
button,input{font:inherit;color:inherit}
.wrap{max-width:900px;margin:0 auto;padding:34px 20px 60px}
.hero{display:flex;flex-wrap:wrap;gap:18px;align-items:flex-end;justify-content:space-between;margin-bottom:22px}
.hero h1{font-size:26px;font-weight:700;letter-spacing:-.4px}
.hero p{color:var(--muted);font-size:14px;margin-top:5px}
.search{display:flex;gap:8px;flex:1 1 260px;max-width:340px}
.search input{
  flex:1;min-width:0;padding:10px 14px;border:1px solid var(--line);border-radius:10px;
  background:var(--card);outline:none;transition:border-color .15s,box-shadow .15s
}
.search input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--soft)}
.search button{
  padding:10px 18px;border:0;border-radius:10px;background:var(--accent);color:#fff;
  font-weight:600;cursor:pointer;transition:filter .15s
}
.search button:hover{filter:brightness(1.08)}
.bar{display:flex;gap:16px;color:var(--muted);font-size:13px;margin-bottom:12px;padding:0 4px}
.list{display:flex;flex-direction:column;gap:10px}
.item{
  display:flex;align-items:center;gap:14px;padding:14px 16px;background:var(--card);
  border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);
  transition:transform .15s,border-color .15s
}
.item:hover{transform:translateY(-1px);border-color:var(--accent)}
.ico{
  flex:0 0 46px;height:46px;border-radius:11px;display:flex;align-items:center;justify-content:center;
  font-size:11px;font-weight:700;letter-spacing:.4px;color:#fff;background:#8b93a3;overflow:hidden
}
.ico-zip{background:#f0913a}.ico-app{background:#0f9d58}.ico-video{background:#e5484d}
.ico-audio{background:#a855f7}.ico-image{background:#06b6d4}.ico-pdf{background:#dc2626}
.ico-doc{background:#2563eb}.ico-disk{background:#64748b}.ico-code{background:#0ea5e9}
.meta{flex:1;min-width:0}
.meta h2{font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sub{display:flex;flex-wrap:wrap;align-items:center;gap:8px;color:var(--muted);font-size:12.5px;margin-top:3px}
.sub i{width:3px;height:3px;border-radius:50%;background:currentColor;opacity:.5}
.btn{
  flex:0 0 auto;padding:9px 20px;border-radius:10px;background:var(--soft);color:var(--accent);
  font-weight:600;font-size:14px;transition:background .15s,color .15s
}
.btn:hover{background:var(--accent);color:#fff}
.empty{
  padding:64px 20px;text-align:center;color:var(--muted);background:var(--card);
  border:1px dashed var(--line);border-radius:var(--r)
}
.empty b{display:block;font-size:34px;margin-bottom:10px;opacity:.55}
.foot{margin-top:36px;text-align:center;color:var(--muted);font-size:12.5px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);padding:20px;margin-bottom:16px}
.card h3{font-size:15px;font-weight:650;margin-bottom:14px}
.field{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.field input[type=file]{
  flex:1 1 240px;padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:var(--bg);min-width:0
}
.field button,.pub{
  padding:10px 20px;border:0;border-radius:10px;background:var(--accent);color:#fff;font-weight:600;cursor:pointer
}
.pub:hover{filter:brightness(1.08)}
.ghost{background:transparent!important;color:var(--muted)!important;border:1px solid var(--line)!important}
.ghost:hover{color:var(--danger)!important;border-color:var(--danger)!important}
.note{color:var(--muted);font-size:12.5px;margin-top:10px;line-height:1.7}
.flash{padding:11px 15px;border-radius:10px;font-size:13.5px;margin-bottom:14px}
.flash.ok{background:rgba(15,157,88,.1);color:var(--ok)}
.flash.err{background:rgba(229,72,77,.1);color:var(--danger)}
.row{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--line)}
.row:last-child{border-bottom:0}
.row .nm{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row .sz{color:var(--muted);font-size:12.5px;flex:0 0 auto}
.row form{display:flex;gap:6px;flex:0 0 auto}
.mini{padding:6px 12px;border-radius:8px;border:1px solid var(--line);background:transparent;font-size:13px;cursor:pointer}
.mini:hover{border-color:var(--accent);color:var(--accent)}
.mini.del:hover{border-color:var(--danger);color:var(--danger)}
.login{max-width:380px;margin:88px auto;padding:0 20px}
.login .card{padding:26px}
.login h1{font-size:19px;font-weight:700;text-align:center;margin-bottom:6px}
.login p{text-align:center;color:var(--muted);font-size:13px;margin-bottom:20px}
.login input{width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:var(--bg);outline:none;margin-bottom:12px}
.login input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--soft)}
.login button{width:100%;padding:12px;border:0;border-radius:10px;background:var(--accent);color:#fff;font-weight:600;cursor:pointer}
.top{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;gap:14px;flex-wrap:wrap}
.top h1{font-size:20px;font-weight:700}
.up{margin-top:14px}
.up-top{display:flex;justify-content:space-between;gap:10px;font-size:13px;margin-bottom:6px}
.up-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.up-pct{color:var(--muted);flex:0 0 auto;font-variant-numeric:tabular-nums}
.up-bar{height:8px;border-radius:99px;background:var(--line);overflow:hidden}
.up-bar i{display:block;height:100%;width:0;border-radius:99px;background:var(--accent);transition:width .15s linear}
.up-msg{font-size:12.5px;color:var(--muted);margin-top:5px}
.up-msg.ok{color:var(--ok)}
.up-msg.err{color:var(--danger)}
@media (max-width:560px){
  .wrap{padding:22px 14px 48px}
  .hero h1{font-size:22px}
  .search{max-width:none}
  .item{gap:11px;padding:12px}
  .ico{flex-basis:40px;height:40px;font-size:10px}
  .btn{padding:8px 14px}
  .row{flex-wrap:wrap}
}
