:root{font-family:Inter,Microsoft YaHei,PingFang SC,system-ui,sans-serif;color:#20262d;background:#f4f5f6;font-synthesis:none;--ink: #20262d;--muted: #6b737d;--line: #dce0e4;--line-strong: #c8ced4;--surface: #fff;--soft: #eef0f2;--violet: #6251d8;--violet-dark: #4e3fc0;--violet-soft: #efedff;--green: #168765;--green-soft: #e6f4ee;--coral: #d45443;--coral-soft: #fff0ed;--amber: #996314;--shadow: 0 14px 36px rgba(29, 38, 48, .12)}*{box-sizing:border-box}html{min-width:320px;background:#f4f5f6}body{margin:0;min-width:320px;min-height:100vh}button,input{font:inherit;letter-spacing:0}button{color:inherit}button:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid rgba(98,81,216,.2);outline-offset:2px}button:disabled{cursor:not-allowed;opacity:.5}h1,h2,h3,p,dl,dd{margin:0}h1{font-size:27px;line-height:1.25;letter-spacing:0}h2{font-size:19px;line-height:1.3;letter-spacing:0}h3{font-size:12px;line-height:1.4;letter-spacing:0}code{font-family:Consolas,monospace}.eyebrow{color:var(--violet);font-size:10px;font-weight:800;text-transform:uppercase;margin-bottom:6px}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.primary,.secondary,.ghost,.button,.danger-button,.icon-button,.debug-trigger,.compact-button{min-height:40px;border:0;border-radius:5px;padding:0 14px;display:inline-flex;align-items:center;justify-content:center;gap:7px;font-weight:700;font-size:13px;white-space:nowrap;cursor:pointer}.primary{background:var(--violet);color:#fff}.primary:hover:not(:disabled){background:var(--violet-dark)}.secondary{background:#fff;border:1px solid var(--line-strong)}.secondary:hover:not(:disabled),.ghost:hover:not(:disabled){background:var(--soft)}.ghost{background:transparent;color:#56606b}.danger-button{color:#b53f30;background:var(--coral-soft);border:1px solid #efc4bc}.wide{width:100%}.icon-button{width:38px;min-height:38px;padding:0;background:transparent}.icon-button:hover{background:var(--soft)}.compact-button{min-height:32px;padding:0 9px}.login-shell{min-height:100vh;padding:24px;display:grid;place-items:center;background:#e9ecef}.login-panel{width:min(420px,100%);padding:36px;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);display:grid;gap:23px}.login-panel>div:nth-child(2) p:last-child{color:var(--muted);font-size:13px;margin-top:6px}.brand-mark{width:48px;height:48px;display:grid;place-items:center;border-radius:6px;color:#fff;background:var(--violet)}.brand-mark.small{width:36px;height:36px}.login-form{display:grid;gap:15px}.login-form label,.editor-label{display:grid;gap:7px;color:#424b55;font-size:12px;font-weight:700}input{width:100%;height:42px;padding:0 11px;color:var(--ink);background:#fff;border:1px solid #cdd2d7;border-radius:5px}input:hover{border-color:#aeb5bd}input:focus{border-color:var(--violet)}.app-shell{min-height:100vh}.app-header{height:62px;position:sticky;top:0;z-index:30;padding:0 20px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;border-bottom:1px solid var(--line);background:#fffffff7}.header-brand,.header-actions,.reviewer,.debug-trigger{display:flex;align-items:center}.header-brand{gap:10px}.header-brand>div:last-child{display:grid}.header-brand strong{font-size:15px}.header-brand span,.header-center span{color:var(--muted);font-size:10px}.header-center{text-align:center;display:grid;gap:2px}.header-center strong{font-size:14px}.header-actions{justify-content:flex-end;gap:8px}.reviewer{gap:7px;color:#58616b;font-size:12px;padding:0 10px;border-right:1px solid var(--line)}.debug-trigger{min-height:34px;padding:0 10px;background:var(--soft)}.debug-trigger.active{color:var(--violet);background:var(--violet-soft)}.stepper{height:50px;position:sticky;top:62px;z-index:25;display:flex;justify-content:center;gap:32px;border-bottom:1px solid var(--line);background:#f4f5f6f7}.stepper button{min-width:118px;border:0;border-bottom:2px solid transparent;background:transparent;color:#7b838d;display:flex;align-items:center;justify-content:center;gap:7px;font-size:12px;cursor:pointer}.stepper button span{width:21px;height:21px;display:grid;place-items:center;border-radius:50%;background:#dde1e5;font-size:10px;font-weight:800}.stepper button.active{color:var(--violet);border-color:var(--violet);font-weight:800}.stepper button.done{color:var(--green)}.stepper button.active span{background:var(--violet);color:#fff}.stepper button.done span{background:var(--green);color:#fff}.page-width{width:min(1320px,calc(100% - 40px));margin:0 auto}.app-content{min-width:0;transition:padding-right .2s}.app-content.with-debug{padding-right:420px}.page-heading{margin-bottom:24px;display:flex;align-items:end;justify-content:space-between;gap:24px}.page-heading>p{max-width:430px;color:var(--muted);font-size:13px;text-align:right}.source-page{max-width:920px;padding-top:42px}.source-tabs{display:flex;border-bottom:1px solid var(--line);margin-bottom:22px}.source-tabs button{min-width:150px;height:43px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--muted);display:flex;align-items:center;justify-content:center;gap:7px;cursor:pointer}.source-tabs button.active{color:var(--violet);border-color:var(--violet);font-weight:800}.upload-panel{min-height:310px;position:relative;border:1px dashed #aeb6be;border-radius:7px;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;cursor:pointer}.upload-panel:hover{border-color:var(--violet);background:#fdfcff}.upload-panel.disabled{cursor:wait}.upload-panel input{position:absolute;width:1px;height:1px;opacity:0}.upload-panel strong{font-size:17px}.upload-panel>span:not(.button):not(.upload-icon),.upload-panel small{color:var(--muted);font-size:12px}.upload-icon{width:54px;height:54px;display:grid;place-items:center;color:var(--violet);background:var(--violet-soft);border-radius:50%}.upload-panel .button{margin-top:8px}.progress-track{width:min(360px,70%);height:5px;margin-top:8px;background:#e3e6e9;overflow:hidden;border-radius:3px}.progress-track i{display:block;height:100%;background:var(--violet);transition:width .2s}.social-entry{min-height:310px;padding:38px;border:1px solid var(--line);background:#fff;display:grid;align-content:center;gap:16px}.social-entry-copy{display:grid;gap:5px}.social-entry-copy p{color:var(--muted);font-size:12px}.source-badge{width:max-content;color:var(--violet);background:var(--violet-soft);padding:4px 7px;border-radius:4px;font-size:10px;font-weight:800}.link-field{display:grid;grid-template-columns:1fr auto;gap:8px}.resolve-button{justify-self:start;min-width:150px}.social-picker{border:1px solid var(--line);background:#fff}.picker-head{min-height:76px;padding:15px 18px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.picker-head>div{min-width:0}.picker-head h2{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker-head span{color:var(--muted);font-size:11px}.social-stage{min-height:430px;display:grid;grid-template-columns:52px minmax(0,1fr) 52px;align-items:center;background:#e9ecef}.carousel-arrow{width:36px;height:54px;justify-self:center;border:1px solid #cbd0d5;background:#ffffffe6;display:grid;place-items:center;cursor:pointer}.social-main-image{height:430px;position:relative;display:grid;place-items:center;overflow:hidden}.social-main-image img{max-width:100%;max-height:100%;object-fit:contain}.media-loading{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;display:grid;place-content:center;justify-items:center;gap:8px;color:var(--muted);background:#e9ecef;font-size:12px}.media-retry{position:absolute;z-index:3;border:1px solid var(--line-strong);background:#fff;min-height:40px;padding:0 14px;display:flex;align-items:center;gap:7px;cursor:pointer}.image-count{position:absolute;right:10px;bottom:10px;padding:4px 8px;color:#fff;background:#191e23b8;font-size:11px;border-radius:4px}.thumbnail-track{display:flex;gap:8px;overflow-x:auto;padding:12px 14px;border-top:1px solid var(--line)}.thumbnail-track button{width:70px;height:70px;flex:0 0 70px;position:relative;padding:2px;border:2px solid transparent;background:#eef0f2;cursor:pointer}.thumbnail-track button.active{border-color:var(--violet)}.thumbnail-track img{width:100%;height:100%;display:block;object-fit:cover}.thumbnail-track span{position:absolute;right:3px;bottom:3px;width:18px;height:18px;display:grid;place-items:center;border-radius:50%;color:#fff;background:#191e23bf;font-size:9px}.picker-actions{min-height:62px;padding:10px 14px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.picker-actions>span{color:var(--muted);font-size:12px}.calibration-workspace{padding-top:22px;display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:20px}.calibration-workspace.fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;width:100%;max-width:none;padding:12px;background:#f4f5f6}.calibration-main{min-width:0}.workspace-heading{min-height:68px;display:flex;align-items:start;justify-content:space-between;gap:18px}.workspace-heading p:last-child{color:var(--muted);font-size:12px;margin-top:5px}.canvas-toolbar{height:42px;padding:0 7px;display:flex;align-items:center;gap:4px;border:1px solid var(--line);border-bottom:0;background:#fff}.canvas-toolbar>span{width:46px;text-align:center;color:var(--muted);font-size:11px;font-variant-numeric:tabular-nums}.canvas-toolbar>i{flex:1}.canvas-toolbar label{display:flex;align-items:center;gap:5px;color:var(--muted);font-size:11px}.canvas-toolbar label input{width:15px;height:15px;accent-color:var(--violet)}.image-viewport{height:calc(100vh - 245px);min-height:460px;position:relative;overflow:auto;background:#dfe2e5;border:1px solid var(--line-strong);overscroll-behavior:contain}.image-stage{min-width:100%;max-width:none;height:auto;position:relative;margin:auto;touch-action:auto;-webkit-user-select:none;user-select:none;background:#d6dade}.image-stage>img{width:100%;height:100%;display:block;object-fit:fill;pointer-events:none}.selection{position:absolute;z-index:3;border:2px solid var(--violet);cursor:move;box-shadow:0 0 0 9999px #191f2638;touch-action:none}.selection.inactive{pointer-events:none;border-width:1px;box-shadow:none;opacity:.6}.sample-selection{z-index:4;border-color:var(--green);background:#16876514;box-shadow:none}.selection-label{position:absolute;left:-2px;top:-24px;min-width:44px;height:22px;padding:0 6px;display:grid;place-items:center;color:#fff;background:var(--violet);font-size:10px;font-weight:800}.sample-selection .selection-label{background:var(--green)}.handle{width:28px;height:28px;position:absolute;padding:0;border:3px solid currentColor;border-radius:50%;color:var(--violet);background:#fff;box-shadow:0 2px 7px #0000003d;touch-action:none}.sample-selection .handle{color:var(--green)}.handle.left{left:-15px;top:calc(50% - 14px);cursor:ew-resize}.handle.right{right:-15px;top:calc(50% - 14px);cursor:ew-resize}.handle.top{top:-15px;left:calc(50% - 14px);cursor:ns-resize}.handle.bottom{bottom:-15px;left:calc(50% - 14px);cursor:ns-resize}.calibration-magnifier{width:116px;height:116px;position:sticky;z-index:8;top:12px;left:calc(100% - 128px);margin-top:-128px;border:3px solid #fff;border-radius:50%;background-color:#fff;background-repeat:no-repeat;background-size:500% 500%;box-shadow:0 5px 20px #161c224d;pointer-events:none}.calibration-magnifier:after{content:"";position:absolute;inset:50% auto auto 50%;width:18px;height:18px;border:2px solid var(--coral);transform:translate(-50%,-50%)}.calibration-magnifier span{position:absolute;left:50%;bottom:-10px;min-width:68px;padding:3px 6px;transform:translate(-50%);color:#fff;background:#273039;font-size:9px;font-weight:800;text-align:center;white-space:nowrap}.detected-line{position:absolute;z-index:2;pointer-events:none;background:#1d8fb194}.detected-line.vertical{width:1px}.detected-line.horizontal{height:1px}.calibration-controls{min-height:calc(100vh - 135px);padding:17px;border:1px solid var(--line);background:#fff;display:flex;flex-direction:column;gap:14px}.file-meta{display:grid;gap:3px;padding-bottom:13px;border-bottom:1px solid var(--line);min-width:0}.file-meta strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.file-meta span{color:var(--muted);font-size:11px}.detection-summary{padding:11px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:9px;color:var(--green);background:var(--green-soft);border:1px solid #b9dfd1}.detection-summary.warning{color:var(--amber);background:#fff8e7;border-color:#ead5a0}.detection-summary div{display:grid;gap:2px}.detection-summary strong{font-size:12px}.detection-summary span{color:#5e6a66;font-size:10px}.detection-summary b{font-size:10px}.suggestion-box{padding:11px;border:1px solid #cfc9f1;background:var(--violet-soft);display:grid;gap:9px}.suggestion-box div{display:grid;gap:2px}.suggestion-box strong{font-size:11px}.suggestion-box span{color:var(--muted);font-size:10px}.nudge-panel{border-top:1px solid var(--line);padding-top:13px}.nudge-panel header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.nudge-panel header strong{font-size:11px}.nudge-panel header div{display:flex;align-items:center}.nudge-panel header button{width:25px;height:24px;padding:0;border:1px solid var(--line);background:#fff;font-size:9px;cursor:pointer}.nudge-panel header button.active{color:#fff;background:var(--violet);border-color:var(--violet)}.nudge-panel header span{color:var(--muted);font-size:9px;margin-left:4px}.adjust-targets{display:grid;grid-template-columns:repeat(5,1fr);gap:4px}.adjust-targets button{min-width:0;height:42px;padding:3px 1px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:1px solid var(--line);background:#fff;color:#4f5963;font-size:8px;cursor:pointer}.adjust-targets button.active{color:var(--violet);border-color:var(--violet);background:var(--violet-soft);font-weight:800}.nudge-direction-pad{width:184px;margin:9px auto 0;display:grid;grid-template-columns:48px 88px 48px;grid-template-rows:48px 54px 48px;grid-template-areas:". up ." "left label right" ". down .";place-items:stretch}.nudge-direction-pad button{padding:0;display:grid;place-items:center;border:1px solid var(--line-strong);background:#fff;color:#3d4650;cursor:pointer}.nudge-direction-pad button:not(:disabled):active{color:#fff;border-color:var(--violet);background:var(--violet)}.nudge-direction-pad button:disabled{color:#bbc0c5;background:#f1f3f4;cursor:not-allowed}.nudge-direction-pad .up{grid-area:up}.nudge-direction-pad .left{grid-area:left}.nudge-direction-pad .right{grid-area:right}.nudge-direction-pad .down{grid-area:down}.nudge-direction-pad>span{grid-area:label;display:grid;place-items:center;align-content:center;gap:3px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:#f5f6f7;text-align:center}.nudge-direction-pad strong{font-size:10px}.nudge-direction-pad small{max-width:82px;overflow:hidden;color:var(--muted);font-size:7px;text-overflow:ellipsis;white-space:nowrap}.coordinate-details{border-top:1px solid var(--line);padding-top:12px}.coordinate-details summary{cursor:pointer;color:#4e5760;font-size:11px;font-weight:700}.coordinate-grid{padding-top:10px;display:grid;grid-template-columns:1fr 1fr;gap:8px}.coordinate-grid label{display:grid;gap:4px;color:var(--muted);font-size:9px}.coordinate-grid input{height:34px;padding:0 7px;font-size:11px}.workspace-actions{margin-top:auto;padding-top:13px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:7px}.recognition-page{max-width:720px;padding-top:90px;text-align:center;display:flex;flex-direction:column;align-items:center}.recognition-visual{width:84px;height:84px;position:relative;display:grid;place-items:center;color:var(--violet);background:#fff;border:1px solid var(--line);border-radius:50%}.recognition-visual span{position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;border:3px solid transparent;border-top-color:var(--violet);border-radius:50%;animation:spin 1.3s linear infinite}.recognition-page .eyebrow{margin-top:22px}.recognition-page>p:not(.eyebrow){max-width:520px;color:var(--muted);font-size:12px;line-height:1.7;margin-top:8px}.recognition-track{width:min(520px,100%);height:7px;margin-top:27px;overflow:hidden;border-radius:4px;background:#dfe3e7}.recognition-track i{display:block;height:100%;background:var(--violet);transition:width .35s}.recognition-stats{width:min(520px,100%);margin-top:12px;display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);background:#fff}.recognition-stats span{min-height:63px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--muted);font-size:10px;border-right:1px solid var(--line)}.recognition-stats span:last-child{border-right:0}.recognition-stats strong{color:var(--ink);font-size:14px}.recovery-panel{width:min(600px,100%);margin-top:20px;padding:12px;display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;text-align:left;color:#a34134;background:var(--coral-soft);border:1px solid #efc3bb}.recovery-panel div{display:grid;gap:2px}.recovery-panel strong{font-size:12px}.recovery-panel span{color:var(--muted);font-size:10px}.recognition-back{margin-top:18px}.review-workspace{width:min(1320px,calc(100% - 40px));margin:0 auto;padding:22px 0 100px}.review-header{display:flex;align-items:end;justify-content:space-between;gap:18px;margin-bottom:14px}.review-header>div:first-child>p:last-child{color:var(--muted);font-size:11px;margin-top:4px}.review-metrics{display:flex;border:1px solid var(--line);background:#fff}.review-metrics span{min-width:110px;min-height:50px;padding:8px 12px;display:flex;flex-direction:column;justify-content:center;color:var(--muted);font-size:9px;border-right:1px solid var(--line)}.review-metrics span:last-child{border-right:0}.review-metrics strong{color:var(--ink);font-size:17px}.review-metrics .warning strong{color:var(--coral)}.save-strip{min-height:36px;padding:0 10px;display:flex;align-items:center;gap:7px;color:#52615b;background:#edf4f1;border:1px solid #cbded6;font-size:11px}.save-strip.error{color:#ad4133;background:var(--coral-soft);border-color:#efc3bb;cursor:pointer}.save-strip.saving{color:var(--violet);background:var(--violet-soft);border-color:#d6d1f0}.save-strip span{flex:1}.save-strip button{border:0;background:transparent;color:inherit;font-weight:800;cursor:pointer}.undo-strip{min-height:38px;padding:0 11px;display:flex;align-items:center;gap:8px;color:#fff;background:#26332f;font-size:12px}.undo-strip span{flex:1}.undo-strip button{min-height:28px;padding:0 10px;border:1px solid #697771;background:transparent;color:#fff;font-weight:800;cursor:pointer}.undo-strip button:disabled{opacity:.45;cursor:wait}.review-toolbar{min-height:56px;display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid var(--line)}.segmented{padding:3px;display:flex;background:#e6e9ec;border-radius:5px}.segmented button{min-height:32px;padding:0 12px;border:0;border-radius:3px;background:transparent;color:#5e6670;font-size:11px;cursor:pointer}.segmented button.active{color:var(--ink);background:#fff;box-shadow:0 1px 3px #0000001f;font-weight:800}.segmented span{color:var(--muted);margin-left:4px}.toolbar-actions{display:flex;gap:5px}.toolbar-actions button{min-height:33px;padding:0 9px}.group-list,.row-list{margin-top:12px;display:grid;gap:8px}.review-empty{min-height:260px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;color:var(--green)}.review-empty span{color:var(--muted);font-size:11px}.review-group,.review-row{background:#fff;border:1px solid var(--line);border-radius:5px;overflow:hidden}.group-summary{width:100%;min-height:54px;padding:8px 13px;border:0;background:#fff;display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:10px;text-align:left;cursor:pointer}.group-summary>span{display:grid;gap:1px}.group-summary small,.group-summary b{color:var(--muted);font-size:10px;font-weight:500}.group-summary svg,.row-toggle svg{transition:transform .18s}.rotated{transform:rotate(180deg)}.color-swatch{width:28px;height:28px;border:1px solid #c9ced3;border-radius:3px}.group-body{padding:12px 14px 14px;border-top:1px solid var(--line)}.cell-preview-track{display:flex;gap:7px;overflow-x:auto;padding-bottom:5px}.cell-preview-track>button{width:72px;flex:0 0 72px;padding:0;border:1px solid var(--line);background:#f4f5f6;cursor:pointer}.preview-media{height:67px;position:relative;display:grid;place-items:center;background:#fff}.preview-media img{width:100%;height:100%;object-fit:contain;image-rendering:pixelated}.preview-failed{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;gap:3px;color:#a64134;background:#fff0edf0;font-size:9px}.cell-preview-track small{padding:5px 2px;display:block;color:var(--muted);font-size:8px;white-space:nowrap}.show-all{border:0;background:transparent;color:var(--violet);font-size:10px;padding:6px 0;cursor:pointer}.evidence-suggestions{padding:9px 0;border-top:1px solid var(--line);display:grid;gap:7px}.evidence-suggestions>span{color:var(--muted);font-size:9px;font-weight:800}.evidence-suggestions>div{display:flex;flex-wrap:wrap;gap:5px}.evidence-suggestions button,.suggestion-buttons button{min-height:30px;padding:0 8px;display:flex;align-items:center;gap:5px;border:1px solid var(--line);background:#fff;font-size:10px;cursor:pointer}.evidence-suggestions button i,.suggestion-buttons button i{width:13px;height:13px;border:1px solid rgba(0,0,0,.12)}.evidence-suggestions small{color:var(--muted);font-size:9px}.scope-option{min-height:34px;padding:0 8px;display:flex;align-items:center;gap:7px;background:#f6f7f8;font-size:10px}.scope-option input{width:14px;height:14px;accent-color:var(--violet)}.scope-option span{margin-left:auto;color:var(--muted)}.group-actions{padding-top:10px;display:flex;gap:6px}.group-actions button{min-height:34px}.review-row>header{min-height:52px;padding:0 10px 0 4px;display:flex;align-items:center}.row-toggle{height:52px;flex:1;border:0;background:transparent;display:flex;align-items:center;gap:9px;text-align:left;cursor:pointer}.row-toggle>span:not(.row-number){display:grid;gap:1px}.row-toggle small{color:var(--muted);font-size:9px}.row-number{width:28px;height:28px;display:grid;place-items:center;border-radius:4px;background:var(--soft);font-size:10px;font-weight:800}.confirm-row{min-height:32px;padding:0 9px;display:flex;align-items:center;gap:5px;color:var(--green);background:var(--green-soft);border:1px solid #b8ddcf;font-size:10px;font-weight:800;cursor:pointer}.review-row.confirmed .confirm-row{color:var(--muted);background:var(--soft);border-color:var(--line)}.row-body{padding:12px;border-top:1px solid var(--line);overflow-x:auto}.row-preview-wrap{min-height:50px;position:relative;margin-bottom:9px;display:flex;align-items:center}.row-preview-wrap img{max-width:none;height:auto;max-height:100px;display:block;border:1px solid var(--line)}.row-preview-wrap button{position:absolute;min-height:32px;border:1px solid #efc3bb;background:var(--coral-soft);display:flex;align-items:center;gap:5px;font-size:9px;cursor:pointer}.cell-grid{width:max-content;display:grid;gap:3px}.cell-grid button{width:42px;height:52px;padding:3px;border:1px solid var(--line);background:#fff;cursor:pointer}.cell-grid button.pending{border-color:var(--coral);background:var(--coral-soft)}.cell-grid button>i{height:20px;display:block;border:1px solid rgba(0,0,0,.12)}.cell-grid button span{display:block;margin-top:2px;font-size:9px;font-weight:700;overflow:hidden}.cell-grid button small{display:block;color:var(--muted);font-size:7px}.color-usage-summary{margin-top:14px;border:1px solid var(--line);background:#fff}.color-usage-summary>header{min-height:78px;padding:12px 14px;display:flex;align-items:center;justify-content:space-between;gap:18px;border-bottom:1px solid var(--line)}.color-usage-summary>header h2{margin:2px 0 3px;font-size:15px}.color-usage-summary>header span{color:var(--muted);font-size:9px}.color-usage-summary dl{display:grid;grid-template-columns:repeat(3,82px);border:1px solid var(--line)}.color-usage-summary dl>div{min-height:48px;display:grid;place-items:center;align-content:center;gap:2px;border-right:1px solid var(--line)}.color-usage-summary dl>div:last-child{border-right:0}.color-usage-summary dt{color:var(--muted);font-size:8px}.color-usage-summary dd{font-size:15px;font-weight:800}.color-usage-list{padding:10px;display:grid;grid-template-columns:repeat(auto-fill,minmax(155px,1fr));gap:6px}.color-usage-list article{min-width:0;min-height:48px;padding:6px 8px;display:grid;grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:8px;border:1px solid var(--line);background:#fafbfb}.color-usage-list article>i{width:30px;height:30px;border:1px solid rgba(0,0,0,.14)}.color-usage-list article>span{min-width:0;display:grid;gap:1px}.color-usage-list strong{font-size:11px}.color-usage-list span small{overflow:hidden;color:var(--muted);font-size:8px;text-overflow:ellipsis;white-space:nowrap}.color-usage-list b{font-size:15px;font-variant-numeric:tabular-nums}.color-usage-list b small{margin-left:2px;color:var(--muted);font-size:8px;font-weight:500}.color-usage-list article.unknown{border-color:#e3c58b;background:#fffaf0}.color-usage-empty{margin:0;padding:18px 14px;color:var(--muted);font-size:10px}.review-footer{position:fixed;left:0;right:420px;bottom:0;z-index:20;min-height:74px;padding:9px max(20px,calc((100vw - 1320px)/2));display:flex;align-items:center;justify-content:flex-end;gap:8px;background:#fff;border-top:1px solid var(--line);box-shadow:0 -7px 20px #1e273012;transition:right .2s}.review-footer>div{margin-right:auto;display:grid;gap:2px}.review-footer strong{font-size:12px}.review-footer span{color:var(--muted);font-size:9px}.submit-button{min-width:245px}.app-content:not(.with-debug) .review-footer{right:0}.debug-inspector{width:420px;position:fixed;top:62px;right:0;bottom:0;z-index:29;border-left:1px solid var(--line);background:#fff;box-shadow:-8px 0 22px #1f272f0f;overflow:hidden}.debug-inspector:not(.open){width:48px;bottom:auto;box-shadow:none;border-bottom:1px solid var(--line)}.debug-inspector>header{height:49px;padding:0 8px 0 13px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.debug-inspector>header>div{display:flex;align-items:center;gap:8px;color:var(--violet)}.debug-inspector>header span{display:grid}.debug-inspector>header strong{color:var(--ink);font-size:12px}.debug-inspector>header small{color:var(--muted);font-size:8px}.debug-inspector:not(.open)>header>div{display:none}.debug-tabs{height:38px;padding:0 8px;display:flex;border-bottom:1px solid var(--line)}.debug-tabs button{flex:1;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--muted);font-size:10px;cursor:pointer}.debug-tabs button.active{color:var(--violet);border-color:var(--violet);font-weight:800}.debug-body{height:calc(100% - 142px);padding:12px;overflow-y:auto;display:grid;align-content:start;gap:12px}.debug-body section{border-bottom:1px solid var(--line);padding-bottom:10px}.debug-body h3{color:#565f69;margin-bottom:6px}.debug-body dl{display:grid}.debug-body dl>div{min-height:27px;display:grid;grid-template-columns:88px 1fr;align-items:center;border-top:1px solid #eef0f2;font-size:9px}.debug-body dt{color:var(--muted)}.debug-body dd{min-width:0;display:flex;align-items:center;gap:4px;overflow-wrap:anywhere}.debug-body dd button{width:24px;height:24px;padding:0;border:0;background:transparent;cursor:pointer}.debug-warning{color:var(--coral);font-weight:800}.timing-list{display:grid;gap:6px}.timing-list>span{display:grid;grid-template-columns:85px 42px 1fr;align-items:center;gap:5px;font-size:9px}.timing-list i{color:var(--muted);font-style:normal}.timing-list b{font-variant-numeric:tabular-nums}.timing-list em{height:4px;overflow:hidden;background:#e6e9ec}.timing-list em i{display:block;height:100%;background:var(--violet)}.raw-body p{color:var(--muted);font-size:9px;line-height:1.5}.raw-body pre{margin:0;padding:9px;overflow:auto;color:#d9e2e8;background:#22282e;font:8px/1.5 Consolas,monospace;white-space:pre-wrap;overflow-wrap:anywhere}.debug-inspector>footer{height:55px;padding:7px 10px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:flex-end;gap:5px}.debug-inspector>footer span{margin-right:auto;color:var(--green);font-size:9px}.debug-inspector>footer button{min-height:32px;padding:0 8px;font-size:10px}.debug-metrics{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);margin-bottom:8px}.debug-metrics span{min-height:54px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--muted);font-size:8px;border-right:1px solid var(--line)}.debug-metrics span:last-child{border-right:0}.debug-metrics b{color:var(--ink);font-size:15px}.failure-controls p{margin-top:7px;color:var(--muted);font-size:9px;line-height:1.5}.failure-filters{display:flex;flex-wrap:wrap;gap:4px}.failure-filters button{min-height:28px;padding:0 7px;border:1px solid var(--line);background:#fff;color:var(--muted);font-size:9px;cursor:pointer}.failure-filters button.active{color:var(--violet);border-color:#bbb2e4;background:var(--violet-soft);font-weight:800}.failure-filters b{margin-left:2px}.coordinate-jump{margin-bottom:8px;display:grid;grid-template-columns:1fr 1fr auto;align-items:end;gap:5px}.coordinate-jump label{min-width:0;display:grid;gap:3px;color:var(--muted);font-size:8px;font-weight:700}.coordinate-jump input{width:100%;height:30px;padding:0 7px}.coordinate-jump button{min-height:30px;padding:0 8px;font-size:9px}.issue-navigation{min-height:34px;margin-top:7px;padding:3px 4px 3px 9px;display:flex;align-items:center;justify-content:flex-end;gap:3px;background:#f4f5f6;border:1px solid var(--line)}.issue-navigation span{margin-right:auto;color:var(--muted);font:9px/1 Consolas,monospace}.issue-navigation button{width:27px;height:27px}.failure-list{display:grid;border-bottom:0!important}.failure-list>button{min-height:46px;padding:6px 8px;display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:7px;border:0;border-bottom:1px solid var(--line);background:#fff;text-align:left;cursor:pointer}.failure-list>button:hover,.failure-list>button.active{background:#f4f2fb}.failure-list span{display:grid}.failure-list span b{font-size:11px}.failure-list small{color:var(--muted);font-size:8px}.failure-list em{color:var(--coral);font-size:8px;font-style:normal}.debug-empty{min-height:180px;display:grid;place-items:center;align-content:center;gap:7px;color:var(--green)}.lab-heading{display:flex;align-items:center;justify-content:space-between}.lab-heading>div{display:grid;gap:4px}.lab-heading span{color:var(--muted);font-size:9px}.lab-heading span.risk{color:var(--coral);font-weight:800}.lab-heading button{min-height:29px;padding:0 7px;font-size:9px}.lab-summary{display:grid;grid-template-columns:112px 1fr;gap:10px}.lab-summary>img{width:112px;height:112px;object-fit:contain;image-rendering:pixelated;background:#eef0f2;border:1px solid var(--line)}.lab-summary dl>div{grid-template-columns:68px 1fr}.section-heading{min-height:22px;display:flex;align-items:center;justify-content:space-between;gap:8px}.section-heading h3{margin:0}.section-heading span{color:var(--muted);font-size:8px}.neighbor-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}.neighbor-grid button{min-width:0;height:58px;padding:5px;display:grid;grid-template-columns:1fr auto;grid-template-rows:auto 1fr;align-items:center;border:1px solid var(--line);background:#f7f8f9;color:var(--ink);text-align:left;cursor:pointer}.neighbor-grid button:hover{border-color:#a8aeb5;background:#fff}.neighbor-grid button.center{border-color:var(--violet);box-shadow:inset 0 0 0 1px var(--violet);background:var(--violet-soft)}.neighbor-grid button.risk:not(.center){border-color:#e4aca2;background:var(--coral-soft)}.neighbor-grid small{grid-column:1 / -1;color:var(--muted);font:7px/1 Consolas,monospace}.neighbor-grid strong{min-width:0;overflow:hidden;font-size:11px;text-overflow:ellipsis}.neighbor-grid span{color:var(--muted);font:8px/1 Consolas,monospace}.lab-loading{min-height:90px;display:flex;align-items:center;justify-content:center;gap:7px;color:var(--violet);font-size:9px}.lab-error{padding:8px;display:flex;align-items:center;gap:6px;color:#a94034;background:var(--coral-soft);border:1px solid #efc3bb;font-size:9px}.view-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;border-bottom:0!important}.view-grid article{min-width:0;border:1px solid var(--line);background:#f7f8f9}.view-grid article.recovered{border-color:#7abda5;box-shadow:inset 0 0 0 1px #7abda5}.view-grid img{width:100%;height:80px;object-fit:contain;image-rendering:pixelated;background:#fff}.view-grid article>div{padding:6px;display:grid;grid-template-columns:1fr auto;gap:2px 5px}.view-grid strong{font-size:9px}.view-grid span{color:var(--muted);font:8px Consolas,monospace}.view-grid b{grid-row:1 / 3;grid-column:2;align-self:center;color:var(--violet);font-size:9px}.engine-results dl>div{grid-template-columns:78px 1fr}.vote-summary>p{margin:5px 0 0;color:var(--muted);font-size:9px}.vote-list{display:grid;gap:5px}.vote-list>span{min-height:20px;display:grid;grid-template-columns:34px 1fr 20px;align-items:center;gap:6px}.vote-list strong,.vote-list b{font:9px/1 Consolas,monospace}.vote-list b{color:var(--muted);text-align:right}.vote-list em{height:6px;overflow:hidden;background:#e4e7e9}.vote-list i{height:100%;display:block;background:var(--green)}.global-loading{position:fixed;top:0;right:0;bottom:0;left:0;z-index:150;display:grid;place-items:center;background:#f5f6f7c2;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.global-loading>div{min-width:230px;padding:22px;display:flex;flex-direction:column;align-items:center;gap:7px;background:#fff;border:1px solid var(--line);border-radius:7px;box-shadow:var(--shadow);color:var(--violet)}.global-loading strong{color:var(--ink);font-size:13px}.global-loading span{color:var(--muted);font-size:10px}.inline-error,.floating-error{display:flex;align-items:center;gap:7px;color:#ab4032;background:var(--coral-soft);border:1px solid #efc3bb;font-size:11px}.inline-error{padding:9px}.floating-error{position:fixed;right:18px;bottom:18px;z-index:180;max-width:min(440px,calc(100vw - 36px));padding:10px 11px;box-shadow:var(--shadow)}.floating-error span{flex:1}.floating-error button{width:26px;height:26px;padding:0;border:0;background:transparent;display:grid;place-items:center;cursor:pointer}.floating-notice{position:fixed;top:76px;right:18px;z-index:180;max-width:min(470px,calc(100vw - 36px));margin:0;padding:10px 11px;display:flex;align-items:center;gap:7px;color:#295f50;background:var(--green-soft);border:1px solid #acd6c7;box-shadow:var(--shadow);font-size:11px}.floating-notice span{flex:1}.floating-notice button{width:26px;height:26px;padding:0;border:0;background:transparent;display:grid;place-items:center;cursor:pointer}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;padding:18px;display:grid;place-items:center;background:#191f258f}.editor-modal,.dictionary-modal{width:min(620px,100%);max-height:calc(100vh - 36px);overflow-y:auto;background:#fff;border-radius:7px;box-shadow:0 24px 70px #00000042}.editor-modal>header,.dictionary-modal>header{min-height:65px;padding:13px 16px;display:flex;align-items:start;justify-content:space-between;border-bottom:1px solid var(--line)}.editor-content{display:grid;grid-template-columns:210px 1fr;border-bottom:1px solid var(--line)}.editor-preview{min-height:180px;position:relative;display:grid;place-items:center;background:#eceff1}.editor-preview img{max-width:100%;max-height:230px;image-rendering:pixelated}.source-location-button{position:absolute;right:8px;bottom:8px;min-height:34px;padding:0 9px;display:flex;align-items:center;gap:5px;border:1px solid var(--line-strong);background:#fffffff0;color:var(--ink);font-size:10px;font-weight:800;cursor:pointer}.evidence-panel{padding:12px;display:grid;align-content:center;gap:7px}.evidence-panel span{display:grid;grid-template-columns:70px 1fr;color:#555f68;font-size:10px}.evidence-panel strong{color:var(--muted)}.editor-label{padding:15px 16px 0}.code-input{display:flex;align-items:center;gap:7px}.code-input input{flex:1}.suggestion-buttons{padding:10px 16px 15px;display:flex;flex-wrap:wrap;gap:5px}.editor-modal>footer{min-height:58px;padding:9px 16px;display:flex;justify-content:flex-end;gap:6px;border-top:1px solid var(--line)}.dictionary-modal{width:min(700px,100%)}.dictionary-modal>input{width:calc(100% - 32px);margin:12px 16px}.dictionary-grid{max-height:56vh;padding:0 16px 16px;display:grid;grid-template-columns:repeat(4,1fr);gap:6px;overflow-y:auto}.dictionary-grid>div{min-height:46px;padding:5px;display:flex;align-items:center;gap:7px;border:1px solid var(--line)}.dictionary-grid i{width:30px;height:30px;border:1px solid rgba(0,0,0,.12)}.dictionary-grid span{min-width:0;display:grid}.dictionary-grid strong{font-size:10px}.dictionary-grid small{color:var(--muted);font-size:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.source-locator-backdrop{z-index:230;padding:12px}.source-locator{width:min(1120px,100%);height:min(860px,calc(100vh - 24px));display:grid;grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden;background:#fff;border-radius:7px;box-shadow:0 24px 70px #0000004d}.source-locator>header{min-height:72px;padding:12px 14px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line)}.source-locator>header>div:first-child{min-width:0}.source-locator h2{margin:1px 0 2px;font-size:17px}.source-locator header span{display:block;overflow:hidden;color:var(--muted);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.locator-actions{display:flex;align-items:center;gap:3px}.locator-actions b{width:48px;color:var(--muted);font-size:10px;text-align:center}.source-locator-viewport{min-height:0;overflow:auto;background:#dfe2e5;overscroll-behavior:contain;touch-action:pan-x pan-y}.source-locator-stage{min-width:100%;height:auto;position:relative;margin:auto;background:#cfd4d8}.source-locator-stage>img{width:100%;height:100%;display:block;object-fit:fill;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.source-cell-highlight{min-width:8px;min-height:8px;position:absolute;z-index:2;border:3px solid #e34d3d;background:#e34d3d2e;box-shadow:0 0 0 2px #fff,0 0 16px #e34d3db3;pointer-events:none}.source-cell-highlight:before,.source-cell-highlight:after{content:"";position:absolute;background:#e34d3dcc}.source-cell-highlight:before{width:1px;height:200vh;left:50%;top:-100vh}.source-cell-highlight:after{width:200vw;height:1px;left:-100vw;top:50%}.source-cell-highlight span{position:absolute;left:50%;bottom:calc(100% + 5px);padding:3px 5px;transform:translate(-50%);color:#fff;background:#d94334;font-size:9px;font-weight:800;white-space:nowrap}.source-locator>footer{min-height:60px;padding:8px 12px;display:flex;align-items:center;justify-content:flex-end;gap:7px;border-top:1px solid var(--line)}.source-locator>footer>span{margin-right:auto;display:flex;align-items:center;gap:6px;color:var(--muted);font-size:10px}@media (max-width: 1179px){.app-content.with-debug{padding-right:0}.debug-inspector{top:0;z-index:120;width:min(360px,92vw);box-shadow:-14px 0 34px #191f2533}.debug-inspector:not(.open){top:62px;width:48px}.review-footer{right:0}.calibration-workspace{grid-template-columns:minmax(0,1fr) 290px}}@media (max-width: 860px){.page-width,.review-workspace{width:min(100% - 24px,760px)}.app-header{grid-template-columns:1fr auto;padding:0 12px}.header-center,.reviewer{display:none}.stepper{gap:5px;justify-content:space-around}.stepper button{min-width:0;padding:0 5px}.page-heading,.review-header{align-items:start;flex-direction:column}.page-heading>p{text-align:left}.source-page{padding-top:28px}.social-stage{min-height:360px}.social-main-image{height:360px}.calibration-workspace{grid-template-columns:1fr;padding-top:14px}.image-viewport{height:auto;min-height:420px}.calibration-controls{min-height:0}.workspace-actions{margin-top:10px}.review-metrics{width:100%;overflow-x:auto}.review-metrics span{flex:1}.review-toolbar{align-items:stretch;flex-direction:column;padding:8px 0}.toolbar-actions{overflow-x:auto}.review-footer{min-height:84px;padding:8px 12px}.review-footer>div{display:none}.color-usage-summary>header{align-items:start;flex-direction:column}.color-usage-summary dl{width:100%;grid-template-columns:repeat(3,1fr)}}@media (max-width: 560px){h1{font-size:22px}.login-shell{padding:12px}.login-panel{padding:25px 20px}.app-header{height:58px}.header-brand span{display:none}.stepper{top:58px;height:48px}.stepper button{font-size:9px}.stepper button span{width:19px;height:19px}.source-tabs button{min-width:0;flex:1;font-size:11px}.upload-panel{min-height:250px;padding:15px;text-align:center}.social-entry{padding:24px 16px}.link-field{grid-template-columns:1fr}.resolve-button{width:100%}.picker-head h2{max-width:230px}.picker-head .ghost{padding:0 6px}.social-stage{min-height:300px;grid-template-columns:40px minmax(0,1fr) 40px}.social-main-image{height:300px}.carousel-arrow{width:31px}.picker-actions>span{display:none}.picker-actions .primary{width:100%}.workspace-heading p:last-child{display:none}.canvas-toolbar label,.canvas-toolbar .compact-button:first-of-type{display:none}.image-viewport{min-height:360px;max-height:58vh}.calibration-controls{padding:13px}.workspace-actions button{flex:1;padding:0 7px}.handle{width:36px;height:36px}.handle.left{left:-19px;top:calc(50% - 18px)}.handle.right{right:-19px;top:calc(50% - 18px)}.handle.top{top:-19px;left:calc(50% - 18px)}.handle.bottom{bottom:-19px;left:calc(50% - 18px)}.adjust-targets button{height:48px;font-size:9px}.nudge-direction-pad{width:224px;grid-template-columns:58px 108px 58px;grid-template-rows:54px 60px 54px}.nudge-direction-pad small{max-width:100px}.calibration-magnifier{width:102px;height:102px;left:calc(100% - 112px);margin-top:-114px}.recognition-page{padding-top:55px}.recognition-stats strong{font-size:12px}.recovery-panel{grid-template-columns:auto 1fr}.recovery-panel button{grid-column:1 / -1}.review-workspace{padding-top:15px}.review-metrics span{min-width:96px;padding:7px}.review-metrics strong{font-size:15px}.segmented{width:100%}.segmented button{flex:1;padding:0 6px}.toolbar-actions{padding-bottom:2px}.group-summary{padding-left:9px}.group-actions{display:grid;grid-template-columns:1fr 1fr}.group-actions .danger-button{grid-column:1 / -1}.review-footer{gap:5px}.review-footer>button{min-width:0;flex:1;padding:0 8px;font-size:10px}.color-usage-list{grid-template-columns:repeat(2,minmax(0,1fr))}.color-usage-list article{grid-template-columns:25px minmax(0,1fr) auto;padding:5px;gap:5px}.color-usage-list article>i{width:25px;height:25px}.editor-content{grid-template-columns:1fr}.editor-preview{min-height:145px}.dictionary-grid{grid-template-columns:repeat(2,1fr)}.source-locator-backdrop{padding:0}.source-locator{width:100%;height:100dvh;border-radius:0}.source-locator>header{min-height:66px;padding:8px 10px}.source-locator h2{font-size:15px}.source-locator header span{max-width:210px}.locator-actions{gap:0}.locator-actions b{width:40px}.source-locator>footer{min-height:62px}.source-locator>footer>span{display:none}.source-locator>footer button{flex:1}}
