:root{--bg:#0d0f14;--panel:#161a22;--border:#262b36;--text:#c7ccd6;--text-h:#f4f6fa;--accent:#6ea8fe;--pass:#3ecf8e;--fail:#f06d6d;--warn:#e7b85c;color:var(--text);background:var(--bg);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}.app-shell{flex-direction:column;height:100vh;display:flex}.app-header{border-bottom:1px solid var(--border);background:var(--panel);justify-content:space-between;align-items:center;gap:16px;padding:12px 20px;display:flex}.replay-btn{background:var(--accent);color:#0d0f14;cursor:pointer;border:none;border-radius:8px;flex-shrink:0;padding:9px 16px;font-size:13px;font-weight:700;transition:filter .12s}.replay-btn:hover:not(:disabled){filter:brightness(1.1)}.replay-btn:disabled{background:var(--panel);color:var(--accent);border:1px solid var(--accent);cursor:default}.app-shell.embed .app-main{height:100vh}.replay-float{z-index:5;position:absolute;top:16px;right:16px;box-shadow:0 4px 16px #0006}.app-header h1{color:var(--text-h);margin:0;font-size:16px}.app-header p{color:var(--text);margin:2px 0 0;font-size:13px}.app-main{flex:1;position:relative;overflow:hidden}.canvas-placeholder{color:var(--text);place-items:center;font-size:14px;display:grid;position:absolute;inset:0}.stats-bar{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border);pointer-events:none;background:#161a22d1;border-radius:10px;gap:22px;padding:12px 18px;display:flex;position:absolute;top:16px;left:16px}.stat{flex-direction:column;gap:1px;display:flex}.stat-value{color:var(--text-h);font-variant-numeric:tabular-nums;font-size:18px;font-weight:700;line-height:1.1}.stat-label{text-transform:uppercase;letter-spacing:.06em;color:var(--text);font-size:10px}.legend{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border);pointer-events:none;background:#161a22d1;border-radius:10px;flex-direction:column;gap:8px;padding:12px 16px;display:flex;position:absolute;bottom:16px;left:16px}.legend-group{flex-wrap:wrap;gap:16px;display:flex}.legend-item{color:var(--text);align-items:center;gap:6px;font-size:12px;display:flex}.legend-swatch{border-radius:3px;width:12px;height:12px}.legend-ring{box-sizing:border-box;border:2px solid;border-radius:4px;width:12px;height:12px}.minimap{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border);z-index:4;background:#161a22d9;border-radius:10px;padding:6px;position:absolute;bottom:16px;right:16px}.livebar{z-index:6;flex-direction:column;align-items:center;gap:8px;width:min(560px,100% - 440px);display:flex;position:absolute;top:80px;left:50%;transform:translate(-50%)}.livebar-notice{color:var(--warn);border:1px solid var(--warn);text-align:center;background:#161a22eb;border-radius:8px;padding:6px 12px;font-size:12px}.livebar-chips{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.livebar-chip{color:var(--text);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border);cursor:pointer;background:#161a22d1;border-radius:999px;padding:4px 10px;font-size:11px;transition:color .12s,border-color .12s}.livebar-chip:hover:not(:disabled){color:var(--text-h);border-color:var(--accent)}.livebar-chip:disabled{opacity:.5;cursor:default}.livebar-row{gap:8px;width:100%;display:flex}.livebar-input{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border);color:var(--text-h);background:#161a22f2;border-radius:8px;outline:none;flex:1;padding:10px 14px;font-size:13px}.livebar-input::placeholder{color:var(--text)}.livebar-input:focus{border-color:var(--accent)}.livebar-run{background:var(--accent);color:#0d0f14;cursor:pointer;white-space:nowrap;border:none;border-radius:8px;flex-shrink:0;padding:10px 16px;font-size:13px;font-weight:700}.livebar-run:disabled{background:var(--panel);color:var(--accent);border:1px solid var(--accent);cursor:default}.detail-panel{background:var(--panel);border-left:1px solid var(--border);width:360px;padding:18px 20px;animation:.16s ease-out slide-in;position:absolute;top:0;bottom:0;right:0;overflow-y:auto;box-shadow:-8px 0 24px #00000059}@keyframes slide-in{0%{opacity:0;transform:translate(16px)}to{opacity:1;transform:translate(0)}}.detail-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.detail-kind{text-transform:uppercase;letter-spacing:.06em;color:var(--text);font-size:11px}.detail-title{color:var(--text-h);margin:4px 0 0;font-size:18px}.detail-close{border:1px solid var(--border);color:var(--text);cursor:pointer;background:0 0;border-radius:6px;flex-shrink:0;width:28px;height:28px;font-size:13px}.detail-close:hover{color:var(--text-h);border-color:var(--text)}.eval-row{background:#ffffff05;border:1px solid;border-radius:8px;flex-wrap:wrap;align-items:center;gap:10px;margin:16px 0;padding:10px 12px;display:flex}.eval-badge{text-transform:uppercase;color:#0d0f14;border-radius:4px;padding:2px 8px;font-size:11px;font-weight:700}.eval-score{color:var(--text-h);font-size:18px;font-weight:700}.eval-note{color:var(--text);flex-basis:100%;font-size:12px}.metrics{gap:24px;margin:4px 0 18px;display:flex}.metric{flex-direction:column;gap:2px;display:flex}.metric-label{text-transform:uppercase;letter-spacing:.05em;color:var(--text);font-size:11px}.metric-value{color:var(--text-h);font-variant-numeric:tabular-nums;font-size:14px}.field{margin-top:18px}.field h3{text-transform:uppercase;letter-spacing:.05em;color:var(--text);margin:0 0 6px;font-size:12px}.field pre{border:1px solid var(--border);color:var(--text-h);white-space:pre-wrap;word-break:break-word;background:#0d0f14;border-radius:8px;margin:0;padding:12px;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:13px;line-height:1.5}
