:root{--primary:#0057ff;--primary-soft:#eef3ff;--bg:#f2f5fa;--surface:#fff;--surface-2:#f8fafc;--border:#e4e8f0;--text-1:#0d1117;--text-2:#4b5563;--text-3:#9ca3af;--brand-grad:linear-gradient(135deg,#0057ff,#7c3aed);--radius-card:10px;--shadow-card:0 1px 3px rgba(0,0,0,.06),0 4px 12px rgba(0,0,0,.04)}*{box-sizing:border-box}body{margin:0;color:var(--text-1);background:var(--bg);background-image:radial-gradient(circle,#c8d0de 1px,transparent 0);background-size:28px 28px;font-family:DM Sans,Noto Sans SC,-apple-system,BlinkMacSystemFont,sans-serif}a{color:inherit;text-decoration:none}.app-shell{min-height:100vh;display:flex;flex-direction:column;padding-top:64px}.topbar{position:fixed;top:0;left:0;right:0;z-index:100;justify-content:space-between;gap:16px;padding:0 32px;height:64px;background:hsla(0,0%,100%,.92);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}.brand,.topbar{display:flex;align-items:center}.brand{gap:12px}.brand-logo{width:40px;height:40px;border-radius:10px;flex-shrink:0;-o-object-fit:cover;object-fit:cover;box-shadow:0 4px 12px rgba(7,193,96,.25)}.brand-text h1{margin:0;font-size:18px;font-weight:700;line-height:1.3;letter-spacing:-.3px;color:var(--text-1);font-family:Bricolage Grotesque,DM Sans,sans-serif}.brand-text p{margin:2px 0 0;font-size:12px;color:var(--text-3);letter-spacing:.2px}.topbar-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}.history-button{border:0;border-radius:6px;background:transparent;color:var(--text-3);cursor:pointer;font-size:13px;font-weight:600;padding:5px 8px;transition:color .15s ease,background .15s ease}.history-button:focus-visible,.history-button:hover{background:#f1f3f8;color:var(--primary);outline:none}.gh-link{display:flex;align-items:center;color:var(--text-3);transition:color .15s ease}.gh-link:hover{color:var(--text-1)}.update-chip{padding:5px 13px;border-radius:20px;background:#f1f3f8;color:var(--text-2);font-size:12px;font-weight:500;white-space:nowrap;flex-shrink:0}.layout{display:grid;grid-template-columns:220px minmax(0,1fr);gap:20px;padding:24px 32px 56px;flex:1}.source-panel{position:sticky;top:84px;align-self:start;padding:6px;border-radius:var(--radius-card);background:var(--surface);box-shadow:var(--shadow-card)}.source-tab{position:relative;display:flex;width:100%;min-height:52px;flex-direction:column;align-items:flex-start;justify-content:center;padding:10px 12px 10px 16px;border:0;border-radius:8px;background:transparent;color:var(--text-1);cursor:pointer;text-align:left;transition:background .15s ease;overflow:hidden}.source-tab+.source-tab{margin-top:2px}.source-tab:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:0 2px 2px 0;background:transparent;transition:background .15s ease}.source-tab span{font-size:14px;font-weight:600;line-height:1.3}.source-tab small{margin-top:3px;color:var(--text-3);font-size:11px;font-weight:400}.source-tab.active{background:var(--primary-soft);color:var(--primary)}.source-tab.active small{color:#6b9bff}.source-tab.active:before{background:var(--primary)}.source-tab:hover:not(.active){background:#f7f8fb}.source-group-header{display:flex;justify-content:space-between;align-items:center;width:100%;padding:10px 12px;border:0;background:transparent;color:var(--text-2);font-size:12px;font-weight:600;cursor:pointer}.source-group-header:hover{color:var(--primary)}.toggle-icon{font-size:14px}.source-group-body{padding:0 6px 6px}.fade-enter-active,.fade-leave-active{transition:opacity .2s}.fade-enter-from,.fade-leave-to{opacity:0}.feed-panel{min-width:0;border-radius:var(--radius-card);background:var(--surface);box-shadow:var(--shadow-card);overflow:hidden}.feed-toolbar{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px 24px 18px;border-bottom:1px solid var(--border)}.feed-toolbar h2{margin:0;font-size:20px;font-weight:700;letter-spacing:-.3px;color:var(--text-1);font-family:Bricolage Grotesque,DM Sans,sans-serif}.feed-subtitle{margin:6px 0 0;color:var(--text-3);font-size:13px;line-height:1.5}.back-today-button{flex-shrink:0;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text-2);cursor:pointer;font-size:13px;font-weight:600;padding:7px 11px;transition:border-color .15s ease,color .15s ease,background .15s ease}.back-today-button:focus-visible,.back-today-button:hover{border-color:#c7d9ff;background:var(--primary-soft);color:var(--primary);outline:none}.quick-nav{display:flex;justify-content:center;margin:0 auto}.quick-link,.quick-nav{align-items:center;gap:4px}.quick-link{display:inline-flex;padding:6px 12px;border-radius:999px;font-size:13px;font-weight:500;letter-spacing:.1px;color:var(--text-2);text-decoration:none;white-space:nowrap;flex-shrink:0;transition:color .15s ease,background .15s ease}.quick-link:focus-visible,.quick-link:hover{color:var(--primary);background:var(--primary-soft);outline:none}.quick-link-disabled{color:var(--text-3);cursor:not-allowed;-webkit-user-select:none;-moz-user-select:none;user-select:none}.quick-link-disabled:hover{color:var(--text-3);background:transparent}.quick-link-badge{display:inline-flex;align-items:center;margin-left:6px;padding:1px 6px;border-radius:999px;font-size:10px;font-weight:600;letter-spacing:.2px;background:#fef3c7;color:#92400e;border:1px solid #fde68a}button.quick-link{border:none;background:transparent;cursor:pointer}@media (max-width:1024px){.quick-nav{overflow-x:auto;overflow-y:hidden;padding-bottom:4px;-webkit-overflow-scrolling:touch;flex-shrink:0;justify-content:flex-start}.quick-nav::-webkit-scrollbar{height:3px}.quick-nav::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}}.history-drawer-mask{position:fixed;inset:0;z-index:20;display:none;background:rgba(15,23,42,.22)}.history-drawer-mask.open{display:block}.history-drawer{position:absolute;top:88px;right:0;width:min(440px,100vw);height:calc(100% - 88px);overflow-y:auto;background:var(--surface);box-shadow:-18px 0 40px rgba(15,23,42,.16)}.history-drawer-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px 22px 22px;border-bottom:1px solid var(--border)}.history-drawer-head h2{margin:0;color:var(--text-1);font-size:20px;line-height:1.3}.history-drawer-head p{margin:6px 0 0;color:var(--text-3);font-size:13px;line-height:1.6}.history-drawer-close{width:34px;height:34px;flex-shrink:0;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text-2);cursor:pointer;font-size:20px;line-height:1}.history-drawer-close:focus-visible,.history-drawer-close:hover{background:#f7f8fb;outline:none}.history-date-list{padding:14px}.history-date-row{display:grid;grid-template-columns:72px minmax(0,1fr);gap:12px;align-items:center;width:100%;min-height:62px;margin-bottom:8px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:#f8fafc;color:var(--text-1);cursor:pointer;text-align:left;transition:border-color .15s ease,background .15s ease}.history-date-row:hover:not(:disabled){border-color:#c7d9ff;background:#f6f9ff}.history-date-row.active{border-color:var(--primary);background:var(--primary-soft)}.history-date-row.disabled{cursor:not-allowed;opacity:.55}.history-date-row strong{font-size:15px;line-height:1.2}.history-date-row span{min-width:0;color:var(--text-3);font-size:12px;line-height:1.4}.history-drawer-state{margin:18px 14px;padding:22px;border:1px dashed var(--border);border-radius:8px;color:var(--text-3);text-align:center;font-size:14px}.history-drawer-state.error{border-color:#fecaca;color:#b91c1c;background:#fef2f2}.about-modal-mask{position:fixed;inset:0;z-index:30;display:none;align-items:center;justify-content:center;background:rgba(15,23,42,.22);padding:20px}.about-modal-mask.open{display:flex}.about-modal{position:relative;width:min(360px,100%);padding:28px;border-radius:var(--radius-card);background:var(--surface);box-shadow:0 24px 60px rgba(15,23,42,.2);text-align:center}.about-modal-close{position:absolute;top:12px;right:12px;width:34px;height:34px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text-2);cursor:pointer;font-size:20px;line-height:1}.about-modal-close:focus-visible,.about-modal-close:hover{background:#f7f8fb;outline:none}.about-modal-body h2{margin:0;font-size:20px;font-weight:700;color:var(--text-1);font-family:Bricolage Grotesque,DM Sans,sans-serif}.about-modal-desc{margin:10px 0 0;color:var(--text-2);font-size:14px;line-height:1.6}.about-qrcode{width:220px;height:220px;margin:22px auto 0;border-radius:10px;box-shadow:0 4px 16px rgba(0,0,0,.08)}.about-qrcode-hint{margin:16px 0 0;color:var(--text-3);font-size:13px;line-height:1.5}.about-github-link{display:inline-flex;align-items:center;gap:6px;margin-top:14px;padding:6px 12px;border-radius:999px;font-size:13px;font-weight:500;color:var(--text-2);text-decoration:none;transition:color .15s ease,background .15s ease}.about-github-link:focus-visible,.about-github-link:hover{color:var(--primary);background:var(--primary-soft);outline:none}.subscribe-modal-mask{position:fixed;inset:0;z-index:30;display:none;align-items:center;justify-content:center;background:rgba(15,23,42,.22);padding:20px}.subscribe-modal-mask.open{display:flex}.subscribe-modal{position:relative;width:min(380px,100%);padding:28px;border-radius:var(--radius-card);background:var(--surface);box-shadow:0 24px 60px rgba(15,23,42,.2);text-align:center}.subscribe-modal-close{position:absolute;top:12px;right:12px;width:34px;height:34px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text-2);cursor:pointer;font-size:20px;line-height:1}.subscribe-modal-close:focus-visible,.subscribe-modal-close:hover{background:#f7f8fb;outline:none}.subscribe-modal-body h2{margin:0;font-size:20px;font-weight:700;color:var(--text-1);font-family:Bricolage Grotesque,DM Sans,sans-serif}.subscribe-modal-desc{margin:10px 0 0;color:var(--text-2);font-size:14px;line-height:1.6}.subscribe-form{display:flex;flex-direction:column;gap:12px;margin-top:22px}.subscribe-input{width:100%;padding:11px 14px;border:1px solid var(--border);border-radius:8px;background:var(--surface-2);color:var(--text-1);font-size:14px;line-height:1.5;outline:none;transition:border-color .15s ease,box-shadow .15s ease}.subscribe-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(0,87,255,.08)}.subscribe-submit{width:100%;padding:11px 16px;border:none;border-radius:8px;background:var(--primary);color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:background .15s ease,opacity .15s ease}.subscribe-submit:hover:not(:disabled){background:#0047d1}.subscribe-submit:disabled{opacity:.6;cursor:not-allowed}.subscribe-message{margin:14px 0 0;font-size:13px;line-height:1.5}.subscribe-message.success{color:#166534}.subscribe-message.error{color:#b91c1c}.feed-item{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:20px;padding:22px 24px;border-bottom:1px solid var(--border);transition:background .15s ease}.feed-item:last-child{border-bottom:0}.feed-item:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:transparent;transition:background .15s ease}.feed-item:hover{background:#f6f9ff}.feed-item:hover:before{background:var(--primary)}.item-title{display:inline;color:var(--text-1);font-size:16px;line-height:1.5;font-weight:600;letter-spacing:-.1px;transition:color .15s ease}.item-title:hover{color:var(--primary)}.item-summary{margin:8px 0 0;color:var(--text-2);font-size:14px;line-height:1.7;white-space:pre-line}.item-tags{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 0}.item-tag{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:20px;font-size:12px;font-weight:500;line-height:1.7;white-space:nowrap;border:1px solid transparent}.item-tag--lang{background:#f3f4f6;color:#374151;border-color:#e5e7eb}.lang-dot{display:inline-block;width:10px;height:10px;border-radius:50%;flex-shrink:0}.item-tag--stat{background:#fffbeb;color:#92400e;border-color:#fde68a}.item-tag--fork{background:#f0f4ff;color:#3b5bdb;border-color:#c5d0fa}.item-tag--growth{background:#f0fdf4;color:#166534;border-color:#bbf7d0}.item-tag--category{background:var(--primary-soft);color:var(--primary);border-color:#c7d9ff}.item-tag--date{background:#f9fafb;color:#6b7280;border-color:#e5e7eb}.open-link{align-self:start;flex-shrink:0;color:var(--primary);font-size:13px;font-weight:500;white-space:nowrap;padding:2px 0;transition:opacity .15s ease}.open-link:hover{opacity:.75}@keyframes shimmer{0%{background-position:-600px 0}to{background-position:600px 0}}.skeleton-card{padding:22px 24px;border-bottom:1px solid var(--border)}.skeleton-card:last-child{border-bottom:0}.skeleton-line{border-radius:6px;background:linear-gradient(90deg,#eaecf0 25%,#f5f6f8 50%,#eaecf0 75%);background-size:600px 100%;animation:shimmer 1.4s linear infinite}.skeleton-line.title{height:20px;width:65%;margin-bottom:14px}.skeleton-line.body{height:13px;width:100%;margin-bottom:8px}.skeleton-line.short{width:50%;margin-bottom:0}.state-box{margin:32px 24px;padding:32px;border:1px dashed var(--border);border-radius:8px;color:var(--text-3);text-align:center;font-size:14px}.state-box.error{border-color:#fecaca;color:#b91c1c;background:#fef2f2}@media (max-width:860px){.topbar{position:static;height:auto;flex-wrap:wrap;padding:12px 16px;gap:8px}.update-chip{font-size:11px;padding:4px 10px}.topbar-actions{flex-wrap:wrap;justify-content:flex-end}.history-button{font-size:12px;padding:4px 6px}.layout{display:block;padding:12px 16px 40px}.source-panel{position:static;display:flex;gap:8px;margin-bottom:16px;padding:8px;overflow-x:auto;-webkit-overflow-scrolling:touch}.source-tab{width:140px;flex:0 0 140px;min-height:48px;border:1px solid var(--border)}.source-tab+.source-tab{margin-top:0}.source-tab:before{display:none}.feed-item,.feed-toolbar{padding:16px}.feed-item,.feed-toolbar{display:block}.back-today-button{margin-top:12px}.history-drawer{top:0;height:100%;width:100vw}.history-drawer-head{padding:22px}.open-link{display:inline-block;margin-top:10px}}.site-footer{text-align:center;padding:24px 0;color:var(--text-3);font-size:13px;border-top:1px solid var(--border);margin-top:32px}.footer-info{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:6px 16px;line-height:normal;max-width:1200px;margin:0 auto;padding:0 24px}.footer-copy{color:var(--text-2);font-size:12px;justify-self:start}.footer-beian{display:inline-flex;align-items:center;gap:6px 14px;flex-wrap:wrap;justify-content:center;justify-self:center}.footer-link{color:var(--text-2);font-size:12px;text-decoration:underline;text-underline-offset:2px}.footer-link:hover{color:var(--primary)}.footer-police{display:inline-flex;align-items:center;gap:6px}.footer-police-logo{width:20px;height:20px;vertical-align:middle}.footer-stat{display:inline-flex;align-items:center;gap:4px;justify-self:end}.footer-stat,.footer-stat-value{font-size:12px;color:var(--text-2)}.footer-stat-sep{color:var(--text-3);font-size:12px;margin:0 4px}.lang-switch{display:flex;align-items:center;gap:4px;flex-shrink:0}.lang-switch button{border:none;background:transparent;color:var(--text-3);font-size:13px;font-weight:500;cursor:pointer;padding:4px 6px;border-radius:4px;transition:color .15s ease,background .15s ease}.lang-switch button:hover{color:var(--text-1)}.lang-switch button.active{color:var(--primary);font-weight:600}.lang-sep{color:var(--text-3);font-size:13px;-webkit-user-select:none;-moz-user-select:none;user-select:none}