:root {
  --bg:#eef1f4; --panel:#fff; --text:#17212b; --muted:#68737d; --line:#d4dae0;
  --brand:#174c70; --brand2:#e9f1f6; --ok:#246b4b; --warn:#8a5c14; --bad:#9b3232;
}
*{box-sizing:border-box}
body{margin:0;font-family:Inter,"Noto Sans Thai",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;background:var(--bg);color:var(--text)}
button,select,input{font:inherit}
.topbar{min-height:72px;padding:12px 18px;background:#15212b;color:#fff;display:flex;align-items:center;justify-content:space-between;gap:20px}
.topbar h1{margin:0;font-size:20px}.topbar p{margin:4px 0 0;color:#c8d2db;font-size:12px}.status-pill{font-size:11px;padding:6px 9px;border:1px solid #486170;border-radius:999px;color:#d9e3e9;white-space:nowrap}
.layout{display:grid;grid-template-columns:250px minmax(480px,1fr) 390px;gap:10px;padding:10px;min-height:calc(100vh - 72px)}
.panel,.workspace{background:var(--panel);border:1px solid var(--line);border-radius:10px;min-width:0}.panel{padding:13px}.panel h2{font-size:14px;margin:0 0 12px}.queue-panel,.score-panel{overflow:auto;max-height:calc(100vh - 92px)}
.button{border:1px solid #b8c1c9;background:#fff;color:var(--text);border-radius:7px;padding:8px 10px;cursor:pointer}.button:hover{background:#f5f7f9}.button:disabled{opacity:.45;cursor:not-allowed}.button.primary{background:var(--brand);color:#fff;border-color:var(--brand)}.button.small{padding:5px 8px;font-size:11px}.button.kinovea{border-color:#587c3b;background:#f2f7ee}.file-button{display:block;text-align:center;margin-bottom:8px}.button-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.output-grid{margin-top:10px}
.row{display:flex;align-items:center}.gap-sm{gap:6px}.gap-md{gap:10px}.wrap{flex-wrap:wrap}.progress-text,.queue-summary{font-size:11px;color:var(--muted);margin:8px 0}.image-queue{display:flex;flex-direction:column;gap:5px}.queue-item{width:100%;display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;text-align:left;background:#fff;border:1px solid var(--line);border-radius:7px;padding:7px 8px;cursor:pointer}.queue-item.active{border-color:var(--brand);background:var(--brand2)}.queue-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.badge{font-size:9px;padding:2px 6px;border-radius:999px;background:#eef0f2;color:#53606b}.badge.detected{background:#e5f0f7;color:#174c70}.badge.edited{background:#fff1d5;color:#76510f}.badge.reviewed{background:#e4f2eb;color:var(--ok)}.badge.error{background:#f9e1e1;color:var(--bad)}
.workspace{display:flex;flex-direction:column;overflow:hidden}.canvas-toolbar{padding:8px 10px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:11px}.tool-controls label{display:flex;align-items:center;gap:5px}.tool-controls select{width:auto;margin:0}.check{white-space:nowrap}.canvas-wrap{flex:1;min-height:0;overflow:auto;background:#20262c;padding:10px}.canvas-wrap canvas{display:block;height:auto;background:#111;box-shadow:0 0 0 1px #000;cursor:crosshair;touch-action:none}.empty-state{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:8px;color:var(--muted);text-align:center;padding:40px}.hidden{display:none!important}.image-meta{min-height:32px;border-top:1px solid var(--line);padding:7px 10px;font-size:10px;color:var(--muted)}
.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}label{font-size:10.5px;color:#4d5862}select{width:100%;padding:6px 7px;border:1px solid #c6cfd6;border-radius:6px;background:#fff;color:var(--text);margin-top:3px}.angle-box{margin:10px 0;border:1px solid var(--line);border-radius:7px;background:#f6f8f9;padding:8px;font-size:10.5px;line-height:1.55;display:grid;grid-template-columns:1fr 1fr;gap:2px 10px}
.component-table{display:grid;grid-template-columns:1.35fr 1.1fr .55fr;border:1px solid var(--line);border-radius:7px;overflow:hidden;font-size:10.5px;margin-bottom:10px}.component-table>div{padding:6px 7px;border-bottom:1px solid var(--line);border-right:1px solid var(--line)}.component-table>div:nth-child(3n){border-right:0}.component-table>div:nth-last-child(-n+3){border-bottom:0}.ct-head{font-weight:700;background:#eef1f3}
details{border-top:1px solid var(--line);padding:8px 0}summary{font-size:11px;font-weight:700;cursor:pointer}.modifier-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;padding-top:8px}
.result-card{margin-top:9px;padding:10px;border:1px solid #b9c8d4;border-radius:8px;background:#eef5f9}.result-title{font-size:10px;color:var(--muted);margin-bottom:5px}.group-line{display:flex;justify-content:space-between;font-size:11px;padding:3px 0;border-bottom:1px solid #d4e1e8}.result-main{display:flex;justify-content:space-between;align-items:baseline;padding-top:7px}.result-main span{font-weight:700}.result-main strong{font-size:30px;line-height:1}.risk-text{font-size:11px;margin-top:4px}.flags{font-size:9.5px;color:var(--warn);line-height:1.35;margin-top:5px}.note{font-size:9.5px;color:var(--muted);line-height:1.45;margin:10px 0 0}
@media(max-width:1220px){.layout{grid-template-columns:220px minmax(420px,1fr)}.score-panel{grid-column:1/-1;max-height:none}}
@media(max-width:760px){.layout{display:block}.panel,.workspace{margin-bottom:10px}.queue-panel,.score-panel{max-height:none}.canvas-wrap{min-height:55vh}.modifier-grid,.button-grid{grid-template-columns:1fr}}
