:root{--bg: #f1f5f9;--surface: #ffffff;--border: #e2e8f0;--text: #0f172a;--muted: #64748b;--primary: #4f46e5;--pass: #059669;--fail: #dc2626;--skip: #d97706}*{box-sizing:border-box}body{margin:0;font-family:Poppins,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg);color:var(--text)}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.layout{display:flex;min-height:100vh}.sidebar{width:240px;background:var(--surface);border-right:1px solid var(--border);padding:1.25rem .75rem;display:flex;flex-direction:column}.sidebar-brand{display:flex;align-items:center;gap:.5rem;padding:0 .5rem 1.25rem;border-bottom:1px solid var(--border);margin-bottom:.75rem}.brand-icon{color:var(--primary);flex-shrink:0}.sidebar h1{font-size:.9rem;margin:0;color:var(--text);font-weight:600;line-height:1.3}.sidebar-nav{display:flex;flex-direction:column;gap:.15rem}.nav-item{display:flex;align-items:center;gap:.65rem;padding:.6rem .75rem;border-radius:8px;color:var(--muted);text-decoration:none;font-size:.9rem;border-left:3px solid transparent;transition:background .15s,color .15s}.nav-item:hover{background:#f8fafc;color:var(--text);text-decoration:none}.nav-item.active{background:#eef2ff;color:var(--primary);border-left-color:var(--primary);font-weight:500}.nav-icon{flex-shrink:0;opacity:.85}.nav-item.active .nav-icon{opacity:1}.main{flex:1;padding:2rem;overflow:auto}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1.25rem;margin-bottom:1rem}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem;margin-bottom:1.5rem}.stat{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1.25rem}.stat .label{font-size:.8rem;color:var(--muted)}.stat .value{font-size:1.75rem;font-weight:600;margin-top:.25rem}.badge{display:inline-block;padding:.2rem .5rem;border-radius:6px;font-size:.75rem;font-weight:500}.badge.pass{background:#d1fae5;color:var(--pass)}.badge.fail{background:#fee2e2;color:var(--fail)}.badge.skip{background:#fef3c7;color:var(--skip)}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:.75rem;border-bottom:1px solid var(--border)}th{font-size:.8rem;color:var(--muted);font-weight:500}.chart{height:200px;display:flex;align-items:flex-end;gap:8px;padding-top:1rem}.chart-bar{flex:1;min-width:24px;background:var(--primary);border-radius:4px 4px 0 0;position:relative}.chart-bar.fail{background:var(--fail)}.chart-label{font-size:.65rem;color:var(--muted);text-align:center;margin-top:4px}.screenshot{max-width:100%;border-radius:8px;border:1px solid var(--border);margin-top:.5rem}.steps{margin:0;padding-left:1.25rem}.steps li{margin-bottom:.35rem}.filter-bar{display:flex;gap:.5rem;margin-bottom:1rem}.filter-bar button{padding:.4rem .75rem;border:1px solid var(--border);background:var(--surface);border-radius:8px;cursor:pointer}.filter-bar button.active{background:var(--primary);color:#fff;border-color:var(--primary)}.empty{color:var(--muted);text-align:center;padding:3rem}.banner{padding:.75rem 1rem;border-radius:8px;margin-bottom:1rem;font-size:.9rem}.banner-warn{background:#fef3c7;color:#92400e;border:1px solid #fcd34d}.btn{display:inline-block;padding:.5rem 1rem;border:1px solid var(--border);background:var(--surface);border-radius:8px;cursor:pointer;font-size:.9rem;color:var(--text);text-decoration:none}.btn:hover{background:#f8fafc}.btn.primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn.primary:hover{background:#4338ca}.btn.primary:disabled,.btn:disabled{opacity:.5;cursor:not-allowed}.btn-row{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.75rem}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.tabs{display:flex;gap:.5rem;margin-bottom:1rem}.tabs button{padding:.5rem 1rem;border:1px solid var(--border);background:var(--surface);border-radius:8px 8px 0 0;cursor:pointer}.tabs button.active{background:var(--primary);color:#fff;border-color:var(--primary)}.form label{display:block;margin-bottom:1rem;font-size:.9rem;font-weight:500}.form input,.form select,.form textarea{display:block;width:100%;margin-top:.35rem;padding:.5rem .75rem;border:1px solid var(--border);border-radius:8px;font:inherit}.checkbox-label{display:flex!important;align-items:center;gap:.5rem}.checkbox-label input{width:auto;margin:0}.code-area{font-family:ui-monospace,monospace;font-size:.85rem}.log-panel{max-height:320px;overflow:auto;background:#0f172a;color:#e2e8f0;padding:1rem;border-radius:8px;font-size:.8rem}.card-header-row{display:flex;justify-content:space-between;align-items:center}.module-grid{display:flex;flex-wrap:wrap;gap:.75rem}.module-item{padding:.75rem 1rem;background:#f8fafc;border-radius:8px;display:flex;gap:.5rem;align-items:center}.tag-chip{display:inline-block;background:#eef2ff;color:var(--primary);padding:.15rem .4rem;border-radius:4px;font-size:.7rem;margin-right:.25rem}.link-btn{background:none;border:none;color:var(--fail);cursor:pointer;padding:0;font:inherit;text-decoration:underline}.muted{color:var(--muted);font-size:.9rem}.error-text{color:var(--fail)}.success-text{color:var(--pass)}.quick-actions h3{margin-top:0}.btn-sm{padding:.25rem .5rem;font-size:.8rem}.btn-run{display:inline-flex;align-items:center;gap:.25rem;margin-right:.5rem;color:var(--pass);border-color:#a7f3d0;background:#ecfdf5}.btn-run:hover:not(:disabled){background:#d1fae5}.btn-with-icon{display:inline-flex;align-items:center;gap:.35rem}.actions-cell{white-space:nowrap}.spinner{display:inline-block;width:12px;height:12px;border:2px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.run-log-panel{margin-top:1rem}.log-panel-toggle{display:flex;align-items:center;gap:.5rem;width:100%;background:none;border:none;padding:0;font:inherit;font-weight:600;cursor:pointer;text-align:left;margin-bottom:.5rem}.log-panel{max-height:280px;overflow:auto;background:#0f172a;color:#e2e8f0;padding:1rem;border-radius:8px;font-size:.8rem;margin:0}.api-request-row{display:flex;gap:.5rem;margin-bottom:1rem}.method-select{width:110px;padding:.5rem .75rem;border:1px solid var(--border);border-radius:8px;font:inherit;font-weight:600;background:var(--surface)}.url-input{flex:1;padding:.5rem .75rem;border:1px solid var(--border);border-radius:8px;font:inherit}.api-section{margin-top:1rem}.section-toggle{background:none;border:none;font:inherit;font-weight:600;cursor:pointer;padding:0;margin-bottom:.5rem}.headers-editor{display:flex;flex-direction:column;gap:.5rem}.header-row{display:flex;gap:.5rem}.header-row input{flex:1;padding:.4rem .6rem;border:1px solid var(--border);border-radius:6px;font:inherit}.response-header{display:flex;align-items:center;gap:1rem;margin-bottom:.75rem}.response-details{margin-bottom:.75rem}.code-block{background:#f8fafc;border:1px solid var(--border);border-radius:8px;padding:1rem;overflow:auto;font-size:.85rem;font-family:ui-monospace,monospace;margin:.5rem 0 0}.response-body{max-height:400px}.history-list{list-style:none;padding:0;margin:0}.history-item{display:flex;align-items:center;gap:.75rem;width:100%;padding:.6rem .5rem;border:none;background:none;border-bottom:1px solid var(--border);cursor:pointer;text-align:left;font:inherit}.history-item:hover{background:#f8fafc}.history-url{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.85rem}.schedule-stat-sm{font-size:1rem!important;line-height:1.4}.schedule-stat-wide .value{font-size:.95rem}.schedule-form{margin-top:1rem}.cron-presets{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin:-.5rem 0 1rem}.cron-help{margin:-.25rem 0 1rem;font-size:.85rem}.cron-help code,.cron-chip{font-family:ui-monospace,monospace;font-size:.8rem;background:#f1f5f9;padding:.15rem .4rem;border-radius:4px}.cron-chip{display:inline-block}.live-log-toolbar{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap}.live-log-tabs{margin-bottom:0}.live-log-toolbar-right{display:flex;align-items:center;gap:.75rem}.live-log-filter{min-width:220px;padding:.45rem .75rem;border:1px solid var(--border);border-radius:8px;font:inherit}.live-log-toggle{font-weight:400!important;margin:0!important}.live-log-panel-wrap{padding:0;overflow:hidden}.live-log-panel{max-height:520px;overflow:auto;background:#0f172a;color:#e2e8f0;padding:.75rem 1rem;font-family:ui-monospace,monospace;font-size:.8rem}.live-log-empty{padding:2rem 0;text-align:center}.live-log-line{display:flex;flex-wrap:wrap;gap:.5rem;padding:.35rem 0;border-bottom:1px solid rgba(148,163,184,.12)}.live-log-time{color:#94a3b8;flex-shrink:0}.live-log-tag,.live-log-method{color:#38bdf8;flex-shrink:0;font-weight:600}.live-log-test{color:#a5b4fc;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.live-log-url{flex:1;min-width:180px;word-break:break-all}.live-log-message{flex:1;min-width:200px;word-break:break-word}.live-log-meta{color:#94a3b8;margin-left:auto}.log-level-error{color:#fca5a5}.log-level-warn{color:#fcd34d}.log-level-info{color:#93c5fd}.log-level-ok{color:#86efac}.live-running{display:inline-flex;align-items:center;gap:.35rem;color:var(--pass);font-size:.85rem}.trace-list{display:flex;flex-direction:column;gap:.75rem}.trace-card{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1rem;border:1px solid var(--border);border-radius:10px;background:#f8fafc}.trace-card-main{min-width:0}.ai-banner-ok{background:#ecfdf5;color:#065f46;border:1px solid #a7f3d0}.ai-form-row{display:flex;flex-wrap:wrap;gap:1.5rem;align-items:flex-end}.ai-result{margin-top:1.25rem;padding-top:1.25rem;border-top:1px solid var(--border)}.ai-inline-panel{margin-bottom:1rem}.ai-inline-form{margin-top:.75rem;display:flex;flex-direction:column;gap:.75rem}.ai-inline-form textarea{width:100%;padding:.5rem .75rem;border:1px solid var(--border);border-radius:8px;font:inherit}.ai-markdown{background:#f8fafc;border:1px solid var(--border);border-radius:8px;padding:1rem;margin-top:.75rem;max-height:480px;overflow:auto}.ai-markdown pre{margin:0;white-space:pre-wrap;word-break:break-word;font-family:ui-monospace,monospace;font-size:.85rem;line-height:1.5}
