:root{color:#1c1917;background:#f3efe6;font-family:Liberation Sans,DejaVu Sans,sans-serif;line-height:1.45}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit;color:inherit}button{border:1px solid #d6d3d1;background:#fff;border-radius:10px;padding:.55rem .9rem;cursor:pointer}button.primary{background:#1d4ed8;border-color:#1d4ed8;color:#fff}button:disabled{cursor:not-allowed;opacity:.45}.app{max-width:1680px;margin:0 auto;padding:20px 20px 48px}.top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px;flex-wrap:wrap}.top-tools{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:flex-end}.case-counts{margin:6px 0 0;color:#57534e;font-size:.82rem}h1{margin:0;font-size:1.6rem;letter-spacing:-.03em}h2{margin:0 0 8px;font-size:1rem}.badge{border-radius:999px;padding:.2rem .7rem;font-size:.85rem;text-transform:lowercase;border:1px solid #d6d3d1;background:#fff}.badge.offline{background:#fef3c7;border-color:#f59e0b}.badge.live{background:#dcfce7;border-color:#16a34a}.badge.note{text-transform:none;background:#ffedd5;border-color:#c2410c;max-width:36rem}.tabs{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.tab{text-align:center}.tab.active{background:#1d4ed8;color:#fff;border-color:#1d4ed8}.flow{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:10px 0 16px;margin:0;color:#57534e;font-size:.85rem}.flow li:not(:last-child):after{content:"→";margin-left:8px}.panel{display:flex;flex-direction:column;gap:14px}.controls,.control-row,.action-row,.eval-head,.pager,.stack{display:flex;gap:10px;align-items:end;flex-wrap:wrap}.controls label,.eval-head label,.feedback-form label{display:flex;flex-direction:column;gap:4px;font-size:.85rem}.grow{flex:1}.control-row{align-items:center}.action-row{justify-content:space-between}.stack{flex-direction:column;align-items:stretch;min-width:180px}input,select,textarea{border:1px solid #d6d3d1;border-radius:8px;padding:.45rem .55rem;background:#fff}textarea{width:100%;resize:vertical}.split,.eval-body,.feedback-bottom{display:grid;gap:14px}.split{grid-template-columns:1.4fr .9fr}.prompt-split{align-items:stretch}.eval-body{grid-template-columns:minmax(0,1.6fr) minmax(220px,.8fr)}.eval-body>*{min-width:0}.feedback-bottom{grid-template-columns:1.1fr 1fr 1fr}.feedback-top{display:grid;grid-template-columns:1.3fr 1fr auto;gap:14px;align-items:start}.card,.shot,.iou-card{background:#fff;border:1px solid #e7e0d4;border-radius:12px;padding:12px}.guideline{position:relative}.guideline,.yaml{margin:0;max-height:460px;overflow:auto;white-space:pre-wrap;font-family:Liberation Mono,DejaVu Sans Mono,monospace;font-size:.82rem}.yaml{background:#1c1917;color:#f5f5f4;border-radius:10px;padding:14px;min-height:240px}.guideline mark{background:#fde68a;color:inherit}.chunks{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.chunks li{border:1px solid #e7e0d4;border-radius:10px;padding:8px 10px}.pills{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.pills li{border-radius:10px;padding:8px 10px}.pills .pass{background:#dcfce7;color:#166534}.pills .fail{background:#fee2e2;color:#991b1b}.error-box,.banner.error{background:#fff1f2;border:1px solid #fecdd3;border-radius:10px;padding:10px 12px}.banner.done{background:#ecfdf5;border:1px solid #a7f3d0;border-radius:10px;padding:10px 12px}.banner.note{background:#eff6ff;border:1px solid #bfdbfe;border-radius:10px;padding:10px 12px}.version-badge{margin-left:8px;background:#dbeafe;color:#1e3a8a;border-radius:999px;padding:.1rem .5rem;font-size:.8rem}.query-used{display:flex;flex-direction:column;gap:4px;background:#fff;border-radius:10px;padding:8px 12px;border:1px dashed #fdba74}.legend{display:flex;gap:14px;align-items:center;flex-wrap:wrap}.swatch{width:18px;height:12px;display:inline-block;margin-right:4px}.swatch.blue{background:#2563eb}.swatch.dashed{border:2px dashed #16a34a}.swatch.red{border:2px solid #dc2626}.grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;min-width:0}.shot{min-width:0;overflow-wrap:anywhere}.shot p{overflow-wrap:anywhere}.shot img,.placeholder{width:100%;height:110px;object-fit:cover;background:#e7e5e4;border-radius:8px;display:block}.shot.low{border-color:#dc2626;box-shadow:inset 0 0 0 3px #dc2626}.low-caption{color:#b91c1c}.review-shot img,.review-shot .placeholder{height:420px;object-fit:contain;background:#111}.table-wrap{overflow-x:auto}.scores{width:100%;border-collapse:collapse;font-size:.88rem}.scores th,.scores td{text-align:left;padding:8px 10px;border-bottom:1px solid #e7e0d4;vertical-align:top}.scores td .caption{display:block}.scores tr[data-best=true]{background:#ecfdf5}.test-compare{display:grid;grid-template-columns:1fr 1fr;gap:14px}.iou-card{background:#dbeafe;border-color:#93c5fd;display:flex;flex-direction:column;gap:4px;margin-bottom:12px}.iou-card strong{font-size:2.4rem;line-height:1}.caption,.hint,.empty{color:#57534e;font-size:.85rem}.empty{margin:8px 0}.progress{height:8px;background:#e7e5e4;border-radius:999px;overflow:hidden}.progress span{display:block;height:100%;background:#1d4ed8}.tree{width:100%;height:auto}.tree text{font-size:12px;fill:#1c1917}.tree .node{fill:#fff7ed;stroke:#d6d3d1}.tree .node.best{fill:#bbf7d0;stroke:#15803d}.compare-frame{position:relative}.compare-frame img{width:100%;height:160px;object-fit:cover;border-radius:8px}.compare-frame img+img{position:absolute;top:0;right:0;bottom:0;left:0}.compare-label{position:absolute;top:8px;background:#ffffffe6;border-radius:6px;padding:0 6px;font-size:.8rem}.compare-label.left{left:8px}.compare-label.right{right:8px}.compare input[type=range]{width:100%}.loading{display:flex;align-items:center;gap:8px}.spinner{width:14px;height:14px;border:2px solid #d6d3d1;border-top-color:#1d4ed8;border-radius:50%;animation:spin .7s linear infinite;display:inline-block}.toast{position:fixed;right:16px;bottom:16px;max-width:360px;background:#1c1917;color:#fff;border-radius:12px;padding:12px;display:flex;gap:10px;align-items:center}.toast button{color:#1c1917}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:900px){.tabs,.split,.eval-body,.feedback-bottom,.feedback-top,.grid{grid-template-columns:1fr 1fr}.feedback-top,.split,.eval-body,.feedback-bottom{grid-template-columns:1fr}.tabs{grid-template-columns:1fr 1fr}}
