:root{--color-bg:#f5f5f5;--color-surface:#fff;--color-text:#333;--color-text-primary:#111;--color-text-secondary:#888;--color-text-muted:#999;--color-text-dim:#666;--color-text-body:#444;--color-border:#ddd;--color-border-light:#eee;--color-border-lighter:#f0f0f0;--color-brand:#4a6cf7;--color-brand-hover:#3a5ce5;--color-link:#4a6cf7;--color-sidebar-bg:#1a1a2e;--color-sidebar-text:#ccc;--color-sidebar-text-muted:#999;--color-sidebar-text-active:#fff;--color-sidebar-border:#2a2a4a;--color-sidebar-active-bg:#ffffff14;--color-sidebar-hover-bg:#ffffff0d;--color-sidebar-active-border:#6c8cff;--badge-draft-bg:#e8e8e8;--badge-draft-fg:#666;--badge-implementing-bg:#fff3cd;--badge-implementing-fg:#856404;--badge-implemented-bg:#d4edda;--badge-implemented-fg:#155724;--badge-running-bg:#cce5ff;--badge-running-fg:#004085;--badge-evaluating-bg:#e2d5f1;--badge-evaluating-fg:#5a2d82;--badge-complete-bg:#d4edda;--badge-complete-fg:#155724;--badge-failed-bg:#f8d7da;--badge-failed-fg:#721c24;--badge-submitted-bg:#e8e8e8;--badge-submitted-fg:#666;--badge-fetching-bg:#fff3cd;--badge-fetching-fg:#856404;--badge-screening-bg:#cce5ff;--badge-screening-fg:#004085;--badge-planning-bg:#e2d5f1;--badge-planning-fg:#5a2d82;--badge-registered-bg:#d4edda;--badge-registered-fg:#155724;--badge-rejected-bg:#f8d7da;--badge-rejected-fg:#721c24;--badge-pass-bg:#d4edda;--badge-pass-fg:#155724;--badge-fail-bg:#f8d7da;--badge-fail-fg:#721c24;--badge-pending-bg:#e8e8e8;--badge-pending-fg:#666;--badge-completed-bg:#d4edda;--badge-completed-fg:#155724;--color-success:#28a745;--color-danger:#dc3545;--color-danger-hover:#c82333;--color-warning:#ffc107;--color-warning-bg:#fffde7;--color-info-bg:#f0f7ff;--progress-blue:#4a6cf7;--progress-green:#28a745;--progress-yellow:#ffc107;--sidebar-width:220px;--content-padding-x:32px;--content-padding-y:28px;--font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:"SF Mono", Monaco, Consolas, monospace;--font-size-xs:11px;--font-size-sm:12px;--font-size-base:13px;--font-size-md:14px;--font-size-lg:15px;--font-size-xl:20px;--font-size-2xl:22px;--font-size-3xl:28px;--line-height:1.5;--radius-sm:4px;--radius-md:6px;--radius-pill:12px}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-family);background:var(--color-bg);color:var(--color-text);font-size:var(--font-size-md);line-height:var(--line-height);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--color-link);text-decoration:none}a:hover{text-decoration:underline}.mono{font-family:var(--font-mono);font-size:var(--font-size-sm)}.shell{min-height:100vh;display:flex}.sidebar{width:var(--sidebar-width);background:var(--color-sidebar-bg);color:var(--color-sidebar-text);flex-direction:column;flex-shrink:0;padding:0;display:flex;position:fixed;top:0;bottom:0;left:0;overflow-y:auto}.sidebar-brand{font-size:var(--font-size-xl);color:var(--color-sidebar-text-active);letter-spacing:2px;border-bottom:1px solid var(--color-sidebar-border);padding:20px 16px;font-weight:700}.sidebar nav{flex:1;padding:12px 0}.sidebar nav a{color:var(--color-sidebar-text-muted);font-size:var(--font-size-md);border-left:3px solid #0000;padding:10px 20px;text-decoration:none;transition:all .15s;display:block}.sidebar nav a:hover{color:var(--color-sidebar-text-active);background:var(--color-sidebar-hover-bg);text-decoration:none}.sidebar nav a.active{color:var(--color-sidebar-text-active);background:var(--color-sidebar-active-bg);border-left-color:var(--color-sidebar-active-border)}.sidebar-user{border-top:1px solid var(--color-sidebar-border);font-size:var(--font-size-sm);color:var(--color-text-dim);padding:14px 20px}.sidebar-user-email{color:var(--color-sidebar-text-muted);margin-bottom:6px;display:block}.sidebar-signout{color:var(--color-text-dim);font-size:var(--font-size-sm);cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.sidebar-signout:hover{color:var(--color-sidebar-text)}.main{margin-left:var(--sidebar-width);padding:var(--content-padding-y) var(--content-padding-x);flex:1;min-width:0}.page-header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.page-header h1{font-size:var(--font-size-2xl);color:var(--color-text-primary);font-weight:600}.detail-header{justify-content:space-between;align-items:flex-start;margin-bottom:24px;display:flex}.detail-title{font-size:var(--font-size-2xl);color:var(--color-text-primary);font-weight:600}.detail-meta{font-size:var(--font-size-base);color:var(--color-text-secondary);margin-top:4px}.detail-actions{align-items:center;gap:8px;display:flex}.two-col{grid-template-columns:1fr 1fr;gap:20px;display:grid}.card-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-bottom:24px;display:grid}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:18px}.card-label{font-size:var(--font-size-sm);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px}.card-value{font-size:var(--font-size-3xl);color:var(--color-text-primary);font-weight:700}.card-sub{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-top:4px}.panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);margin-bottom:20px}.panel-header{border-bottom:1px solid var(--color-border-light);font-weight:600;font-size:var(--font-size-md);justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.panel-body{padding:18px}.panel-body p{margin-bottom:8px}.badge{border-radius:var(--radius-pill);font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.3px;white-space:nowrap;padding:2px 10px;font-weight:600;display:inline-block}.badge-draft{background:var(--badge-draft-bg);color:var(--badge-draft-fg)}.badge-implementing{background:var(--badge-implementing-bg);color:var(--badge-implementing-fg)}.badge-implemented{background:var(--badge-implemented-bg);color:var(--badge-implemented-fg)}.badge-running{background:var(--badge-running-bg);color:var(--badge-running-fg)}.badge-evaluating{background:var(--badge-evaluating-bg);color:var(--badge-evaluating-fg)}.badge-complete{background:var(--badge-complete-bg);color:var(--badge-complete-fg)}.badge-failed{background:var(--badge-failed-bg);color:var(--badge-failed-fg)}.badge-submitted{background:var(--badge-submitted-bg);color:var(--badge-submitted-fg)}.badge-fetching{background:var(--badge-fetching-bg);color:var(--badge-fetching-fg)}.badge-screening{background:var(--badge-screening-bg);color:var(--badge-screening-fg)}.badge-planning{background:var(--badge-planning-bg);color:var(--badge-planning-fg)}.badge-registered{background:var(--badge-registered-bg);color:var(--badge-registered-fg)}.badge-rejected{background:var(--badge-rejected-bg);color:var(--badge-rejected-fg)}.badge-pending{background:var(--badge-pending-bg);color:var(--badge-pending-fg)}.badge-completed{background:var(--badge-completed-bg);color:var(--badge-completed-fg)}.badge-pass{background:var(--badge-pass-bg);color:var(--badge-pass-fg)}.badge-fail{background:var(--badge-fail-bg);color:var(--badge-fail-fg)}.badge-novel{color:#1a56db;background:#e8f0fe}.badge-baseline{background:var(--badge-draft-bg);color:var(--badge-draft-fg)}.badge-comparison{color:#5a2d82;background:#e2d5f1}.badge-implementation_failed{background:var(--badge-failed-bg);color:var(--badge-failed-fg)}table{border-collapse:collapse;width:100%;font-size:var(--font-size-base)}th{text-align:left;border-bottom:2px solid var(--color-border-light);color:#555;font-weight:600;font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.3px;background:#fafafa;padding:10px 14px}td{border-bottom:1px solid var(--color-border-lighter);vertical-align:top;padding:10px 14px}tr:hover td{background:#fafcff}td a{color:var(--color-link);text-decoration:none}td a:hover{text-decoration:underline}.btn{border-radius:var(--radius-sm);font-size:var(--font-size-base);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);cursor:pointer;padding:7px 16px;font-weight:500;line-height:1.4;text-decoration:none;display:inline-block}.btn:hover{background:var(--color-bg);text-decoration:none}.btn-primary{background:var(--color-brand);color:#fff;border-color:var(--color-brand)}.btn-primary:hover{background:var(--color-brand-hover)}.btn-danger{background:var(--color-danger);color:#fff;border-color:var(--color-danger)}.btn-danger:hover{background:var(--color-danger-hover)}.btn-warning{background:var(--color-warning);color:var(--color-text);border-color:var(--color-warning)}.btn-sm{font-size:var(--font-size-sm);padding:4px 10px}.btn+.btn{margin-left:6px}.btn:disabled{opacity:.5;cursor:not-allowed}.chip{border-radius:var(--radius-sm);font-size:var(--font-size-sm);background:#eef1f8;border:1px solid #d8dce8;margin:2px 4px 2px 0;padding:3px 10px;display:inline-block}.progress-bar{border-radius:var(--radius-sm);background:#e8e8e8;height:8px;margin-top:6px;overflow:hidden}.progress-fill{border-radius:var(--radius-sm);height:100%;transition:width .3s}.progress-fill-blue{background:var(--progress-blue)}.progress-fill-green{background:var(--progress-green)}.progress-fill-yellow{background:var(--progress-yellow)}.kv-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px 24px;display:grid}.kv-label{font-size:var(--font-size-xs);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px}.kv-value{font-size:var(--font-size-md);color:#222;font-weight:500}.tabs{border-bottom:2px solid var(--color-border-light);margin-bottom:20px;display:flex}.tab{font-size:var(--font-size-base);color:var(--color-text-secondary);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-2px;padding:10px 20px;font-weight:500;text-decoration:none}.tab:hover{color:var(--color-text);text-decoration:none}.tab.active{color:var(--color-brand);border-bottom-color:var(--color-brand)}.filter-bar{align-items:center;gap:12px;margin-bottom:16px;display:flex}.filter-bar select,.filter-bar input{border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-base);background:var(--color-surface);padding:6px 12px}.filter-bar input{width:280px}.form-group{margin-bottom:14px}.form-group label{font-size:var(--font-size-sm);color:#555;margin-bottom:4px;font-weight:600;display:block}.form-group input,.form-group select,.form-group textarea{border:1px solid var(--color-border);border-radius:var(--radius-sm);width:100%;font-size:var(--font-size-base);padding:8px 12px}.form-group textarea{resize:vertical;min-height:60px}.form-row{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;display:grid}.activity-item{border-bottom:1px solid var(--color-border-lighter);font-size:var(--font-size-base);padding:10px 0}.activity-item:last-child{border-bottom:none}.activity-time{font-size:var(--font-size-xs);color:var(--color-text-muted);margin-top:2px}.metric-delta{font-size:var(--font-size-sm);margin-left:4px}.metric-delta.positive{color:var(--color-success)}.metric-delta.negative{color:var(--color-danger)}.empty{text-align:center;color:var(--color-text-muted);font-size:var(--font-size-md);padding:40px}.eval-block{border-radius:var(--radius-md);font-size:var(--font-size-base);background:#f9f9fb;border:1px solid #e8e8ef;margin-top:12px;padding:16px;line-height:1.6}.cost-bar{font-size:var(--font-size-base);align-items:center;gap:8px;display:flex}.cost-bar .progress-bar{flex:1}.breadcrumb{margin-bottom:12px}.breadcrumb a{color:var(--color-text-secondary);font-size:var(--font-size-base);text-decoration:none}.breadcrumb a:hover{color:var(--color-text);text-decoration:none}.skeleton{background:linear-gradient(90deg,#e8e8e8 25%,#f5f5f5 50%,#e8e8e8 75%) 0 0/200% 100%;border-radius:4px;animation:1.5s ease-in-out infinite skeleton-pulse}@keyframes skeleton-pulse{0%{background-position:200% 0}to{background-position:-200% 0}}.loading-spinner{color:var(--color-text-muted);font-size:var(--font-size-md);justify-content:center;align-items:center;padding:40px;display:flex}.error-message{background:var(--badge-failed-bg);color:var(--badge-failed-fg);border-radius:var(--radius-md);font-size:var(--font-size-base);margin-bottom:16px;padding:16px}.code-viewer{color:#e0e0e0;border-radius:var(--radius-md);font-family:var(--font-mono);font-size:var(--font-size-sm);white-space:pre;background:#1e1e2e;max-height:500px;padding:16px;line-height:1.6;overflow:auto}.login-page{background:#1a1a2e;justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{text-align:center}.login-brand{letter-spacing:3px;color:#fff;margin-bottom:8px;font-size:32px;font-weight:700}.login-subtitle{color:#ffffff80;margin-bottom:36px;font-size:14px}.login-buttons{flex-direction:row;justify-content:center;gap:12px;display:flex}.login-btn{cursor:pointer;border:none;border-radius:6px;min-width:180px;padding:14px 24px;font-size:15px;font-weight:600;text-decoration:none;transition:all .15s;display:block}.login-btn-admin{color:#fff;background:#4a6cf7;border:2px solid #4a6cf7}.login-btn-admin:hover{background:#3a5ce5}.login-form{flex-direction:column;gap:12px;max-width:300px;margin-top:24px;margin-left:auto;margin-right:auto;display:flex}.login-form input{color:#fff;background:#ffffff14;border:1px solid #fff3;border-radius:6px;outline:none;padding:12px 16px;font-size:15px;transition:border-color .15s}.login-form input::placeholder{color:#ffffff59}.login-form input:focus{border-color:#4a6cf7}.login-form button{cursor:pointer;color:#fff;background:#4a6cf7;border:none;border-radius:6px;padding:12px 24px;font-size:15px;font-weight:600;transition:background .15s}.login-form button:hover{background:#3a5ce5}.login-form button:disabled{opacity:.6;cursor:not-allowed}.login-error{color:#ff6b6b;font-size:13px}.login-back{color:#fff6;cursor:pointer;background:0 0;border:none;margin-top:8px;font-size:13px;text-decoration:underline}.login-back:hover{color:#ffffffb3}.dashboard{color:#e0e0e0;background:#0f0f1a;min-height:100vh}.dashboard header{border-bottom:1px solid #ffffff1a;justify-content:space-between;align-items:center;padding:1rem 2rem;display:flex}.dashboard header h1{letter-spacing:2px;color:#fff;margin:0;font-size:1.25rem;font-weight:700}.dashboard header button{color:#fff9;cursor:pointer;background:0 0;border:1px solid #fff3;border-radius:6px;padding:.5rem 1rem;font-size:13px;transition:all .15s}.dashboard header button:hover{color:#fff;border-color:#fff6}.dashboard main{padding:2rem}.dashboard h2{color:#fff;margin-bottom:1rem;font-size:1.1rem;font-weight:600}.dashboard pre{color:#a0a0b0;background:#ffffff0d;border-radius:6px;padding:1rem;font-size:.8rem;line-height:1.5;overflow-x:auto}.loading{color:#fff6;background:#1a1a2e;justify-content:center;align-items:center;height:100vh;font-size:14px;display:flex}
