:root{--primary:#2563eb;--primary-dark:#1e40af;--accent:#3b82f6;--bg:#f0f4f8;--card:#fff;--text:#1a202c;--text-sub:#718096;--text-light:#a0aec0;--border:#e2e8f0;--shadow:0 1px 3px rgba(0,0,0,.04);--shadow-lg:0 2px 8px rgba(0,0,0,.06);--radius:14px;--green:#22c55e;--orange:#f97316;--gold:#eab308;--red:#ef4444;--gradient-primary:#2563eb}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{font-size:16px;-webkit-text-size-adjust:100%}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",sans-serif;background:var(--bg);color:var(--text);line-height:1.6;overflow-x:hidden;padding-bottom:calc(62px + env(safe-area-inset-bottom));-webkit-font-smoothing:antialiased;transition:opacity .2s}
a{text-decoration:none;color:inherit}
img{display:block;max-width:100%}
/* Header */
.header{position:sticky;top:0;z-index:100;background:var(--gradient-primary);color:#fff;box-shadow:none;border-bottom:1px solid rgba(0,0,0,.08);padding-top:env(safe-area-inset-top)}
.header-row{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;gap:8px}
.header-logo{font-size:20px;font-weight:800;letter-spacing:-.5px;cursor:pointer}
.header-logo span{opacity:.7;font-size:12px;font-weight:400;margin-left:6px}
.header-back{width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,.15);display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0;cursor:pointer;transition:background .15s,transform .1s}
.header-back:active{background:rgba(255,255,255,.3);transform:scale(.92)}
.header-title{font-size:17px;font-weight:600;flex:1;text-align:center}
.header-icon{width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,.15);display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0;cursor:pointer;transition:background .15s,transform .1s}
.header-icon:active{background:rgba(255,255,255,.3);transform:scale(.92)}
/* Search */
.search-bar{padding:10px 16px;background:#fff;border-bottom:1px solid var(--border)}
.search-form{display:flex;gap:8px}
.search-input{flex:1;padding:9px 16px;border:1px solid var(--border);border-radius:22px;font-size:14px;outline:none;background:var(--bg);transition:border-color .15s,box-shadow .15s}
.search-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(37,99,235,.1)}
.search-btn{padding:9px 18px;border:none;border-radius:22px;background:var(--primary);color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:transform .1s}
.search-btn:active{transform:scale(.95)}
/* Sort/Cat bars */
.sort-bar{display:flex;gap:4px;padding:8px 12px;background:#fff;border-bottom:1px solid var(--border);overflow-x:auto;scrollbar-width:none}
.sort-bar::-webkit-scrollbar{display:none}
.sort-bar a{flex-shrink:0;padding:5px 14px;border-radius:16px;font-size:13px;color:var(--text-sub);background:var(--bg);transition:all .15s;white-space:nowrap}
.sort-bar a.active{background:var(--primary);color:#fff;font-weight:600}
.cat-bar{background:#fff;border-bottom:1px solid var(--border);padding:8px 12px;display:flex;gap:6px;overflow-x:auto;scrollbar-width:none}
.cat-bar::-webkit-scrollbar{display:none}
.cat-bar a{flex-shrink:0;padding:5px 14px;border-radius:16px;font-size:13px;color:var(--text-sub);background:#f0f4f8;transition:all .15s;white-space:nowrap}
.cat-bar a.active{background:var(--primary);color:#fff;font-weight:600}
/* List & Cards */
.list{padding:12px}
.card{background:var(--card);border-radius:var(--radius);margin-bottom:12px;overflow:hidden;box-shadow:var(--shadow);transition:transform .15s,box-shadow .15s}
.card:active{transform:scale(.98);box-shadow:var(--shadow-lg)}
.card-body{padding:14px 16px}
.card-title{font-size:17px;font-weight:700;line-height:1.4;margin-bottom:6px}
.card-summary{font-size:13px;color:var(--text-sub);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.card-meta{display:flex;gap:12px;margin-top:12px;padding-top:12px;border-top:1px solid var(--border);font-size:12px;color:var(--text-light)}
.card-meta span{display:flex;align-items:center;gap:3px}
.tag{font-size:11px;color:var(--primary);background:#ebf5ff;padding:2px 8px;border-radius:8px;display:inline-block;margin-bottom:6px}
/* Section titles */
.section-title{font-size:15px;font-weight:700;padding:16px 16px 8px;display:flex;align-items:center;gap:6px}
.section-title::before{content:'';width:4px;height:16px;background:var(--primary);border-radius:2px}
.section-more{margin-left:auto;font-size:12px;color:var(--text-light);font-weight:400}
/* Bottom nav */
.bottom-nav{position:fixed;bottom:0;left:0;right:0;background:var(--card);border-top:1px solid var(--border);display:flex;padding-bottom:env(safe-area-inset-bottom);z-index:100;}
.bottom-nav a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 0;font-size:11px;color:var(--text-light);transition:color .15s}
.bottom-nav a.active{color:var(--primary)}
.bottom-nav-icon{font-size:22px}
/* Empty states */
.empty{text-align:center;padding:60px 20px;color:var(--text-light)}
.empty-icon{font-size:48px;margin-bottom:12px;opacity:.3}
/* Pager */
.pager{display:flex;align-items:center;justify-content:center;gap:12px;padding:24px 16px}
.pager a{padding:10px 24px;border-radius:24px;font-size:14px;font-weight:600;background:var(--card);color:var(--primary);box-shadow:var(--shadow);transition:transform .1s}
.pager a:active{transform:scale(.95)}
.pager-info{font-size:13px;color:var(--text-light)}
/* Loading */
.loading-more{text-align:center;padding:16px;color:var(--text-light);font-size:14px}
.load-end{text-align:center;padding:16px;color:var(--text-light);font-size:13px}
/* Back to top */
#backTop{position:fixed;bottom:calc(70px + env(safe-area-inset-bottom));right:16px;width:40px;height:40px;border-radius:50%;background:var(--primary);color:#fff;display:none;align-items:center;justify-content:center;font-size:20px;box-shadow:0 1px 4px rgba(0,0,0,.1);z-index:99;cursor:pointer;border:none;transition:transform .1s,opacity .2s}
#backTop:active{transform:scale(.9)}
/* Lazy loading */
img.lazy{opacity:0;transition:opacity .3s}
img.lazy.loaded{opacity:1}
img.lazy.error{opacity:.3;background:var(--bg)}
/* Skeleton */
.skeleton{background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0 50%,#f0f0f0 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:4px}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
/* Page transitions */
.page-fade{animation:fadeIn .2s ease}
@keyframes fadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
/* Touch ripple */
.ripple{position:relative;overflow:hidden}
.ripple-effect{position:absolute;border-radius:50%;background:rgba(255,255,255,.4);transform:scale(0);animation:ripple .4s ease-out;pointer-events:none}
@keyframes ripple{to{transform:scale(2.5);opacity:0}}
/* Responsive */
@media(max-width:360px){.list{padding:10px}.card-body{padding:12px}.card-title{font-size:16px}.header-logo{font-size:18px}}
@media(min-width:415px){.list{padding:16px}.card-body{padding:16px 20px}}
@media(min-width:769px){body{max-width:768px;margin:0 auto;box-shadow:0 0 20px rgba(0,0,0,.04)}}
@media(orientation:landscape) and (max-height:420px){.header-row{padding:6px 16px}.bottom-nav a{padding:6px 0;font-size:10px}.bottom-nav-icon{font-size:18px}}