*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{color:#222;background:#f9f9f7;padding:1rem 1.5rem 2rem;font-family:system-ui,sans-serif;font-size:14px;line-height:1.5}h2{margin-bottom:.75rem;font-size:1.25rem;font-weight:600}.controls{flex-direction:column;gap:.5rem;margin-bottom:.75rem;display:flex}.btn-row{flex-wrap:wrap;gap:6px;display:flex}button{cursor:pointer;background:#fff;border:1px solid #bbb;border-radius:5px;padding:5px 11px;font-size:13px;transition:background .1s}button:hover{background:#eee}select{background:#fff;border:1px solid #bbb;border-radius:5px;padding:5px 8px;font-size:13px}.stats{color:#444;padding:4px 0;font-size:13px}.legend{color:#555;margin-bottom:.5rem;font-size:12px}.params-grid{flex-wrap:wrap;gap:6px 14px;margin-bottom:.75rem;display:flex}.params-grid label{color:#444;font-size:12px}.params-grid input[type=number]{border:1px solid #bbb;border-radius:4px;width:56px;margin-left:4px;padding:3px 5px;font-size:12px}#grid-svg{display:block;overflow:visible}.tooltip{position:relative}.tooltip:after{content:attr(data-tip);color:#fff;white-space:nowrap;opacity:0;pointer-events:none;background:#333;border-radius:4px;padding:4px 8px;transition:opacity .2s;position:absolute;bottom:125%;left:50%;transform:translate(-30%)}.tooltip:hover:after{opacity:1}
