*{box-sizing:border-box;margin:0;padding:0}body{color:#e2e8f0;background:#0f172a;flex-direction:column;align-items:stretch;min-height:100vh;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;display:flex}.top-nav{background:#020617;border-bottom:1px solid #94a3b840;width:100%;position:relative}body.dev-mode .top-nav{background:linear-gradient(#22c55e0f 0%,#020617 40%);border-bottom-color:#22c55e59}body.dev-mode .top-nav:before{content:"";opacity:.8;background:linear-gradient(90deg,#0000 0%,#4ade80 30%,#86efac 50%,#4ade80 70%,#0000 100%);height:2px;position:absolute;top:0;left:0;right:0}body.dev-mode .top-nav-devmode-link{color:#86efac;background:#22c55e47;border-color:#4ade80;animation:2.5s ease-in-out infinite dev-mode-pulse;box-shadow:0 0 10px #22c55e4d}@keyframes dev-mode-pulse{0%,to{box-shadow:0 0 6px #22c55e40}50%{box-shadow:0 0 14px #22c55e8c}}.dev-mode-json-panel{background:#22c55e08;border:1px solid #22c55e4d;border-radius:8px;margin:32px 20px 28px;overflow:hidden}.dev-mode-json-heading{color:#4ade80;text-transform:uppercase;letter-spacing:.08em;background:#22c55e1a;border-bottom:1px solid #22c55e33;margin:0;padding:8px 16px;font-size:.75rem;font-weight:700}.dev-mode-flag-panel{background:#ef444408;border:1px solid #ef44444d;border-radius:8px;margin:0 20px 28px;overflow:hidden}.dev-mode-flag-heading{color:#f87171;text-transform:uppercase;letter-spacing:.08em;background:#ef44441a;border-bottom:1px solid #ef444433;margin:0;padding:8px 16px;font-size:.75rem;font-weight:700}.dev-mode-flag-section{border-top:1px solid #ef444426}.dev-mode-flag-section:first-of-type{border-top:none}.dev-mode-flag-label{text-transform:uppercase;letter-spacing:.06em;color:#f87171;opacity:.75;padding:6px 16px 4px;font-size:.7rem;font-weight:700}.dev-mode-json-content{color:#94a3b8;white-space:pre;max-height:340px;margin:0;padding:16px;font-family:ui-monospace,SFMono-Regular,Cascadia Code,monospace;font-size:.78rem;line-height:1.55;overflow:auto}.top-nav-inner{justify-content:flex-start;align-items:center;gap:12px;max-width:2288px;min-height:80px;margin:0 auto;padding:0 20px;display:flex}.top-nav-auth{align-items:center;gap:10px;display:inline-flex}.auth-signin{font:inherit;color:#e2e8f0;cursor:pointer;background:#94a3b81f;border:1px solid #94a3b859;border-radius:8px;align-items:center;gap:7px;padding:7px 12px;font-size:.85rem;font-weight:600;transition:background .15s,border-color .15s;display:inline-flex}.auth-signin:hover{background:#94a3b838;border-color:#94a3b899}.auth-avatar{object-fit:cover;border:1px solid #94a3b866;border-radius:50%;width:20px;height:20px}.auth-label{text-overflow:ellipsis;white-space:nowrap;max-width:160px;overflow:hidden}.top-nav-github{color:#94a3b8;align-items:center;margin-left:14px;text-decoration:none;transition:color .15s;display:inline-flex}.version-badge{color:#888;opacity:.6;z-index:100;-webkit-user-select:none;user-select:none;pointer-events:none;font-size:.7rem;position:fixed;bottom:12px;left:16px}.con-badge{opacity:.7;z-index:100;align-items:center;text-decoration:none;transition:opacity .15s;display:inline-flex;position:fixed;bottom:16px;right:16px}.con-badge:hover{opacity:1}.con-badge-logo{object-fit:contain;width:auto;height:40px}.top-nav-github:hover{color:#f8fafc}.top-nav-github svg{width:24px;height:24px}.top-nav-brand{color:#f8fafc;align-items:center;gap:8px;font-size:1.1rem;font-weight:700;text-decoration:none;display:inline-flex}.top-nav-brand:visited{color:#f8fafc}.top-nav-logo{object-fit:contain;width:50px;height:50px}.top-nav-links{align-items:center;gap:12px;display:flex}.nav-section{flex-direction:column;align-items:center;gap:4px;display:flex}.nav-section--label{--nav-accent:#38bdf8;--nav-accent-bg:#38bdf829}.nav-section--train{--nav-accent:#a78bfa;--nav-accent-bg:#a78bfa29}.nav-section--curate{--nav-accent:#34d399;--nav-accent-bg:#34d39929}.top-nav-devmode{align-items:center;margin-left:auto;display:inline-flex}.top-nav-devmode-link{color:#4ade80;font:inherit;cursor:pointer;white-space:nowrap;background:#22c55e26;border:1px solid #22c55e73;border-radius:20px;align-items:center;padding:5px 13px;font-size:.8rem;font-weight:700;text-decoration:none;transition:background .15s,border-color .15s;display:inline-flex}.top-nav-devmode-link:hover{color:#86efac;background:#22c55e40;border-color:#22c55eb3}.top-nav-devmode-link.active{color:#86efac;background:#22c55e47;border-color:#4ade80;box-shadow:0 0 8px #22c55e40}.nav-section-title{text-transform:uppercase;letter-spacing:.08em;color:var(--nav-accent);-webkit-user-select:none;user-select:none;font-size:.65rem;font-weight:700}.nav-section-tabs{align-items:center;gap:4px;display:flex}.top-nav-link{color:#94a3b8;cursor:pointer;background:0 0;border:none;border-radius:8px;align-items:center;padding:9px 14px;font-family:inherit;font-size:.92rem;font-weight:600;line-height:1.2;text-decoration:none;display:inline-flex}.top-nav-link:visited{color:#94a3b8}.top-nav-link:hover{color:#e2e8f0;background:var(--nav-accent-bg,#94a3b829)}.top-nav-link.active,.top-nav-link.active:visited{color:var(--nav-accent,#38bdf8);background:var(--nav-accent-bg,#38bdf829)}.top-nav-link:disabled,.top-nav-link[aria-disabled=true]{opacity:.35;cursor:not-allowed;pointer-events:none}.top-nav-link:disabled.active,.top-nav-link[aria-disabled=true].active{color:#94a3b8;background:0 0}.view-shell{flex-direction:column;width:100%;max-width:2288px;min-height:calc(100vh - 80px);margin:0 auto;padding:20px 20px 40px;display:flex}h1{color:#f8fafc;margin:6px 0;font-size:1.5rem}.subtitle{color:#94a3b8;margin-bottom:14px;font-size:.85rem}.subtitle a{color:#7dd3fc}.instructions{color:#cbd5e1;max-width:720px;margin:0 0 14px;font-size:.9rem;line-height:1.4}#boxView .instructions{max-width:none}.controls{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;margin:10px 0;display:flex}.controls button:not([hidden]),.bottom-actions button:not([hidden]){display:block}#resetBtn:not([hidden]){margin:0 auto;display:block}.controls button,.bottom-actions button,#resetBtn{cursor:pointer;border:none;border-radius:6px;padding:8px 18px;font-size:.9rem;font-weight:600;transition:transform .1s,box-shadow .2s}.controls button:hover,.bottom-actions button:hover,#resetBtn:hover{transform:translateY(-1px);box-shadow:0 4px 12px #0000004d}.controls button:disabled,.bottom-actions button:disabled,#resetBtn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none;transform:none}.frame-flag-group{align-items:center;gap:6px;display:flex}#reportFrameBtn,#newFrameBtn{color:#7dd3fc;background:0 0;border:2px solid #0ea5e9}#reportFrameBtn:hover:not(:disabled),#newFrameBtn:hover:not(:disabled){background:#0ea5e91f}#downloadBtn{color:#fff;background:#0f3460;border:2px solid #e94560;margin-left:auto}#downloadBtn.ready{border-color:#22c55e}#resetBtn{color:#fff;background:#475569}.main-container{flex-wrap:nowrap;justify-content:center;align-items:flex-start;gap:20px;margin-top:16px;padding:0 16px;display:flex}.bottom-actions{flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:12px;margin-top:12px;display:flex}.demo-controls{justify-content:center;align-items:center;gap:16px;margin-top:12px;display:none}.demo-controls:not([hidden]){display:flex}.demo-arrow{color:#fff;cursor:pointer;background:#475569;border:none;border-radius:6px;padding:8px 20px;font-size:1.1rem;font-weight:700;transition:transform .1s,box-shadow .2s}.demo-arrow:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #0000004d}.demo-arrow:disabled{opacity:.35;cursor:not-allowed;transform:none}.demo-counter{color:#cbd5e1;text-align:center;min-width:5ch;font-family:monospace;font-size:.95rem}.canvas-viewport{touch-action:none;max-width:100%;line-height:0;display:inline-block;position:relative;overflow:hidden}.canvas-viewport.pan-ready{cursor:grab}.canvas-viewport.panning{cursor:grabbing}.canvas-viewport.box-zoom-ready{cursor:crosshair}.zoom-marquee{pointer-events:none;z-index:2;background:#0ea5e926;border:1px dashed #0ea5e9;position:absolute}.canvas-container{cursor:crosshair;transform-origin:0 0;will-change:transform;background:#000;border:2px solid #334155;line-height:0;position:relative;overflow:hidden}.canvas-viewport.pan-ready .canvas-container,.canvas-viewport.panning .canvas-container{cursor:inherit}.tool-toggle{color:#fff;background:#475569;justify-content:center;align-items:center;padding:6px;display:inline-flex}.tool-toggle.active{background:#0ea5e9}.tool-icon{display:block}.canvas-col{grid-template-rows:auto auto auto;grid-template-columns:1fr auto;gap:12px;display:grid}.canvas-col .canvas-viewport{grid-area:1/1}.canvas-col .zoom-rail{grid-area:1/2}.canvas-col .bottom-actions{grid-area:2/1;margin-top:0}.canvas-col .demo-controls,.canvas-col #statusMsg{grid-area:3/1;margin-top:0}.zoom-rail{background:#0b1220;border-radius:6px;flex-direction:column;align-items:center;gap:10px;padding:8px 6px;display:flex}.zoom-readout{text-align:center;color:#cbd5e1;min-width:3.6em;font-family:monospace;font-size:.8rem}.zoom-slider{writing-mode:vertical-lr;appearance:slider-vertical;accent-color:#0ea5e9;cursor:pointer;direction:rtl;flex:auto;width:20px;min-height:80px}.zoom-slider:disabled{opacity:.5;cursor:not-allowed}.zoom-fit{color:#fff;cursor:pointer;background:#475569;border:none;border-radius:4px;padding:4px 8px;font-size:1rem;line-height:1;transition:transform .1s,box-shadow .2s}.zoom-fit:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #0000004d}.zoom-fit:disabled{opacity:.5;cursor:not-allowed}canvas{max-width:100%;display:block}.label-dot{cursor:move;pointer-events:auto;border:2px solid #fff;border-radius:50%;width:12px;height:12px;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 6px #0009}.box-overlay{pointer-events:none;background:#0ea5e92e;border:2px solid #0ea5e9;position:absolute;box-shadow:0 0 0 1px #02061799}.box-coords{color:#cbd5e1;background:#0b1220;border-radius:6px;align-items:center;gap:8px;margin-bottom:12px;padding:8px 10px;font-family:monospace;font-size:.8rem;display:flex}.box-coords .status-icon{color:#555}.box-coords .status-icon.placed{color:#4f8}.sidebar{background:#111827;border-radius:8px;flex-shrink:0;width:300px;padding:16px}.sidebar h2,.sidebar h3{color:#f8fafc;margin-bottom:10px;font-size:1rem}#labelSidebarContent{background:#0b1220;border-radius:6px;padding:12px}.label-palette{flex-direction:column;gap:6px;margin-bottom:16px;display:flex}.label-item{cursor:pointer;background:#0b1220;border:2px solid #0000;border-radius:6px;grid-template-columns:18px 1fr auto;align-items:center;gap:8px;padding:6px 8px;font-size:.85rem;transition:border-color .1s;display:grid}.label-item:hover{border-color:#334155}.label-item.active{border-color:#0ea5e9}.color-swatch{border:1px solid #fff6;border-radius:50%;width:14px;height:14px}.label-item .coords{color:#94a3b8;font-family:monospace;font-size:.9rem;font-weight:700}.label-item.placed .coords{color:#4f8}.output-section{background:#0b1220;border-radius:6px;margin-top:12px;padding:10px}#jsonOutput{color:#e2e8f0;white-space:pre;max-height:220px;font-family:ui-monospace,Menlo,monospace;font-size:11px;overflow:auto}#statusMsg{border-radius:6px;margin-top:10px;padding:8px 10px;font-size:.85rem;display:none}#statusMsg.info{color:#fff;background:#0c4a6e;display:block}#statusMsg.success{color:#bbf7d0;background:#14532d;display:block}#statusMsg.error{color:#fecaca;background:#7f1d1d;display:block}.error-modal{color:#e2e8f0;background:#0b1220;border:1px solid #334155;border-radius:10px;width:calc(100% - 32px);max-width:460px;margin:auto;padding:18px}.error-modal::backdrop{background:#020617bf}.error-modal h2{margin-bottom:10px}.error-modal p{margin-bottom:10px;line-height:1.4}.error-modal a{color:#7dd3fc}.error-modal form{justify-content:flex-end;display:flex}.error-modal button{color:#fff;cursor:pointer;background:#0ea5e9;border:none;border-radius:6px;padding:8px 16px;font-weight:600}.signin-modal{color:#e2e8f0;background:#0b1220;border:1px solid #334155;border-radius:10px;width:calc(100% - 32px);max-width:360px;margin:auto;padding:20px}.signin-modal::backdrop{background:#020617bf}.signin-modal h2{margin-bottom:6px}.signin-modal-hint{color:#94a3b8;margin-bottom:16px;font-size:.9rem;line-height:1.4}.signin-methods{flex-direction:column;gap:10px;display:flex}.signin-method{width:100%;font:inherit;color:#f8fafc;cursor:pointer;background:#94a3b81f;border:1px solid #94a3b859;border-radius:8px;justify-content:center;align-items:center;gap:10px;padding:11px 16px;font-weight:600;transition:background .15s,border-color .15s;display:inline-flex}.signin-method:hover{background:#94a3b838;border-color:#94a3b899}.signin-method svg{width:18px;height:18px}.signin-modal-actions{justify-content:flex-end;margin-top:16px;display:flex}.signin-modal-cancel{color:#94a3b8;font:inherit;cursor:pointer;background:0 0;border:none;border-radius:6px;padding:8px 14px;font-weight:600;transition:color .15s}.signin-modal-cancel:hover{color:#f8fafc}.report-modal{color:#e2e8f0;background:#0b1220;border:1px solid #334155;border-radius:10px;width:calc(100% - 32px);max-width:420px;margin:auto;padding:20px}.report-modal::backdrop{background:#020617bf}.report-modal h2{margin-bottom:6px}.report-modal-hint{color:#94a3b8;margin-bottom:16px;font-size:.9rem;line-height:1.4}.report-reasons{border:none;flex-direction:column;gap:10px;margin:0 0 12px;padding:0;display:flex}.report-reason{cursor:pointer;align-items:center;gap:8px;font-size:.95rem;display:flex}.report-reason input[type=radio]{accent-color:#0ea5e9;cursor:pointer;width:16px;height:16px}.report-details{box-sizing:border-box;color:#e2e8f0;width:100%;font:inherit;resize:vertical;background:#1e293b;border:1px solid #334155;border-radius:6px;margin-bottom:16px;padding:8px 10px;font-size:.9rem}.report-details:focus{outline-offset:-1px;outline:2px solid #0ea5e9}.report-details[hidden]{display:none}.report-modal-actions{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.report-modal-cancel{color:#94a3b8;font:inherit;cursor:pointer;background:0 0;border:none;border-radius:6px;padding:8px 14px;font-weight:600;transition:color .15s}.report-modal-cancel:hover{color:#f8fafc}.report-modal-submit{color:#fff;font:inherit;cursor:pointer;background:#0ea5e9;border:none;border-radius:6px;padding:8px 16px;font-weight:600;transition:background .15s}.report-modal-submit:hover{background:#0284c7}.report-modal-submit:disabled{opacity:.5;cursor:not-allowed}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.loading-fullscreen{color:#94a3b8;justify-content:center;align-items:center;min-width:320px;min-height:180px;font-size:.95rem;line-height:normal;display:flex}.spinner{border:3px solid #334155;border-top-color:#0ea5e9;border-radius:50%;width:22px;height:22px;margin-right:10px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.coming-soon{text-align:center;margin-top:60px}.coming-soon p{color:#cbd5e1;font-size:1.05rem}.binary-demo:not([hidden]){flex-wrap:wrap;justify-content:center;gap:24px;margin-top:32px;display:flex}.binary-demo figure{flex:320px;max-width:560px;margin:0}.binary-demo img{border-radius:8px;width:100%;height:auto;display:block;box-shadow:0 4px 12px #00000040}.binary-demo figcaption{color:#cbd5e1;margin-top:8px;font-size:.95rem}.page-credit{text-align:right;margin-top:auto}.sidebar-hint{color:#94a3b8;margin-bottom:10px;font-size:.8rem;display:block}.focus-keypoint-select{color:#e2e8f0;cursor:pointer;background:#0b1220;border:2px solid #334155;border-radius:6px;width:100%;margin-bottom:16px;padding:9px 10px;font-family:inherit;font-size:.85rem;font-weight:500;transition:border-color .1s}.focus-keypoint-select:hover{border-color:#475569}.focus-keypoint-select:focus{border-color:#0ea5e9;outline:none}.focus-count{color:#94a3b8;background:#0b1220;border-radius:6px;padding:6px 8px;font-family:monospace;font-size:.8rem}
