:root{--color-primary:#6366f1;--color-primary-hover:#4f46e5;--color-primary-light:#eef2ff;--color-accent:#8b5cf6;--color-bg:#f8fafc;--color-bg-elevated:#ffffff;--color-bg-subtle:#f1f5f9;--color-border:#e2e8f0;--color-border-hover:#cbd5e1;--color-text:#1e293b;--color-text-secondary:#64748b;--color-text-muted:#94a3b8;--color-success:#10b981;--color-shadow:rgba(15, 23, 42, 0.08);--color-shadow-lg:rgba(15, 23, 42, 0.12);--header-height:64px;--sidebar-width:240px;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--transition:0.2s ease}*,::after,::before{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-height) + 16px)}body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif;font-size:14px;line-height:1.6;color:var(--color-text);background-color:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}button{font-family:inherit;cursor:pointer;border:none;background:0 0}input{font-family:inherit}.app{min-height:100vh;display:flex;flex-direction:column}.layout{display:flex;flex:1;max-width:1440px;margin:0 auto;width:100%;padding-top:var(--header-height)}.header{position:fixed;top:0;left:0;right:0;z-index:100;height:var(--header-height);background:rgba(248,250,252,.85);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid transparent;transition:border-color var(--transition),box-shadow var(--transition)}.header.is-scrolled{border-bottom-color:var(--color-border);box-shadow:0 1px 8px var(--color-shadow)}.header__inner{display:flex;align-items:center;gap:16px;max-width:1440px;margin:0 auto;padding:0 24px;height:100%}.logo{display:flex;align-items:center;gap:10px;flex-shrink:0;font-weight:700;font-size:18px;color:var(--color-text)}.logo__icon{flex-shrink:0}.logo__text{background:linear-gradient(135deg,var(--color-primary),var(--color-accent));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.search{flex:1;max-width:480px;position:relative;display:flex;align-items:center}.search__icon{position:absolute;left:14px;width:18px;height:18px;color:var(--color-text-muted);pointer-events:none}.search__input{width:100%;height:40px;padding:0 36px 0 42px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-elevated);color:var(--color-text);font-size:14px;transition:border-color var(--transition),box-shadow var(--transition)}.search__input::placeholder{color:var(--color-text-muted)}.search__input:focus{outline:0;border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(99,102,241,.15)}.search__clear{position:absolute;right:8px;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:50%;color:var(--color-text-muted);font-size:18px;transition:background var(--transition),color var(--transition)}.search__clear:hover{background:var(--color-bg-subtle);color:var(--color-text)}.header__actions{display:flex;align-items:center;gap:8px;margin-left:auto}.btn-icon{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md);color:var(--color-text-secondary);transition:background var(--transition),color var(--transition)}.btn-icon:hover{background:var(--color-bg-subtle);color:var(--color-text)}.btn-icon svg{width:20px;height:20px}.sidebar{position:sticky;top:var(--header-height);width:var(--sidebar-width);height:calc(100vh - var(--header-height));flex-shrink:0;overflow-y:auto;padding:16px 12px;border-right:1px solid var(--color-border);background:var(--color-bg)}.sidebar__nav{display:flex;flex-direction:column;gap:2px}.sidebar__link{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius-md);color:var(--color-text-secondary);font-size:13px;transition:background var(--transition),color var(--transition)}.sidebar__link:hover{background:var(--color-bg-subtle);color:var(--color-text)}.sidebar__link.is-active{background:var(--color-primary-light);color:var(--color-primary);font-weight:600}.sidebar__icon{font-size:16px;flex-shrink:0;width:24px;text-align:center}.sidebar__name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar__count{font-size:11px;color:var(--color-text-muted);background:var(--color-bg-subtle);padding:1px 6px;border-radius:10px;flex-shrink:0}.sidebar__link.is-active .sidebar__count{background:rgba(99,102,241,.15);color:var(--color-primary)}.main{flex:1;min-width:0;padding:24px 32px 48px}.hero{background:linear-gradient(135deg,var(--color-primary-light) 0,transparent 60%);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:32px 36px;margin-bottom:32px}.hero__title{font-size:24px;font-weight:700;margin-bottom:8px;line-height:1.3}.hero__desc{color:var(--color-text-secondary);font-size:15px;margin-bottom:20px}.hero__desc strong{color:var(--color-primary);font-weight:700}.hero__tags{display:flex;flex-wrap:wrap;gap:8px}.hero__tag{display:inline-flex;align-items:center;gap:4px;padding:6px 14px;background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:20px;font-size:13px;color:var(--color-text-secondary);transition:all var(--transition)}.hero__tag:hover{border-color:var(--color-primary);color:var(--color-primary);transform:translateY(-1px);box-shadow:0 2px 8px var(--color-shadow)}.search-result{display:flex;align-items:center;gap:12px;padding:12px 16px;margin-bottom:24px;background:var(--color-primary-light);border-radius:var(--radius-md);font-size:14px;color:var(--color-primary)}.link-btn{color:var(--color-primary);font-size:inherit;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.link-btn:hover{color:var(--color-primary-hover)}.categories{display:flex;flex-direction:column;gap:40px}.category__header{display:flex;align-items:center;gap:14px;margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid var(--color-border)}.category__icon{font-size:28px;flex-shrink:0}.category__info{flex:1;min-width:0}.category__title{font-size:20px;font-weight:700;line-height:1.3}.category__desc{font-size:13px;color:var(--color-text-secondary);margin-top:2px}.category__count{font-size:12px;color:var(--color-text-muted);white-space:nowrap;flex-shrink:0}.category__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.site-card{display:flex;flex-direction:column;gap:10px;padding:18px;background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:all var(--transition);cursor:pointer}.site-card:hover{border-color:var(--color-primary);box-shadow:0 4px 16px var(--color-shadow-lg);transform:translateY(-2px)}.site-card__header{display:flex;align-items:flex-start;gap:12px}.site-card__favicon{width:32px;height:32px;border-radius:var(--radius-sm);flex-shrink:0;background:var(--color-bg-subtle)}.site-card__title-wrap{flex:1;min-width:0}.site-card__name{font-size:15px;font-weight:600;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.site-card__category{font-size:11px;color:var(--color-text-muted)}.site-card__external{width:16px;height:16px;color:var(--color-text-muted);flex-shrink:0;opacity:0;transition:opacity var(--transition)}.site-card:hover .site-card__external{opacity:1}.site-card__desc{font-size:13px;color:var(--color-text-secondary);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.site-card__tags{display:flex;flex-wrap:wrap;gap:6px}.site-card__tag{font-size:11px;padding:2px 8px;background:var(--color-bg-subtle);color:var(--color-text-muted);border-radius:4px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:64px 24px;text-align:center;color:var(--color-text-secondary)}.empty-state svg{width:64px;height:64px;color:var(--color-text-muted);margin-bottom:16px}.empty-state p{font-size:16px;margin-bottom:20px}.btn{display:inline-flex;align-items:center;justify-content:center;padding:10px 24px;border-radius:var(--radius-md);font-size:14px;font-weight:500;transition:all var(--transition)}.btn--primary{background:var(--color-primary);color:#fff}.btn--primary:hover{background:var(--color-primary-hover)}.footer{border-top:1px solid var(--color-border);background:var(--color-bg-elevated);padding:24px}.footer__inner{max-width:1440px;margin:0 auto;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}.footer__text{font-size:13px;color:var(--color-text-muted)}.footer__links{display:flex;align-items:center;gap:8px;font-size:13px}.footer__links a{color:var(--color-text-secondary);transition:color var(--transition)}.footer__links a:hover{color:var(--color-primary)}.footer__sep{color:var(--color-border)}.sidebar-toggle{display:none;position:fixed;bottom:24px;right:24px;z-index:90;width:48px;height:48px;border-radius:50%;background:var(--color-primary);color:#fff;box-shadow:0 4px 16px rgba(99,102,241,.4);align-items:center;justify-content:center;transition:transform var(--transition)}.sidebar-toggle:hover{transform:scale(1.05)}.sidebar-toggle svg{width:22px;height:22px}.sidebar-overlay{display:none;position:fixed;inset:0;z-index:80;background:rgba(0,0,0,.5)}@media (max-width:1024px){.sidebar{position:fixed;top:0;left:0;bottom:0;z-index:85;height:100vh;transform:translateX(-100%);transition:transform .3s;padding-top:calc(var(--header-height) + 16px);box-shadow:4px 0 24px var(--color-shadow-lg)}.sidebar.is-open{transform:translateX(0)}.sidebar-overlay[hidden]{display:none}.sidebar-overlay:not([hidden]){display:block}.sidebar-toggle{display:flex}.main{padding:20px 16px 80px}.category__grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}}@media (max-width:640px){.header__inner{padding:0 16px;gap:10px}.logo__text{display:none}.search{max-width:none}.hero{padding:24px 20px}.hero__title{font-size:20px}.category__header{flex-wrap:wrap}.category__grid{grid-template-columns:1fr}.footer__inner{flex-direction:column;text-align:center}}.sidebar::-webkit-scrollbar{width:4px}.sidebar::-webkit-scrollbar-track{background:0 0}.sidebar::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}.sidebar::-webkit-scrollbar-thumb:hover{background:var(--color-border-hover)}@media print{.footer,.header,.hero__tags,.sidebar,.sidebar-toggle{display:none!important}.layout{padding-top:0}.main{padding:0}.site-card{break-inside:avoid;box-shadow:none}}