:root{font-family:Segoe UI,Arial,sans-serif;color:#24312d;background:#f5f5ef;font-synthesis:none}*{box-sizing:border-box}body{margin:0}main{max-width:1600px;margin:auto;padding:24px}.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.tabs:empty{display:none}.tabs button.selected{background:#dceadd;border-color:#69917a}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:20px;align-items:start}.viewer{border:1px solid #d9dfd6;border-radius:10px;overflow:hidden;background:#fcfdf9}.viewer-bar{padding:12px 16px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #d9dfd6;font-size:12px;color:#788279}.viewer-bar button{padding:6px 10px}.canvas-wrap{background:#e9ebe3;min-height:calc(100vh - 160px);max-height:calc(100vh - 130px);overflow:auto;display:flex;justify-content:center;align-items:center;padding:18px}canvas{max-width:100%;height:auto;max-height:calc(100vh - 175px);object-fit:contain;touch-action:none;cursor:crosshair}#empty{text-align:center;margin:auto;color:#768078}#empty h2{font-size:20px;font-weight:500;color:#536756}.empty-icon{font-size:62px;color:#9cac98}button{font:inherit;font-size:12px;border:1px solid #ccd6cc;background:#f9fbf5;color:#304d3c;border-radius:6px;padding:10px 12px;cursor:pointer}button:hover{background:#e6eee3}button:disabled{opacity:.45;cursor:default}button:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid #8cc6a7;outline-offset:2px}.active{background:#dceadd;border-color:#69917a}#status{font-size:12px;padding:0 16px;line-height:1.6;color:#5b6c5f}.panel{background:#fcfdf9;border:1px solid #d9dfd6;border-radius:10px;padding:20px}.upload{display:block;text-align:center;background:#244d3b;color:white;padding:13px 18px;border-radius:6px;cursor:pointer;font-weight:600;font-size:14px}.upload input{position:absolute;width:1px;height:1px;opacity:0}.upload:focus-within{outline:3px solid #8cc6a7;outline-offset:3px}.instruction{font-size:13px;line-height:1.6;color:#536756;margin:20px 0 10px}.select{width:100%}.primary{background:#244d3b;color:white;border-color:#244d3b;width:100%;padding:12px;font-weight:600;margin:8px 0 20px}.primary:hover{background:#33684f}.panel h2{font-size:16px;font-weight:600;margin:0 0 12px;color:#304b3b}.panel p{font-size:12px;line-height:1.7;color:#768078}.metric{display:flex;justify-content:space-between;padding:12px 0;border-bottom:1px solid #e2e7df;gap:10px}.metric span{font-size:12px;color:#67726c}.metric strong{font-size:18px;font-weight:600;white-space:nowrap}.unit{font-size:12px!important;font-weight:400}.downloads{display:flex;gap:5px;flex-wrap:wrap;margin:14px 0 20px}.downloads button{font-size:11px;padding:8px}.field{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:12px;margin:12px 0}.field input{width:90px;min-width:0}input[type=number]{font:inherit;padding:8px;border:1px solid #ccd6cc;border-radius:5px;background:white}details{font-size:12px;border-top:1px solid #e2e7df;padding-top:14px;margin-top:14px}summary{cursor:pointer;color:#527361}.edit-tools{display:flex;gap:6px;flex-wrap:wrap;margin-top:14px}.edit-tools label{display:flex;align-items:center;gap:8px}.edit-tools input{width:80px}#measure{width:100%;margin-top:12px}.check{display:flex;align-items:center;gap:8px;font-size:12px;margin-top:14px}.coords{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}.coords label{display:grid;gap:4px}.coords input{width:100%}@media(max-width:760px){main{padding:12px}.workspace{grid-template-columns:1fr;gap:12px}.canvas-wrap{min-height:280px;max-height:55vh}canvas{max-height:50vh}.panel{padding:16px}.viewer{order:1}aside{order:0}.panel{display:grid;grid-template-columns:1fr 1fr;column-gap:12px}.upload,.instruction,.results,details{grid-column:1/-1}.primary{margin:0 0 15px}.select{margin-bottom:15px}.instruction{margin:12px 0}.tabs button{font-size:11px}.metric{padding:8px 0}.downloads{margin-bottom:8px}}

.unit-toggle{display:flex;gap:6px;margin-bottom:8px}.unit-toggle button{flex:1}.unit-toggle .active{background:#244d3b;color:white}#calibration{margin-bottom:18px}

.viewer-actions{display:flex;gap:6px}
