:root { --bg:#f6f8fb; --panel:#fff; --text:#182033; --muted:#667085; --border:#dde3ec; --primary:#1769e0; --primary-dark:#0f56bd; --soft:#eef5ff; --danger:#b42318; }
* { box-sizing:border-box; }
body { margin:0; background:var(--bg); color:var(--text); font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif; }
a { color:inherit; text-decoration:none; }
.page { width:min(1180px,calc(100% - 32px)); margin:0 auto; padding:28px 0 56px; }
.header { display:flex; justify-content:space-between; align-items:flex-end; gap:16px; margin-bottom:18px; }
h1 { margin:0 0 8px; font-size:30px; line-height:1.25; letter-spacing:0; }
.subtitle { margin:0; color:var(--muted); line-height:1.7; }
.toolbar { display:grid; grid-template-columns:1fr 160px 160px 96px; gap:10px; padding:12px; border:1px solid var(--border); border-radius:8px; background:var(--panel); margin-bottom:18px; }
input,select,button,textarea { font:inherit; }
input,select,button { height:40px; border-radius:6px; font-size:14px; }
input,select,textarea { width:100%; border:1px solid var(--border); background:#fff; color:var(--text); padding:0 12px; }
textarea { min-height:72px; border-radius:6px; padding:10px 12px; resize:vertical; }
button { border:0; background:var(--primary); color:#fff; padding:0 14px; cursor:pointer; white-space:nowrap; }
button:hover { background:var(--primary-dark); }
button.secondary { background:#25324a; }
button.ghost { background:#eef1f6; color:var(--text); }
button:disabled { cursor:not-allowed; opacity:.58; }
.grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.card,.detail { background:var(--panel); border:1px solid var(--border); border-radius:8px; overflow:hidden; }
.cover { width:100%; aspect-ratio:16/9; object-fit:cover; background:linear-gradient(135deg,#e8edf5,#f8fafc); border-bottom:1px solid var(--border); }
.body { padding:16px; display:flex; flex-direction:column; gap:12px; }
.name { margin:0; font-size:18px; line-height:1.35; overflow-wrap:anywhere; }
.summary { margin:0; color:var(--muted); line-height:1.7; min-height:48px; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.badges { display:flex; gap:8px; flex-wrap:wrap; }
.badge { color:var(--primary); background:var(--soft); border-radius:999px; padding:4px 8px; font-size:12px; }
.meta { color:var(--muted); font-size:13px; line-height:1.6; }
.actions { display:flex; gap:8px; margin-top:auto; }
.state { background:var(--panel); border:1px solid var(--border); border-radius:8px; padding:28px; color:var(--muted); text-align:center; }
.error { color:var(--danger); }
.pager { display:flex; justify-content:center; align-items:center; gap:12px; margin-top:22px; }
.detail-head { display:grid; grid-template-columns:320px 1fr; gap:20px; padding:18px; }
.detail-head .cover { border:1px solid var(--border); border-radius:8px; }
.section { padding:18px; border-top:1px solid var(--border); }
.section h2 { margin:0 0 12px; font-size:17px; }
.version-list { display:grid; gap:10px; }
.version { display:grid; grid-template-columns:1fr auto; gap:12px; align-items:center; padding:12px; border:1px solid var(--border); border-radius:8px; }
.release { display:grid; gap:10px; padding:12px; border:1px solid var(--border); border-radius:8px; background:#fff; }
.release-head { display:flex; align-items:center; justify-content:space-between; gap:12px; padding-bottom:8px; border-bottom:1px solid var(--border); }
.release-toggle { display:flex; flex:1; align-items:center; gap:8px; height:auto; padding:0; background:transparent; color:var(--text); text-align:left; }
.release-toggle:hover { background:transparent; color:var(--primary); }
.release-arrow { display:inline-flex; width:18px; height:18px; align-items:center; justify-content:center; color:var(--muted); font-size:18px; transition:transform .15s ease; }
.release.expanded .release-arrow { transform:rotate(90deg); }
.release.collapsed .version-list,.release.collapsed .release-notes { display:none; }
.asset-version { background:#fbfcff; }
.release-notes { margin-bottom:2px; }
.download-picker { display:grid; grid-template-columns:1fr 1fr 1fr auto; gap:10px; padding:12px; border:1px solid var(--border); border-radius:8px; background:#fbfcff; margin-bottom:12px; }
.checksum { font-family:ui-monospace,SFMono-Regular,Consolas,monospace; word-break:break-all; }
.inline-form { display:grid; grid-template-columns:1fr 1fr auto; gap:10px; }
.inline-form textarea { grid-column:1 / -1; }
.privacy-note { grid-column:1 / -1; margin:0; color:var(--muted); font-size:12px; line-height:1.6; }
.back { margin-bottom:12px; display:inline-flex; color:var(--primary); }
@media (max-width:920px) { .grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .toolbar { grid-template-columns:1fr 1fr; } .detail-head { grid-template-columns:1fr; } }
@media (max-width:620px) { .page { width:min(100% - 20px,1180px); padding-top:20px; } h1 { font-size:24px; } .grid,.toolbar,.version,.inline-form,.download-picker { grid-template-columns:1fr; } }
