:root{--bg: #0f1115;--bg-2: #161922;--bg-3: #1e2230;--line: #2a3040;--text: #e4e7ee;--muted: #8a92a6;--accent: #4f8cff;--accent-2: #2f6be0;--ok: #3ccf8e;--warn: #f5b542;--danger: #ff5d5d;--radius: 6px;--gap: 8px;--font: 13px/1.4 Inter, system-ui, -apple-system, "Segoe UI", sans-serif;--mono: 12px ui-monospace, SFMono-Regular, Menlo, monospace;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:var(--font)}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{margin:0 0 var(--gap);font-weight:600}h2{font-size:16px;margin:0}h3{font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-top:12px}h4{font-size:12px;text-transform:uppercase;margin-top:10px}code{font:var(--mono)}ul,ol{margin:0;padding:0;list-style:none}input,select,textarea,button{font:inherit;color:var(--text);background:var(--bg-3);border:1px solid var(--line);border-radius:var(--radius);padding:5px 8px}textarea{width:100%;resize:vertical}input:focus,select:focus,textarea:focus{outline:1px solid var(--accent);border-color:var(--accent)}button{cursor:pointer;white-space:nowrap}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--accent-2);border-color:var(--accent-2);color:#fff}button.danger{border-color:var(--danger);color:var(--danger);background:transparent}button.link{background:none;border:none;color:var(--accent);padding:0 4px}button.on,.seg button.on{background:var(--accent-2);border-color:var(--accent);color:#fff}label{display:flex;flex-direction:column;gap:3px;color:var(--muted)}label.check{flex-direction:row;align-items:center;gap:6px;color:var(--text)}fieldset{border:1px solid var(--line);border-radius:var(--radius);margin:0 0 12px;padding:10px}legend{color:var(--muted);padding:0 4px}.row{display:flex;gap:var(--gap);align-items:center}.row input{flex:1}.toolbar{display:flex;flex-wrap:wrap;gap:var(--gap);align-items:center;margin-bottom:var(--gap)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--gap)}.cols{display:grid;grid-template-columns:1fr 1fr;gap:16px}.muted{color:var(--muted)}.ok{color:var(--ok)}.note{color:var(--muted);font-size:12px;margin-top:2px}.empty{color:var(--muted);padding:40px;text-align:center}.error{border:1px solid var(--danger);color:var(--danger);background:#ff5d5d14;border-radius:var(--radius);padding:6px 10px;margin:var(--gap) 0}.error ul{list-style:disc;padding-left:18px;margin-top:4px}.banner{display:flex;justify-content:space-between;gap:12px;align-items:center;border:1px solid var(--warn);background:#f5b5421a;border-radius:var(--radius);padding:8px 12px;margin-bottom:12px}.panel{display:flex;flex-direction:column;gap:var(--gap);background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius);padding:10px;margin-bottom:12px}.panel h3{margin:0}.chips{display:flex;flex-wrap:wrap;gap:4px}.chip{font:var(--mono);background:var(--bg-3);border:1px solid var(--line);border-radius:10px;padding:1px 7px}.seg{display:inline-flex}.seg button{border-radius:0;margin-left:-1px}.seg button:first-child{border-radius:var(--radius) 0 0 var(--radius)}.seg button:last-child{border-radius:0 var(--radius) var(--radius) 0}.badge{display:inline-block;font-size:11px;padding:1px 7px;border-radius:10px;background:var(--bg-3);border:1px solid var(--line);text-transform:uppercase;letter-spacing:.03em}.state-live,.status-done{color:var(--ok);border-color:var(--ok)}.state-needs_human,.status-needs_human,.status-blocked{color:var(--warn);border-color:var(--warn)}.state-cancelled,.status-failed,.status-rejected{color:var(--danger);border-color:var(--danger)}.state-building,.state-testing,.status-running,.status-in_progress{color:var(--accent);border-color:var(--accent)}.sev-blocker{color:var(--danger)}.sev-major{color:var(--warn)}.sev-minor{color:var(--muted)}.app{display:flex;flex-direction:column;height:100%}.topbar{display:flex;justify-content:space-between;align-items:center;padding:6px 14px;border-bottom:1px solid var(--line);background:var(--bg-2)}.brand{font-weight:700;color:var(--text);letter-spacing:.05em}.projects{padding:14px;max-width:1000px}.table{width:100%;border-collapse:collapse;margin-top:12px}.table th,.table td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--line)}.table th{color:var(--muted);font-weight:500}.project{display:flex;flex-direction:column;flex:1;min-height:0}.project-head{display:flex;align-items:center;gap:12px;padding:8px 14px}.live{color:var(--muted);font-size:10px}.live.on{color:var(--ok)}.tabs{display:flex;gap:2px;padding:0 14px;border-bottom:1px solid var(--line)}.tabs a{padding:6px 12px;color:var(--muted);border-bottom:2px solid transparent}.tabs a.on{color:var(--text);border-bottom-color:var(--accent)}.tab-body{flex:1;min-height:0;padding:12px 14px;overflow:auto}.spec{max-width:980px}.spec .checks{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.login{display:grid;place-items:center;height:100%}.login .card{display:flex;flex-direction:column;gap:12px;width:320px;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius);padding:20px}.studio{display:grid;grid-template-columns:280px 1fr 300px;gap:12px;height:100%;min-height:0}.studio-left,.studio-right{overflow:auto;min-height:0}.studio-center{display:flex;flex-direction:column;min-width:0;min-height:0}.chat{display:flex;flex-direction:column;gap:var(--gap)}.refs li{display:flex;justify-content:space-between;gap:6px;font-size:12px;word-break:break-all}.versions li button{width:100%;text-align:left;margin-bottom:4px;background:var(--bg-2)}.single,.compare{flex:1;display:grid;gap:8px;min-height:0}.compare{grid-template-columns:1fr 1fr}.preview{display:flex;flex-direction:column;min-height:0;height:100%}.preview-label{color:var(--muted);font-size:12px;margin-bottom:4px}.frame-box{position:relative;flex:1;min-height:480px;overflow:hidden;background:#000;border:1px solid var(--line);border-radius:var(--radius)}.frame-scaled{position:absolute;top:0;left:0;transform-origin:0 0}.frame-scaled iframe{border:0;background:#fff;display:block}.select-overlay{position:absolute;inset:0;cursor:crosshair;background:#4f8cff0a}.select-rect{position:absolute;border:2px dashed var(--accent);background:#4f8cff1f;pointer-events:none}.token{display:grid;grid-template-columns:1fr 32px 110px;align-items:center;gap:6px}.token input[type=color]{padding:0;height:26px;width:32px}.tokens .token:not(:has(input[type=color])){grid-template-columns:1fr 148px}.review{display:grid;grid-template-columns:420px 1fr;gap:14px;height:100%;min-height:0}.review-left{overflow:auto}.review-right{display:flex;flex-direction:column;gap:8px;min-height:0}.finding{display:flex;gap:6px;align-items:flex-start;margin-bottom:4px}.finding-main{flex:1;text-align:left;white-space:normal;background:var(--bg-2)}.rule{font:var(--mono);color:var(--accent)}.steps li{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:4px 0;border-bottom:1px solid var(--line)}.step-error{flex-basis:100%;color:var(--danger);font:var(--mono);white-space:pre-wrap}.timeline li{padding:4px 0;border-bottom:1px solid var(--line)}.site{display:grid;grid-template-columns:1fr 340px;gap:12px;height:100%;min-height:0}.site-main{display:flex;flex-direction:column;min-height:0}.site-side{overflow:auto}.review-items li{padding:6px 0;border-bottom:1px solid var(--line)}
