:root{
  --blue:#1668dc; --blue-d:#0f52b4; --ink:#1a2332; --mut:#5b6b82;
  --bg:#f4f6fa; --card:#fff; --line:#e3e9f2; --green:#18a058; --orange:#f08c00;
  --radius:12px;
}
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:"Segoe UI","PingFang SC","Microsoft YaHei",system-ui,sans-serif;background:var(--bg);color:var(--ink);line-height:1.6}
a{color:var(--blue);text-decoration:none}
a:hover{text-decoration:underline}
.wrap{max-width:1180px;margin:0 auto;padding:0 16px}

/* top bar */
.topbar{background:#0d2b52;color:#cfe1f7;font-size:13px}
.topbar .wrap{display:flex;justify-content:space-between;padding:6px 16px}
.topbar a{color:#cfe1f7}

/* header */
header.site{background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:50}
header.site .wrap{display:flex;align-items:center;gap:26px;padding:14px 16px}
.logo{display:flex;align-items:center;gap:10px;font-size:24px;font-weight:800;color:var(--ink)}
.logo:hover{text-decoration:none}
.logo .mark{width:38px;height:38px;border-radius:9px;background:linear-gradient(135deg,#1668dc,#00b0a4);display:flex;align-items:center;justify-content:center;color:#fff;font-size:20px;font-weight:800}
.logo small{font-size:12px;color:var(--mut);font-weight:400;display:block;line-height:1.2}
.search{flex:1;max-width:460px;display:flex}
.search input{flex:1;border:2px solid var(--blue);border-right:none;border-radius:8px 0 0 8px;padding:9px 12px;font-size:14px;outline:none}
.search button{background:var(--blue);color:#fff;border:none;padding:0 22px;border-radius:0 8px 8px 0;font-size:14px;cursor:pointer}
.search button:hover{background:var(--blue-d)}
nav.main{background:var(--blue)}
nav.main .wrap{display:flex;gap:4px}
nav.main a{color:#fff;padding:11px 18px;font-size:15px}
nav.main a:hover,nav.main a.on{background:var(--blue-d);text-decoration:none}

/* hero */
.hero{background:linear-gradient(120deg,#0d2b52,#1668dc 60%,#00b0a4);color:#fff;border-radius:0 0 18px 18px}
.hero .wrap{padding:38px 16px 30px}
.hero h1{font-size:32px;margin-bottom:8px}
.hero p{opacity:.92;max-width:640px}
.stats{display:flex;gap:14px;flex-wrap:wrap;margin-top:22px}
.stat{background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.25);border-radius:var(--radius);padding:12px 20px;min-width:150px}
.stat b{font-size:22px;display:block}
.stat span{font-size:13px;opacity:.85}

/* sections */
section.block{margin:30px 0}
.sec-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:14px}
.sec-head h2{font-size:21px;border-left:5px solid var(--blue);padding-left:10px}
.sec-head a{font-size:13px;color:var(--mut)}

.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(262px,1fr));gap:14px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px;display:flex;gap:13px;transition:box-shadow .15s}
.card:hover{box-shadow:0 6px 20px rgba(20,50,100,.10)}
.icon{width:52px;height:52px;border-radius:12px;flex:none;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:21px}
.card h3{font-size:16px;line-height:1.35}
.card h3 a{color:var(--ink)}
.meta{font-size:12.5px;color:var(--mut);margin:3px 0 8px}
.dl-btn{display:inline-block;background:var(--green);color:#fff;font-size:13px;padding:5px 16px;border-radius:6px;cursor:pointer;border:none}
.dl-btn:hover{background:#128a4a;text-decoration:none}
.stars{color:var(--orange);font-size:13px;letter-spacing:1px}

.chips{display:flex;gap:10px;flex-wrap:wrap}
.chip{background:#fff;border:1px solid var(--line);border-radius:999px;padding:8px 20px;font-size:14px;color:var(--ink);cursor:pointer}
.chip:hover,.chip.on{border-color:var(--blue);color:var(--blue)}

.cols{display:grid;grid-template-columns:1fr 320px;gap:18px}
@media(max-width:860px){.cols{grid-template-columns:1fr}}
.rank{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px}
.rank h2{font-size:18px;margin-bottom:10px}
.rank ol{list-style:none;counter-reset:r}
.rank li{counter-increment:r;padding:8px 0;border-bottom:1px dashed var(--line);display:flex;gap:10px;align-items:baseline;font-size:14.5px}
.rank li:last-child{border-bottom:none}
.rank li::before{content:counter(r);background:#eef3fb;color:var(--blue);font-weight:700;width:22px;height:22px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:13px;flex:none}
.rank li:nth-child(-n+3)::before{background:var(--orange);color:#fff}
.rank .n{color:var(--mut);font-size:12.5px;margin-left:auto;white-space:nowrap}

.news{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.post{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.post .thumb{height:120px;display:flex;align-items:flex-end;padding:12px;color:#fff;font-weight:700;font-size:17px;text-shadow:0 1px 4px rgba(0,0,0,.35)}
.post .body{padding:14px 16px}
.post .body p{font-size:13.5px;color:var(--mut)}
.post .body .meta{margin-top:8px}

/* list page */
table.list{width:100%;background:#fff;border:1px solid var(--line);border-radius:var(--radius);border-collapse:separate;border-spacing:0;overflow:hidden}
table.list th,table.list td{padding:12px 14px;text-align:left;border-bottom:1px solid var(--line);font-size:14.5px}
table.list th{background:#f0f4fa;color:var(--mut);font-weight:600;font-size:13px}
table.list tr:last-child td{border-bottom:none}
table.list .sw{display:flex;align-items:center;gap:11px}
table.list .icon{width:38px;height:38px;font-size:15px;border-radius:9px}

/* article */
.article{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:30px 34px}
.article h1{font-size:27px;margin-bottom:6px}
.article h2{font-size:20px;margin:24px 0 8px}
.article p{margin:9px 0;color:#2c3a4f}
.article ul{margin:8px 0 8px 22px;color:#2c3a4f}
.article code{background:#eef3fb;padding:1px 6px;border-radius:5px;font-size:13.5px}

footer.site{background:#0d2b52;color:#a9c2e2;margin-top:44px}
footer.site .wrap{padding:28px 16px;display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:20px;font-size:13.5px}
@media(max-width:860px){footer.site .wrap{grid-template-columns:1fr 1fr}}
footer.site h4{color:#fff;margin-bottom:9px;font-size:15px}
footer.site a{color:#a9c2e2;display:block;padding:2px 0}
.copyright{border-top:1px solid rgba(255,255,255,.14);text-align:center;padding:13px;font-size:12.5px;color:#7e97ba}

.toast{position:fixed;left:50%;bottom:34px;transform:translateX(-50%) translateY(20px);background:#1a2332;color:#fff;padding:11px 22px;border-radius:9px;font-size:14px;opacity:0;pointer-events:none;transition:all .25s;z-index:99;max-width:90vw;text-align:center}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.hidden{display:none!important}
