:root{color-scheme:dark;font-family:system-ui,sans-serif;background:#111a21;color:#e9eef2}*{box-sizing:border-box}body{margin:0;padding:12px max(12px,env(safe-area-inset-right)) env(safe-area-inset-bottom) max(12px,env(safe-area-inset-left))}header{max-width:1300px;margin:auto}h1{font-size:clamp(20px,3vw,30px);margin:0}header p{margin:5px 0 12px;color:#aab8c4}main{max-width:1300px;margin:auto;display:grid;grid-template-columns:minmax(0,1.6fr) minmax(320px,1fr);gap:16px}.viewer{position:sticky;top:12px;height:80vh;min-height:300px;overflow:hidden;border-radius:16px;background:#20292d}canvas{width:100%;height:100%;display:block;touch-action:none;outline-offset:-3px}#loading{position:absolute;inset:40% 20px auto;text-align:center;padding:16px;background:#17252eee;border-radius:12px}.controls{min-width:0}.actions{display:flex;gap:8px;margin-bottom:10px}.actions>*{flex:1}button,input,select{font:inherit}button{min-height:48px;border:1px solid #4b6474;border-radius:10px;background:#263c4b;color:#fff;padding:8px;cursor:pointer}button:disabled{opacity:.5}#start{background:#28634d}.readout{display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;font-variant-numeric:tabular-nums;font-size:14px}.inline{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 0}.inline input{width:130px;min-height:42px}.hint{font-size:12px;color:#aab8c4;line-height:1.5}fieldset{border:1px solid #425563;border-radius:12px;margin:12px 0;padding:12px}legend{font-weight:600}.a legend{color:#48b3ff}.b legend{color:#ff963e}.row{display:grid;grid-template-columns:65px 1fr 1fr;gap:8px;align-items:center;margin:8px 0}.row input{width:100%;min-width:0;min-height:42px;background:#182630;color:#fff;border:1px solid #526778;border-radius:7px;padding:7px}.row span{font-size:13px}select{min-height:44px;background:#182630;color:#fff;border:1px solid #526778;border-radius:7px}footer{text-align:right;font-size:10px;color:#82939f;margin-top:18px}@media(max-width:800px){main{display:block}.viewer{position:relative;top:0;height:52vh;min-height:280px;margin-bottom:12px}header p{font-size:13px}.controls{padding-top:2px}}
