.floating-panel{position:fixed;display:flex;flex-direction:column;border-radius:8px;overflow:hidden;box-shadow:0 8px 24px #0000004d;border-width:1px;border-style:solid;border-color:var(--color-border, #2d3748);background:var(--color-background, #0f1115);color:var(--color-text, #e5e7eb);pointer-events:auto}.floating-panel--light{background:#f4f7fa;border-color:#c0c9d6;box-shadow:0 12px 40px #1a23321a,0 2px 8px #1a23320f;color:#1a2332}.floating-panel--light:before{content:"";position:absolute;top:0;left:0;width:3px;height:100%;background:linear-gradient(180deg,#3d6b99,#5a8abf,#3d6b99);border-radius:8px 0 0 8px;z-index:1}.floating-panel--light .floating-panel__titlebar{background:linear-gradient(180deg,#e8edf3,#dfe5ed);border-bottom-color:#c8d1dc}.floating-panel--light .floating-panel__title{color:#2d3a4a}.floating-panel--light .floating-panel__grip-icon{background:repeating-linear-gradient(90deg,#b0bac8 0px,#b0bac8 2px,transparent 2px,transparent 6px)}.floating-panel--light .floating-panel__icon-button{color:#8a95a5}.floating-panel--light .floating-panel__icon-button:hover{background:#d0d8e2;color:#3d4e62}.floating-panel--light .floating-panel__icon-button--danger:hover{background:#f5d4d4;color:#c0392b}.floating-panel--light .floating-panel__content{background:#f4f7fa}.floating-panel--light:focus-within{border-color:#a0b0c0}.floating-panel--interacting{-webkit-user-select:none;user-select:none}.floating-panel:focus-within{border-color:var(--color-border-focus, #4b5563)}.floating-panel__overlay{position:fixed;inset:0;background:transparent;pointer-events:all}.floating-panel__titlebar{display:flex;align-items:center;gap:8px;height:34px;min-height:34px;padding:0 8px;background:var(--color-surface, #151923);border-bottom:1px solid var(--color-border, #2d3748);cursor:grab}.floating-panel--interacting .floating-panel__titlebar{cursor:grabbing;background:var(--color-surface-active, #1e293b)}.floating-panel__title{flex:0 1 auto;font-size:.95rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:40%}.floating-panel__grip{flex:1 1 auto;display:flex;align-items:center;justify-content:center;height:100%;pointer-events:none}.floating-panel__grip-icon{display:block;width:46px;height:4px;background:repeating-linear-gradient(90deg,var(--color-text-tertiary, #4b5563) 0px,var(--color-text-tertiary, #4b5563) 2px,transparent 2px,transparent 6px);border-radius:2px;opacity:.6;transition:opacity .15s ease}.floating-panel__titlebar:hover .floating-panel__grip-icon{opacity:1}.floating-panel__actions{display:flex;align-items:center;gap:4px;flex:0 0 auto}.floating-panel__icon-button{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;border:none;background:transparent;color:var(--color-text-secondary, #9ca3af);border-radius:6px;cursor:pointer;transition:background .15s ease,color .15s ease;font-size:13px;line-height:1}.floating-panel__icon-button:hover{background:var(--color-surface-hover, #1f2937);color:var(--color-text, #e5e7eb)}.floating-panel__icon-button:focus{outline:none}.floating-panel__icon-button:focus-visible{outline:2px solid var(--color-accent, #3573ff);outline-offset:2px}.floating-panel__icon-button--danger:hover{background:#b91c1c2e;color:#fca5a5}.floating-panel__content{flex:1 1 auto;min-height:0;overflow:auto;padding:12px;background:var(--color-background, #0f1115)}.floating-panel--collapsed .floating-panel__content{display:none}.floating-panel__handle{position:absolute;background:transparent}.floating-panel__handle--n,.floating-panel__handle--s{left:8px;right:8px;height:6px}.floating-panel__handle--n{top:0;cursor:ns-resize}.floating-panel__handle--s{bottom:0;cursor:ns-resize}.floating-panel__handle--e,.floating-panel__handle--w{top:8px;bottom:8px;width:6px}.floating-panel__handle--e{right:0;cursor:ew-resize}.floating-panel__handle--w{left:0;cursor:ew-resize}.floating-panel__handle--ne,.floating-panel__handle--nw,.floating-panel__handle--se,.floating-panel__handle--sw{width:12px;height:12px}.floating-panel__handle--ne{top:0;right:0;cursor:nesw-resize}.floating-panel__handle--nw{top:0;left:0;cursor:nwse-resize}.floating-panel__handle--se{bottom:0;right:0;cursor:nwse-resize}.floating-panel__handle--sw{bottom:0;left:0;cursor:nesw-resize}.floating-panel__handle:after{content:"";position:absolute;inset:0;opacity:0;transition:opacity .15s ease}.floating-panel__handle--n:after,.floating-panel__handle--s:after{background:linear-gradient(90deg,transparent,rgba(53,115,255,.14),transparent)}.floating-panel__handle--e:after,.floating-panel__handle--w:after{background:linear-gradient(180deg,transparent,rgba(53,115,255,.14),transparent)}.floating-panel__handle:hover:after{opacity:1}@media(prefers-reduced-motion:reduce){.floating-panel__grip-icon,.floating-panel__icon-button,.floating-panel__handle:after{transition:none}}@media print{.no-print{display:none!important}.rebar-summary-dashboard{color:#000!important;background:#fff!important}.rebar-summary-dashboard section{break-inside:avoid;box-shadow:none!important;border:1px solid #ccc!important}}.label-preview{position:fixed;top:var(--space-6);right:var(--space-6);z-index:10000;display:flex;flex-direction:column;overflow:hidden;background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--elev-modal);transition:width var(--transition-base),height var(--transition-base),transform var(--transition-base)}.label-preview--dragging,.label-preview--moving{transition:none;-webkit-user-select:none;user-select:none}.label-preview--moving .label-preview__header{cursor:grabbing}.label-preview__header{display:flex;align-items:center;justify-content:space-between;min-height:var(--space-12);padding:var(--space-3) var(--space-4);background:var(--color-background);border-bottom:1px solid var(--color-border);cursor:grab}.label-preview__header:focus{outline:none}.label-preview__header:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}.label-preview__title{margin:0;font-size:var(--text-md);font-weight:var(--weight-semibold);color:var(--color-text)}.label-preview__actions{display:flex;gap:var(--space-2)}.label-preview__button{display:inline-flex;align-items:center;justify-content:center;width:var(--space-8);height:var(--space-8);padding:0;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-textMuted);font-size:var(--text-sm);line-height:1;cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast),border-color var(--transition-fast)}.label-preview__button:hover{background:var(--color-surfaceAlt);color:var(--color-text)}.label-preview__button:focus{outline:none}.label-preview__button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.label-preview__button--close:hover{background:var(--color-error-soft);border-color:var(--color-error);color:var(--color-error)}.label-preview__content{flex:1;min-height:0;padding:var(--space-4)}.label-preview--collapsed .label-preview__content{display:none}.label-preview__iframe{width:100%;height:100%;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface)}.label-preview__empty{height:100%;display:flex;align-items:center;justify-content:center;color:var(--color-textMuted);font-size:var(--text-sm)}.label-preview__handle{position:absolute;background:transparent;z-index:2}.label-preview__handle:focus{outline:none}.label-preview__handle:focus-visible{background:var(--color-primary-soft)}.label-preview__handle--left{top:0;bottom:0;left:0;width:var(--space-2);cursor:ew-resize}.label-preview__handle--right{top:0;bottom:0;right:0;width:var(--space-2);cursor:ew-resize}.label-preview__handle--bottom{left:0;right:0;bottom:0;height:var(--space-2);cursor:ns-resize}@media(prefers-reduced-motion:reduce){.label-preview,.label-preview__button{transition:none}}@media(prefers-contrast:high){.label-preview,.label-preview__header,.label-preview__button,.label-preview__iframe{border-width:2px}}.resizable-pdf-dialog-backdrop{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;background:#00000080}.resizable-pdf-dialog{display:flex;flex-direction:column;max-width:90vw;max-height:90vh;border-radius:8px;overflow:hidden;box-shadow:0 8px 32px #0000004d;border:1px solid var(--color-border, #2d3748);background:var(--color-background-dialog, #fff);transition:width .25s ease-out,max-height .25s ease-out;position:relative}.resizable-pdf-dialog--collapsed{max-height:var(--collapsed-height, 48px);overflow:hidden}.resizable-pdf-dialog--dragging{transition:none;-webkit-user-select:none;user-select:none}.resizable-pdf-dialog__header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--color-surface, #f3f4f6);border-bottom:1px solid var(--color-border, #e5e7eb);min-height:48px;flex-shrink:0;cursor:grab}.resizable-pdf-dialog__header:focus{outline:none}.resizable-pdf-dialog__header:focus-visible{outline:2px solid var(--color-accent, #3b82f6);outline-offset:-2px}.resizable-pdf-dialog--collapsed .resizable-pdf-dialog__header{border-bottom:none}.resizable-pdf-dialog__title{margin:0;font-size:1.25rem;font-weight:600;color:var(--color-text, #1f2937)}.resizable-pdf-dialog__header-actions{display:flex;align-items:center;gap:8px}.resizable-pdf-dialog__collapse-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;background:transparent;border:1px solid var(--color-border, #d1d5db);border-radius:4px;cursor:pointer;color:var(--color-text-secondary, #6b7280);transition:all .15s ease}.resizable-pdf-dialog__collapse-btn:hover{background:var(--color-surface-hover, #e5e7eb);color:var(--color-text, #1f2937)}.resizable-pdf-dialog__collapse-btn:focus{outline:none}.resizable-pdf-dialog__collapse-btn:focus-visible{outline:2px solid var(--color-accent, #3b82f6);outline-offset:2px}.resizable-pdf-dialog__collapse-icon{font-size:10px;line-height:1;transition:transform .2s ease}.resizable-pdf-dialog__close-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;background:transparent;border:1px solid var(--color-border, #d1d5db);border-radius:4px;cursor:pointer;color:var(--color-text-secondary, #6b7280);transition:all .15s ease}.resizable-pdf-dialog__close-btn:hover{background:var(--color-error-light, #fee2e2);border-color:var(--color-error, #ef4444);color:var(--color-error, #ef4444)}.resizable-pdf-dialog__close-btn:focus{outline:none}.resizable-pdf-dialog__close-btn:focus-visible{outline:2px solid var(--color-accent, #3b82f6);outline-offset:2px}.resizable-pdf-dialog__handle-left{position:absolute;left:0;top:0;bottom:0;width:8px;cursor:ew-resize;background:transparent;z-index:10;transition:background .15s ease}.resizable-pdf-dialog__handle-left:after{content:"";position:absolute;left:2px;top:50%;transform:translateY(-50%);width:3px;height:40px;background:repeating-linear-gradient(180deg,var(--color-text-tertiary, #9ca3af) 0px,var(--color-text-tertiary, #9ca3af) 2px,transparent 2px,transparent 6px);border-radius:2px;opacity:0;transition:opacity .15s ease}.resizable-pdf-dialog__handle-left:hover:after,.resizable-pdf-dialog__handle-left:focus-visible:after{opacity:.6}.resizable-pdf-dialog__handle-left:focus{outline:none}.resizable-pdf-dialog__handle-left:focus-visible{background:#3b82f61a}.resizable-pdf-dialog__handle-left:focus-visible:after{opacity:1}.resizable-pdf-dialog__handle-right{position:absolute;right:0;top:0;bottom:0;width:8px;cursor:ew-resize;background:transparent;z-index:10;transition:background .15s ease}.resizable-pdf-dialog__handle-right:after{content:"";position:absolute;right:2px;top:50%;transform:translateY(-50%);width:3px;height:40px;background:repeating-linear-gradient(180deg,var(--color-text-tertiary, #9ca3af) 0px,var(--color-text-tertiary, #9ca3af) 2px,transparent 2px,transparent 6px);border-radius:2px;opacity:0;transition:opacity .15s ease}.resizable-pdf-dialog__handle-right:hover:after,.resizable-pdf-dialog__handle-right:focus-visible:after{opacity:.6}.resizable-pdf-dialog__handle-right:focus{outline:none}.resizable-pdf-dialog__handle-right:focus-visible{background:#3b82f61a}.resizable-pdf-dialog__handle-right:focus-visible:after{opacity:1}.resizable-pdf-dialog__content{flex:1;overflow:auto;padding:0}.resizable-pdf-dialog--collapsed .resizable-pdf-dialog__content{display:none}.resizable-pdf-dialog--dragging .resizable-pdf-dialog__handle-left:after,.resizable-pdf-dialog--dragging .resizable-pdf-dialog__handle-right:after{opacity:1;background:repeating-linear-gradient(180deg,var(--color-accent, #3b82f6) 0px,var(--color-accent, #3b82f6) 2px,transparent 2px,transparent 6px)}.resizable-pdf-dialog--dragging .resizable-pdf-dialog__handle-left,.resizable-pdf-dialog--dragging .resizable-pdf-dialog__handle-right{background:#3b82f61a}.resizable-pdf-dialog--moving{transition:none;-webkit-user-select:none;user-select:none}.resizable-pdf-dialog--moving .resizable-pdf-dialog__header{cursor:grabbing}@media(max-width:600px){.resizable-pdf-dialog{width:100%!important;max-width:100%;max-height:100%;border-radius:0;border:none}.resizable-pdf-dialog__handle-left,.resizable-pdf-dialog__handle-right{display:none}}@media(prefers-contrast:high){.resizable-pdf-dialog{border-width:2px}.resizable-pdf-dialog__header{border-bottom-width:2px}.resizable-pdf-dialog__collapse-btn:focus-visible,.resizable-pdf-dialog__close-btn:focus-visible,.resizable-pdf-dialog__handle-left:focus-visible,.resizable-pdf-dialog__handle-right:focus-visible{outline-width:3px}}@media(prefers-reduced-motion:reduce){.resizable-pdf-dialog{transition:none}.resizable-pdf-dialog__collapse-icon,.resizable-pdf-dialog__handle-left:after,.resizable-pdf-dialog__handle-right:after{transition:none}}.extraction-results{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:13px}.extraction-results__header{display:flex;align-items:center;gap:16px;padding:12px 16px;background:#f5f5f5;border-bottom:1px solid #e0e0e0;flex-wrap:wrap}.extraction-results__backend{display:flex;align-items:center;gap:8px}.extraction-results__backend-badge{display:inline-flex;align-items:center;padding:4px 12px;border-radius:16px;font-weight:600;font-size:12px}.extraction-results__backend-badge--textract{background:#e3f2fd;color:#1565c0}.extraction-results__backend-badge--tesseract{background:#fff3e0;color:#ef6c00}.extraction-results__time{color:#666;font-size:12px}.extraction-results__confidence{color:#333}.extraction-results__vision{margin-left:auto}.extraction-results__vision-badge{display:inline-flex;align-items:center;padding:4px 12px;border-radius:16px;font-size:12px;font-weight:500}.extraction-results__vision-badge--verified{background:#e8f5e9;color:#2e7d32}.extraction-results__vision-badge--review{background:#fff3e0;color:#e65100}.extraction-results__summary{display:flex;gap:16px;padding:8px 16px;background:#fafafa;border-bottom:1px solid #e0e0e0}.extraction-results__stat{display:inline-flex;align-items:center;gap:4px;font-size:12px}.extraction-results__stat:before{content:"";width:8px;height:8px;border-radius:50%}.extraction-results__stat--verified:before{background:#4caf50}.extraction-results__stat--corrected:before{background:#2196f3}.extraction-results__stat--suspicious:before{background:#ff9800}.extraction-results__stat--invalid:before{background:#f44336}.extraction-results--error,.extraction-results--empty{display:flex;align-items:center;justify-content:center;min-height:200px;background:#f5f5f5;border-radius:8px}.extraction-results__error{display:flex;align-items:center;gap:8px;color:#d32f2f;font-weight:500}.extraction-results__error-icon{font-size:24px}.extraction-table{margin:16px;overflow-x:auto}.extraction-table__grid{width:100%;border-collapse:collapse;table-layout:auto}.extraction-cell{border:1px solid #e0e0e0;padding:8px 12px;text-align:left;position:relative;cursor:pointer;transition:all .15s ease}.extraction-cell:hover{background-color:#f5f5f5}.extraction-cell--header{background:#f0f0f0;font-weight:600;cursor:default;position:sticky;top:0;z-index:10}.extraction-cell--selected{outline:2px solid #1976d2;outline-offset:-2px;background-color:#e3f2fd!important}.extraction-cell--verified{background-color:#e8f5e9;border-color:#a5d6a7}.extraction-cell--verified:after{content:"✓";position:absolute;top:2px;right:4px;font-size:10px;color:#4caf50}.extraction-cell--corrected{background-color:#e3f2fd;border-color:#90caf9}.extraction-cell--corrected:after{content:"⟳";position:absolute;top:2px;right:4px;font-size:10px;color:#2196f3}.extraction-cell--suspicious{background-color:#fff3e0;border-color:#ffcc80}.extraction-cell--suspicious:after{content:"?";position:absolute;top:2px;right:4px;font-size:10px;font-weight:700;color:#ff9800}.extraction-cell--invalid{background-color:#ffebee;border-color:#ef9a9a}.extraction-cell--invalid:after{content:"✗";position:absolute;top:2px;right:4px;font-size:10px;color:#f44336}.extraction-cell--low-confidence{border-style:dashed}.extraction-cell__text{display:block}.extraction-cell__confidence{display:block;font-size:10px;color:#757575;margin-top:2px}.extraction-row:hover{background-color:#fafafa}.extraction-row:hover .extraction-cell:not(.extraction-cell--selected){background-color:inherit}.user-menu-dropdown{position:relative}.user-menu-dropdown__trigger{display:inline-flex;align-items:center;gap:var(--space-sm);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surfaceAlt);color:var(--color-text);padding:var(--space-sm) var(--space-md);cursor:pointer}.user-menu-dropdown__trigger:hover{background:var(--color-surface)}.user-menu-dropdown__trigger-text{font-size:var(--text-sm);color:var(--color-textMuted);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-menu-dropdown__avatar{width:32px;height:32px;border-radius:var(--radius-full, 9999px);background:var(--color-primary);color:var(--color-onAccent);display:inline-flex;align-items:center;justify-content:center;font-size:var(--text-sm);font-weight:700;flex-shrink:0}.user-menu-dropdown__menu{position:absolute;right:0;top:calc(100% + var(--space-sm));min-width:240px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--elev-dropdown, var(--elev-popover));z-index:1000}.user-menu-dropdown__header{padding:var(--space-md)}.user-menu-dropdown__name,.user-menu-dropdown__email{margin:0}.user-menu-dropdown__name{font-size:var(--text-sm);font-weight:600;color:var(--color-text)}.user-menu-dropdown__email{margin-top:var(--space-xs);font-size:var(--text-sm);color:var(--color-textMuted)}.user-menu-dropdown__divider{border-top:1px solid var(--color-border)}.user-menu-dropdown__item{width:100%;border:0;background:transparent;color:var(--color-text);cursor:pointer;display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);font-size:var(--text-sm)}.user-menu-dropdown__item:hover{background:var(--color-surfaceAlt)}.user-menu-dropdown__item--danger:hover{color:var(--color-error)}.progress-indicator{--pi-bg: var(--bg-secondary, #f8f9fa);--pi-bg-empty: var(--bg-success-subtle, #e8f5e9);--pi-bg-complete: var(--bg-success-subtle, #d4edda);--pi-border-radius: 8px;--pi-font-mono: var(--font-mono, "Consolas", "Monaco", "Courier New", monospace);--pi-color-primary: var(--color-primary, #2196f3);--pi-color-success: var(--color-success, #28a745);--pi-color-text: var(--text-primary, #212529);--pi-color-text-secondary: var(--text-secondary, #6c757d);--pi-color-text-muted: var(--text-tertiary, #adb5bd);--pi-track-bg: var(--bg-track, #e9ecef);--pi-transition: .3s ease}.progress-indicator{display:flex;flex-direction:column;gap:10px;padding:14px 18px;background:var(--pi-bg);border-radius:var(--pi-border-radius);font-family:var(--pi-font-mono);font-size:13px;line-height:1.4;border:1px solid transparent;transition:background var(--pi-transition),border-color var(--pi-transition),box-shadow var(--pi-transition)}.progress-indicator--empty{background:var(--pi-bg-empty);border-color:var(--pi-color-success)}.progress-indicator--not-started{background:var(--pi-bg);opacity:.9}.progress-indicator--complete{background:var(--pi-bg-complete)}.progress-indicator--celebration{border:2px solid var(--pi-color-success);box-shadow:0 0 0 3px #28a74526;animation:celebration-pulse 2s ease-in-out infinite}@keyframes celebration-pulse{0%,to{box-shadow:0 0 0 3px #28a74526}50%{box-shadow:0 0 0 6px #28a7451a}}.progress-indicator__header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px}.progress-indicator__stats{display:flex;gap:16px;align-items:baseline}.progress-indicator__counts{color:var(--pi-color-text-secondary);font-size:12px;letter-spacing:.02em}.progress-indicator__percentage{font-weight:700;font-size:18px;color:var(--pi-color-text);font-variant-numeric:tabular-nums;min-width:48px;text-align:right}.progress-indicator--complete .progress-indicator__percentage{color:var(--pi-color-success)}.progress-indicator__complete-label{display:inline-flex;align-items:center;gap:6px;color:var(--pi-color-success);font-weight:600;font-size:13px;animation:fade-in .3s ease-out}@keyframes fade-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.progress-indicator__track{height:10px;background:var(--pi-track-bg);border-radius:5px;overflow:hidden;position:relative}.progress-indicator__fill{height:100%;background:var(--pi-color-primary);border-radius:5px;position:relative;min-width:0}.progress-indicator__fill--animated{transition:width .4s cubic-bezier(.4,0,.2,1)}.progress-indicator__fill--success{background:var(--pi-color-success)}.progress-indicator__fill:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.2) 50%,transparent 100%);animation:shimmer 2s infinite}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.progress-indicator__fill--success:after{animation:none;background:none}.progress-indicator__time-info{display:flex;justify-content:space-between;font-size:11px;color:var(--pi-color-text-muted);font-variant-numeric:tabular-nums}.progress-indicator__duration{display:flex;align-items:center;gap:4px}.progress-indicator__eta{text-align:right}.progress-indicator--complete .progress-indicator__eta{color:var(--pi-color-success);font-weight:500}.progress-indicator__empty-message{display:flex;align-items:center;justify-content:center;gap:10px;color:var(--pi-color-success);font-weight:600;font-size:14px;padding:8px 0}.progress-indicator__success-icon{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;background:var(--pi-color-success);color:#fff;border-radius:50%;font-size:13px;font-weight:700;flex-shrink:0;animation:pop-in .3s cubic-bezier(.175,.885,.32,1.275)}@keyframes pop-in{0%{transform:scale(0);opacity:0}70%{transform:scale(1.1)}to{transform:scale(1);opacity:1}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:480px){.progress-indicator{padding:12px 14px;gap:8px}.progress-indicator__header{flex-direction:column;align-items:flex-start}.progress-indicator__stats{width:100%;justify-content:space-between}.progress-indicator__percentage{font-size:16px}}@media(prefers-color-scheme:dark){.progress-indicator{--pi-bg: #1e1e1e;--pi-bg-empty: #1b3d2a;--pi-bg-complete: #1b3d2a;--pi-color-text: #e0e0e0;--pi-color-text-secondary: #a0a0a0;--pi-color-text-muted: #707070;--pi-track-bg: #333333}}@media(prefers-reduced-motion:reduce){.progress-indicator,.progress-indicator__fill,.progress-indicator__success-icon,.progress-indicator__complete-label{animation:none;transition:none}.progress-indicator__fill:after{animation:none}.progress-indicator--celebration{animation:none}}.approval-controls{display:flex;align-items:center;gap:16px;padding:8px 16px;background:var(--approval-bg, #f8f9fa);border-radius:8px;box-shadow:0 1px 3px #0000001a}.approval-controls__badge{display:inline-flex;align-items:center;padding:4px 12px;border-radius:16px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap}.approval-controls__badge--extracting{background:#e3f2fd;color:#1565c0;border:1px solid #90caf9}.approval-controls__badge--review{background:#fff3e0;color:#e65100;border:1px solid #ffcc80}.approval-controls__badge--validated{background:#e8f5e9;color:#2e7d32;border:1px solid #a5d6a7}.approval-controls__badge--exported{background:#e8eaf6;color:#3949ab;border:1px solid #9fa8da}.approval-controls__badge--rejected{background:#ffebee;color:#c62828;border:1px solid #ef9a9a}.approval-controls__actions{display:flex;align-items:center;gap:8px;margin-left:auto}.approval-controls__button{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 16px;border:1px solid transparent;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:all .15s ease;white-space:nowrap}.approval-controls__button:focus{outline:2px solid var(--focus-ring, #2196f3);outline-offset:2px}.approval-controls__button:disabled{opacity:.6;cursor:not-allowed}.approval-controls__button--validate{background:#f5f5f5;color:#424242;border-color:#e0e0e0}.approval-controls__button--validate:hover:not(:disabled){background:#eee;border-color:#bdbdbd}.approval-controls__button--validate:active:not(:disabled){background:#e0e0e0}.approval-controls__button--export{background:#e3f2fd;color:#1565c0;border-color:#90caf9}.approval-controls__button--export:hover:not(:disabled){background:#bbdefb;border-color:#64b5f6}.approval-controls__button--export:active:not(:disabled){background:#90caf9}.approval-controls__button--reject{background:#ffebee;color:#c62828;border-color:#ef9a9a}.approval-controls__button--reject:hover:not(:disabled){background:#ffcdd2;border-color:#e57373}.approval-controls__button--reject:active:not(:disabled){background:#ef9a9a}.approval-controls__button--submit{background:#4caf50;color:#fff;border-color:#43a047;font-weight:600}.approval-controls__button--submit:hover:not(:disabled){background:#43a047;border-color:#388e3c}.approval-controls__button--submit:active:not(:disabled){background:#388e3c}.approval-controls__spinner{display:inline-block;width:14px;height:14px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:approval-controls-spin .8s linear infinite}@keyframes approval-controls-spin{to{transform:rotate(360deg)}}.approval-controls__export-container{position:relative}.approval-controls__export-menu{position:absolute;top:100%;right:0;margin-top:4px;min-width:160px;background:#fff;border:1px solid #e0e0e0;border-radius:6px;box-shadow:0 4px 12px #00000026;z-index:1000;overflow:hidden;animation:approval-controls-fade-in .15s ease}@keyframes approval-controls-fade-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.approval-controls__export-option{display:block;width:100%;padding:10px 16px;border:none;background:transparent;color:#212121;font-size:14px;text-align:left;cursor:pointer;transition:background .1s ease}.approval-controls__export-option:hover{background:#f5f5f5}.approval-controls__export-option:focus{background:#e3f2fd;outline:none}.approval-controls__export-option:active{background:#e0e0e0}.approval-controls__dialog-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000;animation:approval-controls-overlay-fade .2s ease}@keyframes approval-controls-overlay-fade{0%{opacity:0}to{opacity:1}}.approval-controls__dialog{background:#fff;border-radius:12px;box-shadow:0 8px 32px #0003;width:100%;max-width:480px;margin:16px;animation:approval-controls-dialog-slide .2s ease}@keyframes approval-controls-dialog-slide{0%{opacity:0;transform:scale(.95) translateY(-10px)}to{opacity:1;transform:scale(1) translateY(0)}}.approval-controls__dialog-title{margin:0;padding:20px 24px 16px;font-size:18px;font-weight:600;color:#c62828;border-bottom:1px solid #f5f5f5}.approval-controls__dialog-content{padding:16px 24px}.approval-controls__dialog-label{display:block;margin-bottom:8px;font-size:14px;font-weight:500;color:#424242}.approval-controls__dialog-textarea{width:100%;padding:12px;border:1px solid #e0e0e0;border-radius:6px;font-size:14px;font-family:inherit;resize:vertical;min-height:100px;transition:border-color .15s ease,box-shadow .15s ease}.approval-controls__dialog-textarea:focus{outline:none;border-color:#c62828;box-shadow:0 0 0 3px #c628281a}.approval-controls__dialog-textarea::placeholder{color:#9e9e9e}.approval-controls__dialog-actions{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px 20px;border-top:1px solid #f5f5f5}.approval-controls__dialog-button{padding:10px 20px;border:1px solid transparent;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:all .15s ease}.approval-controls__dialog-button:focus{outline:2px solid var(--focus-ring, #2196f3);outline-offset:2px}.approval-controls__dialog-button--cancel{background:#f5f5f5;color:#616161;border-color:#e0e0e0}.approval-controls__dialog-button--cancel:hover{background:#eee;border-color:#bdbdbd}.approval-controls__dialog-button--confirm{background:#c62828;color:#fff;border-color:#b71c1c}.approval-controls__dialog-button--confirm:hover:not(:disabled){background:#b71c1c}.approval-controls__dialog-button--confirm:disabled{opacity:.5;cursor:not-allowed}@media(prefers-color-scheme:dark){.approval-controls{--approval-bg: #1e1e1e;background:var(--approval-bg);box-shadow:0 1px 3px #0000004d}.approval-controls__badge--extracting{background:#0d47a1;color:#90caf9;border-color:#1565c0}.approval-controls__badge--review{background:#e65100;color:#fff3e0;border-color:#f57c00}.approval-controls__badge--validated{background:#1b5e20;color:#a5d6a7;border-color:#2e7d32}.approval-controls__badge--exported{background:#283593;color:#c5cae9;border-color:#3949ab}.approval-controls__badge--rejected{background:#b71c1c;color:#ffcdd2;border-color:#c62828}.approval-controls__button--validate{background:#424242;color:#e0e0e0;border-color:#616161}.approval-controls__button--validate:hover:not(:disabled){background:#616161}.approval-controls__button--export{background:#0d47a1;color:#90caf9;border-color:#1565c0}.approval-controls__button--export:hover:not(:disabled){background:#1565c0}.approval-controls__button--reject{background:#b71c1c;color:#ffcdd2;border-color:#c62828}.approval-controls__button--reject:hover:not(:disabled){background:#c62828}.approval-controls__button--submit{background:#2e7d32;color:#fff;border-color:#388e3c}.approval-controls__button--submit:hover:not(:disabled){background:#388e3c}.approval-controls__export-menu{background:#2d2d2d;border-color:#424242}.approval-controls__export-option{color:#e0e0e0}.approval-controls__export-option:hover{background:#424242}.approval-controls__export-option:focus{background:#0d47a1}.approval-controls__dialog{background:#2d2d2d;box-shadow:0 8px 32px #00000080}.approval-controls__dialog-title{color:#ef9a9a;border-bottom-color:#424242}.approval-controls__dialog-label{color:#e0e0e0}.approval-controls__dialog-textarea{background:#1e1e1e;border-color:#424242;color:#e0e0e0}.approval-controls__dialog-textarea:focus{border-color:#ef9a9a;box-shadow:0 0 0 3px #ef9a9a33}.approval-controls__dialog-textarea::placeholder{color:#757575}.approval-controls__dialog-actions{border-top-color:#424242}.approval-controls__dialog-button--cancel{background:#424242;color:#e0e0e0;border-color:#616161}.approval-controls__dialog-button--cancel:hover{background:#616161}}@media(prefers-reduced-motion:reduce){.approval-controls__spinner,.approval-controls__export-menu,.approval-controls__dialog-overlay,.approval-controls__dialog{animation:none}.approval-controls__button,.approval-controls__export-option,.approval-controls__dialog-button,.approval-controls__dialog-textarea{transition:none}}@media(max-width:768px){.approval-controls{flex-wrap:wrap;gap:12px}.approval-controls__actions{flex-wrap:wrap;margin-left:0;width:100%;justify-content:flex-end}.approval-controls__button{padding:6px 12px;font-size:13px}.approval-controls__dialog{max-width:calc(100% - 32px)}}.rebar-data-grid{position:relative;width:100%;height:100%;overflow:auto;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:13px;outline:none}.rebar-data-grid--scrollable{max-height:600px;overflow-y:auto}.rebar-data-grid--empty{display:flex;align-items:center;justify-content:center;min-height:200px;color:#666;font-style:italic}.rebar-data-grid table{width:100%;border-collapse:collapse;table-layout:auto}.rebar-data-grid__header{background-color:#f0f0f0;border:1px solid #d0d0d0;padding:8px 12px;text-align:left;font-weight:600;color:#000;cursor:pointer;-webkit-user-select:none;user-select:none;position:sticky;top:0;z-index:10}.rebar-data-grid__header:hover{background-color:#e5e5e5}.rebar-data-grid__sort-indicator{margin-left:4px;font-size:10px;color:#000}.rebar-data-grid__row{border-bottom:1px solid #e0e0e0}.rebar-data-grid__row:hover{background-color:#f9f9f9}.rebar-data-grid__row--selected{background-color:#e3f2fd}.rebar-data-grid__row--selected:hover{background-color:#bbdefb}.rebar-data-grid__row--warning-highlighted{background-color:#fff9c4}.rebar-data-grid__row--warning-highlighted:hover{background-color:#fff59d}.rebar-data-grid__cell{border:1px solid #e0e0e0;padding:6px 12px;cursor:pointer;position:relative;transition:background-color .15s ease}.rebar-data-grid__cell:focus{outline:2px solid #2196f3;outline-offset:-2px}.rebar-data-grid__cell--selected{background-color:#2196f3!important;color:#fff;border:2px solid #1976d2;font-weight:500}.rebar-data-grid__cell--error{background-color:#ffebee;border-color:#ef5350}.rebar-data-grid__cell--error.rebar-data-grid__cell--selected{background-color:#f44336!important;border-color:#d32f2f}.rebar-data-grid__cell--warning{background-color:#fff9c4;border-color:#ffeb3b}.rebar-data-grid__cell--warning.rebar-data-grid__cell--selected{background-color:#fbc02d!important;border-color:#f9a825}.rebar-data-grid__cell--corrected{background-color:#e8f5e9;border-color:#66bb6a}.rebar-data-grid__cell--corrected.rebar-data-grid__cell--selected{background-color:#4caf50!important;border-color:#388e3c}.rebar-data-grid__cell--highlighted{background-color:#fff3e0;border:2px solid #ff9800;box-shadow:0 0 0 2px #ff98004d;animation:highlight-pulse 1.5s ease-in-out}.rebar-data-grid__cell--highlighted.rebar-data-grid__cell--selected{background-color:#ff9800!important;border-color:#f57c00;color:#fff}@keyframes highlight-pulse{0%{box-shadow:0 0 #ff980099}50%{box-shadow:0 0 0 6px #ff980033}to{box-shadow:0 0 0 2px #ff98004d}}.rebar-data-grid__cell-content--corrected{display:flex;flex-direction:column;gap:2px}.rebar-data-grid__cell-value--corrected{font-weight:600;color:#2e7d32}.rebar-data-grid__cell-value--original{font-size:11px;color:#757575;text-decoration:line-through}.rebar-data-grid__cell-input{width:100%;border:none;outline:none;background:transparent;font-family:inherit;font-size:inherit;padding:0;margin:0}.rebar-data-grid__cell-input:focus{outline:2px solid #2196f3;outline-offset:-2px}.rebar-data-grid__tooltip{position:absolute;bottom:100%;left:50%;transform:translate(-50%);background-color:#333;color:#fff;padding:6px 10px;border-radius:4px;font-size:12px;white-space:nowrap;z-index:1000;pointer-events:none;margin-bottom:8px}.rebar-data-grid__tooltip:after{content:"";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:#333 transparent transparent transparent}.validation-sidebar{display:flex;flex-direction:column;height:100%;background-color:var(--color-bg-secondary, #f8f9fa);border-left:1px solid var(--color-border, #dee2e6);font-family:var(--font-family-sans, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);font-size:13px;overflow:hidden}.validation-sidebar--empty{justify-content:center;align-items:center}.validation-sidebar__header{padding:12px 16px;background-color:var(--color-bg-primary, #fff);border-bottom:1px solid var(--color-border, #dee2e6)}.validation-sidebar__title{margin:0 0 8px;font-size:14px;font-weight:600;color:var(--color-text-primary, #212529)}.validation-sidebar__summary{display:flex;gap:12px;flex-wrap:wrap}.validation-sidebar__error-count{color:var(--color-error, #dc3545);font-weight:500}.validation-sidebar__warning-count{color:var(--color-warning, #ffc107);font-weight:500}.validation-sidebar__section{border-bottom:1px solid var(--color-border, #dee2e6)}.validation-sidebar__section--errors{background-color:#dc354508}.validation-sidebar__section--warnings{background-color:#ffc10708}.validation-sidebar__section--collapsed .validation-sidebar__section-content{display:none}.validation-sidebar__section-header{display:flex;align-items:center;padding:10px 16px;background-color:var(--color-bg-primary, #fff);border-bottom:1px solid var(--color-border-light, #e9ecef);cursor:pointer;-webkit-user-select:none;user-select:none}.validation-sidebar__section-title{margin:0;flex:1;font-size:13px;font-weight:600;color:var(--color-text-primary, #212529)}.validation-sidebar__section--errors .validation-sidebar__section-title{color:var(--color-error, #dc3545)}.validation-sidebar__section--warnings .validation-sidebar__section-title{color:var(--color-warning-dark, #856404)}.validation-sidebar__section-stats{display:flex;gap:8px;margin-right:8px;font-size:11px}.validation-sidebar__resolved-count{color:var(--color-success, #28a745)}.validation-sidebar__remaining-count{color:var(--color-text-muted, #6c757d)}.validation-sidebar__collapse-button{width:24px;height:24px;padding:0;border:none;background:none;color:var(--color-text-muted, #6c757d);cursor:pointer;font-size:10px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background-color .15s ease}.validation-sidebar__collapse-button:hover{background-color:var(--color-bg-hover, #e9ecef)}.validation-sidebar__collapse-button:focus{outline:2px solid var(--color-focus, #0d6efd);outline-offset:2px}.validation-sidebar__section-content{max-height:300px;overflow-y:auto}.validation-sidebar__group{border-bottom:1px solid var(--color-border-light, #e9ecef)}.validation-sidebar__group:last-child{border-bottom:none}.validation-sidebar__group-header{display:flex;align-items:center;padding:8px 16px;background-color:var(--color-bg-tertiary, #f1f3f4)}.validation-sidebar__group-name{flex:1;font-size:12px;font-weight:500;color:var(--color-text-secondary, #495057);text-transform:capitalize}.validation-sidebar__group-count{font-size:11px;color:var(--color-text-muted, #6c757d)}.validation-sidebar__issue-list{margin:0;padding:0;list-style:none}.validation-sidebar__issue{padding:8px 16px;border-bottom:1px solid var(--color-border-light, #e9ecef);cursor:pointer;transition:background-color .15s ease}.validation-sidebar__issue:last-child{border-bottom:none}.validation-sidebar__issue:hover{background-color:var(--color-bg-hover, #e9ecef)}.validation-sidebar__issue:focus{outline:2px solid var(--color-focus, #0d6efd);outline-offset:-2px;background-color:var(--color-bg-hover, #e9ecef)}.validation-sidebar__issue--error{border-left:3px solid var(--color-error, #dc3545)}.validation-sidebar__issue--warning{border-left:3px solid var(--color-warning, #ffc107)}.validation-sidebar__issue--selected{background-color:var(--color-bg-selected, #cfe2ff)}.validation-sidebar__issue--selected:hover{background-color:var(--color-bg-selected-hover, #b6d4fe)}.validation-sidebar__issue--resolved{opacity:.6}.validation-sidebar__issue--resolved .validation-sidebar__issue-message{text-decoration:line-through;color:var(--color-text-muted, #6c757d)}.validation-sidebar__issue--resolved:after{content:"✓";position:absolute;right:16px;top:50%;transform:translateY(-50%);color:var(--color-success, #28a745);font-size:12px}.validation-sidebar__issue-content{display:flex;flex-direction:column;gap:2px;position:relative}.validation-sidebar__issue-message{font-size:12px;color:var(--color-text-primary, #212529);line-height:1.4;word-break:break-word}.validation-sidebar__issue-location{font-size:11px;color:var(--color-text-muted, #6c757d)}.validation-sidebar__empty-state{text-align:center;padding:32px 16px}.validation-sidebar__empty-icon{width:48px;height:48px;margin:0 auto 16px;display:flex;align-items:center;justify-content:center;background-color:var(--color-success-bg, #d4edda);border-radius:50%;font-size:24px;color:var(--color-success, #28a745)}.validation-sidebar__empty-message{margin:0 0 8px;font-size:14px;font-weight:600;color:var(--color-text-primary, #212529)}.validation-sidebar__empty-description{margin:0;font-size:12px;color:var(--color-text-muted, #6c757d)}.validation-sidebar__section-content::-webkit-scrollbar{width:6px}.validation-sidebar__section-content::-webkit-scrollbar-track{background:transparent}.validation-sidebar__section-content::-webkit-scrollbar-thumb{background-color:var(--color-scrollbar, #c1c1c1);border-radius:3px}.validation-sidebar__section-content::-webkit-scrollbar-thumb:hover{background-color:var(--color-scrollbar-hover, #a8a8a8)}@media(max-width:768px){.validation-sidebar{font-size:12px}.validation-sidebar__header{padding:10px 12px}.validation-sidebar__section-header{padding:8px 12px}.validation-sidebar__group-header,.validation-sidebar__issue{padding:6px 12px}}@media(prefers-color-scheme:dark){.validation-sidebar{background-color:var(--color-bg-secondary-dark, #1e1e1e);border-left-color:var(--color-border-dark, #3c3c3c)}.validation-sidebar__header{background-color:var(--color-bg-primary-dark, #252526);border-bottom-color:var(--color-border-dark, #3c3c3c)}.validation-sidebar__title{color:var(--color-text-primary-dark, #e0e0e0)}.validation-sidebar__section-header{background-color:var(--color-bg-primary-dark, #252526);border-bottom-color:var(--color-border-dark, #3c3c3c)}.validation-sidebar__section-title{color:var(--color-text-primary-dark, #e0e0e0)}.validation-sidebar__group-header{background-color:var(--color-bg-tertiary-dark, #2d2d2d)}.validation-sidebar__group-name{color:var(--color-text-secondary-dark, #b0b0b0)}.validation-sidebar__issue{border-bottom-color:var(--color-border-dark, #3c3c3c)}.validation-sidebar__issue:hover{background-color:var(--color-bg-hover-dark, #2a2d2e)}.validation-sidebar__issue--selected{background-color:var(--color-bg-selected-dark, #094771)}.validation-sidebar__issue-message{color:var(--color-text-primary-dark, #e0e0e0)}.validation-sidebar__issue-location{color:var(--color-text-muted-dark, #808080)}.validation-sidebar__empty-icon{background-color:var(--color-success-bg-dark, #1a3a1a)}.validation-sidebar__empty-message{color:var(--color-text-primary-dark, #e0e0e0)}.validation-sidebar__empty-description{color:var(--color-text-muted-dark, #808080)}}.rebar-review-panel{display:flex;flex-direction:column;height:100vh;background:var(--color-background, #0f1115);color:var(--color-text, #e5e7eb);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;overflow:hidden}.rebar-review-panel--loading{align-items:center;justify-content:center}.rebar-review-panel__loading-content{text-align:center;padding:var(--space-xl, 24px)}.rebar-review-panel__spinner{width:48px;height:48px;border:4px solid var(--color-surface, #151923);border-top-color:var(--color-accent, #3573ff);border-radius:50%;animation:spinner-rotate .8s linear infinite;margin:0 auto var(--space-lg, 16px)}@keyframes spinner-rotate{to{transform:rotate(360deg)}}.rebar-review-panel--error{align-items:center;justify-content:center}.rebar-review-panel__error-content{text-align:center;padding:var(--space-xl, 24px);max-width:500px}.rebar-review-panel__error-icon{font-size:48px;margin-bottom:var(--space-lg, 16px)}.rebar-review-panel__error-content h2{color:var(--color-error, #ef4444);margin-bottom:var(--space-md, 12px)}.rebar-review-panel__error-content p{margin-bottom:var(--space-lg, 16px);color:var(--color-text-secondary, #9ca3af)}.rebar-review-panel__retry-button{padding:var(--space-sm, 8px) var(--space-lg, 16px);background:var(--color-accent, #3573ff);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:var(--text-base, 14px);font-weight:500;transition:background .2s}.rebar-review-panel__retry-button:hover{background:var(--color-accent-hover, #2563eb)}.rebar-review-panel__header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md, 12px) var(--space-lg, 16px);background:var(--color-surface, #151923);border-bottom:1px solid var(--color-border, #2d3748);min-height:60px}.rebar-review-panel__controls{display:flex;align-items:center;gap:var(--space-md, 12px)}.rebar-review-panel__close-button{padding:var(--space-sm, 8px) var(--space-md, 12px);background:transparent;color:var(--color-text-secondary, #9ca3af);border:1px solid var(--color-border, #2d3748);border-radius:6px;cursor:pointer;font-size:var(--text-sm, 13px);transition:all .2s}.rebar-review-panel__close-button:hover{background:var(--color-surface-hover, #1f2937);color:var(--color-text, #e5e7eb)}.rebar-review-panel__main{flex:1;overflow:hidden;position:relative}.rebar-review-panel__split-layout{display:flex;height:100%;gap:1px;background:var(--color-border, #2d3748)}.rebar-review-panel__split-layout--compact{flex-direction:column}.rebar-review-panel__grid-container{flex:0 0 70%;overflow:hidden;background:var(--color-background, #0f1115)}.rebar-review-panel__sidebar{flex:0 0 30%;overflow:hidden;background:var(--color-surface, #151923)}.rebar-review-panel--compact .rebar-review-panel__header{padding:8px 12px;min-height:48px}.rebar-review-panel--compact .rebar-review-panel__controls{gap:8px}.rebar-review-panel--compact .rebar-review-panel__sidebar{flex:1 1 auto;width:100%}.rebar-review-panel__dialog-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1100}.rebar-review-panel__dialog{background:var(--color-surface, #151923);border:1px solid var(--color-border, #2d3748);border-radius:8px;padding:var(--space-xl, 24px);max-width:450px;width:90%;box-shadow:var(--elev-popover, 0 4px 16px rgba(0, 0, 0, .25))}.rebar-review-panel__dialog h3{margin:0 0 var(--space-md, 12px);color:var(--color-warning, #f59e0b);font-size:var(--text-lg, 16px);font-weight:600}.rebar-review-panel__dialog p{margin:0 0 var(--space-lg, 16px);color:var(--color-text-secondary, #9ca3af);font-size:var(--text-base, 14px)}.rebar-review-panel__dialog-actions{display:flex;gap:var(--space-md, 12px);justify-content:flex-end}.rebar-review-panel__dialog-button{padding:var(--space-sm, 8px) var(--space-lg, 16px);border:none;border-radius:6px;cursor:pointer;font-size:var(--text-sm, 13px);font-weight:500;transition:all .2s}.rebar-review-panel__dialog-button--primary{background:var(--color-error, #ef4444);color:#fff}.rebar-review-panel__dialog-button--primary:hover{background:var(--color-error-hover, #dc2626)}.rebar-review-panel__dialog-button--secondary{background:transparent;color:var(--color-text, #e5e7eb);border:1px solid var(--color-border, #2d3748)}.rebar-review-panel__dialog-button--secondary:hover{background:var(--color-surface-hover, #1f2937)}@media(max-width:1200px){.rebar-review-panel__grid-container{flex:0 0 60%}.rebar-review-panel__sidebar{flex:0 0 40%}}@media(max-width:768px){.rebar-review-panel__split-layout{flex-direction:column}.rebar-review-panel__grid-container,.rebar-review-panel__sidebar{flex:1}}.rebar-review-dock{position:fixed;top:calc(var(--space-12) * 2.5);right:var(--space-5);z-index:1002;pointer-events:auto;max-width:90vw;max-height:calc(100vh - (var(--space-12) * 3 + var(--space-4)))}.rebar-review-dock__panel{width:520px;max-width:90vw;height:520px;min-height:320px;max-height:calc(100vh - (var(--space-12) * 3 + var(--space-6) + var(--space-3)));border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--elev-card);border:1px solid var(--color-border);background:var(--color-surface)}.rebar-review-dock .rebar-review-panel{height:100%}.resizable-dock{display:flex;flex-direction:column;max-width:90vw;border-radius:8px;overflow:hidden;box-shadow:0 8px 24px #0000004d;border:1px solid var(--color-border, #2d3748);background:var(--color-background, #0f1115);transition:height .25s ease-out,width .25s ease-out;position:relative}.resizable-dock--dragging{transition:none;-webkit-user-select:none;user-select:none}.resizable-dock__handle{display:flex;align-items:center;justify-content:space-between;height:28px;min-height:28px;background:var(--color-surface, #151923);border-bottom:1px solid var(--color-border, #2d3748);cursor:ns-resize;-webkit-user-select:none;user-select:none;padding:0 8px;flex-shrink:0;margin-left:6px}.resizable-dock__handle:focus{outline:none}.resizable-dock__handle:focus-visible{outline:2px solid var(--color-accent, #3573ff);outline-offset:-2px}.resizable-dock--collapsed .resizable-dock__handle{cursor:default;border-bottom:none}.resizable-dock__handle-grip{display:flex;align-items:center;justify-content:center;flex:1;height:100%}.resizable-dock__handle-icon{display:block;width:40px;height:4px;background:repeating-linear-gradient(90deg,var(--color-text-tertiary, #4b5563) 0px,var(--color-text-tertiary, #4b5563) 2px,transparent 2px,transparent 6px);border-radius:2px;opacity:.6;transition:opacity .15s ease}.resizable-dock__handle:hover .resizable-dock__handle-icon,.resizable-dock__handle:focus-visible .resizable-dock__handle-icon{opacity:1}.resizable-dock--collapsed .resizable-dock__handle-icon{display:none}.resizable-dock__handle-left{position:absolute;left:0;top:0;bottom:0;width:6px;cursor:ew-resize;background:transparent;z-index:10;transition:background .15s ease}.resizable-dock__handle-left:after{content:"";position:absolute;left:1px;top:50%;transform:translateY(-50%);width:3px;height:40px;background:repeating-linear-gradient(180deg,var(--color-text-tertiary, #4b5563) 0px,var(--color-text-tertiary, #4b5563) 2px,transparent 2px,transparent 6px);border-radius:2px;opacity:0;transition:opacity .15s ease}.resizable-dock__handle-left:hover:after,.resizable-dock__handle-left:focus-visible:after{opacity:.6}.resizable-dock__handle-left:focus{outline:none}.resizable-dock__handle-left:focus-visible{background:#3573ff1a}.resizable-dock__handle-left:focus-visible:after{opacity:1}.resizable-dock__handle-corner{position:absolute;left:0;top:0;width:12px;height:12px;cursor:nwse-resize;z-index:11;background:transparent}.resizable-dock__handle-corner:after{content:"";position:absolute;left:2px;top:2px;width:8px;height:8px;border-left:2px solid var(--color-text-tertiary, #4b5563);border-top:2px solid var(--color-text-tertiary, #4b5563);opacity:0;transition:opacity .15s ease}.resizable-dock__handle-corner:hover:after{opacity:.8}.resizable-dock__toggle{display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;background:transparent;border:none;border-radius:4px;cursor:pointer;color:var(--color-text-secondary, #9ca3af);transition:all .15s ease;flex-shrink:0}.resizable-dock__toggle:hover{background:var(--color-surface-hover, #1f2937);color:var(--color-text, #e5e7eb)}.resizable-dock__toggle:focus{outline:none}.resizable-dock__toggle:focus-visible{outline:2px solid var(--color-accent, #3573ff);outline-offset:2px}.resizable-dock__toggle-icon{font-size:10px;line-height:1;transition:transform .2s ease}.resizable-dock__content{flex:1;overflow:hidden;min-height:0;margin-left:6px}.resizable-dock--collapsed .resizable-dock__content{display:none}.resizable-dock:focus-within{border-color:var(--color-border-focus, #4b5563)}.resizable-dock--dragging .resizable-dock__handle{background:var(--color-surface-active, #1e293b)}.resizable-dock--dragging .resizable-dock__handle-icon{opacity:1;background:repeating-linear-gradient(90deg,var(--color-accent, #3573ff) 0px,var(--color-accent, #3573ff) 2px,transparent 2px,transparent 6px)}.resizable-dock--dragging .resizable-dock__handle-left{background:#3573ff1a}.resizable-dock--dragging .resizable-dock__handle-left:after{opacity:1;background:repeating-linear-gradient(180deg,var(--color-accent, #3573ff) 0px,var(--color-accent, #3573ff) 2px,transparent 2px,transparent 6px)}.resizable-dock--dragging .resizable-dock__handle-corner:after{opacity:1;border-color:var(--color-accent, #3573ff)}@media(max-width:600px){.resizable-dock{width:100%!important;max-width:100%;border-radius:0;border-left:none;border-right:none}.resizable-dock__handle-left,.resizable-dock__handle-corner{display:none}.resizable-dock__handle,.resizable-dock__content{margin-left:0}}@media(prefers-contrast:high){.resizable-dock{border-width:2px}.resizable-dock__handle{border-bottom-width:2px}.resizable-dock__toggle:focus-visible,.resizable-dock__handle:focus-visible,.resizable-dock__handle-left:focus-visible{outline-width:3px}}@media(prefers-reduced-motion:reduce){.resizable-dock{transition:none}.resizable-dock__toggle-icon,.resizable-dock__handle-icon,.resizable-dock__handle-left:after,.resizable-dock__handle-corner:after{transition:none}}.projects-page-shell{min-height:100vh;width:100%;background:var(--color-background);color:var(--color-text)}.projects-topbar{border-bottom:1px solid var(--color-border);background:var(--color-surface)}.projects-topbar-inner{padding:var(--space-lg) var(--space-xxl);display:flex;align-items:center;justify-content:space-between;gap:var(--space-lg)}.projects-brand{display:flex;align-items:center;gap:var(--space-md);font-weight:700;font-size:var(--text-lg);text-decoration:none;color:var(--color-text)}.projects-brand-mark{width:30px;height:30px;border-radius:var(--radius-md);border:1px solid var(--color-accent);background:var(--color-surfaceAlt);display:inline-flex;align-items:center;justify-content:center;color:var(--color-accent);font-size:var(--text-xs)}.projects-workspace{display:flex;align-items:center;gap:var(--space-md);color:var(--color-textMuted)}.projects-avatar{width:30px;height:30px;border-radius:var(--radius-md);background:var(--color-surfaceAlt);border:1px solid var(--color-border);display:inline-flex;align-items:center;justify-content:center;color:var(--color-text);font-size:var(--text-sm)}.projects-container{padding:var(--space-xxl)}.projects-page-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-lg);margin-bottom:var(--space-xxl)}.projects-page-title{margin:0;font-size:var(--text-2xl);font-weight:700}.projects-subtitle{margin:var(--space-sm) 0 0;color:var(--color-textMuted);font-size:var(--text-sm)}.projects-toolbar{display:flex;align-items:center;gap:var(--space-md)}.projects-btn{border:1px solid var(--color-border);background:var(--color-surfaceAlt);color:var(--color-text);border-radius:var(--btn-primary-radius);padding:var(--space-md) var(--space-lg);font-size:var(--text-sm);font-family:var(--font-sans);cursor:pointer;transition:border-color .2s ease,background-color .2s ease}.projects-btn:hover{border-color:var(--color-accent)}.projects-btn-primary{background:var(--color-accent);border-color:var(--color-accent);color:var(--btn-primary-text)}.projects-btn-success{background:#10b981;border-color:#10b981;color:#fff;cursor:default;opacity:.85}.projects-btn-success:disabled{opacity:.85;cursor:default}.projects-cards-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-xl)}.project-card{text-align:left;width:100%;cursor:pointer;transition:border-color .2s ease}.project-card:hover{border-color:var(--color-accent)}.project-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-lg);margin-bottom:var(--space-lg)}.project-card-title{margin:0;font-size:var(--text-lg);font-weight:600;color:var(--color-text)}.muted{margin:0;color:var(--color-textMuted)}.stats-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-md);margin:0 0 var(--space-lg)}.stat-box{background:var(--color-surfaceAlt);border-radius:var(--radius-sm);border:1px solid var(--color-border);padding:var(--space-md);font-size:var(--text-xs);color:var(--color-textMuted)}.stat-value{display:block;color:var(--color-text);font-size:var(--text-lg);font-weight:600}.status-pill{border-radius:var(--radius-md);border:1px solid var(--color-border);width:fit-content;font-weight:500}.status-pill--sm{padding:var(--space-xs) var(--space-md);font-size:var(--text-xs)}.status-pill--md{padding:var(--space-xs) var(--space-lg);font-size:var(--text-xs)}.status-pill--active{background:var(--color-surfaceAlt);border-color:var(--color-success);color:var(--color-success)}.status-pill--draft,.status-pill--completed,.status-pill--archived{background:var(--color-surfaceAlt);border-color:var(--color-border);color:var(--color-textMuted)}.projects-empty,.projects-error{margin:0;padding:var(--space-xl);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.projects-empty{color:var(--color-textMuted)}.projects-error{color:var(--color-error)}@media(max-width:1200px){.projects-cards-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:768px){.projects-container,.projects-topbar-inner{padding:var(--space-xl)}.projects-page-header{flex-direction:column;align-items:flex-start}.projects-cards-grid{grid-template-columns:1fr}}.address-autocomplete{display:grid;gap:var(--space-4)}.address-autocomplete__search-container{position:relative}.address-autocomplete__search{width:100%}.address-autocomplete__spinner{position:absolute;right:var(--space-4);top:50%;transform:translateY(-50%);animation:spin 1s linear infinite;font-size:var(--text-sm);color:var(--color-textMuted)}@keyframes spin{0%{transform:translateY(-50%) rotate(0)}to{transform:translateY(-50%) rotate(360deg)}}.address-autocomplete__dropdown{position:absolute;top:100%;left:0;right:0;z-index:100;list-style:none;margin:var(--space-1) 0 0;padding:var(--space-1) 0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);box-shadow:var(--elev-dropdown);max-height:240px;overflow-y:auto}.address-autocomplete__option{padding:var(--space-2) var(--space-4) var(--space-2) calc(var(--space-4) - 3px);border-left:3px solid transparent;cursor:pointer;font-size:var(--text-sm);color:var(--color-text);transition:background var(--transition-fast)}.address-autocomplete__option:hover,.address-autocomplete__option--highlighted{background:var(--color-surfaceAlt)}.address-autocomplete__option--highlighted{border-left-color:var(--color-primary, #3b82f6);font-weight:var(--weight-semibold)}.address-autocomplete__fields{display:grid;gap:var(--space-2)}.address-autocomplete__field-row{display:grid;grid-template-columns:1fr;gap:var(--space-2)}.address-autocomplete__field-row:last-child{grid-template-columns:auto 1fr auto}.address-autocomplete__field{display:grid;gap:var(--space-1)}.wizard-layout{display:grid;grid-template-columns:248px minmax(0,1fr) 260px;gap:var(--space-xl)}.wizard-sidebar{position:sticky;top:var(--space-xl);align-self:start}.stepper{list-style:none;margin:0;padding:0;position:relative}.stepper:before{content:"";position:absolute;left:15px;top:0;bottom:0;width:2px;background:var(--color-border)}.step-item{position:relative;display:flex;align-items:flex-start;gap:var(--space-md);padding:var(--space-sm) 0 var(--space-xl)}.step-link{display:flex;align-items:flex-start;gap:var(--space-md);color:inherit;text-decoration:none}.step-circle{width:32px;height:32px;border-radius:999px;border:1px solid var(--color-border);background:var(--color-surfaceAlt);color:var(--color-textMuted);display:inline-flex;align-items:center;justify-content:center;font-size:var(--text-sm);z-index:1}.step-label{display:flex;flex-direction:column;gap:var(--space-xs)}.step-title{font-size:var(--text-base)}.step-sub{color:var(--color-textMuted);font-size:var(--text-xs)}.step-item.active .step-circle{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.step-item.done .step-circle{background:var(--color-success);border-color:var(--color-success);color:#fff}.step-item.pending .step-circle{color:var(--color-textMuted)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-xl)}.form-row-full{grid-column:1 / -1}.control-label{display:block;margin-bottom:var(--space-sm);color:var(--color-textMuted);font-size:var(--text-sm)}.control-input,textarea.control-input,input.control-input,select.control-input{width:100%;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surfaceAlt);color:var(--color-text);padding:var(--space-md) var(--space-lg);font-size:var(--text-base);font-family:inherit}textarea.control-input{min-height:112px;resize:vertical}.control-input:focus{outline:1px solid rgba(53,115,255,.6);border-color:var(--color-accent)}.wizard-form{margin-top:var(--space-xl)}.wizard-page-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-lg);margin-bottom:var(--space-lg)}.wizard-panel{margin-top:var(--space-lg)}.wizard-section-title{font-size:var(--text-lg);margin:0 0 var(--space-lg)}.wizard-actions{margin-top:var(--space-xl);display:flex;justify-content:space-between;gap:var(--space-md)}.wizard-inline-buttons{display:flex;align-items:center;gap:var(--space-md)}.wizard-btn-soft{background:#3573ff33;border:1px solid rgba(53,115,255,.3);color:#c7d7ff}.wizard-btn-danger{border:1px solid rgba(239,68,68,.4);color:#fcb4b4}.wizard-aside-title{font-size:var(--text-lg);margin:0 0 var(--space-md)}.help-list{padding-left:var(--space-lg);margin:0;display:grid;gap:var(--space-md);color:var(--color-textMuted);font-size:var(--text-sm)}.wizard-inline-status{margin-top:var(--space-xl);color:var(--color-textMuted)}.wizard-error{margin:var(--space-lg) 0 0;color:var(--color-error)}.wizard-form-submit{display:flex;align-items:flex-end}.part-group{margin-top:var(--space-xl);display:grid;gap:var(--space-md)}.part-node{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surfaceAlt);padding:var(--space-lg)}.part-node-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);margin-bottom:var(--space-md)}.part-node-grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:var(--space-md)}.subparts{margin-top:var(--space-md);display:grid;gap:var(--space-sm)}.dropzone{border:2px dashed var(--color-border);border-radius:var(--radius-lg);padding:calc(var(--space-xxl) * 2);text-align:center;background:#3573ff14}.dropzone--active{border-color:var(--color-accent)}.dropzone-icon{width:52px;height:52px;border-radius:999px;margin:0 auto var(--space-lg);background:#3573ff33;border:1px solid rgba(53,115,255,.3);color:#d3e0ff;display:inline-flex;align-items:center;justify-content:center;font-size:var(--text-xl)}.table-wrap{overflow-x:auto}.milestone-part-select{min-width:140px;width:100%}table{width:100%;border-collapse:collapse}th,td{padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--color-border);text-align:left;font-size:var(--text-sm);vertical-align:top}th{color:var(--color-textMuted);font-weight:500;background:var(--color-surfaceAlt)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}@media(max-width:1024px){.wizard-layout{grid-template-columns:220px minmax(0,1fr)}.wizard-aside{grid-column:1 / -1}}@media(max-width:768px){.wizard-layout,.wizard-actions{grid-template-columns:1fr}.wizard-sidebar{position:static}.stepper{display:grid;grid-template-columns:repeat(5,minmax(90px,1fr));gap:var(--space-sm);overflow-x:auto;padding-bottom:var(--space-sm)}.stepper:before{display:none}.step-item{flex-direction:column;align-items:center;text-align:center;padding:var(--space-sm);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);min-width:96px}.wizard-actions{display:grid;justify-content:stretch}.part-node-grid{grid-template-columns:1fr}}.theme-light{--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-primary-soft: #eff6ff;--color-accent: #2563eb;--color-accentSoft: #eff6ff;--color-onAccent: #ffffff;--color-success: #16a34a;--color-success-soft: #f0fdf4;--color-success-hover: #15803d;--color-warning: #f59e0b;--color-warning-soft: #fffbeb;--color-orange: #f97316;--color-orange-soft: #fff7ed;--color-error: #dc2626;--color-error-soft: #fef2f2;--color-error-hover: #b91c1c;--color-info: #7c3aed;--color-info-soft: #f5f3ff;--color-background: #f9fafb;--color-surface: #ffffff;--color-surfaceAlt: #f3f4f6;--color-border: #e5e7eb;--color-text: #1f2937;--color-textMuted: #6b7280;--color-textLight: #9ca3af;--elev-card: 0 1px 3px rgba(0, 0, 0, .08), 0 1px 2px rgba(0, 0, 0, .04);--elev-modal: 0 10px 25px rgba(0, 0, 0, .1), 0 6px 10px rgba(0, 0, 0, .05);--elev-dropdown: 0 4px 12px rgba(0, 0, 0, .1);--space-0: 0;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--radius-xs: 2px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-full: 9999px;--text-xs: 11px;--text-sm: 12px;--text-md: 14px;--text-lg: 16px;--text-xl: 20px;--text-2xl: 24px;--text-3xl: 28px;--weight-normal: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--transition-fast: .15s ease;--transition-base: .2s ease}body:has(.theme-light){--color-background: #f9fafb;background:#f9fafb}.theme-light{--btn-primary-bg: var(--color-primary);--btn-primary-bg-hover: var(--color-primary-hover);--btn-primary-text: var(--color-onAccent);--btn-primary-radius: var(--radius-md);--btn-success-bg: var(--color-success);--btn-success-bg-hover: var(--color-success-hover);--btn-success-text: var(--color-onAccent);--btn-danger-bg: var(--color-error);--btn-danger-bg-hover: var(--color-error-hover);--btn-danger-text: var(--color-onAccent);--badge-draft-bg: var(--color-warning-soft);--badge-draft-text: var(--color-warning);--badge-sent-bg: var(--color-primary-soft);--badge-sent-text: var(--color-primary);--badge-viewed-bg: var(--color-info-soft);--badge-viewed-text: var(--color-info);--badge-accepted-bg: var(--color-success-soft);--badge-accepted-text: var(--color-success);--badge-rejected-bg: var(--color-error-soft);--badge-rejected-text: var(--color-error);--badge-expired-bg: var(--color-surfaceAlt);--badge-expired-text: var(--color-textMuted);--badge-cancelled-bg: var(--color-surfaceAlt);--badge-cancelled-text: var(--color-textMuted);--stat-open-color: var(--color-primary);--stat-accepted-color: var(--color-success);--stat-pipeline-color: var(--color-orange);--stat-winrate-color: var(--color-text);--input-border: var(--color-border);--input-radius: var(--radius-md);--input-height: 40px;--input-font-size: var(--text-md)}.app-shell{min-height:100vh;width:100%;display:flex;flex-direction:column;background:var(--color-background);color:var(--color-text)}.app-shell-topbar{height:56px;display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-xxl);background:var(--color-surface);border-bottom:1px solid var(--color-border)}.app-shell-topbar-brand{display:inline-flex;align-items:center;gap:var(--space-md)}.app-shell-topbar-brand-icon{color:var(--color-accent);font-size:var(--text-xl);line-height:1}.app-shell-topbar-brand-text{font-size:var(--text-xl);font-weight:700}.app-shell-topbar-user{display:inline-flex;align-items:center;gap:var(--space-md)}.app-shell-topbar-user-name{font-size:var(--text-sm);color:var(--color-textMuted)}.app-shell-topbar-avatar{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border-radius:9999px;background:var(--color-primary);color:var(--color-onAccent);font-size:var(--text-sm);font-weight:700}.app-shell-body{flex:1;display:flex;flex-direction:row;min-height:0}.app-shell-content{flex:1;min-width:0px;margin:0;padding:32px}.app-shell-sidebar{width:240px;flex:0 0 240px;border-left:1px solid var(--color-border);background:var(--color-surface);transition:width .2s ease,flex-basis .2s ease;display:flex;flex-direction:column;align-items:stretch;padding:var(--space-xl);gap:var(--space-lg)}.app-shell-sidebar--collapsed{width:48px;flex-basis:48px;padding:var(--space-md)}.app-shell-sidebar-toggle{display:inline-flex;align-items:center;justify-content:center;width:100%;min-height:32px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surfaceAlt);color:var(--color-text);cursor:pointer}.app-shell-sidebar-nav{display:flex;flex-direction:column;gap:var(--space-xl)}.app-shell-sidebar-section{display:flex;flex-direction:column;gap:var(--space-sm)}.app-shell-sidebar-section-title{margin:0;color:var(--color-textMuted);font-size:var(--text-xs);letter-spacing:.08em;font-weight:700}.app-shell-sidebar-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-xs)}.app-shell-sidebar-item{width:100%;display:inline-flex;align-items:center;gap:var(--space-sm);border:0;border-left:3px solid transparent;background:transparent;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);text-decoration:none;color:var(--color-text);font-size:var(--text-lg)}.app-shell-sidebar-item--active{color:var(--color-accent);background:var(--color-accentSoft);border-left-color:var(--color-accent)}.app-shell-sidebar-item--disabled{cursor:not-allowed;color:var(--color-textMuted)}.app-shell-sidebar-icon{flex:0 0 auto}.app-shell-sidebar-collapsed-label{color:var(--color-textMuted);font-size:var(--text-xs);text-align:center}@media(max-width:1024px){.app-shell-content{padding:24px}}body{margin:0;font-family:var(--font-sans);font-size:var(--text-base);color:var(--color-text);background:var(--color-background)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-xl);border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-surfaceAlt);color:var(--color-text);font-size:var(--text-sm);font-weight:500;cursor:pointer;transition:background .2s ease,transform .1s ease}.btn:hover{background:#3573ff40}.btn:active{transform:translateY(1px)}.btn--primary{background:var(--color-accent);border-color:var(--color-accent);color:#0b1020}.btn--primary:hover{background:#4c85ff}.btn--secondary{background:var(--color-surfaceAlt)}.btn--ghost{background:transparent;border-color:#273040b3;color:var(--color-textMuted)}.btn--ghost:hover{background:#3573ff1f;color:var(--color-text)}.btn--sm{padding:var(--space-xs) var(--space-lg);font-size:var(--text-xs)}.btn[aria-busy=true]{position:relative;pointer-events:none;opacity:.7}.btn[aria-busy=true]:after{content:"";position:absolute;right:10px;top:50%;width:12px;height:12px;margin-top:-6px;border-radius:50%;border:2px solid rgba(255,255,255,.5);border-top-color:transparent;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.palette-item:focus-visible,.btn:focus-visible{outline:none;box-shadow:0 0 0 var(--focus-ring-offset) var(--color-background),0 0 0 calc(var(--focus-ring-offset) + var(--focus-ring-width)) var(--focus-ring)}.table{width:100%;border-collapse:collapse;font-size:var(--text-sm);color:var(--color-text)}.table th,.table td{padding:var(--space-md);border-bottom:1px solid var(--color-border)}.table thead th{background:var(--color-surfaceAlt);position:sticky;top:0;text-align:left}.table tbody tr:hover{background:#3573ff14}.statusbar{display:flex;gap:var(--space-lg);align-items:center;padding:var(--space-sm) var(--space-xl);background:var(--color-surface);border-top:1px solid var(--color-border);color:var(--color-textMuted)}:root{--color-background: #0f1115;--color-surface: #151923;--color-surfaceAlt: #1b2027;--color-border: #273040;--color-text: #e6e8ea;--color-textMuted: #a7b0b8;--color-accent: #3573ff;--color-success: #22c55e;--color-warning: #f59e0b;--color-error: #ef4444;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--space-xs: 2px;--space-sm: 4px;--space-md: 8px;--space-lg: 12px;--space-xl: 16px;--space-xxl: 24px;--font-sans: Inter, system-ui, sans-serif;--text-xs: 12px;--text-sm: 13px;--text-base: 14px;--text-lg: 16px;--text-xl: 18px;--text-2xl: 22px;--elev-card: 0 1px 2px rgba(0,0,0,.25);--elev-popover: 0 8px 24px rgba(0,0,0,.35);--focus-ring-width: 2px;--focus-ring-offset: 2px;--focus-ring: var(--color-accent)}*{box-sizing:border-box}html,body{height:100%}#root{min-height:100%}body{margin:0;font-family:var(--font-sans);font-size:var(--text-base);line-height:1.5;background:var(--color-background);color:var(--color-text)}#root{display:flex;justify-content:center}a{color:var(--color-accent)}a:hover{color:#5a8dff}.app-root{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:var(--space-xxl);padding:var(--space-xxl);width:100%}@media(max-width:1280px){.app-root{grid-template-columns:1fr}}.app-column{display:flex;flex-direction:column;gap:var(--space-xl);min-width:0}.app-column--sidebar{gap:2px}.app-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-xl);box-shadow:var(--elev-card)}.app-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-md)}.app-toolbar__meta{display:flex;align-items:center;gap:var(--space-sm);color:var(--color-textMuted);font-size:var(--text-sm)}.control-chip{display:inline-flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-surfaceAlt);color:var(--color-text);font-size:var(--text-sm)}.control-chip input{accent-color:var(--color-accent)}.control-chip label{display:inline-flex;align-items:center;gap:var(--space-md)}.control-input{padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-surfaceAlt);color:var(--color-text);font-size:var(--text-sm)}.control-input::placeholder{color:var(--color-textMuted)}.control-input--number{width:80px;text-align:right}.app-canvas__layout{display:grid;overflow:hidden;grid-template-columns:minmax(0,1fr) 56px;align-items:stretch;gap:var(--space-lg)}.app-card.app-canvas{padding:0;background:transparent;border:none;box-shadow:none;align-self:flex-start;width:fit-content;max-width:100%}.app-canvas__layout{display:grid;grid-template-columns:minmax(0,1fr) 56px;gap:var(--space-lg);background:#fff;border:2px solid rgba(34,197,94,.55);border-radius:var(--radius-md);box-shadow:0 0 0 1px #22c55e33}.app-canvas__surface{display:block;width:100%;border-radius:calc(var(--radius-md) - 2px);background:#fff;border:none}.app-canvas__controls{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-md);padding:var(--space-md) var(--space-sm);background:#fff;border-left:1px solid rgba(39,48,64,.15)}.app-canvas__zoomLabel{font-size:var(--text-sm);color:var(--color-textMuted)}.app-canvas__zoom{writing-mode:bt-lr;-webkit-appearance:slider-vertical;appearance:slider-vertical;height:220px;width:24px;background:transparent}.app-canvas__zoom::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;border-radius:50%;background:var(--color-accent);border:none}.app-canvas__zoom::-webkit-slider-runnable-track{background:var(--color-border);border-radius:999px}.app-palette__header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-lg);margin-bottom:var(--space-lg)}.app-palette__actions{display:flex;gap:var(--space-md)}.palette-item{padding:var(--space-md) var(--space-xl);border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-surfaceAlt);color:var(--color-text);cursor:grab;transition:background .2s ease,transform .1s ease}.palette-item:active{cursor:grabbing;transform:scale(.99)}.palette-item__body{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md)}.palette-item__name{font-weight:600}.palette-item__name-button{background:none;border:none;padding:0;font:inherit;color:inherit;cursor:pointer;text-align:left}.palette-item__name-button:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.palette-item__color-dot{width:14px;height:14px;border-radius:9999px;border:1px solid var(--color-border);background:transparent;flex-shrink:0}.palette-item__color-dot.has-color{box-shadow:0 0 0 2px #ffffff8c}.palette-item__color-menu{margin-top:var(--space-md);display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-sm);outline:none}.palette-item__swatch{border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:6px 8px;font-size:var(--text-xs);font-weight:600;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease}.palette-item__swatch:hover{box-shadow:0 0 0 2px #0f172a1f;transform:translateY(-1px)}.palette-item__swatch.is-active{box-shadow:0 0 0 2px #0f172a59}.palette-item__swatch:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.palette-item__delete-btn{grid-column:1/-1;margin-top:var(--space-xs);padding:6px 8px;font-size:var(--text-xs);font-weight:600;background:var(--color-danger,#dc2626);color:#fff;border:1px solid rgba(0,0,0,.1);border-radius:var(--radius-sm);cursor:pointer;transition:background .15s ease,transform .12s ease}.palette-item__delete-btn:hover{background:#b91c1c;transform:translateY(-1px)}.palette-item__delete-btn:active{transform:translateY(0)}.palette-item__delete-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.app-panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--elev-card)}.app-panel>button{width:100%;display:flex;align-items:center;justify-content:space-between;padding:var(--space-lg);background:transparent;border:none;color:var(--color-text);font-size:var(--text-base);font-weight:600;cursor:pointer}.app-panel__chevron{font-size:var(--text-xl);line-height:1;color:var(--color-textMuted)}.app-panel>div{padding:var(--space-lg);border-top:1px solid var(--color-border);background:var(--color-surfaceAlt)}.app-list{max-height:220px;overflow:auto;border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-sm);background:var(--color-surfaceAlt)}.app-list__item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-surfaceAlt);font-size:var(--text-sm)}.control-row{display:flex;align-items:center;gap:var(--space-sm)}.control-radio{display:inline-flex;align-items:center;gap:var(--space-sm)}.control-select{padding:var(--space-sm) var(--space-lg);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surfaceAlt);color:var(--color-text)}.form-row{display:flex;align-items:center;gap:var(--space-md);font-size:var(--text-sm)}.form-row--wrap{flex-wrap:wrap}.muted-text{color:var(--color-textMuted)}.section-title{margin:0 0 var(--space-md);font-size:var(--text-lg);font-weight:600}.bom-panel{display:grid;gap:var(--space-lg)}.app-card .section-title{color:var(--color-text)}.app-card h3,.app-card h2{margin-top:0}.app-card p{margin-top:0;color:var(--color-textMuted)}:focus-visible{outline:none;box-shadow:0 0 0 var(--focus-ring-offset) var(--color-background),0 0 0 calc(var(--focus-ring-offset) + var(--focus-ring-width)) var(--focus-ring)}.flex{display:flex}.grid{display:grid}.flex-wrap{flex-wrap:wrap}.flex-1{flex:1}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.text-sm{font-size:var(--text-sm)}.text-xs{font-size:var(--text-xs)}.text-lg{font-size:var(--text-lg)}.text-xl{font-size:var(--text-xl)}.font-semibold{font-weight:600}.font-bold{font-weight:700}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Liberation Mono,Courier New,monospace}.text-gray-500{color:var(--color-textMuted)}.text-gray-600{color:#a6b0bacc}.mt-2{margin-top:var(--space-md)}.mb-1{margin-bottom:var(--space-sm)}.mb-2{margin-bottom:var(--space-md)}.mb-3{margin-bottom:var(--space-lg)}.mb-4{margin-bottom:var(--space-xl)}.gap-1{gap:var(--space-sm)}.gap-2{gap:var(--space-md)}.gap-3{gap:var(--space-lg)}.gap-6{gap:var(--space-xxl)}.space-y-1>*+*{margin-top:var(--space-sm)}.space-y-2>*+*{margin-top:var(--space-md)}.space-y-3>*+*{margin-top:var(--space-lg)}.space-y-6>*+*{margin-top:var(--space-xxl)}.border{border:1px solid var(--color-border)}.rounded-lg{border-radius:var(--radius-sm)}.rounded-2xl{border-radius:var(--radius-md)}.p-2{padding:var(--space-md)}.p-3{padding:var(--space-lg)}.p-4{padding:var(--space-xl)}.px-2{padding-left:var(--space-lg);padding-right:var(--space-lg)}.py-1{padding-top:var(--space-sm);padding-bottom:var(--space-sm)}.max-h-56{max-height:14rem}.overflow-auto{overflow:auto}.list-disc{list-style:disc}.pl-5{padding-left:20px}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mesh-designer-form{display:flex;flex-direction:column;gap:var(--space-xl)}.mesh-designer-form fieldset{border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-md) var(--space-lg);display:grid;gap:var(--space-md)}.mesh-designer-form legend{font-size:var(--text-sm);font-weight:600;padding:0 var(--space-sm);color:var(--color-text)}.mesh-designer-row{display:grid;grid-template-columns:max-content 1fr;align-items:center;gap:var(--space-md)}.mesh-designer-label{font-size:var(--text-sm);color:var(--color-text)}.mesh-designer-input{width:100%}.mesh-designer-panel,.mesh-designer-panel__surface,.mesh-designer-panel__surface label,.mesh-designer-panel__surface legend,.mesh-designer-panel__surface h3,.mesh-designer-panel__surface h4,.mesh-designer-panel__surface span,.mesh-designer-panel__surface p{color:#111827}.mesh-designer-panel__surface input,.mesh-designer-panel__surface select,.mesh-designer-panel__surface button:not(.mesh-designer-mode-btn--active){color:#111827}.mesh-designer-mode-btn{background:#fff;border-color:#9ca3af;font-weight:600;transition:background-color .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease}.mesh-designer-mode-btn--active{background:#fff;border-color:#111827;color:#111827;box-shadow:0 0 0 1px #111827}.mesh-designer-panel__surface button.mesh-designer-mode-btn--inactive{background:#e5e7eb;border-color:#9ca3af;color:#374151}.mesh-designer-mode-btn:focus-visible{outline:2px solid #1d4ed8;outline-offset:2px;box-shadow:none}.mesh-designer-preview-meta,.mesh-designer-preview-helper{color:#374151}.mesh-designer-mode-guidance{color:#1f2937}@media(max-width:640px){.mesh-designer-row{grid-template-columns:1fr;gap:var(--space-sm)}}.auth-page{min-height:100vh;width:100vw;display:grid;place-items:center;padding:var(--space-xl);background:radial-gradient(circle at 15% 20%,#3573ff24,#3573ff00 48%),radial-gradient(circle at 85% 80%,#3573ff1f,#3573ff00 52%),var(--color-background)}.auth-card{width:min(440px,100%);background:#151923b8;border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:0 8px 30px #00000059;padding:var(--space-xxl);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}.auth-brand{margin:0}.auth-brand h1{margin:0;font-size:24px;font-weight:760;color:var(--color-text);line-height:1.2}.auth-subtitle{margin:8px 0 20px;color:var(--color-textMuted);font-size:14px}.auth-form{display:grid;gap:10px}.auth-label{display:grid;gap:6px;color:var(--color-textMuted);font-size:13px}.auth-input{width:100%;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surfaceAlt);color:var(--color-text);padding:10px 12px;font-size:14px}.auth-input:focus{outline:none;border-color:#3573ff73;box-shadow:0 0 0 2px #3573ff2e}.auth-submit{margin-top:10px;justify-self:stretch;width:100%;border:1px solid rgba(53,115,255,.3);border-radius:999px;background:#3573ff33;color:var(--color-text);padding:8px 12px;font-size:13px;font-weight:600;cursor:pointer}.auth-submit:hover{background:#3573ff47}.auth-submit:disabled{opacity:.7;cursor:default}.auth-error{color:var(--color-error);font-size:13px;margin:0}.auth-success{color:var(--color-success);font-size:13px;margin:0}.auth-footer{margin:6px 0 0;font-size:13px;color:var(--color-textMuted)}.auth-footer a{color:var(--color-accent)}
