:root{color-scheme:light;--ink:#203738;--muted:#708283;--line:#dce5e3;--green:#116556;--pale:#e8f3ef;--bg:#f1f5f3}*{box-sizing:border-box}body{margin:0;font:14px/1.5 system-ui,-apple-system,sans-serif;color:var(--ink);background:var(--bg)}button,input,select{font:inherit}button,.button{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--line);background:white;color:var(--ink);padding:9px 12px;border-radius:7px;font-weight:550;cursor:pointer;text-decoration:none}button:hover,.button:hover{background:#f5f9f7}button:disabled{opacity:.5;cursor:not-allowed}.primary{background:var(--green);border-color:var(--green);color:white}.primary:hover{background:#0e5347}header{height:86px;display:flex;align-items:center;justify-content:space-between;padding:0 28px;background:#fff;border-bottom:1px solid var(--line);gap:16px}.brand{display:flex;align-items:center;gap:12px;font-size:18px;font-weight:650;letter-spacing:-.4px}.brandmark{width:39px;height:39px;display:grid;place-items:center;background:var(--green);color:#fff;border-radius:11px;font-size:27px}.brand span:not(.brandmark){display:block;font-size:11px;font-weight:450;letter-spacing:.1px;color:var(--muted)}.header-actions,.button-row,.upload-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}main{display:grid;grid-template-columns:315px minmax(0,1fr);max-width:1800px;margin:auto}aside{padding:25px 22px;background:#fff;border-right:1px solid var(--line);height:calc(100vh - 86px);overflow:auto}h1{font-size:25px;letter-spacing:-.8px;line-height:1.25;margin:9px 0}h2{font-size:20px;margin:5px 0;letter-spacing:-.4px}.eyebrow{font-size:10px;letter-spacing:1.6px;font-weight:700;color:#638780}.muted,.hint{color:var(--muted)}.small{font-size:11px}.hint{font-size:12px;margin:9px 0 14px}label{display:block;font-size:11px;font-weight:650;margin:12px 0 5px}label.button{margin:0;font-size:12px}input,select{width:100%;border:1px solid var(--line);border-radius:6px;padding:9px;background:white;color:var(--ink);font-size:14px;min-width:0}.source-info{font-size:11px;padding:9px 0;color:var(--muted)}hr{border:0;border-top:1px solid var(--line);margin:21px 0}summary{font-size:14px;font-weight:650;cursor:pointer}details>summary{list-style-position:inside}.full{width:100%;margin-top:12px}.quality{font-size:11px;padding:12px;background:var(--pale);margin-top:10px;border-radius:7px;color:#41695f}.quality strong{display:block;font-size:14px;color:var(--green);margin:2px 0}.gcp-item{display:flex;align-items:center;gap:7px;margin-top:7px;font-size:11px;border-bottom:1px solid var(--line);padding:7px 0}.gcp-item .text{flex:1;min-width:0}.gcp-item button{padding:4px 7px;font-size:11px}.point-label{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:var(--green);color:white;font-size:10px}.detect{margin-top:16px;background:#f6f8f4;padding:12px;border-radius:7px}.detect button{width:100%;margin:7px 0 0}.detect .hint{margin-bottom:0}.poly-item{display:flex;justify-content:space-between;gap:8px;align-items:center;padding:9px 0;border-bottom:1px solid var(--line);font-size:11px}.poly-item button{font-size:11px;padding:5px 8px}.local-note{font-size:11px;color:var(--muted)}.workspace{padding:26px 25px;min-width:0}.workspace-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;gap:12px}.status{padding:5px 9px;background:#e4eeea;font-size:11px;border-radius:20px;white-space:nowrap;color:#446b61}.toolbar{display:flex;flex-wrap:wrap;gap:5px;padding:10px;background:#fff;border:1px solid var(--line);border-bottom:0;border-radius:9px 9px 0 0}.toolbar button{font-size:11px;border:0;padding:8px 10px}.toolbar button.active{background:var(--pale);color:var(--green)}.zoom{margin-left:auto;display:flex;gap:3px}.canvas-wrap{position:relative;height:min(66vh,740px);min-height:350px;background:#dfe7e3;border:1px solid var(--line);overflow:hidden}canvas{width:100%;height:100%;display:block;touch-action:none;outline-offset:-4px}.canvas-caption{position:absolute;left:12px;bottom:12px;max-width:calc(100% - 24px);background:#fffef0ed;padding:7px 10px;font-size:11px;border:1px solid #dedecb;border-radius:5px;pointer-events:none}.workspace-footer{display:flex;justify-content:space-between;gap:10px;padding:9px 12px;background:white;border:1px solid var(--line);border-top:0;border-radius:0 0 9px 9px;font-size:10px;color:var(--muted)}.bottom-note{display:flex;align-items:flex-start;gap:8px;font-size:11px;color:var(--muted);margin-top:17px;max-width:800px}.note-dot{width:6px;height:6px;background:#e0af3b;border-radius:50%;flex-shrink:0;margin-top:5px}#message{font-size:12px;margin-top:14px;color:var(--green)}dialog{border:1px solid var(--line);border-radius:13px;padding:24px;width:min(430px,92vw);color:var(--ink)}dialog::backdrop{background:#12342b80}.dms-row{display:grid;grid-template-columns:1fr 1fr 1.3fr 1.5fr;gap:6px}.error{font-size:12px;color:#b44b33}dialog .button-row{justify-content:flex-end;margin-top:20px}@media(max-width:1000px){main{grid-template-columns:280px minmax(0,1fr)}.workspace{padding:20px 15px}.toolbar{gap:2px}.zoom{margin-left:0}}@media(max-width:720px){header{height:auto;padding:17px;flex-wrap:wrap}.brand{font-size:16px}.header-actions{width:100%}.header-actions>*{flex:1;font-size:11px;padding:8px}main{display:flex;flex-direction:column}.workspace{order:-1;padding:20px 12px 10px}aside{height:auto;overflow:visible;border-right:0;padding:20px}.canvas-wrap{height:52vh;min-height:330px}.workspace-top{margin-bottom:12px}h2{font-size:17px}.toolbar button{font-size:10px;min-height:38px}.workspace-footer{font-size:10px}.canvas-caption{font-size:10px}.quality{font-size:12px}input,select{font-size:16px}.button-row button{min-height:42px}.gcp-item button,.poly-item button{min-height:36px}}

.server-panel{background:#e8f3f6;padding:12px;border:1px solid #c8dfe4;border-radius:7px}.server-panel label:first-child{margin-top:0}#server-status{font-size:11px;margin-top:10px;line-height:1.6}.header-actions{justify-content:flex-end}header{height:auto;min-height:86px;padding-top:12px;padding-bottom:12px}.header-actions button{font-size:12px}

.edge-panel{margin-top:15px;padding:12px;background:#f0f7fc;border:1px solid #c9deeb;border-radius:7px}.edge-panel summary{font-size:12px}.edge-row{display:flex;gap:5px;align-items:center}.edge-row input{flex:1}.edge-row button{flex-shrink:0;padding:9px 6px;font-size:10px}.edge-row button.active{background:#d4e9f8}#edge-status{font-size:11px;line-height:1.6;margin-top:10px}
