:root{--bg:#f5f6fa;--card:#fff;--text:#1f2937;--muted:#6b7280;--line:#e5e7eb;--pri:#6366f1;--pri2:#8b5cf6;--shadow:0 4px 18px rgba(15,23,42,.08)}
[data-theme=dark]{--bg:#0f1115;--card:#1a1d24;--text:#e5e7eb;--muted:#9ca3af;--line:#2a2f3a;--shadow:0 4px 18px rgba(0,0,0,.4)}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0f1115;--card:#1a1d24;--text:#e5e7eb;--muted:#9ca3af;--line:#2a2f3a;--shadow:0 4px 18px rgba(0,0,0,.4)}}
*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Noto Sans CJK SC",sans-serif;background:var(--bg);color:var(--text);line-height:1.6}
a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}
.wrap{max-width:1200px;margin:0 auto;padding:0 16px}
header{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--card) 88%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.bar{display:flex;align-items:center;gap:20px;height:60px}
.logo{font-weight:800;font-size:20px;background:linear-gradient(90deg,var(--pri),var(--pri2));-webkit-background-clip:text;background-clip:text;color:transparent;white-space:nowrap}
nav{display:flex;gap:4px;flex:1;overflow-x:auto;scrollbar-width:none}nav::-webkit-scrollbar{display:none}
nav a{padding:6px 14px;border-radius:999px;color:var(--muted);white-space:nowrap;font-size:15px}
nav a.on,nav a:hover{background:color-mix(in srgb,var(--pri) 14%,transparent);color:var(--pri)}
.icon-btn{border:1px solid var(--line);background:var(--card);color:var(--text);border-radius:10px;width:38px;height:38px;flex:none}
.hero{padding:44px 0 28px;text-align:center;background:radial-gradient(ellipse at top,color-mix(in srgb,var(--pri) 18%,transparent),transparent 70%)}
.hero h1{margin:0 0 6px;font-size:30px}.hero p{margin:0 0 20px;color:var(--muted)}
.search{display:flex;max-width:680px;margin:0 auto;background:var(--card);border:2px solid var(--pri);border-radius:14px;overflow:hidden;box-shadow:var(--shadow)}
.search input{flex:1;border:0;outline:0;padding:14px 18px;font-size:16px;background:transparent;color:var(--text);min-width:0}
.search button{border:0;padding:0 26px;background:linear-gradient(90deg,var(--pri),var(--pri2));color:#fff;font-weight:600}
.hot{margin-top:14px;display:flex;flex-wrap:wrap;justify-content:center;gap:8px;font-size:13px;color:var(--muted)}
.chip{border:1px solid var(--line);background:var(--card);color:var(--text);padding:3px 12px;border-radius:999px;font-size:13px}
.chip.on{background:var(--pri);border-color:var(--pri);color:#fff}
.notice{margin:16px 0;padding:10px 14px;border-radius:10px;background:color-mix(in srgb,#f59e0b 14%,transparent);color:#b45309;font-size:14px}
[data-theme=dark] .notice{color:#fbbf24}
.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:14px 0}
.toolbar .count{margin-left:auto;color:var(--muted);font-size:14px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:18px}
.card{background:var(--card);border-radius:14px;overflow:hidden;box-shadow:var(--shadow);border:1px solid var(--line);transition:transform .2s;cursor:pointer;display:flex;flex-direction:column}
.card:hover{transform:translateY(-4px)}
.cover{position:relative;aspect-ratio:3/4;background:var(--line);overflow:hidden}
.cover img{width:100%;height:100%;object-fit:cover;display:block;opacity:0;transition:opacity .3s}.cover img.loaded{opacity:1}
.badge{position:absolute;top:8px;left:8px;padding:2px 8px;border-radius:6px;font-size:12px;color:#fff;font-weight:600}
.ex{position:absolute;top:8px;right:8px;padding:2px 8px;border-radius:6px;font-size:12px;background:rgba(0,0,0,.55);color:#fff}
.src-quark{background:#2b6bff}.src-baidu{background:#06a7ff}.src-aliyun{background:#ff6a00}.src-123pan{background:#5b5bd6}.src-xunlei{background:#1677ff}.src-other{background:#6b7280}
.body{padding:12px 14px 14px;display:flex;flex-direction:column;gap:6px;flex:1}
.body h3{margin:0;font-size:15px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.body p{margin:0;font-size:13px;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.tags{display:flex;flex-wrap:wrap;gap:4px}.tag{font-size:12px;padding:1px 8px;border-radius:6px;background:color-mix(in srgb,var(--pri) 10%,transparent);color:var(--pri)}
.meta{margin-top:auto;font-size:12px;color:var(--muted);display:flex;justify-content:space-between}
.empty{text-align:center;color:var(--muted);padding:60px 0}
.pager{display:flex;justify-content:center;gap:6px;margin:28px 0}
.pager button{min-width:38px;height:38px;border-radius:10px;border:1px solid var(--line);background:var(--card);color:var(--text)}
.pager button.on{background:var(--pri);color:#fff;border-color:var(--pri)}.pager button:disabled{opacity:.4;cursor:default}
footer{border-top:1px solid var(--line);margin-top:40px;padding:26px 0;color:var(--muted);font-size:13px;text-align:center}
footer b{color:var(--text)}
.mask{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:50;display:none;align-items:center;justify-content:center;padding:16px}
.mask.show{display:flex}
.modal{background:var(--card);border-radius:16px;max-width:760px;width:100%;max-height:90vh;overflow:auto;display:grid;grid-template-columns:240px 1fr;position:relative}
.modal .mc{aspect-ratio:3/4;background:var(--line)}.modal .mc img{width:100%;height:100%;object-fit:cover}
.modal .mi{padding:22px;display:flex;flex-direction:column;gap:10px}.modal h2{margin:0;font-size:20px}
.close{position:absolute;top:10px;right:10px;width:34px;height:34px;border-radius:50%;border:0;background:rgba(0,0,0,.5);color:#fff;font-size:18px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 18px;border-radius:10px;border:0;background:linear-gradient(90deg,var(--pri),var(--pri2));color:#fff;font-weight:600}
.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--text)}
.code{display:flex;align-items:center;gap:8px;font-size:14px}.code kbd{background:var(--bg);border:1px solid var(--line);padding:4px 10px;border-radius:6px;font-size:15px;letter-spacing:2px}
.thumbs{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.thumbs img{width:100%;aspect-ratio:3/2;object-fit:cover;border-radius:6px;cursor:zoom-in}
.lb{position:fixed;inset:0;background:rgba(0,0,0,.92);z-index:60;display:none;align-items:center;justify-content:center}
.lb.show{display:flex}.lb img{max-width:92vw;max-height:86vh;border-radius:8px}
.lb button{position:absolute;background:rgba(255,255,255,.15);color:#fff;border:0;width:44px;height:44px;border-radius:50%;font-size:22px}
.lb .prev{left:14px}.lb .next{right:14px}.lb .x{top:14px;right:14px}.lb .n{position:absolute;bottom:16px;color:#ddd;font-size:14px}
.toast{position:fixed;left:50%;bottom:30px;transform:translateX(-50%);background:#111;color:#fff;padding:8px 18px;border-radius:999px;font-size:14px;z-index:70;opacity:0;transition:opacity .2s;pointer-events:none}.toast.show{opacity:1}
@media (max-width:640px){.hero h1{font-size:22px}.hero{padding:26px 0 18px}.grid{grid-template-columns:repeat(2,1fr);gap:10px}.body{padding:8px 10px 10px}.body h3{font-size:14px}.bar{gap:10px}.logo{font-size:17px}
.modal{grid-template-columns:1fr}.modal .mc{aspect-ratio:16/9}.search button{padding:0 16px}}
/* admin */
.admin-table{width:100%;border-collapse:collapse;background:var(--card);border-radius:12px;overflow:hidden;font-size:14px}
.admin-table th,.admin-table td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
.form{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px;background:var(--card);padding:16px;border-radius:12px;border:1px solid var(--line)}
.form label{display:flex;flex-direction:column;font-size:13px;color:var(--muted);gap:4px}
.form input,.form select,.form textarea,.login input{padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--text);font:inherit}
.form .full{grid-column:1/-1}
.login{max-width:360px;margin:80px auto;background:var(--card);padding:28px;border-radius:16px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:12px}
@media (max-width:640px){#srcBar,#tagBar{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}#srcBar::-webkit-scrollbar,#tagBar::-webkit-scrollbar{display:none}.chip{flex:none}}
