:root { --blue:#075eb7; --deep:#0b376c; --cyan:#00aeb5; --ink:#1d2b3a; --muted:#64748b; --line:#dce4ed; --surface:#fff; --subtle:#f4f7fa; }
* { box-sizing:border-box; }
body { margin:0; color:var(--ink); font-family:"Microsoft YaHei", "Noto Sans SC", Arial, sans-serif; background:#f6f8fb; }
.site-header { height:68px; background:#fff; border-bottom:1px solid var(--line); }
.site-header-inner { display:flex; align-items:center; justify-content:space-between; width:100%; max-width:1440px; height:100%; margin:0 auto; padding:0 42px; }
.brand { display:flex; align-items:center; gap:16px; color:var(--deep); text-decoration:none; font-size:19px; font-weight:600; }
.brand img { display:block; width:146px; max-height:46px; object-fit:contain; }
.brand span { border-left:1px solid #cbd5df; padding-left:16px; }
.admin-link { color:var(--blue); border:1px solid #b9d5ef; padding:8px 13px; border-radius:4px; text-decoration:none; font-size:14px; }
.admin-link:hover { border-color:var(--blue); background:#eff7ff; }
.portal-shell { display:grid; grid-template-columns:320px minmax(0, 1fr); max-width:1440px; min-height:calc(100vh - 128px); margin:0 auto; background:var(--surface); border-left:1px solid var(--line); border-right:1px solid var(--line); }
.release-nav { padding:32px 24px; border-right:1px solid var(--line); background:#fbfcfe; }
.release-list { display:grid; gap:8px; }
.release-button { width:100%; padding:18px 14px; border:0; border-left:3px solid transparent; background:transparent; text-align:left; color:#34475c; cursor:pointer; font:inherit; border-radius:3px; }
.release-button strong { display:block; font-size:17px; font-weight:600; }
.release-button:hover { background:#edf5fc; }
.release-button.active { color:var(--blue); background:#eef6ff; border-left-color:var(--blue); }
.content-panel { padding:38px 46px 54px; }
.page-intro { display:flex; gap:20px; justify-content:space-between; align-items:flex-end; margin-bottom:29px; }
.eyebrow { margin:0 0 8px; color:var(--blue); font-size:12px; font-weight:700; letter-spacing:1px; }
h1 { margin:0; color:#16283b; font-size:24px; line-height:1.25; }
.page-intro p:not(.eyebrow) { margin:10px 0 0; color:var(--muted); font-size:14px; }
.result-count { color:var(--muted); font-size:13px; white-space:nowrap; }
.filters { display:grid; grid-template-columns:repeat(4, minmax(130px, 1fr)) auto; align-items:end; gap:14px; padding:18px; background:var(--subtle); border:1px solid #e6edf3; border-radius:6px; }
.filters label { display:grid; gap:7px; color:#526477; font-size:12px; font-weight:600; }
select { width:100%; min-width:0; height:38px; border:1px solid #cdd9e4; border-radius:4px; padding:0 31px 0 10px; background:#fff; color:#26384a; font:14px inherit; }
select:focus { outline:2px solid #b9dcfa; border-color:#5eabeb; }
select:disabled { color:#9aa8b6; background:#edf1f5; border-color:#d9e1e8; cursor:not-allowed; }
.reset-button { height:38px; padding:0 13px; border:1px solid #cdd9e4; border-radius:4px; color:#506175; background:#fff; cursor:pointer; white-space:nowrap; font:14px inherit; }
.reset-button:hover { color:var(--blue); border-color:#87bfe9; }
.file-list { display:grid; gap:12px; margin-top:25px; }
.file-card { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:24px; padding:20px 22px; border:1px solid var(--line); border-radius:6px; background:#fff; }
.file-card:hover { border-color:#b4d7f2; box-shadow:0 4px 14px rgb(24 81 129 / 8%); }
.file-meta { display:flex; flex-wrap:wrap; align-items:center; gap:7px; margin-bottom:8px; }
.file-category { display:inline-block; padding:3px 7px; color:#126bc3; background:#ecf6ff; border-radius:3px; font-size:12px; }
.file-name { margin:0; color:#25384c; font-size:16px; font-weight:600; overflow-wrap:anywhere; }
.file-description { margin:9px 0 0; color:#6a7b8d; font-size:13px; line-height:1.6; }
.file-tags { display:flex; flex-wrap:wrap; gap:7px; }
.tag { padding:3px 8px; color:#617488; background:#f2f5f8; border-radius:3px; font-size:12px; }
.file-details { display:flex; flex-wrap:wrap; align-items:baseline; column-gap:28px; row-gap:7px; margin-top:12px; color:#617488; font-size:12px; line-height:1.5; }
.file-detail { display:inline-flex; align-items:baseline; min-width:0; font-size:12px; }
.file-detail strong { color:#43576b; font-size:12px; font-weight:500; }
.file-detail code { color:#43576b; font:12px/1.5 ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", monospace; overflow-wrap:anywhere; }
.file-actions { display:flex; align-items:center; gap:8px; }
.download-button { display:inline-flex; align-items:center; justify-content:center; min-width:88px; height:36px; padding:0 13px; color:#fff; background:var(--blue); border-radius:4px; text-decoration:none; font-size:14px; }
.download-button:hover { background:#004e9e; }
.copy-link-button { position:relative; flex:0 0 36px; width:36px; height:36px; padding:0; border:1px solid #b9d5ef; border-radius:4px; background:#fff; cursor:pointer; }
.copy-link-button::before, .copy-link-button::after { content:""; position:absolute; width:11px; height:13px; border:1.5px solid var(--blue); border-radius:1px; background:#fff; }
.copy-link-button::before { top:8px; left:10px; }
.copy-link-button::after { top:12px; left:14px; }
.copy-link-button:hover { background:#eff7ff; border-color:var(--blue); }
.download-button:focus-visible, .copy-link-button:focus-visible, .page-button:focus-visible, .reset-button:focus-visible, .release-button:focus-visible, .admin-link:focus-visible { outline:2px solid #60a5e0; outline-offset:2px; }
.pagination { display:flex; align-items:center; justify-content:center; gap:6px; margin-top:24px; }
.pagination[hidden] { display:none; }
.page-button { min-width:34px; height:34px; padding:0 8px; border:1px solid #cdd9e4; border-radius:4px; color:#506175; background:#fff; cursor:pointer; font:14px inherit; }
.page-button:hover:not(:disabled):not(.active) { color:var(--blue); border-color:#87bfe9; background:#f5faff; }
.page-button.active { color:#fff; border-color:var(--blue); background:var(--blue); }
.page-button:disabled { color:#a6b1bd; background:#f4f6f8; cursor:not-allowed; }
.page-ellipsis { min-width:22px; color:#7b8794; text-align:center; }
.copy-feedback { position:fixed; z-index:20; left:50%; bottom:28px; transform:translateX(-50%); padding:10px 16px; color:#fff; background:#25384c; border-radius:4px; box-shadow:0 5px 18px rgb(15 23 42 / 20%); font-size:13px; }
.copy-feedback.error { background:#a93636; }
.empty-state { margin-top:24px; padding:46px 20px; text-align:center; color:var(--muted); border:1px dashed #cdd9e4; border-radius:6px; }
footer { padding:20px; color:#7b8794; background:#fff; border-top:1px solid var(--line); text-align:center; font-size:12px; }
@media (max-width:900px) { .site-header-inner { padding:0 20px; } .portal-shell { grid-template-columns:1fr; border:0; } .release-nav { padding:18px 20px; border-right:0; border-bottom:1px solid var(--line); } .release-list { grid-template-columns:repeat(auto-fit, minmax(150px, 1fr)); } .content-panel { padding:30px 20px 42px; } .filters { grid-template-columns:repeat(2, 1fr); } }
@media (max-width:560px) { .site-header { height:auto; min-height:64px; } .site-header-inner { min-height:64px; padding:10px 16px; } .brand { gap:8px; font-size:15px; } .brand img { width:105px; } .brand span { padding-left:8px; } .page-intro, .file-card { display:block; } .result-count { margin-top:12px; } .filters { grid-template-columns:1fr; } .file-card { padding:17px; } .file-actions { margin-top:18px; } .download-button { flex:1; min-width:0; } .pagination { gap:4px; } .page-button { min-width:32px; padding:0 6px; } }
