:root{--primary:#06f;--primary-hover:#0a5be6;--primary-active:#0049c4;--primary-tint:#eaf1ff;--primary-tint-strong:#d7e6ff;--on-primary:#fff;--bg:#f6f6f6;--surface:#fff;--surface-2:#f8f8f8;--border:#e7ebf2;--border-strong:#d6dde8;--text:#0e1726;--text-secondary:#4a5568;--text-muted:#8893a4;--success:#0c8a3e;--success-tint:#e6f6ec;--danger:#d92d3a;--danger-tint:#fdebec;--warning:#b25e09;--warning-tint:#fdf1e1;--radius-sm:5px;--radius:5px;--radius-lg:5px;--radius-pill:5px;--shadow-sm:0 1px 2px #0e17260f, 0 1px 3px #0e17260a;--shadow-md:0 6px 20px #0e172614;--shadow-lg:0 16px 40px #0e17261f;color:var(--text);background:var(--surface);font-synthesis:none;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,PingFang SC,Microsoft YaHei,sans-serif}*{box-sizing:border-box}body{background:var(--surface);min-width:320px;margin:0}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin:0}.btn{border-radius:var(--radius-sm);font:inherit;cursor:pointer;white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;gap:7px;padding:10px 16px;font-size:14px;font-weight:600;line-height:1;transition:background .15s,border-color .15s,color .15s,box-shadow .15s,transform 50ms;display:inline-flex}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-sm{padding:7px 12px;font-size:13px}.btn-primary{background:var(--primary);color:var(--on-primary)}.btn-primary:hover:not(:disabled){background:var(--primary-hover)}.btn-primary:active{background:var(--primary-active)}.btn-secondary{background:var(--surface);color:var(--text-secondary);border-color:var(--border-strong)}.btn-secondary:hover:not(:disabled){border-color:var(--primary);color:var(--primary);background:var(--primary-tint)}.btn-ghost{color:var(--primary);background:0 0;padding-left:4px;padding-right:4px}.btn-ghost:hover:not(:disabled){color:var(--primary-hover)}.btn-danger{color:var(--danger);background:0 0;border-color:#0000}.btn-danger:hover:not(:disabled){background:var(--danger-tint)}.btn-on{background:var(--success-tint);color:var(--success);border-color:#0000}.btn-off{background:var(--surface-2);color:var(--text-muted);border-color:var(--border-strong)}.topbar{border-bottom:1px solid var(--border);background:var(--bg);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);z-index:20;justify-content:space-between;align-items:center;height:64px;padding:0 max(24px,50vw - 516px);display:flex;position:sticky;top:0}.brand{align-items:center;gap:10px;display:flex}.brand-logo{object-fit:cover;border-radius:5px;width:36px;height:36px;display:block}.brand-text strong{letter-spacing:-.02em;font-size:16px;line-height:1.12;display:block}.brand-text small{letter-spacing:.065em;color:var(--text-muted);text-transform:uppercase;margin-top:3px;font-size:9.5px;display:block}.topbar-actions{align-items:center;gap:12px;display:flex}.header-count{color:var(--text-muted);white-space:nowrap;font-size:13px;font-weight:600}.header-date-picker{color:var(--text-secondary);align-items:center;font-size:13px;font-weight:600;display:flex}.header-date-picker input{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font:inherit;padding:8px 11px}.header-date-picker input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-tint);outline:none}main{min-height:calc(100vh - 64px)}.content-shell{max-width:1080px;margin:0 auto;padding:36px 24px 96px}.eyebrow{color:var(--primary);letter-spacing:.15em;text-transform:uppercase;font-size:12px;font-weight:800}.state{text-align:center;color:var(--text-muted);padding:80px 20px;font-size:15px}.state.error{color:var(--danger)}.tag-list{flex-wrap:wrap;gap:7px;display:flex}.tag{color:#b45309;border-radius:var(--radius-pill);background:#fff4e5;padding:4px 11px;font-size:12px;font-weight:600}.feedback-toggle{border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);width:24px;height:24px;color:var(--text-muted);cursor:pointer;font:inherit;place-items:center;font-size:14px;line-height:1;transition:background .15s,border-color .15s,color .15s;display:inline-grid}.feedback-toggle:hover{border-color:var(--danger);color:var(--danger)}.feedback-toggle--active{background:var(--danger-tint);border-color:var(--danger-tint);color:var(--danger)}.article-list{gap:14px;display:grid}.article-card{background:var(--surface);border:1px solid var(--border);box-shadow:none;border-radius:10px;grid-template-columns:84px 1fr;transition:border-color .18s,box-shadow .18s,transform .18s;display:grid;overflow:hidden}.article-card:hover{border-color:var(--primary-tint-strong);box-shadow:var(--shadow-md);transform:translateY(-2px)}.article-score{color:var(--primary);border-right:1px solid var(--border);background:#f7f7f7;flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex}.article-score strong{letter-spacing:-.03em;font-size:30px;font-weight:800}.article-score span{letter-spacing:.14em;opacity:.7;font-size:9px;font-weight:700}.article-main{min-width:0;padding:20px 24px}.article-meta{color:var(--text-muted);align-items:center;gap:12px;margin-bottom:8px;font-size:12px;display:flex}.article-meta .source{color:var(--primary);font-weight:700}.article-title h2{letter-spacing:-.02em;font-size:21px;font-weight:700;line-height:1.3;transition:color .15s}.article-title:hover h2{color:var(--primary)}.article-summary{color:var(--text-secondary);margin:10px 0 14px;font-size:15px;line-height:1.65}.article-card .tag-list{margin-bottom:16px}.article-footer{border-top:1px solid var(--border);justify-content:space-between;align-items:flex-end;gap:20px;padding-top:14px;display:flex}.reason{color:var(--text-secondary);font-size:13px;line-height:1.55}.reason-label{color:var(--primary);text-transform:uppercase;letter-spacing:.04em;margin-right:6px;font-size:11px;font-weight:700;display:inline-block}.link-action{color:var(--text);white-space:nowrap;font-size:14px;font-weight:700}.link-action:hover{color:var(--text-secondary)}.empty{text-align:center;padding:80px 24px}.empty-mark{color:var(--primary-tint-strong);font-size:44px}.empty h2{margin:12px 0 6px;font-size:22px}.empty p{color:var(--text-muted)}.reading-disclaimer{border-top:1px solid var(--border);color:var(--text-muted);text-align:center;margin-top:36px;padding-top:18px;font-size:12px;line-height:1.7}.reading-disclaimer p+p{margin-top:2px}.detail{max-width:760px}.detail-topline{justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px;display:flex}.detail-published{color:var(--text-muted);font-size:14px}.detail-header{align-items:flex-start;gap:18px;display:flex}.detail-score{border-radius:var(--radius);background:var(--primary);width:64px;height:64px;color:var(--on-primary);flex:none;place-items:center;font-size:34px;font-weight:800;display:grid}.detail-header h1{letter-spacing:-.02em;margin-top:0;font-size:clamp(24px,3.4vw,30px);font-weight:800;line-height:1.25}.detail .article-meta{margin-bottom:0}.detail-tags{margin-top:14px}.callout{border:1px solid var(--border);border-left:4px solid var(--border-strong);background:var(--surface-2);border-radius:var(--radius);margin:24px 0;padding:16px 20px}.callout-label{color:var(--primary);text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px;font-size:12px;font-weight:700;display:block}.callout p{color:var(--text-secondary);font-size:16px;line-height:1.8}.source-content{white-space:pre-wrap;color:var(--text-secondary);margin:28px 0;font-size:16px;line-height:1.8}.detail-source-link{justify-content:flex-end;margin:0 0 14px;display:flex}.meta-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);margin-top:14px;overflow:hidden}.meta-card>summary{cursor:pointer;background:var(--surface-2);color:var(--text-secondary);justify-content:space-between;align-items:center;padding:9px 14px;font-size:14px;font-weight:600;list-style:none;display:flex}.meta-card>summary::-webkit-details-marker{display:none}.meta-card>summary:after{content:"";background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 18 18'%3E%3Cpath d='M4 7l5 5 5-5' fill='none' stroke='%238893a4' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") 50%/18px 18px no-repeat;flex:none;width:28px;height:28px}.meta-card[open]>summary:after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 18 18'%3E%3Cpath d='M4 11l5-5 5 5' fill='none' stroke='%238893a4' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}.meta-card[open]>summary{border-bottom:1px solid var(--border)}.meta-card-body{color:var(--text-secondary);padding:16px 18px;font-size:14px;line-height:1.7}.meta-card-body .kv{flex-wrap:wrap;gap:6px 18px;display:flex}.meta-card-body .kv span{color:var(--text-muted)}.enrichment-item{border-top:1px solid var(--border);padding:12px 0}.enrichment-item:first-child{border-top:0;padding-top:0}.enrichment-item ul{margin:8px 0 0;padding-left:18px}.enrichment-item a{color:var(--primary);word-break:break-all}.admin{gap:18px;max-width:1080px;margin:0 auto;padding:36px 24px 96px;display:grid}.admin-header{margin-bottom:6px}.admin-header h1{letter-spacing:-.025em;margin-top:6px;font-size:32px;font-weight:800}.alert{border-radius:var(--radius-sm);margin-bottom:20px;padding:12px 16px;font-size:14px}.alert--error{background:var(--danger-tint);color:var(--danger)}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:none;margin-bottom:0;padding:22px 24px}.panel-head{justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px;display:flex}.panel-head h2{letter-spacing:-.01em;font-size:18px;font-weight:700}.ops-grid{grid-template-columns:1fr 1fr;align-items:stretch;gap:18px;display:grid}.source-form{border-bottom:1px solid var(--border);grid-template-columns:92px minmax(150px,.7fr) minmax(260px,1.5fr) auto;gap:8px;margin-bottom:4px;padding-bottom:14px;display:grid}.source-form select,.source-form input,.field input{border:1px solid var(--border-strong);border-radius:var(--radius-sm);font:inherit;background:var(--surface);color:var(--text);padding:7px 10px;font-size:14px}.source-form .btn{min-height:38px;padding:7px 14px;font-size:14px}.source-edit-form{grid-template-columns:minmax(140px,1fr) minmax(220px,2fr) auto auto;gap:8px;margin-top:12px;display:grid}.source-edit-form input{border:1px solid var(--border-strong);border-radius:var(--radius-sm);font:inherit;background:var(--surface);color:var(--text);padding:9px 12px}.source-edit-form input:focus,.source-form select:focus,.source-form input:focus,.field input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-tint);outline:none}.source-item{border-bottom:1px solid var(--border);padding:18px 0}.source-item:last-child{border-bottom:0;padding-bottom:0}.source-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.source-info{align-items:center;gap:12px;min-width:0;display:flex}.source-info strong{font-size:15px;display:block}.source-endpoint{color:var(--text-muted);word-break:break-all;margin-top:2px;font-size:12px;display:block}.source-actions{flex-wrap:wrap;gap:8px;display:flex}.source-hint{color:var(--text-muted);margin-top:8px;font-size:12px;font-style:italic}.source-feedback{color:var(--text-secondary);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);word-break:break-word;margin-top:8px;padding:8px 12px;font-size:13px}.question-block{background:var(--surface-2);border-radius:var(--radius);margin-top:14px;padding:14px 16px}.question-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;padding:9px 12px;font-size:13px;display:flex}.question-form{gap:8px;margin-top:4px;display:flex}.question-form input{border:1px solid var(--border-strong);border-radius:var(--radius-sm);font:inherit;flex:1;padding:9px 12px}.filter-row{color:var(--text-secondary);align-items:center;gap:8px;font-size:13px;display:flex}.filter-row select{border:1px solid var(--border-strong);border-radius:var(--radius-sm);font:inherit;background:var(--surface);padding:6px 10px}.data-table{border-collapse:collapse;width:100%;font-size:14px}.data-table td{border-top:1px solid var(--border);padding:11px 4px}.data-table tr:first-child td{border-top:0}.data-table td:last-child{text-align:right}.job-list{flex-direction:column;display:flex}.job-row{border-top:1px solid var(--border);align-items:center;gap:10px;padding:11px 0;font-size:13px;display:flex}.job-row:first-child{border-top:0}.job-id{font-weight:700}.job-type{color:var(--text-secondary)}.job-attempts{color:var(--text-muted);font-size:12px}.job-row .spacer{flex:1}.job-detail{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);margin-top:16px;padding:16px}.job-detail-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.job-detail h3{margin:0;font-size:15px}.job-detail-close{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);width:28px;height:28px;color:var(--text-muted);cursor:pointer;font-size:18px;line-height:1}.job-detail-close:hover{color:var(--text);border-color:var(--border-strong)}.job-detail dl{grid-template-columns:auto 1fr;gap:4px 14px;margin:0 0 12px;font-size:13px;display:grid}.job-detail dt{color:var(--text-muted)}.job-detail dd{margin:0}.job-detail strong{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin:12px 0 6px;font-size:12px;display:block}.log-list{flex-direction:column;display:flex}.log-row{border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:8px 12px;padding:11px 0;font-size:13px;display:flex}.log-row:first-child{border-top:0}.log-row time{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:12px}.log-row code{color:var(--primary);font-size:12px}.log-row .log-msg{color:var(--text-secondary)}.log-row pre,.job-detail pre{border-radius:var(--radius-sm);background:var(--surface-2);border:1px solid var(--border);max-height:240px;color:var(--text);white-space:pre-wrap;word-break:break-word;flex-basis:100%;margin:6px 0 0;padding:12px;font-size:12px;overflow:auto}.badge{border-radius:var(--radius-pill);letter-spacing:.01em;background:var(--surface-2);color:var(--text-secondary);align-items:center;padding:3px 10px;font-size:12px;font-weight:700;display:inline-flex}.badge--type{background:var(--primary-tint);color:var(--primary);text-transform:uppercase;letter-spacing:.06em;font-size:11px}.badge--pending{background:var(--surface-2);color:var(--text-secondary)}.badge--running{background:var(--primary-tint);color:var(--primary)}.badge--succeeded{background:var(--success-tint);color:var(--success)}.badge--partial_failed{background:var(--warning-tint);color:var(--warning)}.badge--failed,.badge--dead{background:var(--danger-tint);color:var(--danger)}.badge--cancelled{background:var(--surface-2);color:var(--text-muted)}.log-level{text-transform:uppercase;font-size:11px;font-weight:700}.log-level--info{color:var(--primary)}.log-level--warn{color:var(--warning)}.log-level--error{color:var(--danger)}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:min(420px,100% - 32px);box-shadow:none;margin:72px auto;padding:36px}.login-card h1{margin:6px 0 24px;font-size:26px;font-weight:800}.login-card form{gap:18px;display:grid}.field{gap:7px;display:grid}.field span{color:var(--text-secondary);font-size:13px;font-weight:600}.login-card .btn{width:100%;padding:12px}@media (width<=860px){.ops-grid{grid-template-columns:1fr}}@media (width<=640px){.topbar{padding:0 16px}.brand-text small{display:none}.header-date-picker input{max-width:142px}.article-card{grid-template-columns:1fr}.article-score{border-right:0;border-bottom:1px solid var(--border);flex-direction:row;gap:8px;padding:10px}.article-footer{flex-direction:column;align-items:flex-start;gap:10px}.source-form,.source-edit-form{grid-template-columns:1fr}.source-row{flex-direction:column;align-items:flex-start}.detail-header{gap:14px}.log-row time{display:none}}
