:root{--color-bg: #ffffff;--color-surface: #f8f9fa;--color-border: #dee2e6;--color-text: #212529;--color-text-muted: #6c757d;--color-pass: #28a745;--color-pass-bg: #d4edda;--color-fail: #dc3545;--color-fail-bg: #f8d7da;--color-warn: #ffc107;--color-warn-bg: #fff3cd;--color-running: #007bff;--color-running-bg: #cce5ff;--color-pending-bg: #e2e3e5;--color-pending: #6c757d;--color-log-bg: #1e1e1e;--color-log-text: #d4d4d4;--font-mono: "SF Mono", "Monaco", "Inconsolata", "Fira Code", monospace}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--color-bg);color:var(--color-text);line-height:1.5}.app-header{display:flex;align-items:center;justify-content:space-between;background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:20px 32px}.header-text h1{font-size:24px;font-weight:600;margin-bottom:4px}.header-text p{color:var(--color-text-muted);font-size:14px}.header-logo{height:40px;width:auto}.controls{display:flex;align-items:center;gap:12px;padding:16px 32px;border-bottom:1px solid var(--color-border)}.btn{padding:8px 20px;border:none;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:opacity .15s}.btn:hover{opacity:.85}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-running);color:#fff}.btn-secondary{background:var(--color-pending-bg);color:var(--color-text)}.progress-text{margin-left:auto;font-size:14px;color:var(--color-text-muted)}.main-layout{display:grid;grid-template-columns:1fr 1fr;min-height:calc(100vh - 140px)}@media(max-width:900px){.main-layout{grid-template-columns:1fr}}.tests-panel{padding:24px 32px;overflow-y:auto}.suite-group{margin-bottom:24px}.suite-title{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--color-text-muted);margin-bottom:8px}.test-card{border:1px solid var(--color-border);border-radius:8px;margin-bottom:8px;overflow:hidden;transition:border-color .2s}.test-card-header{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--color-surface);border-bottom:1px solid var(--color-border)}.test-card-header.status-passed{background:var(--color-pass-bg);border-bottom-color:var(--color-pass)}.test-card-header.status-failed{background:var(--color-fail-bg);border-bottom-color:var(--color-fail)}.test-card-header.status-warning{background:var(--color-warn-bg);border-bottom-color:var(--color-warn)}.test-card-header.status-running{background:var(--color-running-bg);border-bottom-color:var(--color-running)}.test-status-badge{display:inline-flex;align-items:center;justify-content:center;min-width:40px;padding:2px 8px;border-radius:4px;font-size:12px;font-weight:700;text-transform:uppercase}.test-status-badge.status-passed{background:var(--color-pass);color:#fff}.test-status-badge.status-failed{background:var(--color-fail);color:#fff}.test-status-badge.status-warning{background:var(--color-warn);color:#212529}.test-status-badge.status-running{background:var(--color-running);color:#fff}.test-status-badge.status-pending{background:var(--color-pending-bg);color:var(--color-pending)}.test-name{font-weight:600;font-size:15px}.test-card-body{padding:12px 16px}.test-description{color:var(--color-text-muted);font-size:13px;margin-bottom:4px}.test-details{font-size:13px;font-weight:500;min-height:18px}.test-promo-link{display:inline-block;margin-top:8px;color:var(--color-fail);font-size:13px;font-weight:600;text-decoration:none}.test-promo-link:hover{text-decoration:underline}.log-panel{background:var(--color-log-bg);display:flex;flex-direction:column;border-left:3px solid var(--color-running)}.log-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:#252526;color:#ccc;font-weight:600;font-size:14px}.log-promo-btn{background:var(--color-running);color:#fff;padding:4px 14px;border-radius:4px;font-size:12px;font-weight:600;text-decoration:none;white-space:nowrap;transition:opacity .15s}.log-promo-btn:hover{opacity:.85}.log-clear-btn{background:transparent;border:1px solid #555;color:#ccc;padding:4px 12px;border-radius:4px;font-size:12px;cursor:pointer}.log-clear-btn:hover{background:#333}.log-list{flex:1;overflow-y:auto;padding:8px 0;font-family:var(--font-mono);font-size:13px;line-height:1.6}.log-entry{padding:1px 16px;white-space:pre-wrap;word-break:break-word}.log-entry:hover{background:#ffffff0a}.log-timestamp{color:#858585}.log-info .log-message{color:var(--color-log-text)}.log-success .log-message{color:var(--color-pass)}.log-warn .log-message{color:var(--color-warn)}.log-error .log-message{color:var(--color-fail)}.log-debug .log-message{color:#858585}.app-footer{text-align:center;padding:12px;border-top:1px solid var(--color-border);font-size:12px;color:var(--color-text-muted)}.app-footer a{color:var(--color-running);text-decoration:none}.app-footer a:hover{text-decoration:underline}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.test-status-badge.status-running{animation:pulse 1.5s ease-in-out infinite}
