*{box-sizing:border-box;margin:0;padding:0}
body{font:14px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
    background:#f6f7f9;color:#1f2328;-webkit-font-smoothing:antialiased}
a{color:#2b7fd4;text-decoration:none}

/* ---------- 顶部 ---------- */
.top{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;
    gap:12px;padding:0 20px;height:56px;background:#fff;border-bottom:1px solid #e8eaed;flex-wrap:wrap}
.top-l,.top-r{display:flex;align-items:center;gap:12px}
.logo{font-size:20px}
.top-l b{font-size:16px}
.top-tag{font-size:12px;color:#6b7280;background:#f3f4f6;border-radius:999px;padding:2px 10px}
.top-a{font-size:13px;color:#4b5563}
.top-a:hover{color:#2b7fd4}
.top-u{font-size:13px;color:#6b7280}

.wrap{max-width:1400px;margin:0 auto;padding:18px 16px 60px}

/* ---------- 卡片 ---------- */
.card{background:#fff;border:1px solid #e8eaed;border-radius:14px;padding:16px 18px;margin-bottom:16px}
.card-h{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.card-h h2{font-size:15.5px;font-weight:700}
.card-h-r{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.cnt{font-size:12px;color:#6b7280;font-weight:400}
.mini{font-size:12.5px;color:#4b5563;display:inline-flex;align-items:center;gap:5px}
.mini input,.mini select,.search{border:1px solid #dfe3e8;border-radius:8px;padding:6px 9px;font-size:13px;
    outline:none;font-family:inherit;background:#fff}
.mini input:focus,.search:focus,.search{border-color:#93c5fd}
.search{width:190px}

.btn-sm{border:1px solid #dfe3e8;background:#fff;border-radius:8px;padding:6px 12px;font-size:13px;
    cursor:pointer;font-family:inherit;color:#374151;transition:.15s}
.btn-sm:hover{background:#f3f6fb;border-color:#93c5fd;color:#1d4ed8}
.btn-sm.danger:hover{background:#fef2f2;border-color:#fca5a5;color:#b91c1c}

/* ---------- 拖拽区 ---------- */
.drop{border:2px dashed #cbd5e1;border-radius:14px;padding:34px 20px;text-align:center;cursor:pointer;
    background:#fafbfc;transition:.18s}
.drop:hover,.drop.over{border-color:#3b82f6;background:#eff6ff}
.drop-ico{font-size:40px;line-height:1;margin-bottom:10px}
.drop-t1{font-size:15px;font-weight:600;color:#374151;margin-bottom:5px}
.drop-t2{font-size:12.5px;color:#9ca3af}
.drop-btns{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}

/* ---------- 进度 ---------- */
.prog{margin-top:14px}
.prog-bar{height:8px;background:#eef1f5;border-radius:999px;overflow:hidden}
.prog-bar>div{height:100%;width:0;background:linear-gradient(90deg,#3b82f6,#22c55e);
    border-radius:999px;transition:width .25s}
.prog-txt{font-size:12.5px;color:#6b7280;margin-top:7px}

/* ---------- 图片网格 ---------- */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:12px}
.it{position:relative;border:1px solid #e8eaed;border-radius:11px;overflow:hidden;background:#fff;transition:.15s}
.it:hover{border-color:#93c5fd;box-shadow:0 4px 14px rgba(0,0,0,.07)}
.it.sel{border-color:#3b82f6;box-shadow:0 0 0 2px #dbeafe}
.it-img{aspect-ratio:1/1;background:#f3f4f6;display:block;width:100%;object-fit:cover}
.it-meta{padding:7px 8px 9px}
.it-name{font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.it-sub{font-size:11px;color:#9ca3af;display:flex;justify-content:space-between;gap:6px;margin-top:2px}
.it-act{display:flex;gap:5px;margin-top:6px}
.it-act button{flex:1;border:1px solid #e5e7eb;background:#fff;border-radius:6px;font-size:11.5px;
    padding:4px 0;cursor:pointer;color:#4b5563;font-family:inherit}
.it-act button:hover{background:#eff6ff;border-color:#93c5fd;color:#1d4ed8}
.it-chk{position:absolute;top:7px;left:7px;width:20px;height:20px;cursor:pointer;z-index:2;
    accent-color:#3b82f6}
.it-badge{position:absolute;top:7px;right:7px;background:rgba(0,0,0,.62);color:#fff;font-size:10.5px;
    border-radius:999px;padding:2px 7px;z-index:2}
.it-dup{position:absolute;bottom:66px;left:8px;background:#f59e0b;color:#fff;font-size:10px;
    border-radius:5px;padding:1px 6px;z-index:2}

.res-tip{font-size:12.5px;color:#6b7280;background:#f8fafc;border-left:3px solid #93c5fd;
    border-radius:8px;padding:9px 12px;margin-bottom:13px}

.pager{display:flex;gap:6px;justify-content:center;margin-top:16px;flex-wrap:wrap}
.pager button{border:1px solid #e5e7eb;background:#fff;border-radius:7px;padding:5px 11px;
    font-size:13px;cursor:pointer;font-family:inherit}
.pager button.on{background:#3b82f6;color:#fff;border-color:#3b82f6}
.pager button:disabled{opacity:.45;cursor:default}

.empty{text-align:center;color:#9ca3af;font-size:13px;padding:36px 10px}

/* ---------- 提示 ---------- */
.toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%,26px);background:#1f2328;color:#fff;
    font-size:13.5px;border-radius:10px;padding:11px 20px;opacity:0;pointer-events:none;transition:.22s;z-index:99}
.toast.on{opacity:1;transform:translate(-50%,0)}

/* ---------- 登录 ---------- */
.login-body{display:flex;align-items:center;justify-content:center;min-height:100vh;
    background:linear-gradient(135deg,#eef4ff,#f7f9fc)}
.login-box{background:#fff;border-radius:18px;padding:34px 30px;width:340px;max-width:92vw;
    box-shadow:0 18px 48px rgba(30,50,90,.12);text-align:center}
.login-logo{font-size:38px;line-height:1}
.login-box h1{font-size:20px;margin:10px 0 4px}
.login-sub{font-size:12.5px;color:#6b7280;margin-bottom:20px}
.login-box label{display:block;text-align:left;font-size:12.5px;color:#4b5563;margin:11px 0 5px}
.login-box input{width:100%;border:1px solid #dfe3e8;border-radius:10px;padding:11px 13px;font-size:14px;
    outline:none;font-family:inherit}
.login-box input:focus{border-color:#93c5fd;box-shadow:0 0 0 3px #eff6ff}
.btn-main{width:100%;margin-top:20px;border:0;border-radius:10px;padding:12px;font-size:15px;font-weight:700;
    color:#fff;background:linear-gradient(135deg,#3b82f6,#2563eb);cursor:pointer;font-family:inherit}
.btn-main:hover{filter:brightness(1.05)}
.login-err{background:#fef2f2;color:#b91c1c;border-radius:9px;padding:9px 12px;font-size:12.5px;margin-bottom:8px}
.login-tip{font-size:12px;color:#9ca3af;margin-top:16px}

@media (max-width:640px){
    .wrap{padding:12px 10px 40px}
    .grid{grid-template-columns:repeat(auto-fill,minmax(126px,1fr));gap:9px}
    .search{width:130px}
    .top{padding:0 12px}
}
