:root{--color-bg: #0d0d0d;--color-surface: #1a1a1a;--color-border: #2a2a2a;--color-text: #e8e8e8;--color-text-muted: #888888;--color-pass: #4ade80;--color-pass-bg: #14332a;--color-fail: #f87171;--color-fail-bg: #331414;--color-warn: #fbbf24;--color-warn-bg: #332b14;--color-running: #0e6afb;--color-running-bg: #142033;--color-pending-bg: #222222;--color-pending: #666666;--color-log-bg: #111111;--color-log-text: #cccccc;--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;gap:16px}.header-left{display:flex;flex-direction:column;align-items:flex-start;gap:6px;flex-shrink:0}.back-link{color:var(--color-text-muted);font-size:13px;text-decoration:none;transition:color .15s}.back-link:hover{color:var(--color-running)}.header-text{text-align:right}.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}.log-panel{border-left:none;border-top:1px solid var(--color-border);min-height:300px}}@media(max-width:600px){.app-header{flex-direction:column;align-items:flex-start;padding:16px;gap:12px}.header-left{width:100%;flex-direction:column;align-items:center;gap:4px}.back-link{align-self:flex-start}.header-text{text-align:left;width:100%}.header-text h1{font-size:18px}.header-text p{font-size:13px}.controls{padding:12px 16px;gap:8px}.tests-panel{padding:16px}.test-card-header{padding:10px 12px;gap:8px}.test-card-body{padding:10px 12px}.log-entry{padding:1px 12px;font-size:12px}.log-header{padding:10px 12px}.app-footer{padding:10px 16px;font-size:11px}.header-logo{height:30px}}.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:#111}.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:1px solid var(--color-border)}.log-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:#161616;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}
