:root{color:#1e2326;background:#ece8df;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;letter-spacing:0}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;overflow:hidden}button,input,select{font:inherit}button{cursor:pointer}#app{height:100vh;display:flex;flex-direction:column}.topbar{height:52px;flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 18px;background:#252a2d;color:#f7f5ef;border-bottom:1px solid #161a1c}.brand{min-width:0;display:flex;align-items:center;gap:10px;font-weight:700;white-space:nowrap;color:inherit;text-decoration:none}.brand-mark{width:14px;height:14px;border:2px solid #69a37b;border-right-color:#f05a28;transform:rotate(45deg)}.status{min-width:0;max-width:48vw;color:#d9ded8;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pipeline-form{min-width:0;flex:1 1 auto;display:flex;align-items:center;justify-content:flex-end;gap:8px}.file-control{min-width:0;height:34px;display:flex;align-items:center;gap:7px;padding:4px 8px;border:1px solid rgba(247,245,239,.2);border-radius:6px;background:#ffffff14}.unit-control{height:34px;display:flex;align-items:center;gap:6px;padding:4px 7px;border:1px solid rgba(247,245,239,.2);border-radius:6px;background:#ffffff14}.unit-control span{color:#f7f5ef;font-size:10px;font-weight:800}.unit-control select{border:0;outline:0;background:transparent;color:#f7f5ef;font-size:11px}.unit-control option{color:#1e2326}.file-control span{flex:0 0 auto;color:#f7f5ef;font-size:11px;font-weight:800}.file-control input{width:142px;min-width:0;color:#d9ded8;font-size:11px}.topbar-button{min-height:34px;flex:0 0 auto;border:1px solid rgba(105,163,123,.55);border-radius:6px;padding:7px 11px;background:#2e6e49;color:#fff;font-size:12px;font-weight:800}.topbar-button:disabled{cursor:not-allowed;border-color:#f7f5ef24;background:#4d5658;color:#b8c0bd}.workspace{min-height:0;flex:1;display:grid;grid-template-columns:minmax(0,1fr) 380px}.viewer-shell{min-width:0;min-height:0;position:relative;background:#f4f2ed}.viewer{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden}.viewer canvas{display:block;width:100%;height:100%}.label-layer{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.annotation-label{width:112px;min-height:54px;display:grid;grid-template-columns:auto 1fr;gap:0 4px;align-items:baseline;padding:7px 8px;border:1px solid rgba(37,42,45,.24);border-radius:6px;background:#fffffff0;color:#1e2326;box-shadow:0 8px 18px #252a2d29;pointer-events:auto;text-align:left}.annotation-label:hover,.annotation-label.is-selected{border-color:#f05a28;box-shadow:0 8px 22px #f05a283d}.annotation-label.needs-review{border-color:#d28b22d1;background:#fff8e6f5}.annotation-label.needs-review:after{content:"review";position:absolute;transform:translate(76px,-14px);padding:2px 5px;border-radius:999px;background:#d28b22;color:#fff;font-size:8px;font-weight:800;text-transform:uppercase}.annotation-value{font-size:17px;line-height:1.05;font-weight:800}.annotation-unit{font-size:11px;color:#526064}.annotation-type,.annotation-source,.annotation-edited{grid-column:1 / -1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;color:#526064}.annotation-edited{color:#b2451f;font-weight:700}.annotation-panel{min-width:0;min-height:0;display:flex;flex-direction:column;background:#fbfaf7;border-left:1px solid #d6d0c4}.panel-header{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px;border-bottom:1px solid #e2ded5}.panel-header h1,.detail-title h2,.empty-detail h2{margin:0;font-size:16px;line-height:1.2}.panel-header p,.empty-detail p{margin:4px 0 0;font-size:12px;color:#667174}.annotation-list{flex:1 1 auto;min-height:120px;overflow:auto;padding:8px;border-bottom:1px solid #e2ded5}.annotation-row{width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 10px;padding:10px;margin:0 0 6px;border:1px solid transparent;border-radius:6px;background:transparent;color:#1e2326;text-align:left}.annotation-row:hover,.annotation-row.is-selected{background:#f1eee6;border-color:#cfc8ba}.row-main{min-width:0;display:grid;gap:2px}.row-main strong,.row-main span,.row-status,.row-value{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-main strong{font-size:13px}.row-main span,.row-status{font-size:11px;color:#667174}.row-value{align-self:start;font-weight:800;font-size:13px;color:#2e6e49}.row-status{grid-column:1 / -1}.detail-panel{flex:0 0 auto;padding:16px}.inline-message{margin-bottom:12px;padding:8px 10px;border-radius:6px;background:#edf5ef;color:#2e6e49;font-size:12px}.edit-form{display:grid;gap:12px}.detail-title{display:flex;align-items:center;justify-content:space-between;gap:12px}.detail-title span{max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;color:#667174}.field,.field-readonly{display:grid;gap:5px}.field span,.field-readonly span{font-size:11px;color:#667174}.field input{min-width:0;width:100%;height:36px;padding:7px 9px;border:1px solid #c7c0b3;border-radius:6px;background:#fff;color:#1e2326}.field input:focus{outline:2px solid rgba(77,140,111,.35);border-color:#4d8c6f}.field-readonly strong{min-width:0;overflow-wrap:anywhere;font-size:12px;line-height:1.35}.primary-button,.secondary-button,.ghost-button{min-height:34px;border:1px solid transparent;border-radius:6px;padding:7px 11px;font-weight:700}.primary-button{background:#2e6e49;color:#fff}.secondary-button{background:#fff;border-color:#c7c0b3;color:#252a2d}.ghost-button{width:100%;background:transparent;border-color:#d6d0c4;color:#667174}.panel-footer{flex:0 0 auto;padding:12px 16px 16px}.empty-detail{padding:14px;border:1px dashed #c7c0b3;border-radius:6px}@media(max-width:900px){body{overflow:auto}.topbar{height:auto;min-height:52px;flex-wrap:wrap;padding:10px 18px}.pipeline-form{order:3;flex-basis:100%;justify-content:flex-start}#app{min-height:100vh;height:auto}.workspace{grid-template-columns:1fr;grid-template-rows:minmax(420px,62vh) auto}.annotation-panel{border-left:0;border-top:1px solid #d6d0c4}.status{max-width:38vw}}@media(max-width:560px){.topbar{align-items:flex-start;flex-direction:column;padding:10px 12px;gap:6px}.brand,.pipeline-form,.status{width:100%;max-width:none}.pipeline-form{justify-content:flex-start;flex-wrap:wrap}.file-control{flex:1 1 150px}.file-control input{width:100%}.workspace{grid-template-rows:minmax(360px,58vh) auto}.annotation-label{width:96px}}
