:root{font-family:Inter,Noto Sans SC,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#172033;background:#f4f6f9;font-synthesis:none;--ink: #172033;--muted: #6d778b;--line: #dfe4ec;--panel: #ffffff;--navy: #101827;--accent: #f47b37;--accent-dark: #d85e1a;--green: #15845c;--yellow: #d88916;--red: #d64045}*{box-sizing:border-box}html,body,#root{width:100%;min-width:0;min-height:100%;margin:0}body{min-height:100vh;overflow:hidden}button,input,textarea,select{font:inherit}button{color:inherit}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid rgba(244,123,55,.2);outline-offset:1px}.app-shell{display:grid;grid-template-columns:270px minmax(0,1fr);grid-template-rows:64px minmax(0,1fr);height:100vh;background:#f4f6f9}.topbar{grid-column:1 / -1;display:flex;align-items:center;height:64px;padding:0 22px;color:#fff;background:var(--navy);border-bottom:1px solid rgba(255,255,255,.08);z-index:20}.brand{display:flex;align-items:center;gap:11px;width:248px}.brand-mark{display:grid;place-items:center;width:36px;height:36px;color:#fff;background:var(--accent);border-radius:9px}.brand strong,.brand span{display:block}.brand strong{font-size:14px;letter-spacing:.01em}.brand span{margin-top:2px;color:#8f9bb0;font-size:11px}.topbar-status{display:flex;align-items:center;gap:8px;color:#a9b2c2;font-size:12px}.topbar-status i{width:7px;height:7px;border-radius:50%;background:#e9a43c;box-shadow:0 0 0 4px #e9a43c1f}.topbar-status i.online{background:#38bb83;box-shadow:0 0 0 4px #38bb831f}.topbar-actions{display:flex;gap:9px;margin-left:auto}.button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:36px;padding:0 14px;border:1px solid transparent;border-radius:7px;font-size:12px;font-weight:600;cursor:pointer;transition:.16s ease}.button:hover:not(:disabled){transform:translateY(-1px)}.button:disabled{opacity:.5;cursor:not-allowed}.button.primary{color:#fff;background:var(--accent);border-color:var(--accent);box-shadow:0 6px 16px #f47b372e}.button.primary:hover:not(:disabled){background:var(--accent-dark);border-color:var(--accent-dark)}.button.secondary{background:#fff;border-color:var(--line)}.button.ghost{color:#dbe1eb;background:transparent;border-color:#394358}.button.danger-text{color:var(--red);background:#fff;border-color:#f0d6d7}.button.wide{width:100%}.icon-button{display:inline-grid;place-items:center;width:32px;height:32px;padding:0;color:#59657a;background:#fff;border:1px solid var(--line);border-radius:6px;cursor:pointer}.icon-button:hover:not(:disabled),.icon-button.active{color:var(--accent-dark);border-color:#f2aa80;background:#fff5ef}.square-primary{display:grid;place-items:center;width:34px;height:34px;padding:0;color:#fff;background:var(--accent);border:0;border-radius:7px;cursor:pointer}.library-panel{min-width:0;background:#f9fafc;border-right:1px solid var(--line);overflow:hidden}.library-header{display:flex;align-items:center;justify-content:space-between;height:80px;padding:18px 16px 12px}.library-header h1{margin:0;font-size:17px}.library-header span{display:block;margin-top:3px;color:var(--muted);font-size:11px}.search-box{display:flex;align-items:center;gap:8px;height:36px;margin:0 12px 10px;padding:0 10px;color:#8a94a7;background:#eef1f5;border:1px solid transparent;border-radius:7px}.search-box:focus-within{background:#fff;border-color:#f2aa80}.search-box input{width:100%;min-width:0;color:var(--ink);background:transparent;border:0;outline:0;font-size:12px}.diagram-list{height:calc(100vh - 190px);padding:2px 8px 18px;overflow:auto}.diagram-row{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:8px;width:100%;padding:11px 8px;text-align:left;background:transparent;border:0;border-radius:7px;cursor:pointer}.diagram-row:hover{background:#f0f2f6}.diagram-row.active{background:#fff;box-shadow:0 1px #e4e8ef,0 5px 16px #131d2d0f}.row-status{display:grid;place-items:center;width:26px;height:26px;color:#718095;background:#e9edf3;border-radius:6px}.row-status.status-published{color:var(--green);background:#e3f4ed}.row-status.status-processing,.row-status.status-queued{color:#9f6713;background:#fff0d5}.row-status.status-failed{color:var(--red);background:#fde9ea}.row-copy{min-width:0}.row-copy strong,.row-copy small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-copy strong{font-size:12px;font-weight:600}.row-copy small{margin-top:4px;color:#8b95a6;font-size:10px}.diagram-row em{display:grid;place-items:center;min-width:20px;height:20px;padding:0 5px;color:#9b5a0c;background:#ffedd1;border-radius:10px;font-size:10px;font-style:normal;font-weight:700}.list-empty{padding:36px 12px;color:#939daf;text-align:center;font-size:12px}.workspace{min-width:0;min-height:0;padding:20px 22px 22px;overflow:hidden}.workspace-heading{display:flex;align-items:flex-end;justify-content:space-between;min-height:58px;margin-bottom:14px}.workspace-heading h1{margin:5px 0 3px;font-size:21px;line-height:1.2}.workspace-heading p{margin:0;color:var(--muted);font-size:11px}.crumb{color:#8c97a9;font-size:10px;font-weight:600;letter-spacing:.02em}.processing-state{display:flex;align-items:center;gap:7px;padding:7px 10px;color:#647085;background:#fff;border:1px solid var(--line);border-radius:6px;font-size:11px;font-weight:600}.processing-state.status-processing,.processing-state.status-queued{color:#9a650f;background:#fff9ef;border-color:#f0d9ae}.processing-state.status-published{color:var(--green);background:#f0faf6;border-color:#cce8dc}.processing-state.status-failed{color:var(--red);background:#fff5f5;border-color:#efd0d1}.editor-layout{display:grid;grid-template-columns:minmax(0,1fr) 292px;height:calc(100vh - 156px);background:#fff;border:1px solid var(--line);box-shadow:0 8px 30px #1720330f;overflow:hidden}.page-error{display:flex;align-items:center;gap:7px;margin-bottom:10px;padding:9px 12px;color:#a1282d;background:#fff0f1;border:1px solid #f1ced0;font-size:12px}.canvas-panel{display:flex;min-width:0;min-height:0;flex-direction:column;background:#e9edf2}.canvas-toolbar{display:flex;align-items:center;justify-content:space-between;min-height:48px;padding:7px 10px;background:#fff;border-bottom:1px solid var(--line)}.toolbar-group{display:flex;align-items:center;gap:5px}.tool-button{height:30px;padding:0 10px;color:#758095;background:transparent;border:1px solid transparent;border-radius:6px;font-size:11px;cursor:pointer}.tool-button:hover,.tool-button.active{color:#263249;background:#f1f3f6}.tool-button.warning.active{color:#945a08;background:#fff0d8}.toolbar-divider{width:1px;height:20px;margin:0 3px;background:var(--line)}.zoom-label{width:42px;color:#6e798b;text-align:center;font-size:10px}.canvas-notice{display:flex;align-items:center;gap:7px;padding:8px 12px;color:#7c4c12;background:#fff4e4;border-bottom:1px solid #eed5af;font-size:11px}.canvas-scroll{flex:1;min-height:0;padding:32px;overflow:auto}.canvas-scroll.adding{cursor:crosshair}.diagram-stage{position:relative;min-width:640px;margin:0 auto;background:#fff;box-shadow:0 4px 22px #141d2c1f;-webkit-user-select:none;user-select:none}.diagram-stage img{display:block;width:100%;height:auto;pointer-events:none}.bbox{position:absolute;display:block;min-width:5px;min-height:5px;padding:0;color:var(--green);background:#15845c1a;border:1.5px solid currentColor;box-shadow:0 0 0 1px #fffc;cursor:pointer}.bbox span{position:absolute;left:50%;bottom:calc(100% + 3px);min-width:18px;padding:2px 4px;color:#fff;background:currentColor;border-radius:3px;transform:translate(-50%);font-size:8px;font-weight:700;line-height:1.1}.bbox.status-review{color:var(--yellow);background:#d889161f}.bbox.status-unmatched{color:var(--red);background:#d640451f}.bbox.selected{z-index:5;box-shadow:0 0 0 3px #f47b3733,0 0 0 1px #fff;color:var(--accent)}.bbox.draft{color:#3478d4;background:#3478d41f;border-style:dashed;pointer-events:none}.inspector-panel{min-width:0;min-height:0;padding:16px;background:#fff;border-left:1px solid var(--line);overflow:auto}.inspector-title{display:flex;align-items:flex-start;justify-content:space-between;padding-bottom:14px;border-bottom:1px solid #edf0f4}.inspector-title h2{margin:0;font-size:14px}.inspector-title p{margin:4px 0 0;color:var(--muted);font-size:10px}.status-dot{padding:4px 7px;color:#99610e;background:#fff0d7;border-radius:4px;font-size:9px;font-weight:700}.status-dot.status-ready{color:var(--green);background:#e5f4ee}.summary-strip{display:grid;grid-template-columns:repeat(3,1fr);margin:15px 0 4px;border:1px solid #e7ebf0}.summary-strip div{padding:10px 6px;text-align:center;border-right:1px solid #e7ebf0}.summary-strip div:last-child{border-right:0}.summary-strip strong,.summary-strip span{display:block}.summary-strip strong{font-size:17px}.summary-strip span{margin-top:3px;color:var(--muted);font-size:9px}.inspector-section{padding:16px 0;border-bottom:1px solid #edf0f4}.inspector-section h3,.field-label{display:block;margin:0 0 9px;color:#48546a;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.inspector-section select,.mini-dialog select{width:100%;height:38px;padding:0 9px;color:var(--ink);background:#fff;border:1px solid #ccd3dd;border-radius:6px;font-size:11px}.raw-result{display:flex;justify-content:space-between;margin-top:8px;padding:8px;background:#f5f7fa;font-size:10px}.raw-result span{color:var(--muted)}.confidence-row>div:first-child{display:flex;justify-content:space-between;font-size:10px}.confidence-track{height:5px;margin-top:7px;overflow:hidden;background:#e8ecf1;border-radius:3px}.confidence-track i{display:block;height:100%;background:var(--accent);border-radius:3px}.metadata-list{margin:12px 0 0}.metadata-list div{display:flex;justify-content:space-between;padding:5px 0;font-size:9px}.metadata-list dt{color:var(--muted)}.metadata-list dd{margin:0;color:#3d485b;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.missing-list{max-height:320px;overflow:auto}.missing-list div{display:grid;grid-template-columns:42px 1fr;align-items:center;padding:7px 0;border-bottom:1px solid #f0f2f5}.missing-list span{color:#805317;font-family:ui-monospace,monospace;font-size:10px;font-weight:700}.missing-list p{margin:0;overflow:hidden;color:#667185;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.missing-list small{display:block;padding:9px 0;color:var(--muted);font-size:9px}.empty-check{display:flex;align-items:center;gap:7px;padding:10px;color:var(--green);background:#edf8f3;font-size:10px}.inspector-help{display:flex;gap:9px;margin-top:15px;padding:11px;color:#667185;background:#f5f7fa;font-size:10px;line-height:1.5}.inspector-help svg{flex:0 0 auto;color:#8994a6}.inspector-help p{margin:0}.inline-warning{display:flex;align-items:flex-start;gap:8px;margin-top:14px;padding:10px;color:#8d5709;background:#fff3df;font-size:10px;line-height:1.45}.inspector-actions{display:grid;gap:8px;padding-top:16px}.empty-workspace{display:flex;height:calc(100vh - 105px);align-items:center;justify-content:center;flex-direction:column;text-align:center}.empty-visual{display:grid;place-items:center;width:72px;height:72px;margin-bottom:18px;color:var(--accent);background:#fff0e7;border-radius:18px}.empty-workspace h1{margin:0;font-size:21px}.empty-workspace p{max-width:420px;margin:9px 0 20px;color:var(--muted);font-size:12px;line-height:1.6}.modal-backdrop{position:fixed;inset:0;display:grid;place-items:center;padding:24px;background:#090f199e;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:100}.upload-dialog{width:min(680px,100%);max-height:calc(100vh - 48px);padding:22px;overflow:auto;background:#fff;box-shadow:0 28px 80px #00000047}.dialog-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:18px}.dialog-header h2,.mini-dialog h2{margin:0;font-size:18px}.dialog-header p,.mini-dialog p{margin:6px 0 0;color:var(--muted);font-size:11px;line-height:1.55}.file-drop{position:relative;display:flex;align-items:center;min-height:82px;padding:15px;color:#6c7789;background:#f7f8fa;border:1px dashed #bdc5d0;cursor:pointer}.file-drop:hover,.file-drop.has-file{color:var(--accent-dark);background:#fff8f3;border-color:#ee9e6e}.file-drop input{position:absolute;inset:0;opacity:0;cursor:pointer}.file-drop svg{margin-right:12px}.file-drop span{font-size:12px;font-weight:600}.file-drop small{margin-left:auto;color:#919aab;font-size:9px}.form-grid{display:grid;grid-template-columns:1.4fr 1fr .7fr;gap:10px;margin-top:16px}.form-grid label span,.mapping-field>span{display:block;margin-bottom:6px;color:#596477;font-size:10px;font-weight:600}.form-grid input{width:100%;height:38px;padding:0 10px;border:1px solid #ccd3dd;border-radius:5px;font-size:11px}.mapping-field{display:block;margin-top:14px}.mapping-field textarea{width:100%;padding:10px;resize:vertical;color:#263044;border:1px solid #ccd3dd;border-radius:5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.55}.mapping-field small{display:block;margin-top:5px;color:#8b95a6;font-size:9px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.form-error{margin-top:12px;padding:9px 11px;color:#9e272d;background:#fff0f1;font-size:11px}.mini-dialog{width:380px;padding:22px;background:#fff;box-shadow:0 24px 70px #0000004d}.mini-dialog select{margin:18px 0 10px}.toast-error{position:fixed;right:22px;bottom:22px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:9px;max-width:430px;padding:12px 14px;color:#fff;background:#a82f34;box-shadow:0 14px 35px #5a0f144d;z-index:200;font-size:11px}.toast-error button{color:#fff;background:transparent;border:0;font-size:20px;cursor:pointer}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.public-viewer{height:100vh;color:var(--ink);background:#edf0f4;overflow:hidden}.public-header{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;min-height:72px;padding:0 26px;background:#fff;border-bottom:1px solid var(--line)}.back-link{display:inline-flex;align-items:center;gap:7px;width:fit-content;padding:0;color:#697589;background:transparent;border:0;font-size:11px;cursor:pointer}.public-heading{display:flex;align-items:center;gap:11px}.product-symbol{display:grid;place-items:center;width:38px;height:38px;color:#fff;background:var(--navy);border-radius:8px}.public-heading h1{margin:0;font-size:16px}.public-heading p{margin:4px 0 0;color:var(--muted);font-size:10px}.public-count{display:flex;justify-self:end;align-items:center;gap:6px;color:#6f7b8e;font-size:10px}.public-workspace{display:grid;grid-template-columns:minmax(0,1fr) 320px;height:calc(100vh - 72px)}.public-canvas{padding:32px;overflow:auto}.public-stage{position:relative;min-width:680px;max-width:1180px;margin:0 auto;background:#fff;box-shadow:0 8px 30px #1720331a}.public-stage img{display:block;width:100%;height:auto}.public-hotspot{position:absolute;min-width:7px;min-height:7px;padding:0;color:var(--accent);background:#f47b3721;border:1px solid currentColor;cursor:pointer}.public-hotspot:after{position:absolute;inset:-9px;content:""}.public-hotspot:hover,.public-hotspot.active{z-index:3;background:#f47b3740;box-shadow:0 0 0 3px #f47b372e}.public-hotspot span{position:absolute;left:50%;bottom:calc(100% + 4px);padding:2px 4px;color:#fff;background:var(--accent);border-radius:3px;transform:translate(-50%);font-size:8px;font-weight:700}.part-drawer{position:relative;padding:32px 26px;background:#fff;border-left:1px solid var(--line)}.drawer-empty{display:flex;height:100%;align-items:center;justify-content:center;flex-direction:column;color:#8994a6;text-align:center}.drawer-empty h2{margin:14px 0 5px;color:#384357;font-size:15px}.drawer-empty p{max-width:210px;margin:0;font-size:10px;line-height:1.6}.drawer-close{position:absolute;top:18px;right:18px;display:grid;place-items:center;width:30px;height:30px;background:#fff;border:1px solid var(--line);border-radius:6px;cursor:pointer}.drawer-icon{display:grid;place-items:center;width:54px;height:54px;margin:30px 0 18px;color:var(--accent);background:#fff1e8;border-radius:12px}.part-number{color:var(--accent-dark);font-size:10px;font-weight:700}.part-drawer h2{margin:8px 0 22px;font-size:21px;line-height:1.35}.part-drawer dl{margin:0 0 24px;border-top:1px solid var(--line)}.part-drawer dl div{display:flex;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--line);font-size:11px}.part-drawer dt{color:var(--muted)}.part-drawer dd{margin:0;font-weight:600}@media(max-width:1020px){.app-shell{grid-template-columns:220px minmax(0,1fr)}.brand{width:198px}.editor-layout{grid-template-columns:minmax(0,1fr) 260px}.workspace{padding:16px}.canvas-scroll{padding:20px}}@media(max-width:760px){body{overflow:auto}.app-shell{display:block;height:auto;min-height:100vh}.topbar{position:sticky;top:0;height:58px;padding:0 12px}.brand{width:auto}.brand span,.topbar-status,.topbar-actions .ghost{display:none}.topbar-actions{margin-left:auto}.library-panel{display:none}.workspace{min-height:calc(100vh - 58px);overflow:visible}.workspace-heading{align-items:flex-start;gap:8px}.editor-layout{display:block;height:auto}.canvas-panel{height:62vh}.inspector-panel{max-height:none;border-top:1px solid var(--line);border-left:0}.canvas-toolbar{overflow-x:auto}.form-grid{grid-template-columns:1fr}.file-drop{align-items:flex-start;flex-direction:column;gap:5px}.file-drop svg{margin:0}.file-drop small{margin:0}.public-header{grid-template-columns:auto 1fr;gap:16px;padding:0 12px}.public-heading{justify-self:end}.public-count{display:none}.public-workspace{display:block;height:auto}.public-canvas{height:62vh;padding:16px}.part-drawer{min-height:38vh;border-top:1px solid var(--line);border-left:0}}.demo-login-shell{--login-ink: oklch(25% .026 255);--login-muted: oklch(51% .025 255);--login-line: oklch(87% .014 255);--login-paper: oklch(98.5% .007 78);--login-ground: oklch(94.5% .012 250);--login-navy: oklch(22% .035 254);--login-orange: oklch(66% .17 47);display:grid;grid-template-columns:minmax(360px,430px) minmax(0,1fr);min-height:100vh;color:var(--login-ink);background:var(--login-ground);font-family:Avenir Next,Source Han Sans SC,PingFang SC,sans-serif}.demo-login-panel{display:flex;min-height:100vh;flex-direction:column;justify-content:center;padding:clamp(32px,6vw,72px);background:var(--login-paper)}.demo-login-brand{display:flex;align-items:center;gap:12px;margin-bottom:clamp(54px,9vh,92px)}.demo-login-brand>span{display:grid;width:42px;height:42px;place-items:center;color:var(--login-paper);background:var(--login-orange);transform:rotate(-3deg)}.demo-login-brand strong,.demo-login-brand small{display:block}.demo-login-brand strong{font-size:.75rem;letter-spacing:.12em}.demo-login-brand small{margin-top:3px;color:var(--login-muted);font-size:.625rem}.demo-login-index{color:#b24400;color:oklch(53% .16 43);font-size:.625rem;font-weight:750;letter-spacing:.16em}.demo-login-panel h1{max-width:10ch;margin:14px 0 10px;font-size:clamp(1.75rem,4vw,2.25rem);line-height:1.12;letter-spacing:-.04em}.demo-login-panel>p{max-width:30ch;margin:0;color:var(--login-muted);font-size:.75rem;line-height:1.65}.demo-login-panel form{display:grid;gap:15px;margin-top:34px}.demo-login-panel label>span{display:block;margin-bottom:6px;color:var(--login-muted);font-size:.625rem;font-weight:680}.demo-login-panel input{width:100%;height:44px;padding:0 12px;color:var(--login-ink);background:#f1f6fa;border:1px solid var(--login-line);outline:0;font:inherit;font-size:.8125rem}.demo-login-panel input:focus{border-color:var(--login-orange);box-shadow:inset 0 0 0 1px var(--login-orange)}.demo-login-panel form>button{display:inline-flex;min-height:46px;align-items:center;justify-content:center;gap:8px;margin-top:5px;color:var(--login-paper);background:var(--login-orange);border:0;cursor:pointer;font-size:.75rem;font-weight:720}.demo-login-panel form>button:hover:not(:disabled){background:#b24400;background:oklch(53% .16 43)}.demo-login-panel form>button:disabled{opacity:.42;cursor:not-allowed}.demo-login-inline-error{padding:10px 11px;color:#8c2d2b;background:#ffe8e6;background:oklch(95% .035 25);font-size:.625rem}.demo-login-error{display:grid;grid-template-columns:auto 1fr;gap:8px;margin-top:30px;padding:12px;color:#8c2d2b;background:#ffe8e6;background:oklch(95% .035 25);font-size:.6875rem;line-height:1.5}.demo-login-error button{grid-column:2;justify-self:start;padding:0;color:inherit;background:transparent;border:0;cursor:pointer;text-decoration:underline}.demo-login-panel footer{display:flex;align-items:center;gap:7px;margin-top:22px;color:#9199a4;font-size:.5625rem}.demo-login-drawing{position:relative;min-height:100vh;overflow:hidden;color:#eaeff5;background:var(--login-navy)}.demo-login-grid{position:absolute;inset:0;opacity:.2;background-image:linear-gradient(oklch(54% .025 254) 1px,transparent 1px),linear-gradient(90deg,oklch(54% .025 254) 1px,transparent 1px);background-size:32px 32px}.demo-login-drawing:before,.demo-login-drawing:after{position:absolute;content:"";border:1px solid oklch(70% .03 254 / .45);transform:rotate(-12deg)}.demo-login-drawing:before{top:25%;left:22%;width:48%;height:29%;border-radius:48% 30% 45% 20%}.demo-login-drawing:after{top:39%;left:40%;width:37%;height:22%;border-radius:12% 50% 20% 44%}.demo-login-callout{position:absolute;display:flex;align-items:center;gap:10px}.demo-login-callout i{display:grid;width:35px;height:28px;place-items:center;color:var(--login-paper);background:var(--login-orange);font-size:.6875rem;font-style:normal;font-weight:750}.demo-login-callout span{display:block;width:clamp(80px,16vw,230px);height:1px;background:#a1afc18c;transform-origin:left}.demo-login-callout.c1{top:20%;left:14%}.demo-login-callout.c1 span{transform:rotate(18deg)}.demo-login-callout.c2{top:53%;right:8%;flex-direction:row-reverse}.demo-login-callout.c2 span{transform:rotate(-21deg)}.demo-login-callout.c3{bottom:19%;left:29%}.demo-login-callout.c3 span{transform:rotate(-8deg)}.demo-login-drawing>strong{position:absolute;right:clamp(26px,5vw,74px);bottom:clamp(28px,6vh,68px);text-align:right;font-size:clamp(1rem,2.3vw,2rem);line-height:1.2;letter-spacing:.09em;opacity:.34}.demo-login-state{place-self:center;display:inline-flex;align-items:center;gap:10px;color:var(--login-muted);font-size:.75rem}.demo-shell{--demo-ink: oklch(25% .026 255);--demo-muted: oklch(51% .025 255);--demo-faint: oklch(70% .018 255);--demo-line: oklch(87% .014 255);--demo-paper: oklch(98.5% .007 78);--demo-ground: oklch(94.5% .012 250);--demo-navy: oklch(22% .035 254);--demo-orange: oklch(66% .17 47);--demo-orange-dark: oklch(53% .16 43);--demo-warn: oklch(66% .15 82);width:100%;height:100vh;color:var(--demo-ink);background:var(--demo-ground);font-family:Avenir Next,Source Han Sans SC,PingFang SC,sans-serif;overflow:hidden}.skip-link{position:fixed;top:-60px;left:16px;padding:10px 14px;color:var(--demo-paper);background:var(--demo-navy);z-index:500}.skip-link:focus{top:12px}.demo-header{display:grid;grid-template-columns:1fr auto;align-items:center;height:68px;padding:0 clamp(16px,2.6vw,40px);color:#eaeff5;background:var(--demo-navy);border-bottom:1px solid oklch(34% .035 254)}.demo-brand{display:flex;align-items:center;gap:12px}.demo-brand-mark{display:grid;place-items:center;width:38px;height:38px;color:var(--demo-paper);background:var(--demo-orange);border-radius:3px;transform:rotate(-3deg)}.demo-brand strong,.demo-brand span{display:block}.demo-brand strong{font-size:.75rem;letter-spacing:.12em}.demo-brand div>span{margin-top:3px;color:#969fab;font-size:.625rem}.demo-model-state{display:flex;justify-self:end;align-items:center;gap:8px;color:#a7afb9;font-size:.6875rem;font-variant-numeric:tabular-nums}.demo-model-state i{width:7px;height:7px;background:#51be7b;border-radius:50%;box-shadow:0 0 0 4px #51be7b1f}.demo-header-actions{display:flex;align-items:center;justify-self:end;gap:16px}.demo-header-actions>button{display:inline-flex;align-items:center;gap:6px;padding:6px 0 6px 14px;color:#a0a8b3;background:transparent;border:0;border-left:1px solid oklch(36% .03 254);cursor:pointer;font-size:.625rem}.demo-header-actions>button:hover{color:var(--demo-paper)}.demo-main{display:grid;grid-template-columns:minmax(310px,360px) minmax(0,1fr);height:calc(100vh - 68px);min-height:0}.demo-control-panel{min-height:0;padding:clamp(28px,4vh,48px) 28px 32px;background:var(--demo-paper);border-right:1px solid var(--demo-line);overflow:auto}.demo-eyebrow{color:var(--demo-orange-dark);font-size:.625rem;font-weight:750;letter-spacing:.16em}.demo-control-panel h1{max-width:13ch;margin:14px 0 12px -.025em;color:var(--demo-ink);font-size:2rem;line-height:1.15;letter-spacing:-.035em}.demo-lead{max-width:31ch;margin:0;color:var(--demo-muted);font-size:.8125rem;line-height:1.65}.demo-dropzone{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:12px;min-height:96px;margin-top:28px;padding:14px;color:var(--demo-muted);background:#eff4fa;border:1px dashed oklch(75% .025 255);cursor:pointer;transition:background .18s cubic-bezier(.25,1,.5,1),border-color .18s cubic-bezier(.25,1,.5,1),transform .18s cubic-bezier(.25,1,.5,1)}.demo-dropzone:hover,.demo-dropzone.is-dragging{background:#fff0e5;background:oklch(96.5% .025 60);border-color:var(--demo-orange)}.demo-dropzone.is-dragging{transform:scale(.985)}.demo-dropzone.has-file{border-style:solid}.demo-dropzone.is-disabled{opacity:.62;cursor:wait}.demo-dropzone input{position:absolute;inset:0;opacity:0;cursor:pointer}.demo-drop-icon{display:grid;place-items:center;width:42px;height:42px;color:var(--demo-orange-dark);background:#ffe2ca}.demo-drop-copy{min-width:0}.demo-drop-copy strong,.demo-drop-copy small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.demo-drop-copy strong{color:var(--demo-ink);font-size:.75rem}.demo-drop-copy small{margin-top:5px;color:var(--demo-muted);font-size:.625rem}.demo-file-types{grid-column:1 / -1;padding-top:9px;color:var(--demo-faint);border-top:1px solid var(--demo-line);font-size:.5625rem;font-weight:700;letter-spacing:.1em}.demo-primary-actions{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;margin-top:10px}.demo-run-button,.demo-reset-button{display:inline-flex;align-items:center;justify-content:center;min-height:46px;color:var(--demo-paper);background:var(--demo-orange);border:0;cursor:pointer;font-size:.75rem;font-weight:700;transition:transform .14s cubic-bezier(.25,1,.5,1),background .14s cubic-bezier(.25,1,.5,1)}.demo-run-button{gap:9px;padding:0 16px}.demo-run-button:hover:not(:disabled){background:var(--demo-orange-dark);transform:translateY(-1px)}.demo-run-button:active:not(:disabled){transform:translateY(0)}.demo-run-button:disabled{cursor:not-allowed;opacity:.48}.demo-reset-button{width:46px;color:var(--demo-muted);background:transparent;border:1px solid var(--demo-line)}.demo-reset-button:hover:not(:disabled){color:var(--demo-orange-dark);background:#fcefe5}.demo-error{display:grid;grid-template-columns:auto minmax(0,1fr);gap:9px;margin-top:12px;padding:11px 12px;color:#8c2d2b;background:#ffe8e6;background:oklch(95% .035 25);font-size:.6875rem;line-height:1.5}.demo-error svg{margin-top:1px}.demo-rule{height:1px;margin:28px 0 24px;background:var(--demo-line)}.demo-section-heading{display:flex;align-items:baseline;justify-content:space-between}.demo-section-heading span,.demo-how-it-works>span{color:var(--demo-muted);font-size:.625rem;font-weight:750;letter-spacing:.12em;text-transform:uppercase}.demo-section-heading strong{color:#186c3c;font-size:.625rem}.demo-metrics{display:grid;grid-template-columns:.75fr 1.35fr 1fr;margin-top:14px;border-top:1px solid var(--demo-line);border-bottom:1px solid var(--demo-line)}.demo-metrics div{min-width:0;padding:14px 8px 14px 0}.demo-metrics strong,.demo-metrics span{display:block}.demo-metrics strong{font-size:1.125rem;font-variant-numeric:tabular-nums}.demo-metrics span{margin-top:4px;color:var(--demo-muted);font-size:.5625rem;line-height:1.35}.demo-correction{margin-top:18px}.demo-correction-toggle{display:inline-flex;width:100%;min-height:40px;align-items:center;justify-content:center;gap:8px;padding:0 12px;color:var(--demo-orange-dark);background:transparent;border:1px solid var(--demo-orange);cursor:pointer;font-size:.6875rem;font-weight:720}.demo-correction-toggle:hover{color:var(--demo-paper);background:var(--demo-orange-dark);border-color:var(--demo-orange-dark)}.demo-correction.is-active .demo-correction-toggle{color:var(--demo-muted);border-color:var(--demo-line)}.demo-correction.is-active .demo-correction-toggle:hover{color:var(--demo-ink);background:#e5ecf3}.demo-correction-body{margin-top:12px;padding-top:12px;border-top:1px solid var(--demo-line)}.demo-correction-tools{display:grid;grid-template-columns:1fr;gap:7px}.demo-correction-tools button{display:inline-flex;min-height:36px;align-items:center;justify-content:flex-start;gap:8px;padding:0 11px;color:var(--demo-ink);background:#eff4fa;border:1px solid var(--demo-line);cursor:pointer;font-size:.625rem;font-weight:680}.demo-correction-tools button:hover:not(:disabled),.demo-correction-tools button.is-active{color:var(--demo-orange-dark);background:#ffeee1;border-color:var(--demo-orange)}.demo-correction-tools button:disabled{opacity:.42;cursor:not-allowed}.demo-correction-selection{margin-top:12px;padding:12px;background:#eff4fa;border-left:3px solid var(--demo-orange)}.demo-correction-selection.is-pending{background:#faf1df;border-left-color:var(--demo-warn)}.demo-correction-label{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.demo-correction-label span{color:var(--demo-muted);font-size:.5625rem;font-weight:700;letter-spacing:.08em}.demo-correction-label strong{color:var(--demo-ink);font-size:1.35rem;font-variant-numeric:tabular-nums}.demo-correction-selection form{margin-top:8px}.demo-correction-selection form>label{display:block;margin-bottom:5px;color:var(--demo-muted);font-size:.5625rem}.demo-correction-selection form>div{display:grid;grid-template-columns:minmax(0,1fr) auto}.demo-correction-selection input{min-width:0;height:36px;padding:0 9px;color:var(--demo-ink);background:var(--demo-paper);border:1px solid var(--demo-line);border-right:0;outline:0;font-size:.875rem;font-weight:720;font-variant-numeric:tabular-nums}.demo-correction-selection input:focus{border-color:var(--demo-orange);box-shadow:inset 0 0 0 1px var(--demo-orange)}.demo-correction-selection form button{display:inline-flex;align-items:center;gap:5px;padding:0 10px;color:var(--demo-paper);background:var(--demo-orange-dark);border:0;cursor:pointer;font-size:.5625rem;font-weight:700}.demo-correction-selection form button:disabled{opacity:.4;cursor:not-allowed}.demo-correction-selection form small{display:block;margin-top:6px;color:#8c2d2b;font-size:.5625rem}.demo-delete-box{display:inline-flex;min-height:30px;align-items:center;gap:6px;margin-top:8px;padding:0;color:#9a3936;background:transparent;border:0;cursor:pointer;font-size:.5625rem;font-weight:680}.demo-delete-box:hover{text-decoration:underline;text-underline-offset:3px}.demo-box-actions{display:grid;grid-template-columns:1fr;gap:2px;margin-top:8px}.demo-box-actions>button{display:inline-flex;min-height:30px;align-items:center;gap:6px;padding:0;color:var(--demo-muted);background:transparent;border:0;cursor:pointer;font-size:.5625rem;font-weight:680}.demo-box-actions>button:hover,.demo-box-actions>button.is-active{color:var(--demo-orange-dark);text-decoration:underline;text-underline-offset:3px}.demo-box-actions>.demo-delete-box{margin-top:0;color:#9a3936}.demo-correction-hint{margin:11px 0 0;color:var(--demo-muted);font-size:.625rem;line-height:1.55}.demo-change-summary{display:grid;grid-template-columns:repeat(3,1fr);margin-top:12px;border:1px solid var(--demo-line)}.demo-change-summary span{padding:8px 5px;color:var(--demo-muted);border-right:1px solid var(--demo-line);text-align:center;font-size:.5625rem}.demo-change-summary span:last-child{border-right:0}.demo-change-summary b{color:var(--demo-ink);font-size:.6875rem;font-variant-numeric:tabular-nums}.demo-review-check{display:grid;grid-template-columns:auto minmax(0,1fr);gap:9px;margin-top:12px;cursor:pointer}.demo-review-check input{width:15px;height:15px;margin:2px 0 0;accent-color:var(--demo-orange-dark)}.demo-review-check strong,.demo-review-check small{display:block}.demo-review-check strong{color:var(--demo-ink);font-size:.625rem}.demo-review-check small{margin-top:3px;color:var(--demo-muted);font-size:.5625rem;line-height:1.45}.demo-save-correction{display:inline-flex;width:100%;min-height:42px;align-items:center;justify-content:center;gap:8px;margin-top:12px;color:var(--demo-paper);background:var(--demo-navy);border:0;cursor:pointer;font-size:.6875rem;font-weight:720}.demo-save-correction:hover:not(:disabled){background:var(--demo-orange-dark)}.demo-save-correction:disabled{opacity:.38;cursor:not-allowed}.demo-save-notice{margin:7px 0 0;color:var(--demo-faint);font-size:.5625rem;line-height:1.45}.demo-correction-error{margin:8px 0 0;padding:8px;color:#8c2d2b;background:#ffe8e6;background:oklch(95% .035 25);font-size:.5625rem;line-height:1.45}.demo-correction-success{display:grid;grid-template-columns:auto 1fr;gap:7px;margin-top:8px;padding:8px;color:#06562c;background:#def6e4;font-size:.5625rem;line-height:1.45}.demo-selection-card{margin-top:22px}.demo-selection-index{color:var(--demo-orange-dark);font-size:.5625rem;font-weight:750;letter-spacing:.1em}.demo-selected-code{margin:3px 0 14px;color:var(--demo-ink);font-size:3rem;font-weight:750;line-height:1;letter-spacing:-.06em;font-variant-numeric:tabular-nums}.demo-selection-card dl{margin:0;border-top:1px solid var(--demo-line)}.demo-selection-card dl div{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--demo-line)}.demo-selection-card dt{color:var(--demo-muted);font-size:.625rem}.demo-selection-card dd{margin:0;color:var(--demo-ink);font-size:.625rem;font-weight:650;font-variant-numeric:tabular-nums}.demo-selection-empty{display:flex;align-items:center;gap:12px;margin-top:20px;padding:14px 0;color:var(--demo-faint)}.demo-selection-empty p{margin:0;font-size:.6875rem;line-height:1.5}.demo-no-result{margin-top:18px;padding:12px;color:#684a00;color:oklch(43% .09 82);background:#faedd5;font-size:.6875rem;line-height:1.55}.demo-how-it-works ol{display:grid;gap:0;margin:12px 0 0;padding:0;list-style:none}.demo-how-it-works li{display:grid;grid-template-columns:34px 1fr;gap:10px;padding:12px 0;border-top:1px solid var(--demo-line)}.demo-how-it-works li b{color:var(--demo-orange-dark);font-size:.625rem;letter-spacing:.08em}.demo-how-it-works li strong,.demo-how-it-works li small{display:block}.demo-how-it-works li strong{font-size:.6875rem}.demo-how-it-works li small{margin-top:4px;color:var(--demo-muted);font-size:.625rem}.demo-canvas-panel{display:flex;min-width:0;min-height:0;flex-direction:column;background:var(--demo-ground)}.demo-canvas-toolbar,.demo-canvas-footer{display:flex;align-items:center;justify-content:space-between;min-height:48px;padding:0 18px;color:var(--demo-muted);background:#f2f6fa;border-bottom:1px solid var(--demo-line);font-size:.625rem;font-variant-numeric:tabular-nums}.demo-canvas-toolbar>div:first-child{display:flex;align-items:center;gap:8px}.demo-status-indicator{width:7px;height:7px;background:var(--demo-faint);border-radius:50%}.demo-status-indicator.is-busy{background:var(--demo-warn);animation:demo-pulse 1.2s ease-in-out infinite}.demo-status-indicator.is-ready{background:#3aa765}.demo-zoom-controls{display:flex;align-items:center}.demo-zoom-controls button{display:grid;place-items:center;width:34px;height:34px;padding:0;color:var(--demo-muted);background:transparent;border:0;cursor:pointer}.demo-zoom-controls button:hover{color:var(--demo-orange-dark);background:#dfe9f4}.demo-zoom-controls .demo-review-toggle{margin-right:7px;border-right:1px solid var(--demo-line)}.demo-zoom-controls .demo-review-toggle.is-active{color:var(--demo-paper);background:var(--demo-orange-dark)}.demo-zoom-controls span{width:44px;text-align:center}.demo-canvas-scroll{position:relative;flex:1;min-height:0;padding:clamp(20px,3vw,46px);background-color:var(--demo-ground);background-image:linear-gradient(var(--demo-line) 1px,transparent 1px),linear-gradient(90deg,var(--demo-line) 1px,transparent 1px);background-size:24px 24px;overflow:auto}.demo-image-wrap{position:relative;min-width:420px;margin:0 auto;background:var(--demo-paper);box-shadow:0 12px 36px #212a3521,0 0 0 1px #bdc5d0;-webkit-user-select:none;user-select:none}.demo-image-wrap.is-adding{cursor:crosshair}.demo-image-wrap img{display:block;width:100%;height:auto;pointer-events:none}.demo-bbox{position:absolute;padding:0;color:var(--demo-orange-dark);background:#e36a1f21;border:1.5px solid var(--demo-orange);box-shadow:0 0 0 1px #fefbf7cc;cursor:pointer;touch-action:manipulation;transition:background .12s cubic-bezier(.25,1,.5,1),box-shadow .12s cubic-bezier(.25,1,.5,1)}.demo-tight-outline{position:absolute;display:block;border:1px dashed currentColor;opacity:0;pointer-events:none}.demo-bbox:hover .demo-tight-outline,.demo-bbox.is-selected .demo-tight-outline{opacity:.86}.demo-bbox.is-low-confidence{border-style:dashed;border-color:var(--demo-warn);background:#d29a0021;background:oklch(72% .15 82 / .13)}.demo-bbox.is-rescue-review{border-style:dashed;border-width:2px}.demo-bbox.is-rescue-review span:after{content:" · 复核补漏"}.demo-bbox.is-manual{border-width:2px;border-color:var(--demo-orange-dark)}.demo-bbox:hover,.demo-bbox.is-selected{z-index:5;background:#e36a1f4d;box-shadow:0 0 0 3px #e36a1f33,0 0 0 1px var(--demo-paper)}.demo-bbox span{position:absolute;left:50%;bottom:calc(100% + 4px);min-width:20px;padding:3px 5px;color:var(--demo-paper);background:var(--demo-orange-dark);transform:translate(-50%,3px);opacity:0;pointer-events:none;font-size:.5625rem;font-weight:750;line-height:1;font-variant-numeric:tabular-nums;transition:opacity .12s cubic-bezier(.25,1,.5,1),transform .12s cubic-bezier(.25,1,.5,1)}.demo-bbox:hover span,.demo-bbox.is-selected span{opacity:1;transform:translate(-50%)}.demo-draw-layer{position:absolute;inset:0;z-index:20;cursor:crosshair;touch-action:none}.demo-draft-box{position:absolute;z-index:21;color:var(--demo-orange-dark);background:#e36a1f2e;border:2px solid var(--demo-orange-dark);box-shadow:0 0 0 2px var(--demo-paper);pointer-events:none}.demo-draft-box.is-pending{border-style:dashed}.demo-draft-box span{position:absolute;left:0;bottom:calc(100% + 4px);padding:4px 6px;color:var(--demo-paper);background:var(--demo-orange-dark);white-space:nowrap;font-size:.5625rem;font-weight:720}.demo-scan-overlay{position:absolute;inset:0;overflow:hidden;background:#0f1b2b0a;pointer-events:none}.demo-scan-overlay i{position:absolute;left:0;right:0;height:2px;background:var(--demo-orange);box-shadow:0 -8px 28px var(--demo-orange);animation:demo-scan 2.2s cubic-bezier(.65,0,.35,1) infinite alternate}.demo-empty-canvas{position:absolute;inset:50% auto auto 50%;display:flex;width:min(430px,calc(100% - 48px));min-height:260px;align-items:center;justify-content:center;flex-direction:column;padding:32px;color:var(--demo-muted);background:var(--demo-paper);border:1px dashed oklch(74% .022 255);transform:translate(-50%,-50%);cursor:pointer}.demo-empty-canvas>span{display:grid;place-items:center;width:52px;height:52px;color:var(--demo-orange-dark);background:#fee6d4}.demo-empty-canvas strong{margin-top:18px;color:var(--demo-ink);font-size:.875rem}.demo-empty-canvas small{max-width:30ch;margin-top:8px;font-size:.6875rem;line-height:1.55}.demo-empty-canvas:hover{border-color:var(--demo-orange)}.demo-canvas-footer{min-height:36px;border-top:1px solid var(--demo-line);border-bottom:0}.demo-canvas-footer span{display:inline-flex;align-items:center;gap:6px}@keyframes demo-scan{0%{top:0}to{top:calc(100% - 2px)}}@keyframes demo-pulse{50%{opacity:.35;transform:scale(.75)}}@media(max-width:940px){.demo-main{grid-template-columns:300px minmax(0,1fr)}.demo-control-panel{padding-right:20px;padding-left:20px}.demo-control-panel h1{font-size:1.65rem}.demo-model-state{display:none}.demo-header{grid-template-columns:1fr}.demo-canvas-footer span:last-child{display:none}}@media(max-width:700px){.demo-login-shell{display:block;background:var(--login-paper)}.demo-login-panel{min-height:100vh;padding:30px 22px}.demo-login-brand{margin-bottom:64px}.demo-login-drawing{display:none}.demo-shell{height:auto;min-height:100vh;overflow:visible}.demo-header{position:sticky;top:0;z-index:50;height:60px;padding:0 12px}.demo-brand div{display:none}.demo-header-actions{gap:10px}.demo-model-state{display:none}.demo-main{display:block;height:auto}.demo-control-panel{padding:28px 18px 24px;border-right:0;border-bottom:1px solid var(--demo-line);overflow:visible}.demo-control-panel h1{max-width:16ch}.demo-lead{max-width:42ch}.demo-how-it-works{display:none}.demo-canvas-panel{height:66vh;min-height:520px}.demo-canvas-scroll{padding:18px}.demo-image-wrap{min-width:360px}.demo-canvas-footer{justify-content:center}}@media(pointer:coarse){.demo-zoom-controls button{width:44px;height:44px}.demo-bbox:before{position:absolute;top:50%;left:50%;width:max(100%,24px);height:max(100%,24px);content:"";transform:translate(-50%,-50%)}}@media(prefers-reduced-motion:reduce){.demo-shell *,.demo-shell *:before,.demo-shell *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
