/* Compact, reversible workflow chrome. Canvas dimensions retain the map ratio. */
.compact-layout .compact-progress-bar{display:flex!important;align-items:center;justify-content:space-between;gap:8px;min-height:34px;padding:0 4px;background:transparent}
.compact-layout .workflow-progress{display:flex;align-items:center;gap:4px;min-width:0;flex-wrap:wrap}
.compact-layout .workflow-progress button{display:flex;align-items:center;gap:6px;min-height:30px;padding:3px 9px;border:1px solid transparent;border-radius:5px;background:transparent;color:var(--ui-text-secondary);font-size:12px;box-shadow:none;white-space:nowrap}
.workflow-progress button>span{font-size:11px;border-radius:50%;width:18px;height:18px;display:grid;place-items:center;background:var(--ui-surface-muted)}
.compact-layout .workflow-progress button.current{background:var(--ui-primary-soft);border-color:var(--ui-primary-border);color:var(--ui-primary);font-weight:600}
.workflow-progress button.current>span{background:var(--ui-primary);color:white}
.compact-layout .workflow-progress button.done{color:var(--ui-primary)}
.compact-layout .workflow-mode-toggle{min-height:28px;padding:3px 8px;font-size:11px;white-space:nowrap}
.compact-layout .review-workbench>.compact-progress-bar{grid-area:1/1/2/3}
.compact-layout .unified-workbench.review-workbench{grid-template-rows:34px minmax(0,1fr);height:calc(100dvh - 106px)}
.compact-layout .review-workbench>.model-annotation-review{grid-area:2/2/3/3}
 /* Match compact-layout's narrow-screen specificity; otherwise its row 3
    covers the review controls with the canvas and intercepts mouse clicks. */
 .compact-layout .unified-workbench.review-workbench:not(.results-mode):not(.no-base-asset) .unified-map-panel{grid-area:2/1/3/2;height:100%;min-height:0}
.compact-layout .base-setup-workbench:not(.review-workbench):not(.no-base-asset)>.unified-map-grid{height:calc(100dvh - 200px);min-height:440px;max-height:none}
.compact-layout .base-setup-workbench:not(.review-workbench)>[aria-label="户型核对摘要"]{display:none}
.compact-layout .base-setup-workbench:not(.no-base-asset):not(.review-workbench) .unified-form-section{flex:0;gap:8px}
.compact-layout .base-setup-workbench .layout-actionbar{margin-top:0;padding-top:8px;justify-content:flex-start;flex-wrap:wrap}
.compact-layout .base-setup-workbench .layout-actionbar>button:not(.ghost):not(.danger):not(.secondary){margin-left:0}
.compact-layout [data-workflow-mode="direction"] .layout-actionbar>button:last-child{flex-basis:100%;order:2}
.compact-layout .base-setup-workbench .side-panel-notice{margin-top:0;font-size:11px;padding:5px 8px}
.compact-layout .base-setup-workbench .unified-inspector-head{padding-bottom:5px}
.compact-layout .base-summary-grid .setup-summary-only{display:flex;gap:8px;padding:4px 8px;min-height:32px}
.compact-layout .base-summary-grid .unified-card-head{display:none}
.compact-layout .base-summary-grid .setup-checklist{display:flex;gap:6px;flex:1;flex-wrap:wrap}
.compact-layout .base-summary-grid .setup-check-item{display:flex;flex-direction:row;align-items:center;gap:6px;min-height:24px;padding:2px 8px;flex:1;border-radius:4px;min-width:110px;text-align:left;background:var(--ui-surface-soft)}
.compact-layout .base-summary-grid .setup-check-item strong{font-size:11px}
.compact-layout .base-summary-grid .setup-check-item span{font-size:10px;margin-left:auto;order:2}
.compact-layout .base-summary-grid .setup-check-item small{display:none}
.compact-layout .base-summary-grid .setup-check-item.pending{background:var(--ui-danger-soft);border-color:var(--ui-danger-border)}
.compact-layout .no-base-asset .base-summary-grid{display:none}
.compact-layout .no-base-asset .unified-inspector-head{padding-right:0}
.compact-layout .no-base-asset .unified-side-panel{padding:16px 20px;max-width:1020px;margin:0 auto}
.compact-layout .no-base-asset .upload-create-form{grid-template-columns:1fr 1fr;gap:12px 16px}
.compact-layout .no-base-asset .upload-create-form>h3{display:none}
.compact-layout .upload-create-form .required-field{padding:9px 10px;border:1px solid var(--ui-border);border-radius:5px}
.compact-layout .upload-create-form .required-field.missing,.compact-layout .upload-create-form .current-required{border:1.5px solid #ce5151!important;box-shadow:0 0 0 2px #ce515110;background:var(--ui-danger-soft)}
.upload-required b{color:var(--ui-danger)}
.compact-layout .upload-create-form .upcoming input{background:white}
.compact-layout .upload-create-form>button{justify-self:end;min-width:230px}
.upload-notes{font-size:12px}.upload-notes summary{cursor:pointer;color:var(--ui-text-secondary);padding:4px}
.upload-notes textarea{margin-top:5px;width:100%;box-sizing:border-box}
.upload-confirm-summary{display:grid;grid-template-columns:80px 1fr;gap:8px;padding:12px;background:var(--ui-surface-soft);border-radius:6px}
.upload-confirm-summary dt{color:var(--ui-text-secondary)}.upload-confirm-summary dd{margin:0;overflow-wrap:anywhere}
.compact-layout .floating-operation-guide{width:244px;left:auto;right:calc(38% + 16px);bottom:auto;top:175px;background:rgba(231,247,248,.90);border-color:var(--ui-primary-border);box-shadow:0 3px 12px #25494f20}
.compact-layout .floating-operation-guide header{padding:4px 6px}
.compact-layout .floating-guide-drag{font-size:12px}
.compact-layout .workflow-notice{position:fixed;top:87px;right:24px;z-index:190;display:flex;align-items:flex-start;gap:12px;max-width:min(420px,calc(100vw - 32px));max-height:200px;overflow:auto;box-sizing:border-box;padding:10px 12px;border:1px solid var(--ui-danger-border);border-radius:7px;background:rgba(255,226,223,.91);color:var(--ui-danger);backdrop-filter:blur(5px);box-shadow:0 4px 14px #702b291a;font-size:12px;line-height:1.6}
.compact-layout .workflow-notice button{flex-shrink:0;background:transparent;border:0;color:inherit;min-height:24px;padding:0 5px}
.compact-layout .workflow-notice.folded{padding:4px 8px;border-radius:20px}
.compact-layout .workflow-notice.info{color:var(--ui-primary);border-color:var(--ui-primary-border);background:rgba(231,247,244,.93)}
.compact-layout .balcony-review-hint{display:flex;gap:8px;align-items:center;padding:6px 8px;background:var(--ui-surface-soft);border:1px solid var(--ui-primary-border);border-radius:5px;margin:0;font-size:12px}
@media(max-width:850px){
 .compact-layout .compact-progress-bar{align-items:flex-start;flex-wrap:wrap}
 .compact-layout .workflow-progress button{padding:3px 5px;font-size:11px}
 .compact-layout .unified-workbench.review-workbench{grid-template-columns:1fr;grid-template-rows:auto auto auto;height:auto}
 .compact-layout .review-workbench>.compact-progress-bar{grid-area:1/1/2/2}
 .compact-layout .unified-workbench.review-workbench:not(.results-mode):not(.no-base-asset) .unified-map-panel{grid-area:2/1/3/2;height:auto}
 .compact-layout .review-workbench>.model-annotation-review{grid-area:3/1/4/2;height:auto;max-height:none}
 .compact-layout .base-setup-workbench:not(.review-workbench):not(.no-base-asset)>.unified-map-grid{height:auto;min-height:0}
 .compact-layout .base-setup-workbench:not(.review-workbench):not(.no-base-asset) .unified-map-panel{height:auto;min-height:0}
 /* Reserve height for the drawing surface itself, in addition to its tools. */
 .compact-layout .unified-workbench:not(.results-mode):not(.no-base-asset) .unified-map-panel .unified-map-stage{flex:none;height:clamp(260px,40dvh,420px);min-height:260px}
 .compact-layout .no-base-asset .upload-create-form{grid-template-columns:1fr}
 .compact-layout .no-base-asset .unified-side-panel{padding:12px}
 .compact-layout .base-summary-grid .setup-check-item{flex-basis:35%}
 .compact-layout .floating-operation-guide{max-width:calc(100vw - 80px)}
}
@media(max-height:740px) and (min-width:851px){
 .compact-layout .base-setup-workbench .status-item{padding:5px 7px}
 .compact-layout .base-setup-workbench .status-value{font-size:12px}
 .compact-layout .base-setup-workbench .unified-side-panel{padding:8px;gap:5px}
 .compact-layout .base-setup-workbench .unified-form-section{gap:5px}
 .compact-layout .base-setup-workbench:not(.review-workbench):not(.no-base-asset)>.unified-map-grid{min-height:380px}
}
/* Keep the four prerequisites next to review, without another full-width row. */
.compact-layout .model-annotation-review-head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:5px}
.compact-layout .model-annotation-review-head h3{grid-area:1/1/2/2;margin:0;white-space:nowrap;min-width:0}
.compact-layout .model-annotation-review-head>.help-tip{grid-area:2/1/3/2}
.compact-layout .model-annotation-review-head>.model-review-more{grid-area:2/2/3/3;margin:0;justify-self:end}
.compact-layout .model-annotation-review-head>button:last-child{grid-area:2/3/3/4}
.compact-layout .review-basic-status{grid-area:1/2/2/4;display:flex;justify-content:flex-end;gap:4px;flex-wrap:nowrap;min-width:0}
.compact-layout .review-basic-status button{min-height:26px;padding:3px 6px;font-size:11px}
.review-basic-status button{min-height:27px;padding:4px 7px;font-size:11px;white-space:nowrap;border:1px solid var(--ui-primary-border);background:var(--ui-surface-soft);color:var(--ui-primary)}
.review-basic-status button.missing{background:var(--ui-danger-soft);color:var(--ui-danger);border-color:var(--ui-danger-border)}
.model-annotation-review-head .model-review-more{margin-left:auto}
.direction-confirm-actions,.position-facing-summary{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px}
.direction-confirm-actions .missing{font-size:12px;color:var(--ui-danger)}
.direction-confirm-actions .ready{font-size:12px;color:var(--ui-primary)}
.direction-fine-tune{margin-top:8px;font-size:12px}
.position-facing-summary{padding:8px;border:1px solid var(--ui-primary-border);border-radius:6px;font-size:12px}
.manual-retained-guide{display:flex;gap:6px;padding:7px 9px;border-radius:6px;background:var(--ui-surface-soft);font-size:12px;line-height:1.5}
.manual-retained-guide strong{white-space:nowrap}
.center-review-help{font-size:13px;line-height:1.65;margin:4px 0 10px}
.center-review-status{font-size:13px;margin:8px 0;color:#9b4b2d}
.center-review-actions{margin-top:10px!important;gap:8px}
@media(max-width:850px){.manual-retained-guide{display:block}}

/* Explicit mode choice; manual tasks keep their controls beside the drawing. */
.workflow-input-modes{display:flex;gap:2px;padding:2px;border:1px solid var(--ui-primary-border);border-radius:6px;background:#fff;flex-shrink:0}
.compact-layout .workflow-input-modes button{min-height:27px;padding:3px 9px;background:transparent;border:0;border-radius:4px;font-size:12px;color:var(--ui-text-secondary);box-shadow:none;white-space:nowrap}
.compact-layout .workflow-input-modes button[aria-pressed="true"]{background:var(--ui-primary);color:#fff}
.compact-layout .recognition-entry{display:flex;flex-direction:column;justify-content:flex-start;gap:14px}
.recognition-entry p{margin:0;line-height:1.6}
.recognition-entry-steps{display:flex;flex-wrap:wrap;gap:6px;font-size:12px;color:var(--ui-text-secondary)}
.recognition-entry-steps span{padding:5px 7px;background:var(--ui-surface-soft);border-radius:4px}
.compact-layout .unified-workbench.manual-workbench:not(.results-mode):not(.review-workbench):not(.no-base-asset)>.unified-map-grid{height:calc(100dvh - 150px);min-height:440px;max-height:none}
.compact-layout .manual-workbench .unified-map-grid{grid-template-columns:minmax(0,1fr) minmax(340px,400px)!important}
.compact-layout .manual-workbench .unified-side-panel{display:flex;flex-direction:column;gap:10px;overflow:auto;align-items:stretch;scrollbar-gutter:auto;padding:12px}
.compact-layout .manual-workbench .unified-form-section{flex:0 0 auto;overflow:visible;gap:8px}
.compact-layout .manual-workbench .layout-form-body{display:flex;flex-direction:column;flex:none;overflow:visible;padding:0;gap:8px}
.compact-layout .manual-workbench .layout-actionbar,.compact-layout .manual-workbench .rule2-step-nav{margin-top:0;justify-content:flex-start}
.compact-layout .manual-workbench .layout-actionbar>button:not(.ghost):not(.danger):not(.secondary){margin-left:0}
.manual-type-picker{display:grid;gap:7px;border:1px solid var(--ui-primary-border);border-radius:6px;padding:8px}
.manual-type-picker.missing{border-color:var(--ui-danger-border);background:var(--ui-danger-soft)}
.manual-field-title{font-size:12px;font-weight:600}
.manual-type-picker.missing>.manual-field-title{color:var(--ui-danger)}
.compact-layout .manual-workbench .object-option-grid{max-height:none;overflow:visible;padding:0;grid-template-columns:repeat(4,minmax(0,1fr))}
.manual-workbench summary{cursor:pointer;font-size:12px;color:var(--ui-text-secondary);padding:5px 0}
.manual-current-hint{font-size:12px;color:var(--ui-text-secondary);margin:0;min-height:18px}
.manual-save-bar{display:flex;flex-wrap:wrap;gap:6px;margin:0!important}
.compact-layout .manual-save-bar>button:first-child{flex:1}
.manual-advanced{border-top:1px solid var(--ui-border);padding-top:3px;font-size:12px}
.manual-advanced>.row,.manual-advanced>input,.manual-advanced>select{margin-top:6px}
.manual-saved-section{border-top:1px solid var(--ui-border);display:grid;gap:7px;padding-top:8px;flex-shrink:0}
.manual-saved-list{max-height:170px;overflow:auto;display:grid;gap:4px}
.manual-saved-row{display:flex;gap:3px;align-items:center;background:var(--ui-surface-soft);border-radius:4px;padding:3px}
.compact-layout .manual-saved-row button{min-height:27px;font-size:12px;padding:3px 6px}
.manual-saved-row .manual-locate{flex:1;min-width:0;text-align:left;white-space:normal;overflow-wrap:anywhere}
.manual-next{width:100%;min-height:34px}
.manual-missing{color:var(--ui-danger);font-size:12px;margin:0}
.manual-position-context{font-size:12px;line-height:1.5;color:var(--ui-text-secondary);background:var(--ui-surface-soft);padding:6px 8px;border-radius:5px}
@media(max-width:850px){
 .compact-layout .unified-workbench.manual-workbench:not(.results-mode):not(.review-workbench):not(.no-base-asset)>.unified-map-grid{grid-template-columns:1fr!important;height:auto;min-height:0}
 .compact-layout .manual-workbench .unified-map-panel{height:auto!important;min-height:0!important}
 .compact-layout .manual-workbench .unified-side-panel{overflow:visible}
 .compact-layout .workflow-input-modes{margin-left:auto}
}
.compact-layout .draft-presence-banner{display:none}
.opening-highlight-layer{position:absolute;inset:0;z-index:4;pointer-events:none;overflow:hidden}
.opening-highlight-box{position:absolute;box-sizing:border-box;border:4px solid var(--ui-info-text);outline:4px solid white;border-radius:3px;background:rgba(8,122,193,.28);box-shadow:0 0 0 5px rgba(var(--ui-info-text-rgb), 0.3333)}
.opening-highlight-dot{position:absolute;width:16px;height:16px;box-sizing:border-box;border:2px solid white;border-radius:50%;background:var(--ui-info-text);transform:translate(-50%,-50%)}
.opening-highlight-label{position:absolute;padding:4px 8px;color:white;background:var(--ui-info-text);border:1px solid white;border-radius:4px;font-size:13px;line-height:18px;white-space:nowrap}
.opening-offscreen-hint{position:absolute;bottom:12px;right:12px;max-width:calc(100% - 24px);padding:8px 10px;border:2px solid var(--ui-info-text);border-radius:5px;background:var(--ui-info-soft);color:var(--ui-info-text);font-size:13px;line-height:1.5}
