:root { --green:#168a64; --deep:#123f38; --ink:#173f3a; --muted:#718b84; --line:#d6ebe2; --wash:#f3faf7; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; color:var(--ink); background:linear-gradient(180deg,#f7fcfa 0,#edf8f3 100%); font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif; }
button,input,select { font:inherit; }
button,a { -webkit-tap-highlight-color:transparent; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.portal-header { position:sticky; top:0; z-index:10; display:flex; align-items:center; justify-content:space-between; min-height:76px; padding:12px max(24px,calc((100vw - 1100px)/2)); border-bottom:1px solid rgba(214,235,226,.85); background:rgba(255,255,255,.92); backdrop-filter:blur(16px); }
.portal-header img { display:block; width:132px; }
.header-actions { display:flex; align-items:center; gap:18px; }
.header-actions a { color:#426d63; font-size:14px; text-decoration:none; }
.access-badge { padding:7px 12px; border:1px solid #bfe6d5; border-radius:999px; color:#17855f; background:#f7fffb; font-size:12px; font-weight:700; }
.portal-shell { width:min(1100px,calc(100% - 40px)); margin:0 auto; padding:72px 0 90px; }
.portal-intro { max-width:780px; }
.eyebrow { margin:0; color:#25a878; font-size:12px; font-weight:800; letter-spacing:.13em; }
h1 { margin:14px 0 0; color:var(--deep); font-size:clamp(38px,6vw,64px); line-height:1.12; letter-spacing:-.035em; }
.subtitle { margin:18px 0 0; color:var(--muted); font-size:17px; line-height:1.8; }
.search-box { display:flex; align-items:center; max-width:760px; height:64px; margin-top:30px; padding:7px 7px 7px 19px; border:1px solid #cce6db; border-radius:16px; background:#fff; box-shadow:0 16px 42px rgba(24,104,75,.09); }
.search-box svg { width:22px; fill:none; stroke:#78918a; stroke-width:1.8; }
.search-box input { flex:1; min-width:0; height:100%; padding:0 14px; border:0; outline:0; color:var(--ink); background:transparent; }
.search-box button { align-self:stretch; min-width:92px; border:0; border-radius:12px; color:#fff; background:var(--green); font-weight:750; cursor:pointer; }
.resource-section { margin-top:76px; }
.section-heading { display:flex; align-items:end; justify-content:space-between; gap:20px; }
.section-heading h2 { margin:10px 0 0; color:var(--deep); font-size:34px; }
.section-heading>span { color:#829a94; font-size:14px; }
.kind-filters { display:flex; gap:10px; margin-top:25px; overflow-x:auto; padding-bottom:4px; scrollbar-width:none; }
.kind-filters::-webkit-scrollbar { display:none; }
.filter-chip { flex:0 0 auto; padding:9px 16px; border:1px solid var(--line); border-radius:999px; color:#37675d; background:#fff; cursor:pointer; }
.filter-chip.active { border-color:#82cfb2; color:#117b5a; background:#e4f6ed; font-weight:700; }
.filter-row { display:flex; align-items:end; justify-content:space-between; margin-top:22px; color:#829a94; font-size:13px; }
.filter-row label { display:grid; gap:7px; }
.filter-row select { width:142px; min-width:142px; padding:10px 34px 10px 12px; border:1px solid var(--line); border-radius:10px; color:#37675d; background-color:#fff; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='m3 4.5 3 3 3-3' fill='none' stroke='%236a8d84' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 12px center; appearance:none; -webkit-appearance:none; cursor:pointer; }
.resource-list { margin-top:18px; overflow:hidden; border:1px solid var(--line); border-radius:18px; background:rgba(255,255,255,.88); box-shadow:0 15px 40px rgba(22,88,69,.06); }
.resource-item { display:grid; grid-template-columns:48px minmax(0,1fr) 26px; align-items:center; gap:17px; width:100%; min-height:112px; padding:20px 22px; border:0; border-bottom:1px solid #e6f1ec; color:inherit; background:transparent; text-align:left; cursor:pointer; }
.resource-item:last-child { border-bottom:0; }
.resource-item { text-decoration:none; }
.resource-item:hover,.resource-item:focus-visible { background:#f5fbf8; outline:0; }
.file-icon { display:grid; place-items:center; width:48px; height:48px; border-radius:14px; color:var(--green); background:#e4f6ee; font-weight:800; }
.resource-copy { min-width:0; }
.resource-copy strong { display:block; overflow:hidden; color:var(--ink); font-size:16px; text-overflow:ellipsis; white-space:nowrap; }
.resource-copy p { margin:7px 0 0; overflow:hidden; color:var(--muted); font-size:14px; text-overflow:ellipsis; white-space:nowrap; }
.resource-meta { display:flex; gap:14px; margin-top:8px; color:#9aaba6; font-size:12px; }
.chevron { color:var(--green); font-size:30px; font-weight:300; }
.empty { padding:60px 20px; color:#829a94; text-align:center; }
.pagination { display:flex; align-items:center; justify-content:center; gap:12px; margin-top:24px; }
.pagination button { padding:9px 15px; border:1px solid var(--line); border-radius:9px; color:var(--green); background:#fff; cursor:pointer; }
.pagination button[disabled] { color:#b5c6c0; background:#f1f7f4; cursor:not-allowed; }
.pagination span { color:#607d75; font-size:14px; }
.notice { position:fixed; right:22px; bottom:22px; z-index:20; max-width:340px; padding:14px 18px; border-radius:12px; color:#fff; background:#173f3a; box-shadow:0 14px 38px rgba(10,45,36,.25); font-size:14px; }
footer { display:flex; flex-wrap:wrap; justify-content:center; gap:10px 26px; padding:26px 20px; color:#b9cbc5; background:#1d342e; font-size:13px; }
@media (max-width:640px) {
  .portal-header { min-height:64px; padding:10px 18px; }
  .portal-header img { width:112px; }
  .header-actions { gap:10px; }
  .access-badge { display:none; }
  .portal-shell { width:min(100% - 28px,1100px); padding:46px 0 64px; }
  .subtitle { font-size:15px; }
  .search-box { height:58px; margin-top:24px; padding-left:15px; }
  .search-box button { min-width:70px; }
  .resource-section { margin-top:58px; }
  .section-heading h2 { font-size:28px; }
  .resource-item { grid-template-columns:42px minmax(0,1fr) 16px; gap:12px; min-height:108px; padding:17px 14px; }
  .file-icon { width:42px; height:42px; }
  .resource-copy strong { font-size:15px; }
  .notice { right:14px; bottom:14px; left:14px; max-width:none; }
}
.version-badge { padding:6px 10px; border:1px solid #bfe6d5; border-radius:999px; color:#17855f; font-size:12px; font-weight:700; letter-spacing:.04em; }
.series-strip{margin-top:36px;padding:24px 0 4px}.series-strip-head{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:16px}.series-strip-head h2{margin:0;color:#173f38;font-size:26px}.series-strip-head>span{color:#78938d;font-size:12px}.series-scroll{display:flex;gap:14px;overflow-x:auto;padding:4px 2px 16px;scroll-snap-type:x proximity}.series-card{flex:0 0 260px;min-height:132px;padding:18px;border:1px solid #d9ebe5;border-radius:16px;background:#fff;box-shadow:0 10px 24px rgba(36,98,81,.06);scroll-snap-align:start;text-decoration:none;color:inherit}.series-card.active{border-color:#8bd5bb;background:#f2fcf7}.series-card.locked{opacity:.58}.series-status{display:block;margin-bottom:10px;color:#15936e;font-size:11px;font-weight:700}.series-card strong,.series-card small,.series-card b{display:block}.series-card strong{font-size:17px}.series-card small{margin-top:8px;color:#78938d;font-size:12px}.series-card b{margin-top:14px;color:#15936e;font-size:12px}
