:root{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5;font-weight:400;color-scheme:light;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-width:320px;min-height:100vh}#root{min-height:100vh}.user-dropdown-wrap{position:relative}.user-dropdown-trigger{display:flex;align-items:center;gap:.5rem;cursor:pointer;padding:.25rem .5rem;border-radius:8px;border:none;background:none;transition:background .15s}.user-dropdown-trigger:hover{background:var(--color-bg)}.user-dropdown-trigger .user-avatar-sm{width:28px;height:28px;font-size:.7rem}.user-dropdown-trigger .user-name{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-dropdown-menu{position:absolute;right:0;top:calc(100% + 4px);min-width:220px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;box-shadow:0 8px 24px #0000001f;z-index:500;animation:slideUp .12s ease-out;overflow:hidden;padding:4px 0}.user-dropdown-info{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--color-border);margin-bottom:2px}.user-dropdown-avatar{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:#2563eb;color:#fff;font-size:.78rem;font-weight:600;flex-shrink:0;letter-spacing:.3px}.user-dropdown-info-text{display:flex;flex-direction:column;gap:1px;min-width:0}.user-dropdown-info-text strong{font-size:.85rem;font-weight:600;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-dropdown-role{font-size:.75rem;color:var(--color-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-dropdown-sep{height:1px;background:var(--color-border);margin:0}.user-dropdown-item{display:flex;align-items:center;gap:8px;width:100%;padding:9px 14px;border:none;background:none;cursor:pointer;font-size:.82rem;color:var(--color-text);transition:background .12s;letter-spacing:.1px}.user-dropdown-item:hover{background:var(--color-bg)}.user-dropdown-item.danger{color:#dc2626}.user-dropdown-item.danger:hover{background:#fef2f2}.setup-layout{min-height:100vh;display:flex;flex-direction:column}.setup-layout:has(.designer-page){height:100vh;max-height:100vh}.setup-header{background:var(--color-surface);border-bottom:3px solid var(--color-primary);padding:0 1.5rem;height:52px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:100}.setup-header-left{display:flex;align-items:center;gap:.5rem;color:var(--color-primary)}.setup-title{font-size:1.1rem;font-weight:700;color:var(--color-primary)}.setup-close-btn{font-size:.8rem;padding:.3rem .75rem}.setup-body{display:flex;flex:1;min-height:0}.setup-sidebar{width:200px;min-width:200px;background:var(--color-surface);border-right:1px solid var(--color-border)}.setup-sidebar-nav{padding:.5rem 0}.setup-sidebar-nav .sidebar-link{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;color:var(--color-text-muted);text-decoration:none;font-size:.85rem;border-left:3px solid transparent;transition:background .15s,color .15s}.setup-sidebar-nav .sidebar-link:hover{background:var(--color-bg);color:var(--color-text)}.setup-sidebar-nav .sidebar-link.active{color:var(--color-primary);background:#2563eb0f;border-left-color:var(--color-primary);font-weight:600}.setup-main{flex:1;padding:1.5rem;max-width:1400px;width:100%;margin:0 auto;overflow-y:auto}.setup-main:has(.designer-page){max-width:100%;padding:0;overflow:hidden}.setup-main:has(.page--no-pad){max-width:100%;padding:0}.setup-main:has(.wf-editor){max-width:100%;padding:0}.setup-sidebar-divider{padding:.6rem 1rem .3rem;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);border-top:1px solid var(--color-border);margin-top:.25rem}.checkbox-label{display:inline-flex;align-items:center;gap:.5rem;font-size:.88rem;cursor:pointer;padding:.4rem .65rem;border-radius:6px;border:1px solid var(--color-border);background:var(--color-bg);transition:border-color .15s;margin-top:.5rem}.checkbox-label:hover{border-color:var(--color-primary)}.checkbox-label input[type=checkbox]{accent-color:var(--color-primary);width:16px;height:16px;margin:0}.user-pick-list{max-height:300px;overflow-y:auto;border:1px solid var(--color-border);border-radius:8px;margin-top:.75rem}.user-pick-item{display:flex;align-items:center;gap:.65rem;padding:.55rem .75rem;cursor:pointer;transition:background .12s;border-bottom:1px solid var(--color-border);width:100%;border-left:none;border-right:none;border-top:none;background:none;text-align:left;font:inherit;color:inherit}.user-pick-item:first-child{border-top:none}.user-pick-item:last-child{border-bottom:none}.user-pick-item:hover{background:var(--color-bg)}.user-pick-item:disabled{opacity:.5;cursor:not-allowed}.user-pick-item.selected{background:#2563eb0f}.user-pick-item .user-avatar-sm{background:linear-gradient(135deg,#6366f1,#2563eb)}.user-pick-item-info{flex:1;min-width:0}.user-pick-item-name{font-weight:500;font-size:.88rem;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-pick-email{font-size:.75rem;color:var(--color-text-muted);line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.alert-success{padding:.75rem 1rem;background:#dcfce7;color:#15803d;border-radius:6px;font-size:.88rem;display:flex;align-items:center;gap:.5rem}.forms-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:1rem}.form-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.25rem;display:flex;flex-direction:column;gap:.75rem;transition:box-shadow .15s}.form-card:hover{box-shadow:var(--shadow-md)}.form-card-header{display:flex;justify-content:space-between;align-items:flex-start}.form-card-title{font-size:1.0625rem;font-weight:600;color:var(--color-primary);text-decoration:none;display:block;margin-bottom:.375rem}.form-card-title:hover{text-decoration:underline}.form-card-meta{display:flex;align-items:center;gap:.5rem;font-size:.75rem;color:var(--color-text-muted)}.form-card-desc{font-size:.8125rem;color:var(--color-text-muted);line-height:1.4}.form-card-actions{display:flex;gap:.375rem;margin-top:auto;padding-top:.5rem;border-top:1px solid var(--color-border)}.copy-mode-menu{position:absolute;right:0;top:100%;z-index:20;min-width:220px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:0 4px 12px #0000001f;padding:.25rem 0;margin-top:.25rem}.copy-mode-option{display:flex;flex-direction:column;width:100%;padding:.5rem .75rem;border:none;background:none;cursor:pointer;text-align:left;font-size:.8125rem;color:var(--color-text);transition:background .1s}.copy-mode-option:hover{background:var(--color-bg)}.copy-mode-path{font-size:.7rem;color:var(--color-text-muted);font-family:SF Mono,Consolas,monospace;margin-top:.1rem}.dynamic-form{background:var(--color-surface)}.form-section{margin-bottom:1.5rem}.form-section-title{font-size:.875rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid var(--color-border)}.table-select-wrapper{position:relative}.table-select-trigger{display:flex;align-items:center;padding:.5rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);cursor:pointer;min-height:2.5rem;transition:border-color .15s}.table-select-trigger:hover{border-color:var(--color-primary)}.table-select-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:100;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:0 4px 16px #0000001f;max-height:360px;display:flex;flex-direction:column}.table-select-search{margin:.5rem;padding:.4rem .6rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.85rem;flex-shrink:0}.table-select-options{overflow-y:auto;flex:1}.table-select-option{display:flex;justify-content:space-between;align-items:center;padding:.5rem .75rem;cursor:pointer;transition:background .1s}.table-select-option:hover{background:color-mix(in srgb,var(--color-primary) 8%,transparent)}.table-select-option.selected{background:color-mix(in srgb,var(--color-primary) 12%,transparent);font-weight:500}.table-select-option-name{font-family:var(--font-mono, monospace);font-size:.85rem}.table-select-option-meta{display:flex;gap:.75rem;font-size:.78rem;color:var(--color-text-muted)}.designer-page{display:flex;flex-direction:column;height:calc(100vh - 60px);overflow:hidden}.designer-toolbar{display:flex;justify-content:space-between;align-items:center;padding:.5rem 1rem;border-bottom:1px solid var(--color-border);background:var(--color-surface);flex-shrink:0}.designer-toolbar-left,.designer-toolbar-right{display:flex;align-items:center;gap:.5rem}.designer-title{margin:0;font-size:1rem;cursor:pointer;display:flex;align-items:center;gap:.3rem}.designer-title:hover{color:var(--color-primary)}.designer-title .edit-icon{font-size:.75rem;opacity:.3}.designer-title:hover .edit-icon{opacity:.7}.designer-title-input{font-size:1rem;font-weight:600;border:1px solid var(--color-primary);border-radius:4px;padding:.15rem .4rem;outline:none;min-width:200px}.designer-name-edit-popover{position:absolute;top:100%;left:0;z-index:100;background:var(--color-bg);border:1px solid var(--color-border);border-radius:8px;box-shadow:0 4px 16px #0000001f;padding:.75rem;display:flex;flex-direction:column;gap:.5rem;min-width:320px}.designer-name-edit-popover label{font-size:.75rem;font-weight:600;color:var(--color-text-muted)}.designer-name-edit-popover input,.designer-name-edit-popover textarea{font-size:.85rem;border:1px solid var(--color-border);border-radius:4px;padding:.35rem .5rem;outline:none;width:100%;font-family:inherit}.designer-name-edit-popover input:focus,.designer-name-edit-popover textarea:focus{border-color:var(--color-primary)}.designer-name-edit-popover textarea{resize:vertical;min-height:48px}.designer-name-edit-actions{display:flex;justify-content:flex-end;gap:.35rem}.designer-toolbar-label{display:flex;align-items:center;gap:.35rem;font-size:.8rem;color:var(--color-text-muted);white-space:nowrap;flex-shrink:0}.designer-toolbar-label select{padding:.2rem .4rem;font-size:.8rem}.designer-body{display:flex;flex:1;overflow:hidden}.designer-tabs{display:flex;gap:0;border-bottom:2px solid var(--color-border);padding:0 1rem;background:var(--color-bg);flex-shrink:0}.designer-tab{padding:.5rem 1.25rem;font-size:.85rem;font-weight:500;background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;color:var(--color-text-muted);transition:color .15s,border-color .15s}.designer-tab:hover{color:var(--color-text)}.designer-tab-active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.designer-table-tab{flex:1;overflow-y:auto;padding:1.5rem 2rem;max-width:800px}.designer-table-tab-sections{display:flex;flex-direction:column;gap:2rem}.dt-section{background:var(--color-bg-elevated, var(--color-bg));border:1px solid var(--color-border);border-radius:8px;padding:1.25rem 1.5rem}.dt-section-title{margin:0 0 .25rem;font-size:1rem}.dt-section-desc{margin:0 0 1rem;font-size:.8rem;color:var(--color-text-muted)}.dt-cards{display:flex;gap:.75rem;flex-wrap:wrap}.dt-card{display:flex;align-items:flex-start;gap:.5rem;padding:.75rem 1rem;border:2px solid var(--color-border);border-radius:8px;cursor:pointer;flex:1;min-width:180px;transition:border-color .15s,background .15s}.dt-card:hover{border-color:var(--color-primary-light, #93b5ff)}.dt-card-active{border-color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 5%,transparent)}.dt-card input[type=radio]{margin-top:.2rem;flex-shrink:0}.dt-card-body{display:flex;flex-direction:column;gap:.2rem}.dt-card-body strong{font-size:.85rem}.dt-card-body span{font-size:.75rem;color:var(--color-text-muted);line-height:1.3}.dt-field{display:flex;flex-direction:column;gap:.35rem}.dt-field label{font-size:.8rem;font-weight:600}.dt-field select{max-width:400px}.dt-hint{font-size:.75rem;color:var(--color-text-muted)}.dt-col-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:.35rem}.dt-col-item{display:flex;align-items:center;gap:.5rem;padding:.4rem .6rem;border:1px solid var(--color-border);border-radius:6px;cursor:pointer;font-size:.8rem;transition:background .1s}.dt-col-item:hover{background:var(--color-bg-hover, #f5f5f5)}.dt-col-item input[type=checkbox]{flex-shrink:0}.dt-col-name{font-weight:500}.dt-col-type{font-size:.7rem;color:var(--color-text-muted);margin-left:auto}.dt-empty{padding:1rem;text-align:center;color:var(--color-text-muted);font-size:.85rem}.designer-pane{display:flex;flex-direction:column;border-right:1px solid var(--color-border);overflow:hidden}.designer-pane:last-child{border-right:none}.pane-header{padding:.75rem 1rem .5rem;border-bottom:1px solid var(--color-border);flex-shrink:0}.pane-header h4{margin:0;font-size:.85rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text)}.pane-subtitle{font-size:.75rem;color:var(--color-text-muted)}.designer-palette{width:240px;min-width:200px;background:var(--color-bg-secondary, #f8f9fa);overflow-y:auto}.palette-search{margin:.5rem;padding:.4rem .6rem;font-size:.8rem;border:1px solid var(--color-border);border-radius:4px;width:calc(100% - 1rem)}.palette-list{flex:1;overflow-y:auto;padding:0 .5rem .5rem}.palette-item{display:flex;justify-content:space-between;align-items:center;padding:.45rem .6rem;margin-bottom:2px;border-radius:4px;background:var(--color-surface);border:1px solid var(--color-border);cursor:grab;font-size:.8rem;transition:box-shadow .15s}.palette-item:hover{box-shadow:0 1px 4px #0000001a;border-color:var(--color-primary)}.palette-item:active{cursor:grabbing}.palette-divider{border-top:1px solid var(--color-border);margin:.5rem 0}.palette-spacer-item{border-style:dashed;background:repeating-linear-gradient(45deg,transparent,transparent 8px,rgba(0,0,0,.02) 8px,rgba(0,0,0,.02) 16px);margin-bottom:.5rem}.palette-spacer-item .palette-item-name{font-style:italic;color:var(--color-text-muted)}.palette-item-name{display:flex;align-items:center;gap:.35rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.palette-item-type{font-size:.7rem;color:var(--color-text-muted);flex-shrink:0}.palette-fk-badge{font-size:.7rem;flex-shrink:0;title:attr(title)}.meta-badge-lookup{font-size:.625rem;background:var(--color-primary);color:#fff;padding:.05rem .3rem;border-radius:3px;font-weight:600}.palette-empty{text-align:center;padding:2rem 1rem;color:var(--color-text-muted);font-size:.8rem}.drag-handle{color:var(--color-text-muted);cursor:grab;-webkit-user-select:none;user-select:none;font-size:.9rem;line-height:1}.designer-canvas{flex:1;min-width:0;background:var(--color-bg)}.canvas-grid{display:grid;gap:.75rem;padding:1rem;flex:1;overflow-y:auto;align-content:start}.canvas-empty{display:flex;align-items:center;justify-content:center;min-height:200px;border:2px dashed var(--color-border);border-radius:8px;color:var(--color-text-muted);font-size:.9rem}.canvas-field{border:1px solid var(--color-border);border-radius:6px;padding:.5rem .6rem;background:var(--color-surface);cursor:pointer;transition:border-color .15s,box-shadow .15s,opacity .15s,transform .15s;-webkit-user-select:none;user-select:none;position:relative}.canvas-field:hover{border-color:var(--color-primary)}.canvas-field-selected{border-color:var(--color-primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--color-primary) 25%,transparent)}.being-dragged{opacity:.35;transform:scale(.97);border-style:dashed}.drop-target{border-color:var(--color-primary)!important;box-shadow:0 0 0 2px color-mix(in srgb,var(--color-primary) 30%,transparent)}.drop-target:before{content:"";position:absolute;top:-5px;left:0;right:0;height:3px;background:var(--color-primary);border-radius:3px;animation:dropIndicatorPulse 1s ease-in-out infinite;z-index:10}.drop-target:after{content:"";position:absolute;top:-8px;left:-4px;width:8px;height:8px;background:var(--color-primary);border-radius:50%;z-index:10}@keyframes dropIndicatorPulse{0%,to{opacity:1}50%{opacity:.5}}.canvas-drag-active .canvas-grid{background:color-mix(in srgb,var(--color-primary) 3%,transparent);border-radius:6px}.canvas-drop-end{border:2px dashed var(--color-border);border-radius:6px;padding:.75rem;text-align:center;color:var(--color-text-muted);font-size:.8rem;font-style:italic;transition:border-color .15s,background .15s}.drop-target-end-active{border-color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 8%,transparent);color:var(--color-primary)}.canvas-field-header{display:flex;align-items:center;gap:.35rem;margin-bottom:.35rem}.canvas-field-label{font-weight:600;font-size:.8rem;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.required-star{color:var(--color-danger);margin-left:2px}.canvas-field-remove{background:none;border:none;color:var(--color-text-muted);cursor:pointer;font-size:1rem;line-height:1;padding:0 .2rem;border-radius:3px}.canvas-field-remove:hover{background:var(--color-danger);color:#fff}.canvas-span-controls{display:flex;align-items:center;gap:1px;margin-left:auto;margin-right:.25rem}.span-btn{background:none;border:1px solid var(--color-border);color:var(--color-text-muted);cursor:pointer;font-size:.65rem;line-height:1;padding:.15rem .3rem;border-radius:3px}.span-btn:hover{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.span-badge{font-size:.6rem;font-weight:600;color:var(--color-text-muted);background:var(--color-bg);border:1px solid var(--color-border);border-radius:3px;padding:.1rem .3rem;min-width:1.5rem;text-align:center}.canvas-spacer{border:2px dashed var(--color-border)!important;background:repeating-linear-gradient(45deg,transparent,transparent 8px,rgba(0,0,0,.02) 8px,rgba(0,0,0,.02) 16px)!important;opacity:.7}.canvas-spacer:hover{opacity:1;border-color:var(--color-primary)!important}.spacer-label{font-style:italic;color:var(--color-text-muted)!important}.spacer-body{text-align:center;padding:.75rem 0;color:var(--color-text-muted);font-size:.75rem;font-style:italic}.add-spacer-btn{font-size:.7rem!important;padding:.15rem .5rem!important}.canvas-field-preview{margin-bottom:.25rem}.preview-input,.preview-select{background:var(--color-bg);border:1px solid var(--color-border);border-radius:4px;padding:.3rem .5rem;font-size:.75rem;color:var(--color-text-muted)}.preview-textarea{background:var(--color-bg);border:1px solid var(--color-border);border-radius:4px;height:3rem}.preview-checkbox{font-size:.75rem;color:var(--color-text-muted)}.canvas-field-meta{display:flex;gap:.5rem;font-size:.65rem;color:var(--color-text-muted)}.designer-properties{width:280px;min-width:240px;background:var(--color-bg-secondary, #f8f9fa)}.property-form{flex:1;overflow-y:auto;padding:.75rem}.property-section-title{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;font-weight:700;color:var(--color-text-muted);margin:1rem 0 .5rem;padding-bottom:.25rem;border-bottom:1px solid var(--color-border)}.property-section-title:first-child{margin-top:0}.property-group{margin-bottom:.6rem}.property-group label{display:block;font-size:.75rem;font-weight:500;margin-bottom:.2rem;color:var(--color-text)}.property-group input[type=text],.property-group input[type=number],.property-group select,.property-group textarea{width:100%;padding:.35rem .5rem;font-size:.8rem;border:1px solid var(--color-border);border-radius:4px}.property-group textarea{resize:vertical}.property-group-row label{display:flex;align-items:center;gap:.4rem;font-size:.8rem;cursor:pointer}.property-group-row input[type=checkbox]{width:auto}.property-info{font-size:.75rem;color:var(--color-text-muted);line-height:1.7}.property-empty{display:flex;align-items:center;justify-content:center;height:100%;color:var(--color-text-muted);text-align:center;padding:2rem;font-size:.85rem}.preview-modal-overlay{position:fixed;inset:0;z-index:1000;background:#00000080;display:flex;align-items:center;justify-content:center;padding:2rem;animation:fadeIn .15s ease-out}.preview-modal{background:var(--color-surface, #fff);border-radius:12px;box-shadow:0 8px 32px #0003;width:100%;max-width:900px;max-height:90vh;display:flex;flex-direction:column;animation:slideUp .2s ease-out}.preview-modal-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--color-border);flex-shrink:0}.preview-modal-title{display:flex;align-items:center;gap:.5rem;font-size:1.05rem;font-weight:600}.preview-modal-icon{font-size:1.2rem}.preview-modal-body{padding:1.5rem;overflow-y:auto;flex:1}.searchable-select{position:relative;width:100%}.searchable-select-trigger{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;border:1px solid var(--color-border);border-radius:6px;background:#fff;cursor:pointer;min-height:38px;font-size:.875rem;transition:border-color .15s}.searchable-select-trigger:hover{border-color:var(--color-primary)}.searchable-select-trigger.open{border-color:var(--color-primary);box-shadow:0 0 0 3px #2563eb1a}.searchable-select-trigger.disabled{background:#f1f5f9;cursor:not-allowed;opacity:.7}.searchable-select-input{border:none;outline:none;background:transparent;font-size:.875rem;width:100%;padding:0}.searchable-select-display{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.searchable-select-display.placeholder{color:var(--color-text-muted)}.searchable-select-icons{display:flex;align-items:center;gap:.25rem;flex-shrink:0;margin-left:.5rem}.searchable-select-clear{font-size:1rem;color:var(--color-text-muted);cursor:pointer;line-height:1;padding:0 .15rem}.searchable-select-clear:hover{color:var(--color-danger, #dc2626)}.searchable-select-arrow{font-size:.6rem;color:var(--color-text-muted)}.searchable-select-dropdown{position:absolute;top:100%;left:0;right:0;z-index:1000;margin-top:4px;background:#fff;border:1px solid var(--color-border);border-radius:6px;box-shadow:0 4px 16px #0000001f;max-height:240px;overflow-y:auto}.searchable-select-option{padding:.45rem .75rem;font-size:.85rem;cursor:pointer;transition:background .1s}.searchable-select-option:hover{background:#eff6ff}.searchable-select-option.selected{background:#dbeafe;font-weight:500}.searchable-select-empty{padding:.75rem;text-align:center;color:var(--color-text-muted);font-size:.85rem}.modal-lookup-trigger{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;border:1px solid var(--color-border);border-radius:6px;background:#fff;cursor:pointer;min-height:38px;font-size:.875rem;transition:border-color .15s}.modal-lookup-trigger:hover{border-color:var(--color-primary)}.modal-lookup-trigger.disabled{background:#f1f5f9;cursor:not-allowed;opacity:.7}.modal-lookup-display{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.modal-lookup-display.placeholder{color:var(--color-text-muted)}.modal-lookup-icons{display:flex;align-items:center;gap:.35rem;flex-shrink:0;margin-left:.5rem}.modal-lookup-clear{font-size:1rem;color:var(--color-text-muted);cursor:pointer}.modal-lookup-clear:hover{color:var(--color-danger, #dc2626)}.modal-lookup-btn{font-size:.85rem}.modal-lookup-overlay{position:fixed;inset:0;background:#0006;z-index:2000;display:flex;align-items:center;justify-content:center;animation:fadeIn .15s ease-out}.modal-lookup-dialog{background:#fff;border-radius:12px;width:90%;max-width:640px;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 12px 40px #0003;animation:slideUp .2s ease-out}.modal-lookup-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--color-border)}.modal-lookup-header h4{margin:0;font-size:1rem}.modal-lookup-search{display:flex;align-items:center;gap:.75rem;padding:.75rem 1.25rem;border-bottom:1px solid var(--color-border)}.modal-lookup-search input{flex:1;padding:.4rem .6rem;font-size:.85rem;border:1px solid var(--color-border);border-radius:4px}.modal-lookup-count{font-size:.75rem;color:var(--color-text-muted);white-space:nowrap}.modal-lookup-table-wrap{flex:1;overflow-y:auto;padding:0}.modal-lookup-table{width:100%;border-collapse:collapse}.modal-lookup-table th{position:sticky;top:0;background:var(--color-bg-secondary, #f8f9fa);padding:.5rem 1rem;text-align:left;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);border-bottom:1px solid var(--color-border)}.modal-lookup-table td{padding:.5rem 1rem;font-size:.85rem;border-bottom:1px solid var(--color-border)}.modal-lookup-table tr{cursor:pointer;transition:background .1s}.modal-lookup-table tbody tr:hover{background:#eff6ff}.modal-lookup-table tr.selected{background:#dbeafe}.modal-lookup-empty{text-align:center;color:var(--color-text-muted);padding:2rem!important}.modal-lookup-loading{text-align:center;padding:2rem;color:var(--color-text-muted)}.modal-lookup-pagination{display:flex;align-items:center;justify-content:center;gap:1rem;padding:.75rem;border-top:1px solid var(--color-border);font-size:.8rem}.modal-lookup-pagination button{padding:.3rem .75rem;font-size:.8rem;border:1px solid var(--color-border);border-radius:4px;background:#fff;cursor:pointer}.modal-lookup-pagination button:hover:not(:disabled){background:#f1f5f9}.modal-lookup-pagination button:disabled{opacity:.4;cursor:not-allowed}.cs-dropdown-menu{position:fixed;z-index:9999;min-width:160px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:0 4px 12px #0000001f;padding:4px 0}.cs-dropdown-item{display:flex;align-items:center;gap:.5rem;width:100%;padding:6px 12px;font-size:.8rem;background:none;border:none;cursor:pointer;color:var(--color-text);white-space:nowrap;text-align:left}.cs-dropdown-item:hover{background:var(--color-bg)}.report-category-title{font-size:1rem;font-weight:600;color:var(--color-text-muted);margin:1.5rem 0 .75rem;padding-bottom:.25rem;border-bottom:1px solid var(--color-border)}.report-category:first-child .report-category-title{margin-top:0}.report-params{display:flex;flex-wrap:wrap;gap:1rem;padding:1rem;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius);margin-bottom:1rem}.report-param-field{display:flex;flex-direction:column;gap:.25rem;min-width:160px}.report-param-field label{font-size:.8125rem;font-weight:500;color:var(--color-text-muted)}.report-param-field input{padding:.375rem .5rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.875rem}.report-filters{padding:1rem;background:#f8fafc;border:1px solid var(--color-border);border-radius:var(--radius);margin-bottom:1rem}.report-filters-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.report-filters-title{font-weight:600;font-size:.875rem}.report-filters-empty{color:var(--color-text-muted);font-size:.8125rem;margin:0}.report-filter-row{display:flex;gap:.5rem;align-items:center;margin-bottom:.5rem}.report-filter-row select,.report-filter-row input{padding:.375rem .5rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.8125rem}.report-filter-row select{min-width:130px}.report-filter-row input{flex:1;min-width:120px}.report-table-wrapper{overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius);margin-bottom:1rem}.report-table{width:100%;border-collapse:collapse;font-size:.875rem}.report-table thead{background:#f1f5f9;position:sticky;top:0;z-index:1}.report-table th{padding:.625rem .75rem;text-align:left;font-weight:600;font-size:.8125rem;color:var(--color-text-muted);border-bottom:2px solid var(--color-border);white-space:nowrap;-webkit-user-select:none;user-select:none}.report-table th.sortable{cursor:pointer}.report-table th.sortable:hover{color:var(--color-primary)}.th-content{display:inline-flex;align-items:center;gap:.25rem}.report-table td{padding:.5rem .75rem;border-bottom:1px solid #e2e8f0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:300px}.report-table tbody tr:hover{background:#f8fafc}.report-loading,.report-empty{text-align:center;padding:2rem!important;color:var(--color-text-muted)}.report-pagination{display:flex;align-items:center;justify-content:space-between;padding:.75rem 0;font-size:.8125rem;flex-wrap:nowrap}.report-pagination-info{color:var(--color-text-muted);white-space:nowrap}.report-pagination-controls{display:flex;align-items:center;gap:.375rem;flex-wrap:nowrap;flex-shrink:0}.report-pagination-controls .btn{white-space:nowrap;flex-shrink:0}.report-page-size{padding:.25rem .375rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.8125rem;margin-right:.5rem;white-space:nowrap;flex-shrink:0}.report-page-label{padding:0 .5rem;font-weight:500;white-space:nowrap}.rv-saved-filters-bar{display:flex;align-items:center;gap:.5rem;padding:.5rem 0;flex-wrap:wrap;border-bottom:1px solid var(--color-border);margin-bottom:.5rem}.rv-saved-filters-label{font-size:.75rem;font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.03em}.rv-saved-filter-chip{display:inline-flex;align-items:center;background:var(--color-surface);border:1px solid var(--color-border);border-radius:999px;font-size:.8125rem;overflow:hidden;transition:all .15s}.rv-saved-filter-chip.active{background:#e0e7ff;border-color:#818cf8}.rv-saved-filter-name{padding:.25rem .625rem;background:none;border:none;cursor:pointer;font-size:.8125rem;display:flex;align-items:center;gap:.25rem;color:var(--color-text)}.rv-saved-filter-name:hover{color:var(--color-primary)}.rv-chip-icon{color:var(--color-text-muted);flex-shrink:0}.rv-saved-filter-chip.active .rv-chip-icon{color:var(--color-primary)}.rv-saved-filter-delete{padding:.25rem .375rem;background:none;border:none;border-left:1px solid var(--color-border);cursor:pointer;color:var(--color-text-muted);display:flex;align-items:center}.rv-saved-filter-delete:hover{background:#fee2e2;color:var(--color-danger)}.rv-save-dialog{margin-top:.75rem;padding:1rem;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface)}.rv-save-dialog-header{font-weight:600;font-size:.875rem;margin-bottom:.75rem}.rv-save-dialog-body{display:flex;flex-direction:column;gap:.625rem}.rv-save-dialog-options{display:flex;gap:1.25rem;font-size:.8125rem}.rv-save-dialog-options label{display:flex;align-items:center;gap:.375rem;cursor:pointer}.rv-save-dialog-footer{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.75rem}.rv-column-picker{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);padding:.75rem;margin-bottom:1rem}.rv-column-picker-header{display:flex;justify-content:space-between;align-items:center;font-weight:600;font-size:.875rem;margin-bottom:.5rem}.rv-column-picker-list{display:flex;flex-wrap:wrap;gap:.375rem 1rem}.rv-column-picker-item{display:flex;align-items:center;gap:.375rem;font-size:.8125rem;cursor:pointer;padding:.125rem 0}.rv-column-picker-info{margin-top:.5rem;font-size:.75rem;color:var(--color-text-muted);font-style:italic}.create-report-section{margin-bottom:1.5rem}.create-report-hint{font-size:.8125rem;color:var(--color-text-muted);margin:.375rem 0 0}.create-report-hint code{background:#f1f5f9;padding:.125rem .375rem;border-radius:3px;font-size:.8125rem}.create-report-grid{display:grid;grid-template-columns:1fr 1fr;gap:.75rem 1.25rem}.create-report-actions{display:flex;gap:.5rem;padding-top:1rem;border-top:1px solid var(--color-border)}.report-columns-table-wrapper{border:1px solid var(--color-border);border-radius:var(--radius)}.report-columns-table{width:100%;border-collapse:collapse;font-size:.8125rem}.report-columns-table th{padding:.5rem .375rem;text-align:left;font-weight:600;font-size:.75rem;color:var(--color-text-muted);background:#f8fafc;border-bottom:1px solid var(--color-border);white-space:nowrap}.report-columns-table td{padding:.375rem;border-bottom:1px solid #e2e8f0;vertical-align:middle}.report-columns-table tbody tr:hover{background:#fafbfd}.col-input{width:100%;padding:.25rem .375rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.8125rem;background:#fff}.col-name-fixed{font-family:monospace;font-size:.8125rem;color:var(--color-text)}.col-drag-handle{cursor:grab;color:var(--color-text-muted);text-align:center;-webkit-user-select:none;user-select:none}.col-drag-handle:active{cursor:grabbing}.col-drag-handle svg{opacity:.4;transition:opacity .15s}.report-columns-table tbody tr:hover .col-drag-handle svg{opacity:1}.col-row-dragging{opacity:.4;background:var(--color-primary-light, #eff6ff)!important}.col-row-drop-above{box-shadow:0 -2px 0 0 var(--color-primary, #3b82f6)}.col-row-drop-below{box-shadow:0 2px 0 0 var(--color-primary, #3b82f6)}.col-row-drop-animate{animation:colDropFlash .3s ease-out}@keyframes colDropFlash{0%{background-color:var(--color-primary-light, #eff6ff);transform:scale(1.01)}50%{background-color:var(--color-primary-light, #dbeafe)}to{background-color:transparent;transform:scale(1)}}.report-columns-table tbody tr{position:relative;transition:background-color .15s ease,box-shadow .15s ease}.col-remove-btn{border:none;background:none;cursor:pointer;font-size:1rem;color:var(--color-text-muted);padding:.125rem .25rem}.col-remove-btn:hover{color:var(--color-danger)}.col-type-select{font-size:.75rem;padding:.15rem .25rem;min-width:70px}.col-expression-input{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.75rem;letter-spacing:-.02em}.expr-ac-wrapper{position:relative;flex:1}.expr-ac-wrapper input{width:100%;box-sizing:border-box}.expr-ac-dropdown{position:absolute;top:100%;left:0;right:0;z-index:200;background:var(--color-bg-primary, #fff);border:1px solid var(--color-border, #d1d5db);border-radius:6px;box-shadow:0 6px 16px #0000001f;max-height:240px;overflow-y:auto;margin-top:2px}.expr-ac-group{padding:.35rem .5rem .2rem;font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary, #6b7280);background:var(--color-bg-secondary, #f9fafb);border-bottom:1px solid var(--color-border, #e5e7eb);position:sticky;top:0}.expr-ac-item{padding:.3rem .6rem;font-size:.78rem;cursor:pointer;display:flex;align-items:center;gap:.4rem;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;letter-spacing:-.02em}.expr-ac-item:hover{background:var(--color-bg-hover, #f3f4f6)}.expr-ac-highlight{background:var(--color-primary-light, #e0e7ff)!important;color:var(--color-primary, #4f46e5)}.expr-ac-item .expr-ac-insert{color:var(--color-text-secondary, #9ca3af);font-size:.7rem;margin-left:auto}.rd-col-add-group{display:flex;gap:.375rem}.rd-joins-list{display:flex;flex-direction:column;gap:.5rem}.rd-join-card{border:1px solid var(--color-border, #e5e7eb);border-radius:6px;padding:.5rem .625rem;background:var(--color-bg-secondary, #f9fafb);font-size:.8125rem}.rd-join-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.375rem}.rd-join-alias{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.75rem;font-weight:600;color:var(--color-primary, #4f46e5);letter-spacing:-.02em}.rd-join-card-row{display:flex;gap:.5rem;align-items:flex-start;margin-bottom:.375rem}.rd-join-card-row:last-child{margin-bottom:0}.rd-join-field{display:flex;flex-direction:column;gap:.125rem;flex:1;min-width:0}.rd-join-field>label{font-size:.6875rem;font-weight:500;color:var(--color-text-secondary, #6b7280);white-space:nowrap}.report-designer{display:flex;flex-direction:column;height:100%}.rd-mode-badge{font-size:.6875rem;padding:.125rem .5rem;background:#e0e7ff;color:#4338ca;border-radius:999px;font-weight:500}.rd-table-badge{font-size:.75rem;color:var(--color-text-muted);font-family:monospace}.rd-tabs{display:flex;gap:0;border-bottom:2px solid var(--color-border);margin:0;flex-shrink:0}.rd-tab{padding:.625rem 1.25rem;font-size:.8125rem;font-weight:500;color:var(--color-text-muted);background:none;border:none;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .15s}.rd-tab:hover{color:var(--color-text)}.rd-tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.rd-body{flex:1;overflow-y:auto;padding:1rem 0}.rd-panel{margin-bottom:1.5rem}.rd-panel-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem;font-weight:600;font-size:.875rem}.rd-sql-editor{width:100%;resize:vertical;min-height:150px}.rd-preview{margin-top:1rem;border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem;background:#fafbfd}.rd-preview-info{padding:.5rem .75rem;font-size:.8125rem;color:var(--color-text-muted);text-align:right}.rd-filters-list{display:flex;flex-direction:column;gap:.5rem}.alert-success{padding:.625rem 1rem;background:#ecfdf5;border:1px solid #a7f3d0;color:#065f46;border-radius:var(--radius);font-size:.875rem}.dashboard-page{padding:24px;max-width:1400px;margin:0 auto}.dashboard-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;gap:12px;flex-wrap:wrap}.dashboard-header-left{display:flex;align-items:center;gap:12px}.dashboard-header-left h2{display:flex;align-items:center;gap:8px;margin:0;font-size:1.25rem}.dashboard-desc{color:var(--color-text-muted);font-size:.85rem}.dashboard-header-right{display:flex;gap:8px}.dashboard-empty{text-align:center;padding:60px 20px;color:var(--color-text-muted)}.dashboard-empty p{margin-top:12px}.dashboard-grid{display:grid;grid-template-columns:repeat(12,1fr);grid-auto-rows:80px;gap:16px}.chart-widget{background:var(--color-surface, #fff);border:1px solid var(--border-color, #e2e8f0);border-radius:10px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 1px 3px #0000000f;transition:box-shadow .2s}.chart-widget:hover{box-shadow:0 4px 12px #0000001a}.chart-widget-header{padding:12px 16px;font-weight:600;font-size:.9rem;border-bottom:1px solid var(--border-color, #e2e8f0);background:var(--color-surface-alt, #f8fafc);flex-shrink:0}.chart-widget-body{flex:1;padding:12px;display:flex;align-items:center;justify-content:center;min-height:0}.chart-widget-loading .chart-widget-body,.chart-widget-error .chart-widget-body{flex-direction:column}.chart-spinner{width:32px;height:32px;border:3px solid var(--border-color, #e2e8f0);border-top-color:var(--color-primary, #3b82f6);border-radius:50%;animation:chart-spin .8s linear infinite}@keyframes chart-spin{to{transform:rotate(360deg)}}.chart-error-text{color:var(--color-error, #ef4444);font-size:.85rem;text-align:center}.chart-empty-text{color:var(--color-text-muted);font-size:.85rem;text-align:center}.chart-number-widget{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.chart-number-value{font-size:3rem;font-weight:700;line-height:1}.chart-table-wrapper{width:100%;height:100%;overflow:auto}.chart-table{width:100%;border-collapse:collapse;font-size:.8rem}.chart-table th{background:var(--color-surface-alt, #f8fafc);padding:6px 10px;text-align:left;font-weight:600;border-bottom:2px solid var(--border-color, #e2e8f0);position:sticky;top:0;z-index:1}.chart-table td{padding:5px 10px;border-bottom:1px solid var(--border-color, #e2e8f0)}.chart-table tr:hover td{background:var(--color-row-hover, #f1f5f9)}.dashboard-designer{padding:24px;max-width:1000px;margin:0 auto}.dashboard-designer-header{display:flex;align-items:center;gap:12px;margin-bottom:24px}.dashboard-designer-header h2{flex:1;margin:0;font-size:1.25rem}.dashboard-form-section{background:var(--color-surface, #fff);border:1px solid var(--border-color, #e2e8f0);border-radius:10px;padding:20px;margin-bottom:20px}.dashboard-form-section h3{margin:0 0 16px;font-size:1rem;color:var(--color-text)}.dashboard-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.dashboard-form-grid label{display:flex;flex-direction:column;gap:4px;font-size:.85rem;font-weight:500;color:var(--color-text-muted)}.dashboard-form-grid .span-2{grid-column:span 2}.dashboard-form-grid input,.dashboard-form-grid select,.dashboard-form-grid textarea{padding:8px 10px;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;font-size:.85rem;font-family:inherit;background:var(--color-surface, #fff);color:var(--color-text)}.dashboard-form-grid input:focus,.dashboard-form-grid select:focus,.dashboard-form-grid textarea:focus{outline:none;border-color:var(--color-primary, #3b82f6);box-shadow:0 0 0 2px #3b82f626}.dashboard-widgets-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.dashboard-widgets-header h3{margin:0}.widget-editor-card{border:1px solid var(--border-color, #e2e8f0);border-radius:8px;margin-bottom:12px;overflow:hidden}.widget-editor-card-header{display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--color-surface-alt, #f8fafc);border-bottom:1px solid var(--border-color, #e2e8f0)}.widget-editor-card-header .grip-icon{color:var(--color-text-muted);cursor:grab}.widget-editor-card-header .widget-num{flex:1;font-weight:600;font-size:.85rem}.widget-editor-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:14px}.widget-editor-grid label{display:flex;flex-direction:column;gap:4px;font-size:.85rem;font-weight:500;color:var(--color-text-muted)}.widget-editor-grid .span-2{grid-column:span 2}.widget-editor-grid input,.widget-editor-grid select,.widget-editor-grid textarea{padding:8px 10px;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;font-size:.85rem;font-family:inherit;background:var(--color-surface, #fff);color:var(--color-text)}.widget-editor-grid input:focus,.widget-editor-grid select:focus,.widget-editor-grid textarea:focus{outline:none;border-color:var(--color-primary, #3b82f6);box-shadow:0 0 0 2px #3b82f626}@media(max-width:768px){.dashboard-grid{grid-template-columns:repeat(6,1fr)}.chart-widget{grid-column:span 6!important}.dashboard-form-grid,.widget-editor-grid{grid-template-columns:1fr}.dashboard-form-grid .span-2,.widget-editor-grid .span-2{grid-column:span 1}}.pj-layout{display:flex;height:100%;overflow:hidden}.pj-sidebar{width:200px;flex-shrink:0;background:#f8fafc;border-right:1px solid #e2e8f0;display:flex;flex-direction:column;overflow-y:auto;transition:width .2s ease;position:relative}.pj-sidebar-header{padding:10px 10px 10px 8px;border-bottom:1px solid #e2e8f0;display:flex;align-items:center;gap:4px;flex-shrink:0;min-height:38px}.pj-sidebar-back{font-size:12px;color:#3b82f6;text-decoration:none;white-space:nowrap}.pj-sidebar-back:hover{text-decoration:underline}.pj-sidebar-sep{color:#94a3b8;flex-shrink:0}.pj-sidebar-project{font-size:13px;font-weight:600;color:#1e293b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.pj-sidebar-nav{padding:8px 0;display:flex;flex-direction:column;gap:1px}.pj-nav-item{display:flex;align-items:center;gap:8px;padding:7px 14px;font-size:13px;color:#475569;text-decoration:none;transition:background .1s,color .1s;border-left:3px solid transparent}.pj-nav-item:hover{background:#f1f5f9;color:#1e293b}.pj-nav-item.active{background:#eff6ff;color:#2563eb;border-left-color:#2563eb;font-weight:500}.pj-nav-group{display:flex;flex-direction:column}.pj-nav-group-toggle{display:flex;align-items:center;gap:8px;padding:7px 14px;font-size:13px;color:#475569;background:none;border:none;border-left:3px solid transparent;cursor:pointer;width:100%;text-align:left;transition:background .1s,color .1s}.pj-nav-group-toggle:hover{background:#f1f5f9;color:#1e293b}.pj-nav-group-arrow{margin-left:auto;transition:transform .2s ease;transform:rotate(-90deg);opacity:.5}.pj-nav-group-arrow.open{transform:rotate(0)}.pj-nav-group-children{display:flex;flex-direction:column;gap:1px}.pj-nav-child{padding-left:32px!important;font-size:12.5px!important}.pj-collapse-btn{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;background:none;color:#94a3b8;border-radius:4px;cursor:pointer;flex-shrink:0;transition:color .15s,background .15s}.pj-collapse-btn:hover{color:#334155;background:#e2e8f0}.pj-sidebar-collapsed{width:48px;overflow:visible}.pj-sidebar-collapsed .pj-sidebar-header{justify-content:center;padding:10px 0}.pj-sidebar-collapsed .pj-sidebar-nav{padding:6px 0;align-items:center}.pj-nav-icon-only{display:flex;align-items:center;justify-content:center;padding:8px;color:#64748b;text-decoration:none;border-radius:0 6px 6px 0;margin:1px 6px 1px 0;transition:background .12s,color .12s;border-left:3px solid transparent}.pj-nav-icon-only svg{opacity:.65}.pj-nav-icon-only:hover{background:#f1f5f9;color:#1e293b}.pj-nav-icon-only:hover svg{opacity:.9}.pj-nav-icon-only.active{background:#eff6ff;color:#2563eb;border-left-color:#2563eb}.pj-nav-icon-only.active svg{opacity:1}.pj-sidebar-tooltip{position:fixed;transform:translate(8px) translateY(-50%);background:#1e293b;color:#fff;font-size:12px;font-weight:500;padding:4px 10px;border-radius:4px;white-space:nowrap;pointer-events:none;z-index:1000;box-shadow:0 2px 6px #00000026}.pj-sidebar-tooltip:before{content:"";position:absolute;left:-4px;top:50%;transform:translateY(-50%);border:4px solid transparent;border-right-color:#1e293b;border-left:none}.pj-main{flex:1;min-width:0;overflow-y:auto;padding:16px 20px}.pj-main:has(.page--no-pad),.pj-main:has(.tree-split),.pj-main:has(.bi-page-wrapper),.pj-main:has(.schedule-gantt),.pj-main:has(.bit-page){padding:0;overflow:hidden;min-height:0}.tree-split{display:flex;gap:0;height:calc(100vh - 100px);overflow:hidden}.tree-split-left{width:340px;flex-shrink:0;overflow:hidden;display:flex;flex-direction:column;border-right:1px solid #e2e8f0}.tree-split-divider{width:5px;flex-shrink:0;cursor:col-resize;display:flex;align-items:center;justify-content:center;background:transparent;border-left:1px solid #e2e8f0;position:relative;z-index:5;transition:background .15s}.tree-split-divider:hover,.tree-split-divider:active{background:#f1f5f9}.tree-split-divider-line{display:none}.tree-split-divider:hover .tree-split-divider-line,.tree-split-divider:active .tree-split-divider-line{opacity:1}.tree-split-right{flex:1;min-width:0;overflow-y:auto;display:flex;flex-direction:column}.tree-split-empty{display:flex;align-items:center;justify-content:center;height:100%;color:#94a3b8;font-size:14px}.tree-split-tabs{display:flex;border-bottom:1px solid #e2e8f0;flex-shrink:0;padding:0 16px;gap:0;background:#fafbfc}.tree-split-tab{padding:8px 16px;font-size:13px;font-weight:500;color:#64748b;background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:color .15s,border-color .15s}.tree-split-tab:hover{color:#334155}.tree-split-tab.active{color:#2563eb;border-bottom-color:#2563eb}.pj-dashboard{max-width:100%}.pj-dash-toolbar{display:flex;justify-content:flex-end;margin-bottom:12px;gap:8px}.pj-widget-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.pj-kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.pj-kpi-card{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:16px;text-align:center}.pj-kpi-card.pj-kpi-warn .pj-kpi-value{color:#dc2626}.pj-kpi-value{font-size:28px;font-weight:700;color:#1e293b;line-height:1.2}.pj-kpi-label{font-size:12px;color:#64748b;margin-top:4px;text-transform:uppercase;letter-spacing:.5px}.pj-dash-card{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:16px}.pj-widget-card{position:relative}.pj-widget-header{display:flex;align-items:center;gap:6px;margin-bottom:12px}.pj-widget-header .pj-dash-card-title{margin:0;flex:1}.pj-dash-card-title{font-size:13px;font-weight:600;color:#334155;margin:0 0 12px;text-transform:uppercase;letter-spacing:.3px}.pj-widget-drag{cursor:grab;background:none;border:none;padding:2px;color:#94a3b8;display:flex;align-items:center}.pj-widget-drag:active{cursor:grabbing}.pj-widget-actions{display:flex;align-items:center;gap:4px}.pj-widget-btn{background:none;border:1px solid #e2e8f0;border-radius:4px;padding:2px 4px;cursor:pointer;color:#64748b;display:flex;align-items:center}.pj-widget-btn:hover{background:#f1f5f9;color:#334155}.pj-widget-btn:disabled{opacity:.3;cursor:default}.pj-widget-btn-remove:hover{background:#fef2f2;color:#dc2626;border-color:#fecaca}.pj-widget-span-label{font-size:11px;color:#64748b;min-width:14px;text-align:center}.pj-widget-picker{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px;padding:10px;background:#f8fafc;border:1px dashed #cbd5e1;border-radius:8px}.pj-widget-picker-item{display:flex;align-items:center;gap:4px;padding:4px 10px;font-size:12px;background:#fff;border:1px solid #e2e8f0;border-radius:6px;cursor:pointer;color:#475569}.pj-widget-picker-item:hover{border-color:#3b82f6;color:#2563eb;background:#eff6ff}.pj-config-popover{background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;padding:10px 12px;margin-bottom:10px}.pj-config-row{display:flex;align-items:center;gap:8px}.pj-config-label{font-size:12px;color:#475569;white-space:nowrap}.pj-config-select{flex:1;padding:3px 6px;font-size:12px;border:1px solid #e2e8f0;border-radius:4px}.pj-config-label-check{display:flex;align-items:center;gap:6px;font-size:12px;color:#475569;cursor:pointer}.pj-config-label-check input[type=checkbox]{margin:0}.pj-config-actions{display:flex;justify-content:flex-end;gap:6px;margin-top:8px}.pj-widget-btn-config{color:#94a3b8}.pj-widget-btn-config:hover{color:#3b82f6;background:#eff6ff;border-color:#bfdbfe}.pj-widget-btn-config.pj-config-active{color:#2563eb;background:#eff6ff;border-color:#bfdbfe}.pj-empty-widget{font-size:13px;color:#94a3b8;text-align:center;padding:20px 0}.pj-status-bars{display:flex;flex-direction:column;gap:8px}.pj-status-row{display:grid;grid-template-columns:90px 1fr 32px;align-items:center;gap:8px}.pj-status-label{font-size:12px;color:#475569}.pj-status-bar-track{height:8px;background:#f1f5f9;border-radius:4px;overflow:hidden}.pj-status-bar-fill{height:100%;border-radius:4px;transition:width .3s ease}.pj-status-count{font-size:12px;font-weight:600;color:#1e293b;text-align:right}.pj-structure-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.pj-structure-item{text-align:center;padding:10px;background:#f8fafc;border-radius:6px}.pj-structure-count{font-size:24px;font-weight:700;color:#1e293b}.pj-structure-type{font-size:11px;color:#64748b;margin-top:2px;text-transform:uppercase;letter-spacing:.3px}.pj-progress-list{display:flex;flex-direction:column;gap:8px}.pj-progress-row{display:grid;grid-template-columns:140px 1fr 40px;align-items:center;gap:8px}.pj-progress-name{font-size:12px;color:#475569;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pj-progress-bar-track{height:8px;background:#f1f5f9;border-radius:4px;overflow:hidden}.pj-progress-bar-fill{height:100%;background:#3b82f6;border-radius:4px;transition:width .3s ease}.pj-progress-pct{font-size:12px;font-weight:600;color:#1e293b;text-align:right}.pj-info-grid{display:grid;grid-template-columns:80px 1fr;gap:6px 12px;margin:0}.pj-info-grid dt{font-size:12px;color:#64748b;font-weight:500}.pj-info-grid dd{font-size:13px;color:#1e293b;margin:0}@media(max-width:768px){.pj-kpi-row,.pj-widget-grid{grid-template-columns:repeat(2,1fr)}.pj-widget-grid>*{grid-column:span 2!important}.tree-split{flex-direction:column;height:auto}.tree-split-left{width:100%!important;border-right:none;border-bottom:1px solid #e2e8f0;max-height:300px}.tree-split-divider{display:none}.nd-kpi-row{grid-template-columns:repeat(2,1fr)}}.ss-container{position:relative}.ss-trigger{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.5rem .75rem;border:1px solid var(--color-border, #e2e8f0);border-radius:var(--radius, 6px);font-size:.875rem;color:var(--color-text, #1e293b);background:var(--color-surface, #fff);cursor:pointer;outline:none;transition:border-color .15s;text-align:left;gap:6px;box-sizing:border-box}.ss-trigger:focus,.ss-trigger:hover{border-color:var(--color-primary, #2563eb)}.ss-trigger-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.ss-trigger-placeholder{color:#94a3b8;flex:1;min-width:0}.ss-chevron{flex-shrink:0;color:#94a3b8}.ss-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;min-width:280px;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 8px 24px #0000001f;z-index:1000;display:flex;flex-direction:column;max-height:320px}.ss-dropdown-portal{top:auto;left:auto;right:auto;z-index:9999}.ss-search-wrap{display:flex;align-items:center;gap:6px;padding:8px 10px;border-bottom:1px solid #f1f5f9}.ss-search-icon{flex-shrink:0;color:#94a3b8}.ss-search-input{flex:1;border:none;outline:none;font-size:13px;color:#1e293b;background:transparent;min-width:0}.ss-search-input::placeholder{color:#cbd5e1}.ss-options{overflow-y:auto;flex:1;padding:4px 0}.ss-option{padding:6px 12px;font-size:13px;color:#334155;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background-color .08s}.ss-option.highlighted{background:#f1f5f9}.ss-option.selected{color:#2563eb;font-weight:500}.ss-option:active{background:#e2e8f0}.ss-option-disabled{opacity:.45;cursor:not-allowed}.ss-option-disabled:active{background:transparent}.ss-no-match{padding:12px;text-align:center;color:#94a3b8;font-size:13px}.ss-hint{padding:6px 12px;font-size:12px;color:#94a3b8;font-style:italic;text-align:center;border-top:1px solid #f1f5f9}.ss-clear-option{color:#94a3b8;font-style:italic;border-bottom:1px solid #f1f5f9}.ss-compact .ss-trigger{padding:.25rem .5rem;font-size:.8rem;min-height:auto;border-color:transparent;background:transparent}.ss-compact .ss-trigger:hover,.ss-compact .ss-trigger:focus{border-color:var(--color-border, #e2e8f0);background:var(--color-surface, #fff)}.ss-compact .ss-trigger-placeholder{color:var(--color-text-muted, #64748b)}.pbs-detail-panel{margin:0 8px 8px;padding:10px 12px;background:#f8fafb;border:1px solid #d0d7de;border-radius:6px;font-size:.82rem}.pbs-detail-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.pbs-detail-title{font-weight:600;font-size:.85rem;color:#24292f}.pbs-detail-actions{display:flex;gap:6px}.pbs-detail-btn{padding:3px 10px;border:1px solid #d0d7de;border-radius:4px;background:#fff;font-size:.78rem;cursor:pointer;color:#24292f}.pbs-detail-btn:hover{background:#f3f4f6}.pbs-detail-btn-save{background:#2563eb;color:#fff;border-color:#2563eb}.pbs-detail-btn-save:hover{background:#1d4ed8}.pbs-detail-btn-save:disabled{opacity:.5;cursor:not-allowed}.pbs-detail-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px 10px}.pbs-detail-field{display:flex;flex-direction:column;gap:2px}.pbs-detail-field label{font-size:.72rem;font-weight:500;color:#57606a;text-transform:uppercase;letter-spacing:.03em}.pbs-detail-field input,.pbs-detail-field select,.pbs-detail-field textarea{padding:4px 6px;border:1px solid #d0d7de;border-radius:4px;font-size:.8rem;background:#fff;color:#24292f}.pbs-detail-field input:focus,.pbs-detail-field select:focus,.pbs-detail-field textarea:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 2px #2563eb26}.pbs-detail-field textarea{resize:vertical;min-height:36px}.pbs-detail-field-wide{grid-column:span 2}.pbs-detail-field-full{grid-column:1 / -1}.btp-pbs-tags{display:inline-flex;gap:4px;align-items:center;margin-left:4px}.btp-pbs-tag{display:inline-flex;align-items:center;padding:0 5px;height:18px;border-radius:3px;font-size:.68rem;font-weight:500;background:#e8f0fe;color:#1a56db;white-space:nowrap}.btp-pbs-tag--material{background:#fef3c7;color:#92400e}.btp-pbs-tag--mob{background:#dcfce7;color:#166534}.btp-detail-btn{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;background:transparent;color:#57606a;cursor:pointer;border-radius:3px;padding:0}.btp-detail-btn:hover{background:#e1e4e8;color:#24292f}.btp-panel{height:100%;display:flex;flex-direction:column;min-height:0}.btp-toolbar{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;border-bottom:1px solid var(--color-border);flex-shrink:0;gap:.5rem}.btp-toolbar-left{display:flex;align-items:center;gap:.5rem;min-width:0}.btp-toolbar-right{display:flex;align-items:center;gap:.25rem;flex-shrink:0}.btp-title{margin:0;font-size:.85rem;font-weight:600;white-space:nowrap;letter-spacing:.02em;text-transform:uppercase;color:var(--color-text-muted)}.btp-node-count{font-size:.7rem;color:var(--color-text-muted);background:var(--color-bg);padding:.1rem .4rem;border-radius:8px;white-space:nowrap}.btp-tool-btn{display:inline-flex;align-items:center;gap:.3rem;padding:.25rem .5rem;border:none;background:transparent;color:var(--color-text-muted);font-size:.75rem;border-radius:4px;cursor:pointer;transition:all .15s;white-space:nowrap}.btp-tool-btn:hover{background:var(--color-bg);color:var(--color-text)}.btp-tool-btn-primary{color:var(--color-primary);font-weight:500}.btp-tool-btn-primary:hover{background:var(--color-primary);color:#fff}.btp-tree{flex:1;overflow-y:auto;overflow-x:hidden;padding:2px 0;outline:none}.btp-tree:focus-visible{box-shadow:inset 0 0 0 1px var(--color-primary)}.btp-row{display:flex;align-items:center;height:28px;padding-right:4px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .12s;position:relative;min-width:max-content}.btp-node-group{border-bottom:1px solid #e8ecf1}.btp-node-group:last-child{border-bottom:none}.btp-children{border-top:1px solid #eaeff4}.btp-row:hover{background:#2563eb0f}.btp-row-selected{background:#dbeafe!important}.btp-row-selected:before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--color-primary)}.btp-row-focused{outline:1px solid var(--color-primary);outline-offset:-1px}.btp-indent-guide{display:inline-block;width:20px;height:28px;flex-shrink:0;position:relative}.btp-indent-guide:before{content:"";position:absolute;left:10px;top:0;bottom:0;width:1px;background:var(--color-border);opacity:.6}.btp-row:hover .btp-indent-guide:before{opacity:1;background:#94a3b8}.btp-toggle{display:inline-flex;align-items:center;justify-content:center;width:20px;height:28px;flex-shrink:0;cursor:pointer;color:var(--color-text-muted);border-radius:3px}.btp-toggle:hover{color:var(--color-text);background:#0000000f}.btp-toggle-leaf{cursor:default}.btp-toggle-leaf:hover{background:transparent;color:var(--color-text-muted)}.btp-chevron{transition:transform .15s ease;flex-shrink:0}.btp-chevron-expanded{transform:rotate(90deg)}.btp-code{font-size:.72rem;font-weight:600;font-family:SF Mono,Menlo,Consolas,monospace;color:var(--color-primary);background:#eff6ff;padding:0 5px;border-radius:3px;line-height:1.6;white-space:nowrap;flex-shrink:0;margin-right:4px}.btp-name{font-size:.8rem;color:var(--color-text);white-space:nowrap;flex-shrink:0}.btp-meta{display:flex;align-items:center;gap:4px;flex-shrink:0;margin-left:4px}.btp-ext-badge{font-size:.65rem;padding:0 4px;border-radius:3px;background:#fef3c7;color:#92400e;white-space:nowrap;flex-shrink:0;font-weight:500}.btp-count-badge{font-size:.65rem;padding:0 4px;border-radius:8px;background:var(--color-bg);color:var(--color-text-muted);white-space:nowrap;flex-shrink:0;min-width:16px;text-align:center}.btp-image-badge{font-size:.7rem;flex-shrink:0}.btp-progress{display:inline-flex;align-items:center;gap:4px;flex-shrink:0;margin-left:4px}.btp-progress-bar{width:32px;height:4px;background:#e2e8f0;border-radius:2px;overflow:hidden}.btp-progress-fill{height:100%;background:var(--color-success);border-radius:2px;transition:width .3s}.btp-progress-text{font-size:.6rem;color:var(--color-text-muted);min-width:22px;text-align:right}.btp-actions{display:flex;gap:1px;opacity:0;transition:opacity .12s;flex-shrink:0;padding-left:4px}.btp-row:hover .btp-actions{opacity:1}.btp-action-btn{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;background:transparent;color:var(--color-text-muted);border-radius:3px;cursor:pointer;transition:all .12s;padding:0}.btp-action-btn:hover{background:var(--color-primary);color:#fff}.btp-action-danger:hover{background:var(--color-danger)!important;color:#fff!important}.btp-inline-form{padding:4px 8px 6px;background:#fafbfc;border-top:1px solid #e8edf2;border-bottom:1px solid #e8edf2}.btp-inline-form-inputs{display:flex;gap:4px;align-items:center}.btp-inline-form-inputs input.btp-input{width:auto;padding:4px 8px;border:1px solid var(--color-border);border-radius:4px;font-size:.78rem;line-height:1.4;outline:none;transition:border-color .15s;background:#fff;box-sizing:border-box}.btp-inline-form-inputs input.btp-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px #2563eb26}.btp-input-name{flex:1;min-width:0}.btp-inline-form-inputs input.btp-input-sm{width:100px;flex-shrink:0}.btp-textarea{margin-top:4px;width:100%;resize:none;min-height:0;font-family:inherit;box-sizing:border-box}.btp-parent-selector{display:flex;align-items:center;gap:6px;margin-top:4px}.btp-parent-label{font-size:.75rem;color:var(--color-text-muted);font-weight:500;white-space:nowrap}.btp-parent-select{flex:1;min-width:0}.btp-parent-select .ss-trigger{font-size:.78rem;padding:3px 8px;min-height:26px}.btp-btn{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border:none;border-radius:4px;cursor:pointer;font-size:.85rem;font-weight:600;transition:all .12s;flex-shrink:0}.btp-btn-save{background:var(--color-primary);color:#fff}.btp-btn-save:hover:not(:disabled){background:var(--color-primary-hover)}.btp-btn-save:disabled{opacity:.4;cursor:not-allowed}.btp-btn-cancel{background:transparent;color:var(--color-text-muted)}.btp-btn-cancel:hover{background:var(--color-bg);color:var(--color-text)}.btp-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem 1rem;color:var(--color-text-muted);gap:.75rem}.btp-empty p{margin:0;font-size:.85rem}.btp-loading{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:2rem;color:var(--color-text-muted);font-size:.85rem}.btp-spinner{width:16px;height:16px;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:btp-spin .6s linear infinite}@keyframes btp-spin{to{transform:rotate(360deg)}}.btp-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;overflow:hidden;display:flex;flex-direction:column;max-height:calc(100vh - 220px)}.project-detail-split{display:grid;grid-template-columns:280px 1fr;gap:1rem;height:calc(100vh - 200px)}.project-detail-split>:first-child{overflow-y:auto;border-right:1px solid var(--color-border);padding-right:.75rem}.project-detail-split>:last-child{overflow-y:auto}@media(max-width:768px){.project-detail-split{grid-template-columns:1fr;height:auto}}.lbs-map-view{display:flex;flex-direction:column;height:100%}.lbs-map-loading{padding:24px 16px;color:#94a3b8;font-size:13px;text-align:center}.lbs-map-breadcrumb-bar{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;background:#f8fafc;border-bottom:1px solid #e2e8f0;flex-shrink:0;min-height:34px}.lbs-map-breadcrumb-trail{display:flex;align-items:center;flex-wrap:wrap;gap:2px}.lbs-map-breadcrumb-item{display:inline-flex;align-items:center;gap:2px}.lbs-map-breadcrumb-sep{flex-shrink:0;color:#cbd5e1}.lbs-map-breadcrumb-link{padding:2px 6px;font-size:12px;color:#2563eb;background:none;border:none;border-radius:4px;cursor:pointer;white-space:nowrap;transition:background .12s}.lbs-map-breadcrumb-link:hover{background:#eff6ff;text-decoration:underline}.lbs-map-breadcrumb-current{padding:2px 6px;font-size:12px;font-weight:600;color:#334155;white-space:nowrap}.lbs-map-configure-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid #e2e8f0;border-radius:6px;background:#fff;color:#64748b;cursor:pointer;transition:all .15s}.lbs-map-configure-btn:hover{color:#2563eb;border-color:#93c5fd;background:#eff6ff}.lbs-map-empty-container{flex:1;overflow-y:auto;padding:12px}.lbs-map-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px 16px;color:#94a3b8;text-align:center;gap:8px}.lbs-map-empty p{font-size:13px;margin:0}.lbs-map-configure-link{display:inline-flex;align-items:center;gap:4px;padding:6px 12px;font-size:12px;font-weight:500;color:#2563eb;background:#eff6ff;border:1px solid #bfdbfe;border-radius:6px;cursor:pointer;transition:all .15s}.lbs-map-configure-link:hover{background:#dbeafe}.lbs-map-image-tabs{display:flex;gap:0;border-bottom:1px solid #e2e8f0;padding:0 8px;flex-shrink:0;overflow-x:auto}.lbs-map-image-tab{padding:4px 10px;font-size:11px;font-weight:500;color:#64748b;background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;white-space:nowrap}.lbs-map-image-tab:hover{color:#334155}.lbs-map-image-tab.active{color:#2563eb;border-bottom-color:#2563eb}.lbs-map-zoom-bar{display:flex;align-items:center;gap:4px;padding:4px 8px;background:#f8fafc;border-bottom:1px solid #e2e8f0;flex-shrink:0}.lbs-map-zoom-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border:1px solid #e2e8f0;border-radius:4px;background:#fff;color:#64748b;cursor:pointer;transition:all .15s}.lbs-map-zoom-btn:hover:not(:disabled){color:#2563eb;border-color:#93c5fd;background:#eff6ff}.lbs-map-zoom-btn:disabled{opacity:.4;cursor:default}.lbs-map-zoom-level{font-size:11px;font-weight:600;color:#334155;min-width:32px;text-align:center;-webkit-user-select:none;user-select:none}.lbs-map-scroll{position:relative;overflow:auto;flex:1;min-height:0;background:#f1f5f9}.lbs-map-scroll-inner{display:inline-flex;flex-direction:column;align-items:flex-start;min-width:100%;min-height:100%}.lbs-map-canvas{display:grid;overflow:hidden;min-width:200px}.lbs-map-image{grid-area:1 / 1;display:block;width:100%;height:auto}.lbs-map-svg{grid-area:1 / 1;width:100%;height:100%}.lbs-map-unmapped{padding:8px 6px;display:flex;flex-direction:row;flex-wrap:wrap;gap:6px;align-items:flex-start;width:100%}.lbs-map-unmapped-heading{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:#94a3b8;padding:2px 4px 4px;width:100%}.lbs-map-unmapped-card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;width:80px;height:80px;padding:6px;border:1px solid #e2e8f0;border-radius:6px;background:#f8fafc;cursor:pointer;transition:all .15s;text-align:center}.lbs-map-unmapped-card:hover{border-color:#93c5fd;background:#eff6ff}.lbs-map-unmapped-card.mapped{border-left:3px solid #2563eb}.lbs-region-shape.highlighted{filter:drop-shadow(0 0 6px rgba(37,99,235,.6))}.lbs-map-unmapped-icon{flex-shrink:0;color:#94a3b8}.lbs-map-unmapped-icon.has-img{color:#2563eb}.lbs-map-unmapped-text{min-width:0;width:100%;display:flex;flex-direction:column;align-items:center;gap:1px}.lbs-map-unmapped-code{font-size:9px;font-weight:600;color:#94a3b8;letter-spacing:.3px;text-transform:uppercase}.lbs-map-unmapped-name{font-size:11px;font-weight:500;color:#334155;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.lbs-map-hover-popover{position:fixed;z-index:1000;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 6px 20px #0000001f;padding:8px 0;min-width:160px;max-width:240px;pointer-events:auto;animation:fadeIn .1s ease}.lbs-map-hover-title{padding:4px 12px;font-size:13px;font-weight:600;color:#1e293b;border-bottom:1px solid #f1f5f9;margin-bottom:2px}.lbs-map-hover-meta{padding:2px 12px 4px;font-size:11px;color:#64748b;border-bottom:1px solid #f1f5f9;margin-bottom:2px}.lbs-map-hover-actions{display:flex;flex-direction:column}.lbs-map-hover-action{display:flex;align-items:center;gap:8px;padding:6px 12px;font-size:12px;font-weight:500;color:#334155;background:none;border:none;cursor:pointer;transition:background .12s,color .12s;text-align:left}.lbs-map-hover-action:hover{background:#eff6ff;color:#2563eb}.lbs-fp-panel{padding:8px 12px;display:flex;flex-direction:column;gap:0;height:100%}.lbs-fp-loading{display:flex;align-items:center;justify-content:center;padding:40px 20px;color:#94a3b8;font-size:14px}.lbs-fp-unified-bar{display:flex;align-items:center;gap:4px;padding:5px 8px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:7px;margin-bottom:6px;flex-shrink:0}.lbs-fp-bar-btn{display:inline-flex;align-items:center;justify-content:center;gap:3px;padding:4px 8px;font-size:12px;font-weight:500;background:#fff;border:1px solid #e2e8f0;border-radius:5px;color:#475569;cursor:pointer;transition:all .12s;white-space:nowrap}.lbs-fp-bar-btn:hover{border-color:#cbd5e1;background:#f1f5f9}.lbs-fp-bar-btn.active,.lbs-fp-bar-btn.primary{background:#2563eb;color:#fff;border-color:#2563eb}.lbs-fp-bar-btn.primary:hover{background:#1d4ed8}.lbs-fp-bar-btn.primary.disabled{opacity:.6;cursor:not-allowed;pointer-events:none}.lbs-fp-bar-btn.finish{background:#16a34a;color:#fff;border-color:#16a34a}.lbs-fp-bar-btn.cancel{color:#ef4444;border-color:#fca5a5}.lbs-fp-bar-btn.cancel:hover{background:#fef2f2}.lbs-fp-bar-btn.danger{color:#dc2626;border-color:#fca5a5}.lbs-fp-bar-btn.danger:hover{background:#fef2f2}.lbs-fp-bar-btn:disabled{opacity:.35;cursor:not-allowed}.lbs-fp-bar-select{padding:3px 6px;font-size:12px;border:1px solid #e2e8f0;border-radius:5px;background:#fff;color:#334155;outline:none;max-width:150px}.lbs-fp-bar-sep{width:1px;height:18px;background:#e2e8f0;margin:0 2px;flex-shrink:0}.lbs-fp-bar-zoom-level{font-size:11px;font-weight:600;color:#334155;min-width:32px;text-align:center;-webkit-user-select:none;user-select:none}.lbs-fp-bar-spacer{flex:1}.lbs-fp-draw-hint-float{font-size:11px;color:#92400e;padding:3px 10px;background:#fef3c7;border:1px solid #fde68a;border-radius:5px;margin-bottom:4px;text-align:center;flex-shrink:0}.lbs-fp-region-form-overlay{position:absolute;top:8px;right:8px;z-index:20;padding:10px 12px;background:#fffffff7;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 4px 16px #0000001f;width:420px;min-width:320px;overflow:visible}.lbs-fp-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 20px;color:#94a3b8;text-align:center}.lbs-fp-empty h4{margin:12px 0 4px;color:#334155;font-size:15px;font-weight:600}.lbs-fp-empty p{margin:0;font-size:13px;max-width:340px;line-height:1.5}.lbs-fp-region-form-grid{display:grid;grid-template-columns:1fr 48px;gap:6px}.lbs-fp-region-form-grid>.lbs-fp-select{grid-column:1 / -1}.lbs-fp-select,.lbs-fp-input{padding:6px 10px;border:1px solid #e2e8f0;border-radius:6px;font-size:13px;color:#1e293b;background:#fff;outline:none;transition:border-color .12s}.lbs-fp-select:focus,.lbs-fp-input:focus{border-color:#2563eb}.lbs-fp-color{width:48px;height:34px;border:1px solid #e2e8f0;border-radius:6px;cursor:pointer;padding:2px;box-sizing:border-box;flex-shrink:0}.lbs-fp-region-form-actions{display:flex;gap:6px;margin-top:10px}.lbs-fp-node-upload{display:flex;align-items:center;gap:6px;margin-top:8px}.lbs-fp-node-upload-label{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;font-size:12px;color:#2563eb;border:1px dashed #93c5fd;border-radius:6px;background:#eff6ff;cursor:pointer;transition:background .12s,border-color .12s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.lbs-fp-node-upload-label:hover{background:#dbeafe;border-color:#60a5fa}.lbs-fp-node-upload-clear{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;background:#fee2e2;color:#dc2626;border-radius:50%;cursor:pointer;flex-shrink:0;transition:background .12s}.lbs-fp-node-upload-clear:hover{background:#fecaca}.lbs-fp-btn{padding:6px 14px;font-size:12px;font-weight:500;border:1px solid #e2e8f0;border-radius:6px;background:#fff;color:#475569;cursor:pointer;transition:all .12s}.lbs-fp-btn:hover{background:#f1f5f9}.lbs-fp-btn.primary{background:#2563eb;color:#fff;border-color:#2563eb}.lbs-fp-btn.primary:hover{background:#1d4ed8}.lbs-fp-btn.primary:disabled{opacity:.5;cursor:not-allowed}.lbs-fp-canvas-scroll{position:relative;overflow:auto;border:1px solid #e2e8f0;border-radius:8px;background:#f1f5f9;flex:1;min-height:200px}.lbs-fp-canvas{display:grid;overflow:hidden;background:#f8fafc;min-width:200px}.lbs-fp-canvas.drawing{border-color:#ef4444}.lbs-fp-image{grid-area:1 / 1;display:block;width:100%;height:auto}.lbs-fp-svg{grid-area:1 / 1;width:100%;height:100%}.lbs-region-shape{cursor:pointer;transition:fill-opacity .2s,stroke-width .2s,filter .2s}.lbs-region-shape.clickable{cursor:pointer}.lbs-region-shape:hover{fill-opacity:.45!important;stroke-width:3;filter:drop-shadow(0 0 6px currentColor)}.lbs-region-shape.clickable:hover{animation:lbs-region-pulse 1.2s ease-in-out infinite}@keyframes lbs-region-pulse{0%,to{filter:drop-shadow(0 0 4px currentColor);stroke-width:3}50%{filter:drop-shadow(0 0 12px currentColor);stroke-width:4}}.lbs-pending-shape{animation:lbs-pending-pulse 1.5s ease-in-out infinite;pointer-events:none}@keyframes lbs-pending-pulse{0%,to{stroke-opacity:1}50%{stroke-opacity:.35}}.lbs-region-delete-icon{opacity:0;cursor:pointer;transition:opacity .15s;pointer-events:none}.lbs-region-group:hover .lbs-region-delete-icon{opacity:.7;pointer-events:all}.lbs-region-delete-icon:hover{opacity:1!important}.lbs-fp-tooltip{position:fixed;background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:8px 12px;box-shadow:0 4px 12px #0000001a;font-size:13px;z-index:1000;max-width:240px;pointer-events:none}.lbs-fp-tooltip-title{font-weight:600;color:#1e293b}.lbs-fp-tooltip-meta{color:#64748b;margin-top:3px;font-size:12px}.lbs-fp-tooltip-drill{color:#2563eb;margin-top:3px;font-size:12px}.lbs-fp-tooltip-drill--link{background:none;border:none;padding:0;cursor:pointer;text-decoration:underline;font-family:inherit}.lbs-fp-tooltip-drill--link:hover{color:#1d4ed8}.lbs-fp-tooltip-click-hint{color:#2563eb;font-size:11px;margin-top:4px;font-style:italic}.lbs-fp-body{display:flex;flex:1;overflow:hidden;border-radius:8px;border:1px solid #e2e8f0;min-height:200px}.lbs-fp-body>.lbs-fp-canvas-scroll{border:none;border-radius:0;min-height:0}.lbs-fp-regions-side{width:250px;min-width:250px;border-left:1px solid #e2e8f0;background:#f8fafc;display:flex;flex-direction:column;overflow:hidden}.lbs-fp-regions-side-header{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border-bottom:1px solid #e2e8f0;background:#fff;flex-shrink:0}.lbs-fp-regions-side-title{font-size:11px;font-weight:600;color:#475569;text-transform:uppercase;letter-spacing:.3px}.lbs-fp-regions-side-close{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;background:none;color:#94a3b8;border-radius:5px;cursor:pointer;transition:all .12s}.lbs-fp-regions-side-close:hover{background:#e2e8f0;color:#334155}.lbs-fp-regions-side-list{flex:1;overflow-y:auto;padding:6px}.lbs-fp-region-card{background:#fff;border:1px solid #e2e8f0;border-radius:6px;padding:7px 9px;margin-bottom:5px}.lbs-fp-region-card:hover{border-color:#cbd5e1}.lbs-fp-region-card-top{display:flex;align-items:center;gap:6px}.lbs-fp-region-card-name{flex:1;font-size:12px;font-weight:500;color:#1e293b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lbs-fp-region-card-meta{display:flex;align-items:center;gap:4px;margin-top:3px;font-size:11px;color:#94a3b8}.lbs-fp-color-dot{width:10px;height:10px;border-radius:3px;flex-shrink:0}.lbs-fp-del-region-btn{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;background:none;color:#94a3b8;border-radius:5px;cursor:pointer;transition:all .12s;flex-shrink:0}.lbs-fp-del-region-btn:hover{background:#ef44441a;color:#ef4444}.lbs-left-pane{display:flex;flex-direction:column;height:100%;overflow:hidden}.lbs-left-tabs{display:flex;border-bottom:1px solid #e2e8f0;flex-shrink:0;padding:0 8px;gap:0;background:#fafbfc}.lbs-left-tab{padding:6px 14px;font-size:12px;font-weight:500;color:#64748b;background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:color .15s,border-color .15s}.lbs-left-tab:hover{color:#334155}.lbs-left-tab.active{color:#2563eb;border-bottom-color:#2563eb}.lbs-left-content{flex:1;overflow-y:auto;overflow-x:hidden}.lbs-map-placeholder{padding:24px 16px;color:#94a3b8;font-size:13px;text-align:center}.lbs-map-with-back{display:flex;flex-direction:column;height:100%}.lbs-root-back-bar{flex-shrink:0;padding:6px 12px;border-bottom:1px solid var(--color-border);background:#fafbfc}.lbs-root-back-btn{display:inline-flex;align-items:center;gap:4px;background:none;border:none;font-size:12px;font-weight:500;color:var(--color-primary);cursor:pointer;padding:2px 4px;border-radius:var(--radius);transition:background .15s}.lbs-root-back-btn:hover{background:#eff6ff}.lbs-root-grid-container{padding:16px}.lbs-root-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;height:100%;color:#94a3b8;font-size:.875rem;padding:24px 16px}.lbs-root-header{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--color-text);margin-bottom:12px}.lbs-root-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}.lbs-root-card{display:flex;flex-direction:column;align-items:center;gap:6px;padding:16px 10px;border:1px solid var(--color-border);border-radius:var(--radius);background:#fff;cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .15s}.lbs-root-card:hover{border-color:var(--color-primary);box-shadow:0 2px 8px #2563eb1a;transform:translateY(-1px)}.lbs-root-card-icon{color:var(--color-primary)}.lbs-root-card-icon-wrap{position:relative;display:flex;align-items:center;justify-content:center}.lbs-root-card-badge{position:absolute;top:-6px;right:-10px;font-size:11px;line-height:1}.lbs-root-card-code{font-size:12px;font-weight:600;color:var(--color-text)}.lbs-root-card-name{font-size:11px;color:#64748b;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.allowed-pbs-panel{display:flex;flex-direction:column;height:100%;overflow:hidden}.allowed-pbs-loading{padding:24px 16px;color:#94a3b8;font-size:13px;text-align:center}.allowed-pbs-header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--color-border);flex-shrink:0;background:#fafbfc}.allowed-pbs-title{font-size:13px;font-weight:600;color:var(--color-text);display:flex;align-items:center;gap:8px}.allowed-pbs-count{font-weight:400;font-size:12px;color:#64748b}.allowed-pbs-actions{display:flex;gap:6px;align-items:center}.allowed-pbs-actions .btn{display:inline-flex;align-items:center;gap:4px}.allowed-pbs-hint{padding:8px 12px;font-size:12px;color:#64748b;background:#f8fafc;border-bottom:1px solid var(--color-border);flex-shrink:0}.allowed-pbs-list{flex:1;overflow-y:auto;padding:4px 0}.allowed-pbs-item{display:flex;align-items:center;gap:8px;padding:5px 12px;cursor:pointer;font-size:13px;transition:background .1s;-webkit-user-select:none;user-select:none}.allowed-pbs-item:hover{background:#f1f5f9}.allowed-pbs-item.selected{background:#eff6ff}.allowed-pbs-checkbox{width:18px;height:18px;border:1.5px solid #cbd5e1;border-radius:3px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s}.allowed-pbs-checkbox.checked{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.allowed-pbs-code{font-weight:500;color:var(--color-text);white-space:nowrap}.allowed-pbs-name{color:#64748b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.allowed-pbs-qty{width:56px;margin-left:auto;flex-shrink:0;padding:2px 6px;border:1px solid var(--color-border);border-radius:var(--radius);font-size:12px;text-align:center}.allowed-pbs-empty{padding:24px 16px;color:#94a3b8;font-size:13px;text-align:center}.alert-success{background:#f0fdf4;color:#166534;border:1px solid #bbf7d0;padding:6px 10px;border-radius:var(--radius);font-size:13px}.lbs-page{display:flex;flex-direction:column;height:100%;overflow:hidden}.lbs-filter-bar{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--color-border);background:#fafbfc;flex-shrink:0}.lbs-filter-bar input,.lbs-filter-bar select{padding:4px 8px;font-size:12px;border:1px solid var(--color-border);border-radius:var(--radius);height:28px}.lbs-filter-search{flex:1;max-width:320px}.lbs-filter-status{width:130px}.lbs-tree-container{flex:1;overflow:hidden}.lbs-row-extra{display:inline-flex;align-items:center;gap:8px;margin-left:auto;flex-shrink:0}.lbs-pbs-count{font-size:11px;color:#64748b;white-space:nowrap}.lbs-pbs-chips{display:inline-flex;align-items:center;gap:4px;flex-shrink:1;min-width:0;overflow:hidden}.lbs-pbs-chip{display:inline-block;padding:0 6px;border-radius:4px;font-size:10px;font-weight:500;line-height:18px;background:#eff6ff;color:#2563eb;border:1px solid #bfdbfe;white-space:nowrap;max-width:90px;overflow:hidden;text-overflow:ellipsis}.lbs-pbs-chip-more{background:#f1f5f9;color:#64748b;border-color:#e2e8f0;flex-shrink:0}.lbs-status-chip{display:inline-flex;align-items:center;padding:1px 8px;border-radius:10px;font-size:11px;font-weight:500;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s,color .15s;white-space:nowrap}.lbs-status-draft{background:#f1f5f9;color:#475569;border:1px solid #cbd5e1}.lbs-status-draft:hover{background:#e2e8f0;color:#334155}.lbs-status-ready{background:#dbeafe;color:#1d4ed8;border:1px solid #93c5fd}.lbs-status-ready:hover{background:#bfdbfe;color:#1e40af}.lbs-status-in_progress{background:#fef3c7;color:#b45309;border:1px solid #fcd34d}.lbs-status-in_progress:hover{background:#fde68a;color:#92400e}.lbs-status-on_hold{background:#fee2e2;color:#dc2626;border:1px solid #fca5a5}.lbs-status-on_hold:hover{background:#fecaca;color:#b91c1c}.lbs-status-completed{background:#dcfce7;color:#166534;border:1px solid #bbf7d0}.lbs-status-completed:hover{background:#bbf7d0;color:#14532d}.lbs-status-accepted{background:#d1fae5;color:#047857;border:1px solid #6ee7b7}.lbs-status-accepted:hover{background:#a7f3d0;color:#065f46}.lbs-slideout-backdrop{position:fixed;inset:0;background:#0003;z-index:200}.lbs-slideout{position:fixed;top:0;right:0;bottom:0;width:400px;max-width:90vw;background:#fff;box-shadow:-4px 0 16px #0000001a;z-index:201;display:flex;flex-direction:column;transform:translate(100%);transition:transform .25s ease}.lbs-slideout-open{transform:translate(0)}.lbs-slideout-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--color-border);background:#fafbfc;flex-shrink:0}.lbs-slideout-title{display:flex;flex-direction:column;gap:2px;font-size:14px;font-weight:600;color:var(--color-text)}.lbs-slideout-count{font-weight:400;font-size:12px;color:#64748b}.lbs-slideout-close{background:none;border:none;cursor:pointer;color:#64748b;padding:4px;border-radius:var(--radius);display:flex;align-items:center}.lbs-slideout-close:hover{background:#f1f5f9;color:var(--color-text)}.lbs-slideout-actions{display:flex;gap:6px;align-items:center;padding:8px 16px;border-bottom:1px solid var(--color-border);flex-shrink:0}.lbs-slideout-actions .btn{display:inline-flex;align-items:center;gap:4px}.lbs-slideout-hint{padding:8px 16px;font-size:12px;color:#64748b;background:#f8fafc;border-bottom:1px solid var(--color-border);flex-shrink:0}.lbs-slideout-list{flex:1;overflow-y:auto;padding:4px 0}.lbs-slideout-loading{padding:24px 16px;color:#94a3b8;font-size:13px;text-align:center}.activity-panel-with-drawer{display:flex;height:100%;overflow:hidden}.activity-panel-main{flex:1;min-width:0;min-height:0;overflow:auto;display:flex;flex-direction:column}.atp-schedule-active{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.activity-drawer-divider{width:7px;cursor:col-resize;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:transparent;transition:background .15s}.activity-drawer-divider:hover,.activity-drawer-divider:active{background:#0000000a}.activity-drawer-panel{flex-shrink:0;height:100%;overflow:hidden;border-left:1px solid var(--color-border, #e2e8f0);background:var(--color-surface, #fff)}.activity-drawer{display:flex;flex-direction:column;height:100%}.activity-drawer-body{flex:1;overflow-y:auto;min-height:0}.activity-drawer-header{display:flex;align-items:flex-start;gap:.5rem;padding:.75rem 1rem;border-bottom:1px solid var(--color-border, #e2e8f0);background:var(--color-bg, #f8fafc)}.activity-drawer-section{padding:.75rem 1rem;border-bottom:1px solid var(--color-border, #e2e8f0)}.activity-drawer-section-title{display:flex;align-items:center;gap:.4rem;font-weight:600;font-size:.82rem;margin-bottom:.5rem;color:var(--color-text, #1e293b)}.activity-drawer-detail-grid{display:grid;grid-template-columns:auto 1fr;gap:.3rem .75rem;font-size:.8rem}.activity-drawer-label{color:var(--color-text-muted, #64748b);font-weight:500}.activity-drawer-lots{display:flex;flex-direction:column;gap:.25rem}.activity-drawer-lot{border:1px solid var(--color-border, #e2e8f0);border-radius:6px;overflow:hidden}.activity-drawer-lot-header{display:flex;align-items:center;gap:.4rem;padding:.4rem .5rem;cursor:pointer;background:var(--color-bg, #f8fafc);transition:background .12s}.activity-drawer-lot-header:hover{background:var(--color-border, #e2e8f0)}.activity-drawer-sublots{padding:0 .5rem .4rem 1.5rem}.activity-drawer-sublot{display:flex;align-items:center;gap:.4rem;padding:.25rem 0;border-top:1px solid var(--color-border, #e2e8f0)}.drag-handle{cursor:grab}.drag-handle:active{cursor:grabbing}tr.drag-over-above td{box-shadow:inset 0 2px 0 var(--color-primary, #2563eb)}tr.drag-over-below td{box-shadow:inset 0 -2px 0 var(--color-primary, #2563eb)}tr[draggable]{transition:opacity .15s}.act-page-wrap{height:calc(100vh - 48px);display:flex;flex-direction:column;overflow:hidden}.act-panel-root{flex:1;min-height:0;display:flex;flex-direction:column}.act-panel-col{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.act-split{display:flex;gap:0;flex:1;min-height:0;overflow:hidden}.act-ws-sidebar{flex-shrink:0;display:flex;flex-direction:column;border-right:1px solid var(--color-border);background:var(--color-surface);overflow-x:hidden;overflow-y:hidden}.act-ws-sidebar>input.act-ws-search{padding:.4rem .6rem;border:none;border-bottom:1px solid var(--color-border);border-radius:0;font-size:.8rem;outline:none;background:var(--color-bg);flex-shrink:0;box-shadow:none;margin:0}.act-ws-sidebar>input.act-ws-search:focus{background:var(--color-surface);box-shadow:none;border-bottom-color:var(--color-primary)}.act-ws-search::placeholder{color:var(--color-text-muted);opacity:.7}.act-ws-list{flex:1;overflow-y:auto;padding:.25rem 0}.act-ws-empty{padding:1rem;text-align:center;font-size:.8rem;color:var(--color-text-muted)}.act-ws-item{width:100%;display:flex;align-items:center;gap:4px;padding:.4rem .6rem;border:none;background:none;cursor:pointer;text-align:left;font-size:.8rem;border-left:3px solid transparent;white-space:nowrap;transition:background .12s,border-color .12s}.act-ws-item:hover{background:var(--color-bg)}.act-ws-item--active{background:#eff6ff;border-left-color:var(--color-primary)}.act-ws-item-code{font-weight:600;color:var(--color-text);font-size:.78rem}.act-ws-item-name{color:var(--color-text-muted);font-size:.75rem}.act-ws-status-badge{font-size:.65rem;padding:1px 5px;flex-shrink:0;cursor:pointer;transition:filter .15s}.act-ws-status-badge:hover{filter:brightness(.85)}.act-ws-grip{color:#cbd5e1;flex-shrink:0;cursor:grab;transition:color .15s}.act-ws-item:hover .act-ws-grip{color:#94a3b8}.act-ws-item--drop-above{border-top:2px solid var(--color-primary, #2563eb)}.act-ws-item--drop-below{border-bottom:2px solid var(--color-primary, #2563eb)}.act-main-content{flex:1;min-width:0;overflow:auto;display:flex;flex-direction:column}.ws-table-view{flex:1;min-height:0;overflow:auto;padding:0}.ws-table-input{padding:.25rem .4rem;font-size:.8rem;border:1px solid var(--color-primary);border-radius:4px;width:100%;min-width:80px;box-shadow:0 0 0 2px #2563eb1f}.ws-table-input--narrow{min-width:50px;max-width:70px}.ws-table-status-badge{cursor:pointer;transition:filter .15s}.ws-table-status-badge:hover{filter:brightness(.85)}.act-action-btn--active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.act-action-btn--active:hover{background:#1d4ed8}.schedule-dialog{background:#fff;border-radius:10px;width:60vw;max-width:94vw;max-height:85vh;display:flex;flex-direction:column;box-shadow:0 8px 32px #0000002e;animation:hp-slide-up .2s ease-out;overflow:hidden}.schedule-dialog-header{display:flex;align-items:center;gap:8px;padding:1rem 1.25rem;border-bottom:1px solid var(--color-border);color:#16a34a}.schedule-dialog-header h3{margin:0;font-size:1rem;font-weight:600;color:var(--color-text);flex:1}.schedule-dialog-close{background:none;border:none;cursor:pointer;color:#94a3b8;padding:4px;border-radius:4px}.schedule-dialog-close:hover{color:var(--color-text);background:#f1f5f9}.schedule-dialog-body{padding:1.25rem;overflow-y:auto;flex:1;min-height:0}.schedule-dialog-desc{margin:0 0 .75rem;font-size:.875rem;color:var(--color-text);line-height:1.5}.schedule-dialog-details{margin:0 0 .75rem;padding-left:1.25rem;font-size:.8125rem;color:#475569;line-height:1.7}.schedule-dialog-details li{margin-bottom:2px}.schedule-dialog-note{margin:0;font-size:.8125rem;color:#64748b;line-height:1.5;background:#f8fafc;border-radius:6px;padding:.625rem .75rem;border-left:3px solid #16a34a}.schedule-dialog-footer{display:flex;justify-content:flex-end;gap:8px;padding:.75rem 1.25rem;border-top:1px solid var(--color-border)}.schedule-dialog-btn{padding:.4rem 1rem;font-size:.8125rem;font-weight:500;border-radius:6px;border:none;cursor:pointer}.schedule-dialog-btn:disabled{opacity:.5;cursor:not-allowed}.schedule-dialog-btn--cancel{background:#f1f5f9;color:#475569}.schedule-dialog-btn--cancel:hover:not(:disabled){background:#e2e8f0}.schedule-dialog-btn--run{background:#16a34a;color:#fff}.schedule-dialog-btn--run:hover:not(:disabled){background:#15803d}.schedule-dialog-success,.schedule-dialog-error{display:flex;align-items:flex-start;gap:10px;font-size:.875rem;line-height:1.5}.schedule-dialog-success{color:#16a34a}.schedule-dialog-success p{margin:0;color:var(--color-text)}.schedule-dialog-error{color:#dc2626}.schedule-dialog-error p{margin:0;color:#dc2626}.schedule-dialog-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin:.75rem 0 0}.schedule-dialog-stats div{background:#f8fafc;border-radius:6px;padding:.5rem .75rem}.schedule-dialog-stats dt{font-size:.75rem;color:#64748b;text-transform:uppercase;letter-spacing:.03em;margin-bottom:2px}.schedule-dialog-stats dd{margin:0;font-size:1.125rem;font-weight:600;color:var(--color-text)}.schedule-dialog-warnings{margin-top:.75rem;font-size:.8125rem;color:#92400e;background:#fffbeb;border:1px solid #fde68a;border-radius:6px;padding:.5rem .75rem;max-height:220px;overflow-y:auto}.schedule-dialog-warnings p{margin:0 0 .25rem}.schedule-dialog-warnings ul{margin:0;padding-left:1.25rem;list-style:disc}.schedule-dialog-warnings li{margin-bottom:2px}.schedule-dialog-form{display:flex;flex-direction:column;gap:.75rem;margin-top:.75rem}.schedule-dialog-field{display:flex;flex-direction:column;gap:4px}.schedule-dialog-field label{font-size:.8125rem;font-weight:500;color:#475569}.schedule-dialog-field input,.schedule-dialog-field select{padding:.5rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.875rem;color:var(--color-text);background:#fff}.schedule-dialog-field input:disabled{background:#f8fafc;color:#94a3b8}.schedule-dialog-field select:focus,.schedule-dialog-field input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #2563eb26}.schedule-dialog-hint{font-size:.75rem;color:#94a3b8;min-height:1rem}.schedule-dialog-optional{font-weight:400;color:#94a3b8}.schedule-dialog-radio{display:flex;align-items:center;gap:8px;padding:.625rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius);cursor:pointer;transition:border-color .15s,background .15s}.schedule-dialog-radio:hover{background:#f8fafc}.schedule-dialog-radio--active{border-color:var(--color-primary);background:#eff6ff}.schedule-dialog-radio input[type=radio]{accent-color:var(--color-primary);margin:0;flex-shrink:0}.schedule-dialog-radio-label{font-size:.875rem;font-weight:500;color:var(--color-text);white-space:nowrap}.schedule-dialog-radio-date{flex:1;padding:.35rem .5rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.8125rem;color:var(--color-text);background:#fff}.schedule-dialog-radio-date:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #2563eb26}.schedule-dialog-radio .schedule-dialog-hint{margin:0;flex-shrink:0}.constraint-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:#7c3aed;color:#fff;font-size:.7rem;font-weight:600;margin-left:.35rem}.constraint-section-body{padding-top:.35rem}.constraint-card{padding:.4rem .5rem;border:1px solid var(--color-border);border-radius:var(--radius);margin-bottom:.35rem;background:#faf5ff}.constraint-card-header{display:flex;align-items:center;gap:.4rem}.constraint-type-badge{display:inline-block;padding:1px 6px;border-radius:4px;background:#7c3aed;color:#fff;font-size:.7rem;font-weight:600;letter-spacing:.03em}.constraint-date{font-size:.8rem;font-weight:500;color:var(--color-text)}.constraint-remove-btn{margin-left:auto;background:none;border:none;cursor:pointer;color:#9ca3af;padding:2px;border-radius:4px;display:flex;align-items:center}.constraint-remove-btn:hover{color:#dc2626;background:#fee2e2}.constraint-card-label{font-size:.72rem;color:var(--color-text-muted);margin-top:2px}.constraint-card-reason{font-size:.75rem;color:var(--color-text-muted);margin-top:2px;font-style:italic}.constraint-add-form{display:flex;flex-direction:column;gap:.35rem;padding:.5rem;border:1px dashed var(--color-border);border-radius:var(--radius);margin-top:.35rem}.constraint-add-row{display:flex;gap:.35rem}.constraint-add-row select,.constraint-add-row input{flex:1;font-size:.8rem}.constraint-add-form>input{font-size:.8rem}.constraint-add-actions{display:flex;justify-content:flex-end;gap:.35rem}.constraint-add-trigger{margin-top:.35rem;display:inline-flex;align-items:center;gap:.25rem}.lsm-popover{position:fixed;z-index:1000;transform:translate(-100%,-100%);margin-top:-4px;margin-left:0;width:420px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;box-shadow:0 6px 20px #0000001f;display:flex;flex-direction:column;gap:0}.lsm-popover-section{padding:8px 10px;border-bottom:1px solid var(--color-border)}.lsm-popover-section:last-of-type{border-bottom:none}.lsm-popover-label{display:block;font-size:.68rem;font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.03em;margin-bottom:4px}.lsm-popover-label-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.lsm-popover-label-row .lsm-popover-label{margin-bottom:0}.lsm-popover-toggle{background:none;border:none;color:var(--color-primary);font-size:.7rem;font-weight:500;cursor:pointer;padding:0}.lsm-popover-toggle:hover{text-decoration:underline}.lsm-popover-select{font-size:.78rem;flex:1;min-width:0}.lsm-popover-select .searchable-select-trigger{min-height:26px;height:26px;padding:2px 6px;font-size:.78rem;border-radius:4px;box-sizing:border-box}.lsm-popover-select .searchable-select-display{font-size:.78rem;line-height:1.2}.lsm-popover-select .searchable-select-icons{gap:2px}.lsm-popover-select .searchable-select-icons svg{width:12px;height:12px}.lsm-popover-select input{font-size:.78rem!important;padding:2px 6px!important;height:22px!important}.lsm-popover-input{font-size:.78rem;padding:3px 6px;height:26px;border:1px solid var(--color-border);border-radius:4px;background:var(--color-surface);color:var(--color-text);outline:none;flex:1;min-width:0}.lsm-popover-input:focus{border-color:var(--color-primary)}.lsm-popover-input::placeholder{color:var(--color-text-muted);font-size:.75rem}.lsm-popover-readonly{font-size:.78rem;padding:3px 6px;height:26px;display:flex;align-items:center;background:var(--color-bg-hover, #f8f9fa);border:1px solid var(--color-border);border-radius:4px;color:var(--color-text);font-weight:500}.lsm-popover-row{display:flex;gap:4px;align-items:center}.lsm-popover-hint{font-size:.7rem;color:var(--color-text-muted);font-style:italic;margin-top:3px}.lsm-popover-sublot-list{display:flex;flex-direction:column;gap:2px;max-height:140px;overflow-y:auto;margin-bottom:4px}.lsm-popover-sublot-item{display:flex;align-items:center;gap:6px;padding:3px 4px;border-radius:4px;cursor:pointer;font-size:.75rem}.lsm-popover-sublot-item:hover{background:var(--color-bg-hover, #f8f9fa)}.lsm-popover-sublot-item input[type=checkbox]{width:14px;height:14px;margin:0;accent-color:var(--color-primary);cursor:pointer;flex-shrink:0}.lsm-popover-sublot-item--new{background:#f0fdf4}.lsm-popover-sublot-item--new:hover{background:#dcfce7}.lsm-popover-sublot-type{font-size:.65rem;color:var(--color-text-muted);margin-left:auto}.lsm-popover-chips{display:flex;flex-wrap:wrap;gap:4px;max-height:120px;overflow-y:auto}.lsm-popover-chip{display:inline-flex;align-items:center;gap:3px;padding:2px 7px;border:1px solid var(--color-border);border-radius:4px;background:var(--color-surface);cursor:pointer;font-size:.72rem;transition:all .1s}.lsm-popover-chip:hover{border-color:var(--color-primary);background:#eff6ff}.lsm-popover-chip--sel{border-color:var(--color-primary);background:#eff6ff;box-shadow:0 0 0 1px var(--color-primary)}.lsm-popover-chip-code{font-weight:600}.lsm-popover-chip-name{color:var(--color-text-muted)}.lsm-popover-error{padding:4px 10px;font-size:.72rem;color:var(--color-danger)}.lsm-popover-footer{display:flex;justify-content:flex-end;gap:6px;padding:6px 10px;border-top:1px solid var(--color-border)}.data-table tbody tr.row-selected{background:var(--color-primary-bg, #eff6ff)!important}.act-tabs{display:flex;align-items:center;gap:0;border-bottom:1px solid var(--color-border, #e2e8f0);margin-bottom:0}.act-tab{display:inline-flex;align-items:center;gap:.35rem;padding:.5rem 1rem;border:none;background:none;font-size:.82rem;font-weight:500;color:var(--color-text-muted, #64748b);cursor:pointer;border-bottom:2px solid transparent;transition:color .15s,border-color .15s}.act-tab:hover:not(:disabled){color:#334155}.act-tab--active{color:var(--color-primary, #2563eb);border-bottom-color:var(--color-primary, #2563eb)}.act-tab:disabled{opacity:.4;cursor:not-allowed}.sublot-matrix-container{padding:0;margin-top:-1px;height:100%;display:flex;flex-direction:column}.sublot-matrix-scroll{overflow:auto;flex:1;min-height:0}.sublot-matrix{border-collapse:separate;border-spacing:0;font-size:.78rem;width:100%}.sublot-matrix th,.sublot-matrix td{border:1px solid var(--color-border, #e2e8f0);padding:.3rem .5rem;white-space:nowrap}.sublot-matrix-corner{position:sticky;left:0;z-index:3;background:var(--color-bg, #f8fafc);font-weight:600;width:240px;min-width:240px;max-width:240px;text-align:left}.sublot-matrix-lot-header{background:var(--color-bg, #f8fafc);text-align:center;font-weight:600;font-size:.75rem;color:var(--color-text, #1e293b);border-bottom:none}.sublot-matrix-sublot-header{background:var(--color-bg, #f8fafc);text-align:center;font-weight:700;font-size:.7rem;min-width:100px}.sublot-matrix-sublot-header--clickable{cursor:pointer;transition:background .15s}.sublot-matrix-sublot-header--clickable:hover{background:#e2e8f0}.sublot-matrix-sublot-header--active{background:#dbeafe;color:#1d4ed8;box-shadow:inset 0 -2px #3b82f6}.sublot-matrix-filter-bar{display:flex;align-items:center;gap:8px;padding:4px 8px;margin-bottom:4px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:4px;font-size:.75rem;color:#1e40af}.sublot-matrix-filter-clear{background:none;border:none;cursor:pointer;color:#1d4ed8;font-size:.75rem;font-weight:600;padding:2px 6px;border-radius:3px;transition:background .12s}.sublot-matrix-filter-clear:hover{background:#bfdbfe}.sublot-matrix-sublot-code{display:inline-block;max-width:60px;overflow:hidden;text-overflow:ellipsis}.sublot-matrix-activity{position:sticky;left:0;z-index:2;background:var(--color-surface, #fff);width:240px;min-width:240px;max-width:240px;overflow:hidden;text-overflow:ellipsis}.sublot-matrix-act-code{font-weight:600;margin-right:.4rem}.sublot-matrix-act-name{overflow:hidden;text-overflow:ellipsis;color:var(--color-text-muted, #64748b)}.sublot-matrix-cell{text-align:center;cursor:pointer;min-width:100px;transition:background .12s;-webkit-user-select:none;user-select:none;position:relative;padding:2px 4px}.sublot-matrix-cell:hover{background:var(--color-primary-bg, #eff6ff)}.sublot-matrix-cell--not-started{background:#fff;color:#475569}.sublot-matrix-cell--in-progress{background:#dbeafe;color:#1d4ed8}.sublot-matrix-cell--completed{background:#dcfce7;color:#16a34a}.sublot-matrix-cell--on-hold{background:#fef3c7;color:#b45309}.sublot-matrix-cell--not-started:hover,.sublot-matrix-cell--in-progress:hover,.sublot-matrix-cell--completed:hover,.sublot-matrix-cell--on-hold:hover{filter:brightness(.95)}.sublot-matrix-cell-content{display:flex;flex-direction:column;align-items:center;gap:1px;font-size:.65rem;font-weight:600;line-height:1.2}.sublot-matrix-cell-unlink{background:none;border:none;cursor:pointer;font-size:.7rem;color:#94a3b8;padding:0;line-height:1;opacity:0;transition:opacity .15s}.sublot-matrix-cell-pct{font-size:.6rem;font-weight:500;opacity:.7}.sublot-matrix-cell:hover .sublot-matrix-cell-unlink{opacity:1}.sublot-matrix-cell-unlink:hover{color:#dc2626}.sublot-matrix-cell--loading{opacity:.5;pointer-events:none}.imp-tree-row{display:flex;align-items:center;height:28px;padding-right:8px;border-left:3px solid transparent;margin-bottom:1px;-webkit-user-select:none;user-select:none;font-size:.8rem}.imp-tree-row:hover{filter:brightness(.97)}.imp-tree-indent{display:inline-block;width:20px;height:28px;flex-shrink:0;position:relative}.imp-tree-indent:before{content:"";position:absolute;left:10px;top:0;bottom:0;width:1px;background:#d1d5db;opacity:.5}.imp-tree-toggle{display:inline-flex;align-items:center;justify-content:center;width:20px;height:28px;flex-shrink:0;cursor:pointer;color:var(--color-text-muted);border-radius:3px}.imp-tree-toggle:hover{color:var(--color-text);background:#0000000f}.imp-tree-toggle-leaf{cursor:default}.imp-tree-toggle-leaf:hover{background:transparent;color:var(--color-text-muted)}.imp-tree-chevron{transition:transform .15s ease}.imp-tree-chevron-expanded{transform:rotate(90deg)}.imp-tree-badge{font-size:.6rem;font-weight:700;width:3.5rem;text-align:center;flex-shrink:0;padding:1px 0;border:1px solid;border-radius:3px;margin-right:6px}.imp-tree-name{font-weight:500;color:var(--color-text);white-space:nowrap}.imp-tree-extcode{color:var(--color-text-muted);font-size:.72rem;margin-left:6px;white-space:nowrap}.imp-tree-count{font-size:.65rem;font-weight:600;color:var(--color-text-muted);background:#f1f5f9;padding:0 5px;border-radius:8px;margin-left:4px}.imp-tree-error{color:#ef4444;font-size:.7rem;margin-left:8px}.imp-tree-children{border-top:1px solid rgba(0,0,0,.04)}.imp-act-meta{display:inline-flex;align-items:center;gap:6px;margin-left:8px;flex-shrink:0}.imp-act-meta-item{font-size:.68rem;color:var(--color-text-muted);white-space:nowrap}.imp-preview-layout{display:flex;flex-direction:column;height:calc(100vh - 50px);overflow:hidden}.imp-preview-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;border-bottom:1px solid #e2e8f0;background:#f8fafc;flex-shrink:0}.imp-preview-header-left{display:flex;align-items:baseline;gap:.75rem}.itp-diff-badge{font-size:.6rem;font-weight:700;text-align:center;flex-shrink:0;padding:0 5px;border:1px solid;border-radius:3px;margin-right:4px;line-height:1.6;white-space:nowrap;letter-spacing:.02em}.itp-error{color:#ef4444;font-size:.7rem;margin-left:8px;white-space:nowrap}.ram-page{padding:.75rem 0 0}.pj-main:has(.ram-page){padding-left:0;padding-right:0}.pj-main:has(.scp-page){padding:0;overflow:hidden}.scp-page{display:flex;flex-direction:column;height:calc(100vh - 50px);overflow:hidden}.scp-trees{display:flex;min-height:0;overflow:hidden}.scp-panel{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden}.scp-panel+.scp-panel{border-left:1px solid #e2e8f0}.scp-panel-header{display:flex;align-items:center;gap:.5rem;padding:.45rem .75rem .45rem 0;flex-shrink:0;border-bottom:1px solid #e2e8f0;background:#f8fafc}.scp-panel-label{font-size:.8rem;font-weight:700;letter-spacing:.03em}.scp-panel-sublabel{font-size:.7rem;color:#94a3b8;font-weight:400}.scp-header-lbs{border-top:3px solid #3b82f6}.scp-header-lbs .scp-panel-label{color:#1e40af}.scp-header-pbs{border-top:3px solid #16a34a}.scp-header-pbs .scp-panel-label{color:#166534}.scp-header-wbs{border-top:3px solid #ca8a04}.scp-header-wbs .scp-panel-label{color:#854d0e}.scp-header-activities{border-top:3px solid #6366f1}.scp-header-activities .scp-panel-label{color:#3730a3}.scp-expand-btn{background:none;border:none;padding:0;cursor:pointer;color:#64748b;display:inline-flex;align-items:center;justify-content:center;width:20px;flex-shrink:0;border-radius:3px;transition:color .15s}.scp-expand-btn:hover{color:#1e293b}.scp-node-count{margin-left:auto;font-size:.65rem;font-weight:500;color:#64748b;background:#f1f5f9;padding:1px 6px;border-radius:8px;white-space:nowrap}.scp-clear-btn{background:none;border:1px solid #e2e8f0;border-radius:4px;width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-size:14px;color:#94a3b8;cursor:pointer;line-height:1;padding:0;transition:all .15s}.scp-clear-btn:hover{color:#ef4444;border-color:#ef4444;background:#fef2f2}.scp-search-box{display:flex;align-items:center;gap:4px;margin-left:auto;background:#fff;border:1px solid #e2e8f0;border-radius:4px;padding:2px 6px}.scp-search-box svg{color:#94a3b8;flex-shrink:0}.scp-search-input{width:90px;color:var(--color-text)}.scp-search-input::placeholder{color:#94a3b8}.scp-panel-body{flex:1;overflow-y:auto;overflow-x:hidden;min-height:0}.scp-activities{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.scp-bottom-split{flex:1;display:flex;min-height:0;overflow:hidden}.scp-ws-panel{display:flex;flex-direction:column;min-height:0;overflow:hidden;border-right:1px solid #e2e8f0}.scp-v-divider{width:5px;cursor:col-resize;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:transparent;transition:background .15s}.scp-v-divider:hover{background:#e2e8f0}.scp-v-divider-line{width:1px;height:40px;background:#cbd5e1;border-radius:1px}.scp-activities-body{flex:1;display:flex;flex-direction:column;min-height:0;overflow-y:auto;overflow-x:hidden}.scp-filter-chips{display:flex;align-items:center;gap:.3rem;margin-left:.25rem}.scp-chip{font-size:.65rem;font-weight:600;padding:.1rem .4rem;border-radius:4px;letter-spacing:.04em}.scp-chip-lbs{background:#dbeafe;color:#1e40af}.scp-chip-pbs{background:#dcfce7;color:#166534}.scp-chip-wbs{background:#fef9c3;color:#854d0e}.scp-filter-hint{font-size:.7rem;color:#94a3b8;font-weight:400;margin-left:.25rem}.scp-divider{flex-shrink:0;height:7px;display:flex;align-items:center;justify-content:center;cursor:row-resize;background:#f1f5f9;border-top:1px solid #e2e8f0;border-bottom:1px solid #e2e8f0;transition:background .15s}.scp-divider:hover{background:#e0e7ef}.scp-divider-line{width:40px;height:3px;border-radius:2px;background:#cbd5e1;transition:background .15s}.scp-divider:hover .scp-divider-line{background:#94a3b8}.ram-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem;gap:1rem;flex-wrap:wrap;padding:0 1rem}.ram-title{display:flex;align-items:center;gap:.5rem;font-size:1.15rem;font-weight:600;margin:0}.ram-title h2{margin:0;font-size:inherit}.ram-header-actions{display:flex;align-items:center;gap:.5rem}.ram-help-btn,.ram-settings-btn{display:flex;align-items:center;gap:.35rem;padding:.35rem .65rem;border-radius:6px;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-muted);font-size:.78rem;cursor:pointer;transition:all .15s}.ram-help-btn:hover,.ram-settings-btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.ram-help-btn.active,.ram-settings-btn.active{border-color:var(--color-primary);color:var(--color-primary);background:#2563eb0a}.ram-error{padding:.75rem 1rem;background:#fef2f2;color:#dc2626;border-radius:8px;font-size:.88rem;margin:1rem 0}.ram-top-bar{display:flex;align-items:center;gap:1.25rem;padding:.4rem 1rem;background:var(--color-bg);border-bottom:1px solid var(--color-border);font-size:.78rem;flex-wrap:wrap;margin-bottom:.75rem}.ram-top-bar .ram-precedence-bar{margin:0;padding:0;border:none;background:none;border-radius:0}.ram-top-bar-divider{width:1px;height:20px;background:var(--color-border);flex-shrink:0}.ram-legend{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;font-size:.78rem}.ram-legend-label{font-weight:600;color:var(--color-text-muted);margin-right:.15rem}.ram-legend-item{display:flex;align-items:center;gap:.25rem}.ram-legend-swatch{width:12px;height:12px;border-radius:3px}.ram-howto{padding:1rem 1.25rem;margin:0 1rem 1rem;background:#2563eb08;border:1px solid rgba(37,99,235,.15);border-radius:10px}.ram-howto-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:.75rem}.ram-howto-step{display:flex;flex-direction:column;gap:.25rem;font-size:.82rem;line-height:1.45}.ram-howto-step strong{font-size:.88rem}.ram-howto-step p{margin:0;color:var(--color-text-muted)}.ram-howto-num{width:24px;height:24px;border-radius:50%;background:var(--color-primary);color:#fff;font-weight:700;font-size:.72rem;display:flex;align-items:center;justify-content:center;margin-bottom:.25rem}.ram-empty-state{text-align:center;padding:3rem 1.5rem;margin:0 1rem;color:var(--color-text-muted)}.ram-empty-state h3{margin:.75rem 0 .25rem;color:var(--color-text);font-size:1rem}.ram-empty-state p{margin:0;font-size:.85rem;max-width:460px;margin-inline:auto}.ram-precedence-bar{display:flex;align-items:center;gap:.4rem;font-size:.78rem}.ram-precedence-label{font-weight:600;color:var(--color-text-muted);margin-right:.25rem}.ram-precedence-arrow{color:var(--color-text-muted)}.ram-precedence-chip{padding:.2rem .5rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:4px;font-weight:500}.ram-precedence-chip.active{background:#2563eb14;border-color:var(--color-primary);color:var(--color-primary)}.ram-tabs{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.75rem;padding:0 1rem}.ram-type-tabs{display:flex;gap:2px}.ram-tab{padding:.4rem 1rem;border:1px solid var(--color-border);background:var(--color-surface);cursor:pointer;font-size:.82rem;font-weight:500;transition:all .15s}.ram-tab:first-child{border-radius:6px 0 0 6px}.ram-tab:last-child{border-radius:0 6px 6px 0}.ram-tab.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.ram-view-tabs{display:flex;gap:2px}.ram-view-btn{padding:.35rem .5rem;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-muted);cursor:pointer;display:flex;align-items:center;transition:all .15s}.ram-view-btn:first-child{border-radius:6px 0 0 6px}.ram-view-btn:last-child{border-radius:0 6px 6px 0}.ram-view-btn.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.ram-tree-wrap{overflow-x:auto;border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border)}.ram-tree-table{width:100%;border-collapse:collapse;font-size:.82rem}.ram-tree-table thead{position:sticky;top:0;z-index:2}.ram-tree-table th{background:var(--color-bg);padding:.5rem .75rem;text-align:left;font-weight:600;border-bottom:2px solid var(--color-border);white-space:nowrap}.ram-tree-th-node{min-width:280px}.ram-tree-th-tpl{min-width:220px}.ram-tree-th-inherit{width:120px}.ram-tree-th-action{width:90px}.ram-tree-row td{padding:.4rem .75rem;border-bottom:1px solid var(--color-border);vertical-align:middle}.ram-tree-row.inherited td{background:#2563eb05}.ram-tree-row.unassigned td{opacity:.7}.ram-tree-node{display:flex;align-items:center;gap:.3rem;white-space:nowrap}.ram-tree-toggle{border:none;background:none;cursor:pointer;padding:2px;color:var(--color-text-muted);display:flex;align-items:center;border-radius:3px}.ram-tree-toggle:hover{background:var(--color-bg)}.ram-tree-toggle-spacer{width:18px;flex-shrink:0}.ram-tree-node-code{font-size:.7rem;color:var(--color-text-muted);font-family:var(--font-mono, monospace);background:var(--color-bg);padding:1px 5px;border-radius:3px;border:1px solid var(--color-border)}.ram-tree-node-name{font-weight:500}.ram-tree-tpl .ram-tpl-select{width:100%}.ram-tree-tpl .ram-tpl-select .ss-trigger{width:100%;padding:.3rem .5rem;border:1px solid var(--color-border);border-radius:6px;font-size:.8rem;background:var(--color-surface);cursor:pointer}.ram-inherited-tpl-label{display:flex;align-items:center;gap:.35rem;padding:.3rem .5rem;border:1px dashed var(--color-border);border-radius:6px;background:#2563eb08;font-size:.8rem;color:var(--color-text-muted);min-height:30px}.ram-inherited-arrow{color:var(--color-primary);font-weight:600;flex-shrink:0}.ram-inherited-tpl-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ram-inherited-tag{font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--color-primary);background:#2563eb14;padding:.1rem .35rem;border-radius:3px;flex-shrink:0}.ram-tree-inherit-check{display:flex;align-items:center;gap:.35rem;font-size:.78rem;cursor:pointer}.ram-tree-inherit-check input{accent-color:var(--color-primary)}.ram-inherited-badge{display:inline-block;padding:.15rem .4rem;background:#2563eb14;color:var(--color-primary);border-radius:4px;font-size:.7rem;font-weight:600}.ram-tree-remove-btn{border:none;background:none;cursor:pointer;color:var(--color-text-muted);padding:4px;border-radius:4px;display:flex;align-items:center}.ram-tree-remove-btn:hover{color:#dc2626;background:#fef2f2}.ram-tree-override-btn{padding:.2rem .5rem;border:1px solid var(--color-border);background:var(--color-surface);border-radius:4px;font-size:.72rem;cursor:pointer;transition:all .15s}.ram-tree-override-btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.ram-table-wrap{overflow-x:auto;border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border)}.ram-table{width:100%;border-collapse:collapse;font-size:.82rem}.ram-table thead{position:sticky;top:0;z-index:2}.ram-table th{background:var(--color-bg);padding:.5rem .75rem;text-align:center;font-weight:600;border-bottom:2px solid var(--color-border);white-space:nowrap;max-width:120px;overflow:hidden;text-overflow:ellipsis}.ram-table th:first-child{text-align:left;position:sticky;left:0;z-index:3}.ram-table td{padding:.4rem .75rem;border-bottom:1px solid var(--color-border);text-align:center;vertical-align:middle}.ram-table td:first-child{text-align:left;position:sticky;left:0;background:var(--color-surface);z-index:1}.ram-obs-col{font-size:.75rem}.ram-node-cell{display:flex;align-items:center;gap:.4rem;white-space:nowrap}.ram-node-code{font-size:.7rem;color:var(--color-text-muted);font-family:var(--font-mono, monospace);background:var(--color-bg);padding:1px 5px;border-radius:3px;border:1px solid var(--color-border)}.ram-node-name{font-weight:500}.ram-cell{min-width:44px;min-height:36px}.ram-cell-badge{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:4px;color:#fff;font-weight:700;font-size:.72rem}.ram-settings-modal{max-width:420px}.ram-settings-desc{font-size:.82rem;color:var(--color-text-muted);margin:0 0 1rem;line-height:1.5}.ram-settings-list{display:flex;flex-direction:column;gap:.35rem;margin-bottom:1rem}.ram-settings-item{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:var(--color-bg);border:1px solid var(--color-border);border-radius:6px}.ram-settings-grip{color:var(--color-text-muted);flex-shrink:0}.ram-settings-rank{width:22px;height:22px;border-radius:50%;background:var(--color-primary);color:#fff;font-weight:700;font-size:.72rem;display:flex;align-items:center;justify-content:center}.ram-settings-type{flex:1;font-weight:600;font-size:.88rem}.ram-settings-btns{display:flex;gap:2px}.ram-settings-btns button{width:26px;height:26px;border:1px solid var(--color-border);background:var(--color-surface);border-radius:4px;cursor:pointer;font-size:.82rem;display:flex;align-items:center;justify-content:center;transition:all .15s}.ram-settings-btns button:hover:not(:disabled){border-color:var(--color-primary);color:var(--color-primary)}.ram-settings-btns button:disabled{opacity:.3;cursor:not-allowed}.obs-detail{display:flex;flex-direction:column;height:100%}.obs-detail-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border-bottom:1px solid var(--color-border);flex-shrink:0}.obs-detail-title{margin:0;font-size:1rem;font-weight:600;display:flex;align-items:center;gap:.5rem}.obs-code-tag{font-size:.72rem;font-weight:500;color:var(--color-text-muted);background:var(--color-bg);border:1px solid var(--color-border);border-radius:4px;padding:.1rem .45rem;letter-spacing:.02em}.obs-member-count{font-size:.78rem;color:var(--color-text-muted);white-space:nowrap}.obs-header-right{display:flex;align-items:center;gap:.5rem}.obs-add-member-btn{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;padding:0 .65rem;height:30px;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-muted);border-radius:6px;cursor:pointer;font:inherit;font-size:.78rem;font-weight:500;white-space:nowrap;transition:all .15s}.obs-add-member-btn:hover{border-color:var(--color-primary);color:var(--color-primary);background:#2563eb0f}.obs-add-member-btn.active{border-color:var(--color-primary);color:var(--color-primary);background:#2563eb1a}.obs-add-wrap{position:relative;padding:.6rem 1rem;border-bottom:1px solid var(--color-border);flex-shrink:0}.obs-search-box{display:flex;align-items:center;gap:.5rem;background:var(--color-bg);border:1px solid var(--color-border);border-radius:8px;padding:0 .6rem;transition:border-color .15s,box-shadow .15s}.obs-search-box:focus-within{border-color:var(--color-primary);box-shadow:0 0 0 2px #2563eb14}.obs-search-icon{color:var(--color-text-muted);flex-shrink:0}.obs-search-input{flex:1;border:none;background:none;outline:none;font:inherit;font-size:.85rem;padding:.45rem 0;color:inherit}.obs-search-input::placeholder{color:var(--color-text-muted);opacity:.7}.obs-search-close{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;background:none;color:var(--color-text-muted);font-size:1.1rem;line-height:1;border-radius:4px;cursor:pointer;flex-shrink:0;transition:all .12s}.obs-search-close:hover{background:var(--color-bg);color:var(--color-text)}.obs-search-dropdown{position:absolute;left:1rem;right:1rem;top:calc(100% - 2px);background:var(--color-surface);border:1px solid var(--color-border);border-radius:0 0 10px 10px;box-shadow:0 8px 24px #0000001a;z-index:20;max-height:320px;overflow-y:auto}.obs-search-empty{padding:1.2rem;text-align:center;color:var(--color-text-muted);font-size:.82rem}.obs-search-option{display:flex;align-items:center;gap:.6rem;padding:.5rem .75rem;transition:background .1s}.obs-search-option:hover{background:var(--color-bg)}.obs-search-option.highlighted{background:#2563eb0f}.obs-search-option+.obs-search-option{border-top:1px solid var(--color-border)}.obs-search-avatar{background:linear-gradient(135deg,#6366f1,#2563eb);flex-shrink:0}.obs-search-option-name{flex:1;min-width:0;font-size:.84rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.obs-search-option-email{flex:1;min-width:0;font-size:.78rem;color:var(--color-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.obs-search-option-actions{display:flex;gap:.25rem;flex-shrink:0}.obs-add-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:none;color:var(--color-text-muted);border-radius:6px;cursor:pointer;transition:all .12s}.obs-add-btn:hover{background:#2563eb1a;color:var(--color-primary)}.obs-add-btn.obs-add-lead:hover{background:#eab3081f;color:#d97706}.obs-add-btn:disabled{opacity:.4;cursor:not-allowed}.obs-member-list{flex:1;overflow-y:auto;padding:.5rem .75rem;display:flex;flex-direction:column;gap:2px}.obs-member-card{display:flex;align-items:center;gap:.6rem;padding:.5rem .6rem;border-radius:8px;transition:background .12s}.obs-member-card:hover{background:var(--color-bg)}.obs-member-avatar{background:linear-gradient(135deg,#6366f1,#2563eb);flex-shrink:0}.obs-member-name{flex:1;min-width:0;font-weight:500;font-size:.85rem;display:flex;align-items:center;gap:.4rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.obs-lead-badge{display:inline-flex;align-items:center;gap:3px;font-size:.65rem;font-weight:600;color:#d97706;background:#eab3081a;border-radius:4px;padding:1px 5px;text-transform:uppercase;letter-spacing:.03em}.obs-member-email{flex:1;min-width:0;font-size:.78rem;color:var(--color-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.obs-remove-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:none;color:var(--color-text-muted);border-radius:6px;cursor:pointer;opacity:0;transition:all .12s;flex-shrink:0}.obs-member-card:hover .obs-remove-btn{opacity:1}.obs-remove-btn:hover{background:#ef44441a;color:#ef4444}.obs-remove-btn:disabled{opacity:.3;cursor:not-allowed}.ram-tpl-page{padding:1.5rem}.ram-tpl-loading,.ram-tpl-error{padding:2rem}.ram-tpl-error{color:#dc2626}.ram-tpl-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:1.25rem;gap:1rem}.ram-tpl-title{margin:0 0 .25rem;font-size:1.15rem;font-weight:600}.ram-tpl-subtitle{margin:0;font-size:.82rem;color:var(--color-text-muted);max-width:520px}.ram-tpl-add-btn{display:inline-flex;align-items:center;gap:.35rem;padding:.45rem .85rem;border-radius:8px;border:none;background:var(--color-primary);color:#fff;font-weight:600;font-size:.82rem;cursor:pointer;transition:background .15s;white-space:nowrap}.ram-tpl-add-btn:hover{background:#1d4ed8}.ram-tpl-empty{text-align:center;padding:3rem 1.5rem;color:var(--color-text-muted)}.ram-tpl-empty h3{color:var(--color-text);margin:0 0 .4rem}.ram-tpl-empty p{margin:0 0 1rem;font-size:.85rem;max-width:420px;margin-inline:auto}.ram-tpl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:1rem}.ram-tpl-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;padding:1rem 1.25rem;transition:box-shadow .15s}.ram-tpl-card:hover{box-shadow:0 2px 12px #0000000f}.ram-tpl-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.ram-tpl-card-code{font-family:var(--font-mono, monospace);font-size:.72rem;background:var(--color-bg);border:1px solid var(--color-border);padding:1px 6px;border-radius:4px;margin-right:.5rem}.ram-tpl-card-name{font-weight:600;font-size:.92rem}.ram-tpl-card-actions{display:flex;gap:2px}.ram-tpl-card-actions button{border:none;background:none;cursor:pointer;color:var(--color-text-muted);padding:4px;border-radius:4px;display:flex;align-items:center}.ram-tpl-card-actions button:hover{color:var(--color-text);background:var(--color-bg)}.ram-tpl-card-actions .ram-tpl-del:hover{color:#dc2626;background:#fef2f2}.ram-tpl-card-desc{font-size:.8rem;color:var(--color-text-muted);margin:0 0 .5rem;line-height:1.4}.ram-tpl-card-entries{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.5rem}.ram-tpl-entry-row{display:flex;align-items:center;gap:.5rem;font-size:.8rem;padding:.2rem 0}.ram-tpl-entry-badge{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:4px;color:#fff;font-weight:700;font-size:.68rem;flex-shrink:0}.ram-tpl-entry-label{width:85px;color:var(--color-text-muted);font-size:.78rem;flex-shrink:0}.ram-tpl-entry-obs{flex:1;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ram-tpl-card-meta{font-size:.72rem;color:var(--color-text-muted);padding-top:.3rem;border-top:1px solid var(--color-border)}.ram-tpl-overlay{position:fixed;inset:0;background:#00000059;z-index:1000;display:flex;align-items:center;justify-content:center;animation:fadeIn .15s}.ram-tpl-modal{background:var(--color-surface);border-radius:12px;width:560px;max-width:95vw;max-height:90vh;overflow-y:auto;padding:1.25rem 1.5rem;box-shadow:0 12px 48px #0000002e;animation:slideUp .15s ease-out}.ram-tpl-modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.ram-tpl-modal-header h3{margin:0;font-size:1.05rem;font-weight:600;display:flex;align-items:center;gap:.4rem}.ram-tpl-modal-close{border:none;background:none;cursor:pointer;color:var(--color-text-muted);padding:4px;border-radius:4px}.ram-tpl-modal-close:hover{color:var(--color-text);background:var(--color-bg)}.ram-tpl-modal-footer{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1.25rem;padding-top:.75rem;border-top:1px solid var(--color-border)}.ram-tpl-cancel-btn{padding:.4rem .85rem;border:1px solid var(--color-border);background:var(--color-surface);border-radius:6px;cursor:pointer;font-size:.82rem;transition:all .15s}.ram-tpl-cancel-btn:hover{border-color:var(--color-primary)}.ram-tpl-save-btn{display:inline-flex;align-items:center;gap:.35rem;padding:.4rem .85rem;border:none;border-radius:6px;background:var(--color-primary);color:#fff;font-weight:600;font-size:.82rem;cursor:pointer;transition:background .15s}.ram-tpl-save-btn:hover{background:#1d4ed8}.ram-tpl-save-btn:disabled{opacity:.5;cursor:not-allowed}.ram-tpl-form-error{padding:.5rem .75rem;background:#fef2f2;color:#dc2626;border-radius:6px;font-size:.82rem;margin-bottom:.75rem}.ram-tpl-form-row{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.75rem}.ram-tpl-form-row label{font-weight:600;font-size:.82rem}.ram-tpl-form-row input,.ram-tpl-form-row textarea{padding:.4rem .65rem;border:1px solid var(--color-border);border-radius:6px;font-size:.82rem;background:var(--color-surface)}.ram-tpl-form-row input:disabled{background:var(--color-bg);color:var(--color-text-muted)}.ram-tpl-form-entries{margin-top:.5rem}.ram-tpl-form-entries h4{margin:0 0 .25rem;font-size:.92rem}.ram-tpl-form-hint{font-size:.78rem;color:var(--color-text-muted);margin:0 0 .75rem}.ram-tpl-form-entry{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.ram-tpl-form-entry select{flex:1;padding:.35rem .5rem;border:1px solid var(--color-border);border-radius:6px;font-size:.8rem;background:var(--color-surface);cursor:pointer}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.wst-list{display:flex;flex-direction:column;height:100%;min-height:0}.wst-list-header{display:flex;align-items:center;gap:6px;padding:8px 12px;border-bottom:1px solid #e2e8f0;flex-shrink:0}.wst-list-title{font-size:12px;font-weight:600;color:#1e293b;text-transform:uppercase;letter-spacing:.03em}.wst-list-count{font-size:11px;color:#64748b;background:#f1f5f9;padding:1px 6px;border-radius:8px}.wst-show-children{display:flex;align-items:center;gap:4px;margin-left:auto;font-size:11px;color:#64748b;cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none}.wst-show-children input[type=checkbox]{margin:0;cursor:pointer}.wst-list-items{flex:1;overflow-y:auto;padding:4px 0}.wst-list-empty{padding:1.5rem 12px;color:#94a3b8;font-size:12px;text-align:center}.wst-list-empty p{margin:0 0 10px}.wst-add-btn{display:inline-flex;align-items:center;gap:4px;padding:5px 14px;border:1px solid var(--color-border);border-radius:var(--radius);background:#fff;color:var(--color-primary);font-size:12px;font-weight:500;cursor:pointer;transition:background .15s,border-color .15s}.wst-add-btn:hover:not(:disabled){background:#eff6ff;border-color:var(--color-primary)}.wst-add-btn:disabled{opacity:.5;cursor:default}.wst-list-loading,.wst-list-error{padding:1.5rem 12px;color:#64748b;font-size:12px;text-align:center}.wst-list-error{color:#dc2626}.wst-list-item{display:flex;align-items:center;gap:6px;width:100%;padding:6px 12px;border:none;background:none;cursor:pointer;text-align:left;font-size:12.5px;color:#475569;transition:background .1s,color .1s;border-left:3px solid transparent}.wst-list-item:hover{background:#f1f5f9;color:#1e293b}.wst-list-item--active{background:#eff6ff;color:#2563eb;border-left-color:#2563eb;font-weight:500}.wst-item-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wst-item-count{font-size:11px;color:#94a3b8;background:#f1f5f9;padding:1px 5px;border-radius:6px;flex-shrink:0}.wst-item-delete{display:none;align-items:center;justify-content:center;flex-shrink:0;padding:2px;border-radius:4px;color:#94a3b8;cursor:pointer;transition:color .15s,background .15s}.wst-item-delete:hover{color:#dc2626;background:#fee2e2}.wst-list-item:hover .wst-item-delete{display:flex}.wst-list-item--active .wst-item-count{color:#2563eb;background:#dbeafe}.wst-item-grip{display:flex;align-items:center;flex-shrink:0;color:#cbd5e1;cursor:grab;transition:color .15s}.wst-list-item:hover .wst-item-grip{color:#94a3b8}.wst-list-item--drop-above{border-top:2px solid #2563eb}.wst-list-item--drop-below{border-bottom:2px solid #2563eb}.wst-delete-overlay{position:fixed;inset:0;z-index:1000;background:#0006;display:flex;align-items:center;justify-content:center}.wst-delete-dialog{background:var(--color-surface, #fff);border-radius:8px;padding:1.25rem;width:360px;max-width:90vw;box-shadow:0 8px 32px #0003}.wst-delete-dialog h4{font-size:.95rem;color:#1e293b}.wst-delete-dialog ul{line-height:1.6}.schedule-gantt{display:flex;flex-direction:column;height:100%;flex:1;min-height:0;overflow:hidden;position:relative}.sg-fullscreen{position:fixed;inset:0;z-index:1000;background:var(--color-surface, #fff);height:100vh;width:100vw;border-radius:0}.sg-toast{position:absolute;top:48px;left:50%;transform:translate(-50%);padding:8px 18px;border-radius:6px;font-size:13px;font-weight:500;z-index:1100;pointer-events:auto;cursor:pointer;animation:sg-toast-in .25s ease-out;box-shadow:0 4px 14px #00000026}.sg-toast--error{background:#fef2f2;color:#991b1b;border:1px solid #fca5a5}@keyframes sg-toast-in{0%{opacity:0;transform:translate(-50%) translateY(-8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.sg-container{display:flex;flex:1;overflow-y:auto;overflow-x:hidden;align-items:flex-start;border:1px solid var(--color-border);border-radius:6px}.sg-table-col{flex:0 0 auto;border-right:none;background:var(--color-surface)}.sg-splitter{flex:0 0 5px;align-self:stretch;cursor:col-resize;background:var(--color-border);transition:background .15s;z-index:3}.sg-splitter:hover,.sg-splitter:active{background:var(--color-primary, #2563eb)}.sg-table{width:100%;font-size:.8rem}.sg-thead{display:grid;grid-template-columns:minmax(220px,1fr) 60px minmax(100px,auto);position:sticky;top:0;z-index:2;background:var(--color-bg);box-shadow:inset 0 -1px 0 var(--color-border)}.sg-th{height:28px;box-sizing:border-box;padding:0 8px;line-height:28px;text-align:left;font-weight:600;font-size:.75rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.03em;white-space:nowrap}.sg-row{display:grid;grid-template-columns:minmax(220px,1fr) 60px minmax(100px,auto);height:32px;box-shadow:inset 0 -1px 0 var(--color-border)}.sg-row--critical{background:#ef44440a}.sg-drag-handle{cursor:grab;color:#94a3b8;display:inline-flex;vertical-align:middle;margin-right:4px}.sg-drag-handle:hover{color:#475569}.sg-row--drag-over{box-shadow:inset 0 -3px 0 0 var(--color-primary, #2563eb)}.sg-row--dragging{opacity:.4}.sg-row[draggable]{-webkit-user-select:none;user-select:none}.sg-td{position:relative;height:32px;box-sizing:border-box;padding:0 8px;line-height:32px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sg-td--dur{text-align:center}.sg-dur-label{cursor:pointer;padding:2px 6px;border-radius:3px;color:var(--color-primary, #3b82f6);font-weight:500}.sg-dur-label:hover{background:var(--color-primary-bg, rgba(59, 130, 246, .1))}.sg-dur-input{width:48px;padding:2px 4px;border:1px solid var(--color-primary, #3b82f6);border-radius:3px;font-size:.8rem;text-align:center;outline:none}.sg-name-label{cursor:text;-webkit-user-select:text;user-select:text}.sg-name-label:hover{background:#0000000a;border-radius:3px}.sg-td:has(.sg-name-input){overflow:visible}.sg-name-input{position:relative;z-index:5;width:clamp(100px,60%,240px);padding:0 4px;border:1px solid var(--color-primary, #3b82f6);border-radius:3px;font-size:.8rem;height:22px;line-height:22px;outline:none;background:#fff;vertical-align:middle;box-sizing:border-box}.sg-table input[type=text],.sg-table input[type=number]{width:auto;padding:0 4px;font-size:.8rem;box-shadow:none}.sg-td--preds{line-height:32px}.sg-no-pred{color:var(--color-text-muted);font-size:.75rem}.sg-pred-chip{display:inline-block;vertical-align:middle;padding:1px 6px;margin:0 1.5px;border-radius:10px;background:var(--color-primary-bg, rgba(59, 130, 246, .12));color:var(--color-primary, #3b82f6);font-size:.7rem;font-weight:500;cursor:pointer;transition:background .15s}.sg-pred-chip:hover,.sg-pred-chip--active{background:var(--color-primary, #3b82f6);color:#fff}.sg-pred-chip--scope{background:#7c3aed1f;color:#7c3aed}.sg-pred-chip--scope:hover{background:#7c3aed;color:#fff}.sg-chart-col{flex:1;min-width:0;position:relative;background:var(--color-bg)}.sg-chart-sticky-header{position:sticky;top:0;z-index:5;height:28px;overflow:hidden;background:var(--color-bg)}.sg-chart-scroll{overflow-x:auto;overflow-y:hidden}.sg-header-bg{fill:var(--color-bg, #fff)}.sg-chart-svg{display:block}.sg-grid-line{stroke:var(--color-border);stroke-width:.5}.sg-day-label{fill:var(--color-text-muted);font-size:10px;text-anchor:middle;-webkit-user-select:none;user-select:none}.sg-row-bg{fill:transparent}.sg-row-bg--alt{fill:#8080800a}.sg-bar{fill:var(--color-primary, #3b82f6);opacity:.85;transition:opacity .15s}.sg-bar:hover{opacity:1;filter:brightness(1.1)}.sg-bar--critical{fill:#ef4444;opacity:.9}.sg-bar--critical:hover{opacity:1}.sg-bar-label{fill:#fff;font-size:9px;text-anchor:middle;pointer-events:none;-webkit-user-select:none;user-select:none}.sg-bar-label--milestone{fill:var(--color-text, #1e293b);text-anchor:start;font-weight:500}.sg-milestone{fill:#f59e0b;stroke:#d97706;stroke-width:1;cursor:grab}.sg-milestone:hover{fill:#fbbf24}.sg-milestone--critical{fill:#ef4444;stroke:#dc2626}.sg-holdpoint{fill:#dc2626;stroke:#b91c1c;stroke-width:1;cursor:grab}.sg-holdpoint:hover{fill:#ef4444}.sg-holdpoint--critical{fill:#991b1b;stroke:#7f1d1d}.sg-bar-handle{opacity:0;transition:opacity .15s}.sg-bar-handle:hover{opacity:1!important;filter:brightness(.85)}.sg-link-handle{fill:var(--color-primary, #3b82f6);stroke:#fff;stroke-width:1.5;opacity:0;cursor:crosshair;transition:opacity .15s}g:hover>.sg-link-handle{opacity:.7}.sg-link-handle:hover{opacity:1!important;r:6}.sg-dep-arrow{fill:none;stroke:var(--color-text-muted, #888);stroke-width:1.5;transition:stroke .15s}.sg-dep-arrow:hover{stroke:var(--color-primary, #3b82f6);stroke-width:2.5}.sg-dep-arrow--critical{stroke:#ef4444;stroke-width:2}.sg-dep-arrow--highlight{stroke:var(--color-primary, #3b82f6);stroke-width:3;stroke-dasharray:none}.sg-dep-arrow--scope{stroke:#7c3aed;stroke-width:1.5;stroke-dasharray:6 3}.sg-dep-arrow--scope.sg-dep-arrow--highlight{stroke:var(--color-primary, #3b82f6);stroke-width:3;stroke-dasharray:none}.sg-arrow-head{fill:var(--color-text-muted, #888)}.sg-drag-line{stroke:var(--color-primary, #3b82f6);stroke-width:2;stroke-dasharray:6 3;pointer-events:none}.sg-dep-popup-overlay{position:fixed;inset:0;background:#00000040;display:flex;align-items:center;justify-content:center;z-index:100}.sg-dep-popup{background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;padding:1.25rem;min-width:320px;box-shadow:0 8px 32px #0003}.sg-dep-popup-title{margin:0 0 1rem;font-size:.9rem;font-weight:600}.sg-dep-popup-fields{display:flex;gap:.75rem;margin-bottom:1rem}.sg-dep-popup-label{display:flex;flex-direction:column;gap:4px;font-size:.75rem;font-weight:500;color:var(--color-text-muted);flex:1}.sg-dep-popup-select,.sg-dep-popup-input{padding:.35rem .5rem;border:1px solid var(--color-border);border-radius:4px;font-size:.8rem;background:var(--color-bg);color:var(--color-text)}.sg-dep-popup-actions{display:flex;gap:.5rem;justify-content:flex-end}.sg-legend{display:flex;align-items:center;gap:1rem;padding:8px 12px;font-size:.75rem;color:var(--color-text-muted)}.sg-legend-item{display:flex;align-items:center;gap:4px}.sg-legend-swatch{display:inline-block;width:14px;height:10px;border-radius:2px}.sg-legend-swatch--normal{background:var(--color-primary, #3b82f6)}.sg-legend-swatch--critical{background:#ef4444}.sg-legend-swatch--summary{background:#64748b}.sg-legend-swatch--milestone{background:#f59e0b;clip-path:polygon(50% 0%,100% 50%,50% 100%,0% 50%)}.sg-legend-swatch--scope{background:#7c3aed}.sg-legend-hint{margin-left:auto;font-style:italic;opacity:.7}.sg-toolbar{display:flex;align-items:center;flex-wrap:nowrap;gap:.5rem;padding:6px 10px;border-bottom:1px solid var(--color-border);background:var(--color-surface);white-space:nowrap}.sg-filter-bar{display:flex;align-items:center;gap:6px;padding:6px 10px;border-bottom:1px solid var(--color-border);background:var(--color-bg);flex-shrink:0}.sg-whatif-label{margin-left:auto;display:flex;align-items:center;gap:4px;font-size:.675rem;color:var(--color-text);white-space:nowrap}.sg-date-toggle{display:inline-flex;flex-shrink:0;border:1px solid var(--color-border);border-radius:var(--radius)}.sg-date-toggle__btn{padding:2px 8px;font-size:.65rem;line-height:1.2;white-space:nowrap;border:none;background:transparent;color:var(--color-text-muted);cursor:pointer;transition:background .15s,color .15s}.sg-date-toggle__btn:not(:last-child){border-right:1px solid var(--color-border)}.sg-date-toggle__btn--active{background:var(--color-text, #1e293b);color:#fff}.sg-date-toggle__btn:hover:not(.sg-date-toggle__btn--active){background:#1e293b0f}.sg-whatif-date{padding:1px 4px;font-size:.675rem;line-height:1.2;height:22px;width:auto;border:1px solid var(--color-border);border-radius:var(--radius);background:transparent;color:var(--color-text)}.sg-whatif-date::-webkit-calendar-picker-indicator{margin:0;padding:0;width:12px;height:12px;cursor:pointer}.sg-toolbar-info{margin-left:8px;font-size:.75rem;color:var(--color-text-muted)}.sg-toolbar-sep{width:1px;height:20px;background:var(--color-border);margin:0 4px}.sg-zoom-group{display:flex;align-items:center;gap:2px}.sg-zoom-group .btn-xs{min-width:28px;text-align:center}.btn-xs--active{background:var(--color-primary, #3b82f6);color:#fff;border-color:var(--color-primary, #3b82f6)}.sg-minimap{position:absolute;bottom:8px;right:8px;z-index:20;border-radius:6px;overflow:hidden;box-shadow:0 2px 10px #00000026;border:1px solid var(--color-border, #e2e8f0);pointer-events:auto;background:#fff}.sg-minimap-canvas{display:block;cursor:crosshair;border-radius:5px}.sg-row--group{background:#64748b0f}.sg-row--group:hover{background:#64748b1f}.sg-td--group-name{position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 8px;line-height:32px}.sg-td--group-name svg{vertical-align:middle;margin-right:4px}.sg-td--group-name strong{font-size:.8rem;color:var(--color-text)}.sg-group-count{font-size:.7rem;color:var(--color-text-muted);font-weight:400;margin-left:4px}.sg-group-code{font-size:.7rem;color:var(--color-text-muted);font-weight:400;margin-left:6px}.sg-action-tray{position:absolute;right:0;top:0;height:100%;display:flex;align-items:center;gap:2px;padding:0 4px 0 16px;background:linear-gradient(to right,transparent 0%,#fff 30%);opacity:0;pointer-events:none;transition:opacity .15s}.sg-row:hover .sg-action-tray{opacity:1;pointer-events:auto}.sg-row--group:hover .sg-action-tray{background:linear-gradient(to right,transparent 0%,#f4f5f7 30%)}.sg-inline-btn{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;border:1px solid var(--color-border, #e2e8f0);border-radius:4px;background:#fff;cursor:pointer;vertical-align:middle;flex-shrink:0}.sg-inline-btn--add{color:var(--color-primary, #2563eb)}.sg-inline-btn--add:hover{background:var(--color-primary, #2563eb);color:#fff}.sg-inline-btn--milestone{color:#f59e0b}.sg-inline-btn--milestone:hover{background:#f59e0b;color:#fff}.sg-inline-btn--delete{color:#ef4444}.sg-inline-btn--delete:hover{background:#ef4444;color:#fff}.sg-group-dur{font-size:.75rem;color:var(--color-text-muted);font-weight:500}.sg-act-code{font-weight:600;color:var(--color-primary, #3b82f6);font-size:.75rem;margin-right:4px}.sg-bar--summary{fill:#64748b;opacity:.5}.sg-bar--member-highlight{fill:#7b32a8;opacity:.8;transition:fill .15s,opacity .15s}.sg-bar--summary-cap{fill:#475569;opacity:.8}.sg-bar--placeholder{fill:#64748b14;stroke:#94a3b8;stroke-width:1.5}.sg-row-bg--group{fill:#64748b0f}.sg-wbs-picker{min-width:360px;max-width:440px}.sg-wbs-picker-search{display:flex;align-items:center;gap:8px;padding:.4rem .6rem;border:1px solid var(--color-border);border-radius:4px;margin-bottom:.75rem;background:var(--color-bg);color:var(--color-text-muted)}.sg-wbs-picker-search input[type=text]{flex:1;border:none;outline:none;background:transparent;font-size:.8rem;color:var(--color-text);padding:0}.sg-wbs-picker-list{max-height:280px;overflow-y:auto;display:flex;flex-direction:column;gap:2px;margin-bottom:.75rem}.sg-wbs-picker-item{display:flex;gap:8px;align-items:center;padding:.4rem .6rem;border:1px solid transparent;border-radius:4px;background:none;cursor:pointer;text-align:left;font-size:.8rem;color:var(--color-text);transition:background .12s}.sg-wbs-picker-item:hover{background:#2563eb14;border-color:var(--color-border)}.sg-wbs-picker-code{font-weight:600;font-size:.75rem;color:var(--color-primary);white-space:nowrap}.sg-wbs-picker-name{color:var(--color-text)}.sg-wbs-picker-empty{padding:1rem;text-align:center;color:var(--color-text-muted);font-size:.8rem}.sg-inline-btn--wbs{color:#7c3aed}.sg-inline-btn--wbs:hover{background:#7c3aed1f}.sg-row--ws-group{background:#0d94880f}.sg-row--ws-group:hover,.sg-row--ws-group-active{background:#0d94881f}.sg-row--ws-member-highlight{background:#0d948814}.sg-row-bg--ws-group{fill:#0d94880f}.sg-row-bg--ws-member-highlight{fill:#0d948814}.sg-bar--ws-group{fill:#0d9488;opacity:.5;transition:fill .15s,opacity .15s}.sg-bar--ws-group-cap{fill:#0f766e;opacity:.8;transition:fill .15s,opacity .15s}.sg-bar--ws-group-highlight{fill:#7b32a8;opacity:.8}.sg-bar--ws-group-cap-highlight{fill:#6b2a93;opacity:.9}.sg-bar--ws-group-placeholder{fill:#0d948814;stroke:#5eead4;stroke-width:1.5;stroke-dasharray:4 3}.sg-bar-label--ws-group{fill:#0f766e;font-size:9px;font-weight:600;text-anchor:start;pointer-events:none;-webkit-user-select:none;user-select:none}.sg-link-handle--ws-group{fill:#0d9488;stroke:#fff;stroke-width:1.5;opacity:0;cursor:crosshair;transition:opacity .15s}g:hover>.sg-link-handle--ws-group{opacity:.7}.sg-link-handle--ws-group:hover{opacity:1!important;r:6}.sg-drag-line--ws-group{stroke:#0d9488;stroke-width:2;stroke-dasharray:6 3;pointer-events:none}.sg-legend-swatch--ws-group{background:#0d9488}.sg-with-drawer{display:flex;height:calc(100vh - 48px);overflow:hidden}.sg-with-drawer>.schedule-gantt{flex:1;min-width:0}.sg-row--selected{background:#e0edff!important}.bi-panel{height:100%;display:flex;flex-direction:column;min-height:0}.bi-panel-collapsed{align-items:center;padding-top:6px;padding-left:8px}.bi-collapse-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;background:none;color:#94a3b8;border-radius:4px;cursor:pointer;flex-shrink:0;transition:color .15s,background .15s}.bi-collapse-btn:hover{color:#334155;background:#e2e8f0}.bi-toolbar{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem .5rem .35rem;border-bottom:1px solid var(--color-border);flex-shrink:0;gap:.5rem}.bi-toolbar-left{display:flex;align-items:center;gap:.5rem;min-width:0}.bi-node-count{font-size:.7rem;color:var(--color-text-muted);background:var(--color-bg);padding:.1rem .4rem;border-radius:8px;white-space:nowrap}.bi-tool-btn{display:inline-flex;align-items:center;gap:.3rem;padding:.25rem .5rem;border:none;background:transparent;color:var(--color-text-muted);font-size:.75rem;border-radius:4px;cursor:pointer;transition:all .15s;white-space:nowrap}.bi-tool-btn:hover{background:var(--color-bg);color:var(--color-text)}.bi-tool-btn-primary{color:var(--color-primary);font-weight:500}.bi-tool-btn-primary:hover{background:var(--color-primary);color:#fff}.bi-search-bar{display:flex;align-items:center;gap:6px;padding:6px 10px;border-bottom:1px solid var(--color-border);flex-shrink:0}.bi-search-icon{color:#94a3b8;flex-shrink:0}.bi-search-input{flex:1;border:none;outline:none;font-size:.8rem;background:transparent;color:var(--color-text);min-width:0}.bi-search-input::placeholder{color:#94a3b8}.bi-search-clear{border:none;background:none;color:#94a3b8;font-size:1rem;cursor:pointer;padding:0 2px;line-height:1}.bi-search-clear:hover{color:#334155}.bi-load-more{padding:6px 12px;font-size:.75rem;color:var(--color-primary);cursor:pointer;-webkit-user-select:none;user-select:none}.bi-load-more:hover{background:var(--color-bg-hover, rgba(0,0,0,.03));text-decoration:underline}.bi-tree{flex:1;overflow-y:auto;padding:.25rem 0}.bi-row{display:flex;align-items:center;padding:.3rem .5rem;cursor:pointer;gap:.25rem;-webkit-user-select:none;user-select:none;font-size:.82rem;min-height:30px;transition:background .1s}.bi-row:hover{background:var(--color-bg-hover, rgba(0,0,0,.03))}.bi-row-selected{background:var(--color-primary-light, #e8f0fe)!important;border-left:2px solid var(--color-primary)}.bi-indent-guide{display:inline-block;width:20px;flex-shrink:0;position:relative}.bi-indent-guide:before{content:"";position:absolute;left:9px;top:0;bottom:0;width:1px;background:var(--color-border)}.bi-toggle{width:16px;height:16px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-text-muted)}.bi-toggle-leaf{cursor:default}.bi-chevron{transition:transform .15s}.bi-chevron-expanded{transform:rotate(90deg)}.bi-code{font-family:var(--font-mono, monospace);font-size:.72rem;color:var(--color-primary);background:var(--color-primary-light, #e8f0fe);padding:.05rem .35rem;border-radius:3px;white-space:nowrap;flex-shrink:0;margin-right:.35rem}.bi-serial{font-family:var(--font-mono, monospace);font-size:.7rem;color:var(--color-text-muted, #64748b);background:#f1f5f9;padding:.05rem .3rem;border-radius:3px;white-space:nowrap;flex-shrink:0;margin-right:.35rem}.bi-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-text)}.bi-pbs-type{font-size:.7rem;color:var(--color-text-muted, #64748b);white-space:nowrap;flex-shrink:0;margin-left:.25rem}.bi-status-badge{font-size:.65rem;padding:.1rem .35rem;border-radius:3px;white-space:nowrap;font-weight:500;flex-shrink:0}.bi-status-badge--planned{background:#e3e8ef;color:#4a5568}.bi-status-badge--in_progress{background:#bee3f8;color:#2b6cb0}.bi-status-badge--built{background:#c6f6d5;color:#276749}.bi-status-badge--inspected{background:#fefcbf;color:#975a16}.bi-status-badge--accepted{background:#c6f6d5;color:#22543d}.bi-status-badge--rejected{background:#fed7d7;color:#9b2c2c}.bi-status-badge--rework{background:#feebc8;color:#c05621}.bi-status-badge--clickable{cursor:pointer}.bi-status-badge--clickable:hover{filter:brightness(.92)}.bi-status-popover{position:fixed;z-index:1000;background:var(--color-bg, #fff);border:1px solid var(--color-border, #cbd5e0);border-radius:6px;box-shadow:0 4px 16px #00000026;padding:.6rem .75rem;min-width:220px;white-space:normal}.bi-status-popover__title{font-size:.75rem;font-weight:600;margin-bottom:.4rem;color:var(--color-text, #1a202c)}.bi-status-popover__select{width:100%;font-size:.8rem;padding:.3rem .4rem;border-radius:4px;border:1px solid var(--color-border, #cbd5e0);background:var(--color-bg, #fff);cursor:pointer}.bi-status-popover__activation{margin-top:.5rem}.bi-status-popover__label{display:block;font-size:.75rem;font-weight:500;margin-bottom:.2rem;color:var(--color-text, #1a202c)}.bi-status-popover__date{width:100%;font-size:.8rem;padding:.3rem .4rem;border-radius:4px;border:1px solid var(--color-border, #cbd5e0);box-sizing:border-box}.bi-status-popover__note{font-size:.72rem;color:var(--color-text-muted, #718096);margin:.35rem 0 0;line-height:1.35;max-width:220px;word-wrap:break-word}.bi-status-popover__actions{display:flex;justify-content:flex-end;gap:.4rem;margin-top:.6rem}.bi-status-popover__btn{font-size:.75rem;padding:.3rem .7rem;border-radius:4px;cursor:pointer;border:1px solid var(--color-border, #cbd5e0);background:transparent}.bi-status-popover__btn--apply{background:var(--color-primary, #2563eb);color:#fff;border:none}.bi-status-popover__btn--apply:disabled{opacity:.5;cursor:not-allowed}.bi-row-action{opacity:0;padding:.15rem;border:none;background:transparent;color:var(--color-text-muted);cursor:pointer;border-radius:3px;flex-shrink:0;transition:opacity .15s,color .15s}.bi-row:hover .bi-row-action{opacity:1}.bi-row-action:hover{color:var(--color-danger, #e53e3e);background:#e53e3e14}.bi-loading{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:2rem;color:var(--color-text-muted);font-size:.85rem}.bi-empty{padding:2rem;text-align:center;color:var(--color-text-muted);font-size:.85rem}.bi-empty p{margin:0 0 .75rem}.bi-detail{padding:1.25rem;overflow-y:auto;height:100%}.bi-detail-header{margin-bottom:1.25rem}.bi-detail-code{font-family:var(--font-mono, monospace);font-size:.8rem;color:var(--color-text-muted);margin-bottom:.25rem}.bi-detail-name{font-size:1.1rem;font-weight:600;margin:0 0 .5rem}.bi-info-grid{display:grid;grid-template-columns:140px 1fr;gap:.5rem 1rem;font-size:.82rem;margin-bottom:1.25rem}.bi-info-label{color:var(--color-text-muted);font-weight:500}.bi-info-value{color:var(--color-text)}.bi-detail-section{margin-bottom:1.25rem}.bi-detail-section-title{font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--color-text-muted);margin-bottom:.5rem;padding-bottom:.25rem;border-bottom:1px solid var(--color-border)}.bi-inline-edit{display:flex;align-items:center;gap:.5rem}.bi-inline-edit input,.bi-inline-edit select,.bi-inline-edit textarea{font-size:.82rem;padding:.3rem .5rem;border:1px solid var(--color-border);border-radius:4px;flex:1}.bi-inline-edit textarea{min-height:60px;resize:vertical}.bi-save-btn{display:inline-flex;align-items:center;gap:.3rem;padding:.35rem .75rem;font-size:.78rem;border:none;background:var(--color-primary);color:#fff;border-radius:4px;cursor:pointer;transition:opacity .15s}.bi-save-btn:disabled{opacity:.5;cursor:not-allowed}.bi-save-btn:hover:not(:disabled){opacity:.9}.bi-dialog{background:var(--color-surface, #fff);border-radius:8px;box-shadow:0 8px 32px #0000002e;width:520px;max-width:95vw;max-height:90vh;display:flex;flex-direction:column}.bi-dialog--wide{width:600px}.bi-dialog--2col{width:780px;height:520px}.bi-dialog--2col>form{flex:1;display:flex;flex-direction:column;min-height:0}.bi-dialog--2col .bi-dialog-body{flex:1;min-height:0}.bi-edit-info{display:flex;gap:1.25rem;font-size:.75rem;color:var(--color-text-muted);padding-top:.5rem;border-top:1px solid var(--color-border)}.bi-dialog-header{display:flex;align-items:center;gap:.75rem;padding:1rem 1.25rem;border-bottom:1px solid var(--color-border)}.bi-dialog-header h3{margin:0;font-size:1rem;font-weight:600;flex:1}.bi-dialog-body{padding:1.25rem;overflow-y:auto;display:flex;flex-direction:column;gap:.75rem}.bi-dialog--2col .bi-dialog-body{display:grid;grid-template-columns:1fr 1fr;gap:1rem;align-items:start}.bi-dialog-col{display:flex;flex-direction:column;gap:.75rem}.bi-dialog-footer{display:flex;justify-content:flex-end;gap:.5rem;padding:.75rem 1.25rem;border-top:1px solid var(--color-border)}.bi-field{display:flex;flex-direction:column;gap:.25rem}.bi-field label{font-size:.78rem;font-weight:500;color:var(--color-text-muted)}.bi-field input,.bi-field select,.bi-field textarea{font-size:.85rem;padding:.4rem .6rem;border:1px solid var(--color-border);border-radius:4px}.bi-field-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.bi-ws-header{display:flex;align-items:center;justify-content:space-between}.bi-ws-list{max-height:320px;overflow-y:auto;border:1px solid var(--color-border);border-radius:4px;display:flex;flex-direction:column}.bi-ws-item{display:flex;align-items:center;gap:.5rem;padding:.4rem .6rem;cursor:pointer;border-bottom:1px solid #f1f5f9;transition:background .1s}.bi-ws-item:last-child{border-bottom:none}.bi-ws-item:hover{background:#f8fafc}.bi-ws-selected{background:#eff6ff}.bi-ws-created{opacity:.6;cursor:default}.bi-ws-info{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}.bi-ws-name{font-size:.82rem;font-weight:500;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bi-ws-meta{font-size:.7rem;color:var(--color-text-muted)}.bi-ws-status{font-weight:600;text-transform:uppercase;letter-spacing:.02em}.bi-ws-status--ready{color:#16a34a}.bi-ws-status--draft{color:#d97706}.bi-ws-item.bi-ws-draft{opacity:.6;border-left:3px solid #d97706}.bi-draft-warning{display:flex;align-items:flex-start;gap:6px;padding:.5rem .75rem;background:#fffbeb;border:1px solid #fbbf24;border-radius:6px;font-size:.8rem;color:#92400e;margin-bottom:.5rem}.bi-draft-warning svg{flex-shrink:0;margin-top:1px}.bi-ws-info-text{font-size:.8rem;color:var(--color-text-muted);margin:0 0 .4rem}.bi-ws-badge{display:inline-flex;align-items:center;gap:3px;font-size:.68rem;color:#16a34a;background:#f0fdf4;padding:2px 6px;border-radius:4px;white-space:nowrap}.bi-existing-section{background:#f8fafc;padding:.6rem .75rem;border-radius:6px;border:1px solid var(--color-border)}.bi-radio-group{display:flex;flex-direction:column;gap:.35rem;margin-top:.25rem}.bi-radio-label{display:flex;align-items:center;gap:.4rem;font-size:.82rem;cursor:pointer}.bi-status-badge{font-size:.68rem;color:var(--color-text-muted);background:#e2e8f0;padding:1px 5px;border-radius:3px}.bi-loading{font-size:.82rem;color:var(--color-text-muted);padding:1rem 0;text-align:center}.bi-empty{font-size:.82rem;color:var(--color-text-muted);padding:.75rem 0;text-align:center;font-style:italic}.bi-right-split{display:flex;flex-direction:column;height:100%;min-height:0}.bi-wbs-panel{flex-shrink:0;display:flex;flex-direction:column;border-bottom:none;overflow:hidden}.bi-filter-panels{flex-shrink:0;display:flex;flex-direction:row;overflow:hidden}.bi-filter-col{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden;border-right:1px solid var(--color-border, #e2e8f0)}.bi-filter-col:last-child{border-right:none}.bi-split-divider{flex-shrink:0;height:6px;cursor:row-resize;display:flex;align-items:center;justify-content:center;background:var(--color-border, #e2e8f0);transition:background .15s;-webkit-user-select:none;user-select:none}.bi-split-divider:hover,.bi-split-divider:active{background:var(--color-primary, #3b82f6)}.bi-split-divider-handle{width:32px;height:2px;border-radius:1px;background:#0003;transition:background .15s}.bi-split-divider:hover .bi-split-divider-handle,.bi-split-divider:active .bi-split-divider-handle{background:#ffffffb3}.bi-wbs-header{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);padding:.5rem .75rem;border-bottom:1px solid var(--color-border);flex-shrink:0}.bi-wbs-list{overflow-y:auto;flex:1}.bi-wbs-item{display:flex;align-items:center;gap:.4rem;padding:.35rem .75rem;font-size:.8rem;cursor:pointer;transition:background .1s;-webkit-user-select:none;user-select:none}.bi-wbs-item:hover{background:var(--color-bg-hover, rgba(0,0,0,.03))}.bi-wbs-item--active{background:var(--color-primary-light, #e8f0fe)!important;font-weight:500}.bi-wbs-code{font-family:var(--font-mono, monospace);font-size:.72rem;color:var(--color-primary);background:var(--color-primary-light, #e8f0fe);padding:.05rem .3rem;border-radius:3px;white-space:nowrap;flex-shrink:0}.bi-wbs-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-text)}.bi-activities-panel{flex:1;min-height:0;overflow:auto}.bi-move-panel{background:var(--color-surface, #fff);border-radius:10px;box-shadow:0 8px 32px #0000002e;width:680px;max-width:95vw;height:80vh;display:flex;flex-direction:column;min-height:0;padding:.75rem;gap:.5rem}.bi-move-title{font-size:.85rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.bi-move-actions{display:flex;align-items:center;gap:.4rem;flex-shrink:0}.bi-move-error{font-size:.75rem;color:#dc2626;white-space:nowrap}.bi-move-tree-row{cursor:pointer}.bi-move-tree-row:hover{background:var(--color-bg-hover, rgba(0,0,0,.03))!important}.bi-move-row--dim{opacity:.4;cursor:not-allowed!important}.bi-move-row--focused{outline:2px solid var(--color-primary, #2563eb);outline-offset:-2px;border-radius:3px}.bi-move-radio{flex-shrink:0;margin:0 2px 0 0}.bi-move-radio:disabled{cursor:not-allowed}.bi-move-current-tag{display:inline-block;font-size:.7rem;background:#e2e8f0;color:#475569;padding:1px 6px;border-radius:4px;margin-left:6px}.bi-import-dialog{width:1060px}.bi-file-input{font-size:.85rem;padding:.4rem}.bi-import-file-info{display:flex;align-items:center;justify-content:space-between;font-size:.8rem;color:var(--color-text-muted);padding:.35rem .5rem;background:#f8fafc;border-radius:4px}.bi-import-file-size{font-size:.75rem;color:#94a3b8}.bi-import-summary{display:flex;gap:1.5rem;padding:.5rem 0;border-bottom:1px solid var(--color-border);margin-bottom:.5rem}.bi-import-stat{display:flex;flex-direction:column;gap:2px}.bi-import-stat-label{font-size:.7rem;text-transform:uppercase;color:#94a3b8;font-weight:600}.bi-import-stat-value{font-size:.85rem;font-weight:500;display:flex;align-items:center;gap:4px}.bi-import-errors{color:var(--color-danger, #dc2626)}.bi-import-ok{color:#16a34a}.bi-import-tree{border:1px solid var(--color-border);border-radius:6px;overflow:hidden}.bi-import-tree-header{display:flex;align-items:center;font-size:.75rem;font-weight:600;padding:.4rem .75rem;background:#f1f5f9;border-bottom:1px solid var(--color-border);color:#64748b;text-transform:uppercase;letter-spacing:.03em}.bi-import-col-tree{flex:1;min-width:0}.bi-import-col-serial{width:100px;flex-shrink:0;text-align:left}.bi-import-col-start,.bi-import-col-end{width:90px;flex-shrink:0;text-align:left}.bi-import-col-errors{width:180px;flex-shrink:0;text-align:left}.bi-import-tree-body{max-height:380px;overflow-y:auto}.bi-import-row{display:flex;align-items:center;padding:4px 8px;font-size:.8rem;border-bottom:1px solid #f1f5f9;min-height:28px}.bi-import-row-tree{flex:1;min-width:0;display:flex;align-items:center;gap:6px}.bi-import-row-serial{width:100px;flex-shrink:0;font-size:.78rem;color:#64748b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bi-import-row-start,.bi-import-row-end{width:90px;flex-shrink:0;font-size:.75rem;color:#94a3b8;white-space:nowrap}.bi-import-row:hover{background:#f8fafc}.bi-import-row-error{background:#fef2f2}.bi-import-row-error:hover{background:#fee2e2}.bi-import-toggle{display:flex;align-items:center;justify-content:center;width:18px;height:18px;border:none;background:none;padding:0;cursor:pointer;color:#64748b;flex-shrink:0}.bi-import-toggle-placeholder{width:18px;flex-shrink:0}.bi-import-row-pbs{font-weight:600;color:#1e40af;white-space:nowrap}.bi-import-row-name{color:#334155;white-space:nowrap}.bi-import-row-custom-name{color:#64748b;font-style:italic;white-space:nowrap}.bi-import-row-lbs{font-size:.75rem;color:#7c3aed;white-space:nowrap}.bi-import-row-err-badge,.bi-import-row-errors,.bi-import-err-chip{display:none}.bi-import-row-errors-col{width:180px;flex-shrink:0;font-size:.72rem;color:#94a3b8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:default}.bi-import-row-errors-col.has-error{color:#dc2626;display:flex;align-items:center;gap:3px}.bi-import-badge{position:absolute;top:-4px;right:-6px;background:var(--color-danger, #dc2626);color:#fff;font-size:.65rem;font-weight:700;min-width:16px;height:16px;line-height:16px;text-align:center;border-radius:8px;padding:0 4px;pointer-events:none}.bi-import-empty{text-align:center;color:#94a3b8;padding:2rem 1rem;font-size:.85rem}.bi-import-pending-header{font-size:.78rem;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.03em;padding-bottom:.4rem;border-bottom:1px solid var(--color-border);margin-bottom:.4rem}.bi-import-pending-list{display:flex;flex-direction:column;gap:0}.bi-import-pending-item{display:flex;align-items:center;justify-content:space-between;padding:.6rem .5rem;border-bottom:1px solid #f1f5f9;gap:1rem}.bi-import-pending-item:last-child{border-bottom:none}.bi-import-pending-item:hover{background:#f8fafc}.bi-import-pending-info{display:flex;flex-direction:column;gap:2px;min-width:0}.bi-import-pending-name{font-size:.85rem;font-weight:500;color:#1e293b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bi-import-pending-meta{font-size:.75rem;color:#94a3b8}.bi-import-pending-actions{display:flex;gap:6px;flex-shrink:0}.bi-import-pending-actions .btn{display:flex;align-items:center;gap:4px}.btn-danger{background:var(--color-danger, #dc2626);color:#fff;border-color:var(--color-danger, #dc2626)}.btn-danger:hover{background:#b91c1c;border-color:#b91c1c}.bil-page{display:flex;flex-direction:column;height:100%;overflow:hidden}.bil-page-toolbar{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:1px solid #e2e8f0;flex-shrink:0;gap:12px}.bil-page-title{font-size:16px;font-weight:600;color:#1e293b;margin:0;white-space:nowrap}.bil-page-actions{display:flex;align-items:center;gap:8px}.bil-search-box{display:flex;align-items:center;gap:6px;padding:5px 10px;border:1px solid #e2e8f0;border-radius:var(--radius);background:#fff;color:#94a3b8}.bil-search-box input[type=text]{border:none;outline:none;font-size:13px;width:260px;padding:0;background:transparent;color:#1e293b;border-radius:0;box-shadow:none}.bil-search-box input::placeholder{color:#94a3b8}.bil-search-clear{display:flex;align-items:center;justify-content:center;border:none;background:none;color:#94a3b8;cursor:pointer;font-size:15px;padding:0;line-height:1}.bil-search-clear:hover{color:#334155}.bil-status-filter{padding:5px 8px;border:1px solid #e2e8f0;border-radius:var(--radius);font-size:13px;color:#1e293b;background:#fff}.bil-table-wrap{flex:1;overflow:auto}.bil-table{width:100%;border-collapse:collapse;font-size:13px}.bil-table thead th{position:sticky;top:0;background:#f8fafc;border-bottom:1px solid #e2e8f0;padding:7px 10px;text-align:left;font-size:11px;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.3px;z-index:2}.bil-th-expand{width:32px}.bil-th-actions{width:40px}.bil-tr{border-bottom:1px solid #f1f5f9}.bil-tr-clickable{cursor:pointer}.bil-tr-clickable:hover{background:#f8fafc}.bil-tr td{padding:6px 10px;vertical-align:middle}.bil-td-expand{width:32px;text-align:center}.bil-td-name{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bil-td-loc{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#64748b;font-size:12px}.bil-td-date{white-space:nowrap;font-size:12px;color:#64748b}.bil-td-actions{width:40px;text-align:center}.bil-expand-btn{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;background:none;color:#64748b;border-radius:4px;cursor:pointer}.bil-expand-btn:hover{background:#e2e8f0;color:#334155}.bil-menu-btn{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border:none;background:none;color:#94a3b8;border-radius:4px;cursor:pointer}.bil-menu-btn:hover{background:#e2e8f0;color:#334155}.bil-table-empty{text-align:center;padding:24px;color:#94a3b8;font-size:13px}.bil-table-error{color:#dc2626}.bil-context-menu{position:fixed;z-index:200;background:#fff;border:1px solid #e2e8f0;border-radius:6px;box-shadow:0 4px 16px #0000001f;padding:4px 0;min-width:140px}.bil-context-menu button{display:flex;align-items:center;gap:8px;width:100%;padding:7px 14px;border:none;background:none;font-size:13px;color:#334155;cursor:pointer;text-align:left}.bil-context-menu button:hover{background:#f1f5f9}.bil-context-danger{color:#dc2626!important}.bil-context-danger:hover{background:#fef2f2!important}.bi-page-wrapper{display:flex;flex-direction:row;height:calc(100vh - 100px);min-height:0;overflow:hidden}.bi-page-lbs{flex-shrink:0;overflow:hidden;display:flex;flex-direction:column;border-right:1px solid var(--color-border, #e2e8f0)}.bi-page-vdivider{width:5px;flex-shrink:0;cursor:col-resize;display:flex;align-items:center;justify-content:center;background:transparent;border-left:1px solid var(--color-border, #e2e8f0);position:relative;z-index:5;transition:background .15s}.bi-page-vdivider:hover,.bi-page-vdivider:active{background:#f1f5f9}.bi-page-vdivider-line{display:none}.bi-page-list{flex:1;min-width:0;overflow:hidden;display:flex;flex-direction:column}.lbs-viz-loading,.lbs-viz-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;height:100%;color:#94a3b8;font-size:.875rem}.lbs-viz-panel{height:100%;display:flex;flex-direction:column;overflow:auto}.lbs-viz-panel--full{overflow:hidden}.lbs-viz-header{display:flex;align-items:center;gap:8px;padding:1rem 1.25rem .5rem;font-size:.9rem;font-weight:600;color:#334155}.lbs-viz-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:1rem;padding:1rem 1.25rem}.lbs-viz-card{display:flex;flex-direction:column;align-items:center;gap:6px;padding:1.25rem .75rem 1rem;border:2px solid var(--color-border);border-radius:10px;background:#fff;cursor:pointer;transition:border-color .2s,box-shadow .2s,transform .15s}.lbs-viz-card:hover{border-color:var(--color-primary);box-shadow:0 4px 12px #2563eb1a;transform:translateY(-2px)}.lbs-viz-card-icon{position:relative;color:var(--color-primary)}.lbs-viz-card-badge{position:absolute;top:-6px;right:-12px;font-size:12px}.lbs-viz-card-code{font-size:.8rem;font-weight:600;color:#475569}.lbs-viz-card-name{font-size:.78rem;color:#64748b;text-align:center;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lbs-viz-checking{font-size:.78rem;color:#94a3b8;padding:.5rem 0}.lbs-viz-breadcrumb-bar{display:flex;align-items:center;gap:2px;padding:6px 12px;border-bottom:1px solid var(--color-border);flex-shrink:0;flex-wrap:wrap;background:#f8fafc;min-height:32px}.lbs-viz-breadcrumb-item{display:inline-flex;align-items:center;gap:2px}.lbs-viz-breadcrumb-link{display:inline-flex;align-items:center;padding:2px 6px;border:none;border-radius:4px;background:none;font-size:12px;font-weight:500;color:#2563eb;cursor:pointer;white-space:nowrap;transition:background .12s}.lbs-viz-breadcrumb-link:hover{background:#eff6ff;text-decoration:underline}.lbs-viz-breadcrumb-sep{color:#cbd5e1;flex-shrink:0}.lbs-viz-breadcrumb-current{font-size:12px;font-weight:600;color:#334155;padding:2px 6px;white-space:nowrap}.lbs-network-chart{flex:1;overflow:auto;min-height:0}.lbs-network-svg{display:block}.lbs-network-edge{fill:none;stroke:#cbd5e1;stroke-width:1.5}.lbs-network-node{cursor:pointer}.lbs-network-node:hover .lbs-network-box{stroke:var(--color-primary);stroke-width:2}.lbs-network-node.selected .lbs-network-box{stroke:var(--color-primary);stroke-width:2.5;fill:#eff6ff}.lbs-network-node.has-image .lbs-network-box{stroke-dasharray:none}.lbs-network-box{fill:#fff;stroke:#cbd5e1;stroke-width:1.5;transition:stroke .15s,fill .15s}.lbs-network-code{font-size:12px;font-weight:600;fill:#334155}.lbs-network-name{font-size:11px;fill:#64748b}.lbs-network-tooltip{background:#1e293b;color:#fff;font-size:12px;padding:4px 10px;border-radius:4px;white-space:nowrap;pointer-events:none;z-index:1000}.bi-form-panel{border-top:1px solid var(--color-border, #e2e8f0);display:flex;flex-direction:column;min-height:0;max-height:50%;overflow:auto}.bi-form-panel-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;border-bottom:1px solid var(--color-border, #e2e8f0);background:#f8fafc;flex-shrink:0}.bi-form-panel-title{font-size:.8rem;font-weight:600;color:var(--color-text, #1e293b)}.bi-form-panel-close{background:none;border:none;cursor:pointer;color:#64748b;padding:2px;display:flex;align-items:center}.bi-form-panel-close:hover{color:var(--color-text, #1e293b)}.bi-form-panel-add{display:flex;align-items:center;gap:4px;background:var(--color-primary, #2563eb);color:#fff;border:none;border-radius:4px;padding:4px 10px;font-size:.75rem;cursor:pointer;font-weight:500}.bi-form-panel-add:hover{opacity:.9}.bi-form-panel-body{padding:.75rem;overflow:auto}.bi-form-panel-table-wrap{overflow:auto}.bi-form-table{width:100%;font-size:.78rem;border-collapse:collapse}.bi-form-table th{background:#f1f5f9;padding:.4rem .6rem;text-align:left;font-weight:600;color:#475569;border-bottom:1px solid var(--color-border, #e2e8f0);white-space:nowrap}.bi-form-table td{padding:.35rem .6rem;border-bottom:1px solid #f1f5f9;color:var(--color-text, #1e293b)}.bi-form-table tr:hover td{background:#f8fafc}.bi-form-pagination{display:flex;align-items:center;gap:.5rem;justify-content:center;padding:.5rem;font-size:.75rem;color:#64748b}.bit-page{display:flex;flex-direction:column;height:100%;min-height:0;position:relative}.bit-map-overlay{position:fixed;inset:0;background:#0000002e;z-index:99;opacity:0;pointer-events:none;transition:opacity .25s ease}.bit-map-overlay--open{opacity:1;pointer-events:auto}.bit-map-slideout{position:fixed;top:0;left:0;bottom:0;width:400px;background:#fff;border-right:1px solid var(--color-border);box-shadow:4px 0 20px #0000001f;z-index:100;transform:translate(-100%);transition:transform .28s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;overflow:hidden}.bit-map-slideout--open{transform:translate(0)}.bit-map-slideout-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border-bottom:1px solid var(--color-border);flex-shrink:0}.bit-map-slideout-header h3{margin:0;font-size:.9rem;font-weight:600;color:var(--color-text)}.bit-map-slideout-body{flex:1;min-height:0;overflow:auto}.bit-map-close-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:none;color:#94a3b8;border-radius:4px;cursor:pointer;font-size:1.1rem}.bit-map-close-btn:hover{background:#f1f5f9;color:#334155}.bit-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;border-bottom:1px solid var(--color-border);flex-shrink:0}.bit-header-left{display:flex;align-items:center;gap:.5rem}.bit-title{margin:0;font-size:1.05rem;font-weight:600;color:var(--color-text)}.bit-map-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:1px solid var(--color-border);background:#fff;color:#64748b;border-radius:var(--radius);cursor:pointer;transition:all .15s}.bit-map-btn:hover,.bit-map-btn--active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.bit-header-actions{display:flex;align-items:center;gap:.5rem}.bit-import-badge{position:absolute;top:-4px;right:-4px;background:#ef4444;color:#fff;font-size:.6rem;min-width:16px;height:16px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-weight:600}.bit-columns{flex:1;min-height:0;display:flex;border-top:1px solid var(--color-border)}.bit-col{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;border-right:1px solid var(--color-border);background:#fff;overflow:hidden}.bit-col:last-child{border-right:none}.bit-col-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem .6rem .35rem;flex-shrink:0}.bit-col-title{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#64748b}.bit-col-count{font-size:.65rem;color:#94a3b8;background:#f1f5f9;padding:.1rem .4rem;border-radius:8px}.bit-col-filter{padding:0 .5rem .4rem;flex-shrink:0}.bit-col-filter-box{display:flex;align-items:center;gap:4px;border:1px solid var(--color-border);border-radius:var(--radius);padding:0 .4rem;background:#fff}.bit-col-filter-box svg{color:#cbd5e1;flex-shrink:0}.bit-col-filter-box input[type=text]{flex:1;min-width:0;font-size:.78rem}.bit-col-filter-box select{border:none;padding:.3rem 0;background:transparent;font-size:.78rem;color:var(--color-text);flex:1;min-width:0}.bit-col-filter-box select:focus{outline:none;box-shadow:none}.bit-col-list{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden}.bit-item{display:flex;align-items:center;gap:.4rem;padding:.45rem .6rem;cursor:pointer;border-bottom:1px solid #f8fafc;transition:background .1s;min-height:0}.bit-item:hover{background:#f8fafc}.bit-item--selected{background:#eff6ff;border-left:3px solid var(--color-primary);padding-left:calc(.6rem - 3px)}.bit-item--selected:hover{background:#dbeafe}.bit-item-body{flex:1;min-width:0}.bit-item-name{font-size:.82rem;font-weight:500;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bit-item-sub{font-size:.72rem;color:#94a3b8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}.bit-item-code{font-family:SF Mono,Cascadia Code,monospace;font-size:.7rem;color:#64748b}.bit-item-chevron{flex-shrink:0;color:#cbd5e1}.bit-item--selected .bit-item-chevron{color:var(--color-primary)}.bit-act-progress{display:flex;align-items:center;gap:6px;margin-top:2px}.bit-act-progress-track{width:40px;height:4px;background:#e2e8f0;border-radius:2px;overflow:hidden}.bit-act-progress-fill{height:100%;border-radius:2px;transition:width .2s ease}.bit-act-progress-fill--high{background:#10b981}.bit-act-progress-fill--mid{background:#f59e0b}.bit-act-progress-fill--low{background:var(--color-primary)}.bit-act-progress-pct{font-size:.7rem;color:#64748b;font-variant-numeric:tabular-nums}.bit-act-status{font-size:.65rem;padding:.05rem .35rem;border-radius:8px;font-weight:500;white-space:nowrap;background:#f1f5f9;color:#64748b}.bit-col-empty{display:flex;align-items:center;justify-content:center;flex:1;color:#94a3b8;font-size:.82rem;text-align:center;padding:1rem}.bit-col-placeholder{display:flex;align-items:center;justify-content:center;flex:1;color:#cbd5e1;font-size:.8rem;text-align:center;padding:1rem}.bil-layout{display:flex;height:100%;overflow:hidden}.bil-sidebar{width:200px;flex-shrink:0;background:#f8fafc;border-right:1px solid #e2e8f0;display:flex;flex-direction:column;overflow-y:auto;transition:width .2s ease;position:relative}.bil-sidebar-collapsed{width:48px;overflow:visible}.bil-sidebar-header{padding:10px 10px 10px 8px;border-bottom:1px solid #e2e8f0;display:flex;align-items:center;gap:4px;flex-shrink:0;min-height:38px}.bil-collapse-btn{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;background:none;color:#94a3b8;border-radius:4px;cursor:pointer;flex-shrink:0;transition:color .15s,background .15s}.bil-collapse-btn:hover{color:#334155;background:#e2e8f0}.bil-breadcrumb{display:flex;align-items:center;gap:4px;min-width:0;font-size:12px}.bil-breadcrumb-link{color:#3b82f6;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:1;min-width:0}.bil-breadcrumb-link:hover{text-decoration:underline}.bil-breadcrumb-sep{color:#94a3b8;flex-shrink:0}.bil-breadcrumb-current{color:#1e293b;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.bil-status-row{display:flex;align-items:center;gap:6px;padding:8px 10px;border-bottom:1px solid #e2e8f0}.bil-status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.bil-status-picker{position:relative;flex:1;min-width:0}.bil-status-label{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:12px;font-size:11px;font-weight:600;cursor:pointer;-webkit-user-select:none;user-select:none;transition:filter .15s;border:1px solid transparent}.bil-status-label:hover{filter:brightness(.95)}.bil-status-label--planned{background:#f1f5f9;color:#64748b;border-color:#e2e8f0}.bil-status-label--in_progress{background:#dbeafe;color:#1d4ed8;border-color:#bfdbfe}.bil-status-label--built{background:#dcfce7;color:#15803d;border-color:#bbf7d0}.bil-status-label--inspected{background:#fef3c7;color:#b45309;border-color:#fde68a}.bil-status-label--accepted{background:#d1fae5;color:#047857;border-color:#a7f3d0}.bil-status-label--rejected{background:#fee2e2;color:#dc2626;border-color:#fecaca}.bil-status-label--rework{background:#ffedd5;color:#c2410c;border-color:#fed7aa}.bil-status-popover{position:absolute;top:calc(100% + 6px);left:0;z-index:100;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 6px 20px #0000001f;min-width:150px;overflow:hidden}.bil-status-popover-title{padding:8px 10px 4px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#94a3b8}.bil-status-option{display:flex;align-items:center;gap:6px;width:100%;padding:6px 10px;border:none;background:none;font-size:12px;color:#334155;cursor:pointer;text-align:left}.bil-status-option:hover{background:#f1f5f9}.bil-status-option--current{background:#eff6ff;font-weight:600}.bil-hp-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid #fecaca;border-radius:5px;background:#fef2f2;color:#dc2626;cursor:pointer;flex-shrink:0;transition:background .15s,border-color .15s}.bil-hp-btn:hover{background:#fee2e2;border-color:#f87171}.bil-modal-overlay{position:fixed;inset:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:1000}.bil-modal{background:#fff;border-radius:8px;padding:20px 24px;width:400px;max-width:90vw;box-shadow:0 8px 32px #0000002e}.bil-modal h3{margin:0 0 4px;font-size:15px;color:#1e293b}.bil-modal-desc{font-size:12px;color:#64748b;margin:0 0 14px;line-height:1.4}.bil-modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}.bil-nav{padding:8px 0;display:flex;flex-direction:column;gap:1px}.bil-nav-item{display:flex;align-items:center;gap:8px;padding:7px 14px;font-size:13px;color:#475569;text-decoration:none;transition:background .1s,color .1s;border-left:3px solid transparent}.bil-nav-item:hover{background:#f1f5f9;color:#1e293b}.bil-nav-item.active{background:#eff6ff;color:#2563eb;border-left-color:#2563eb;font-weight:500}.bil-nav-icon-only{display:flex;align-items:center;justify-content:center;padding:8px;color:#64748b;text-decoration:none;border-radius:0 6px 6px 0;margin:1px 6px 1px 0;transition:background .12s,color .12s;border-left:3px solid transparent}.bil-nav-icon-only svg{opacity:.65}.bil-nav-icon-only:hover{background:#f1f5f9;color:#1e293b}.bil-nav-icon-only:hover svg{opacity:.9}.bil-nav-icon-only.active{background:#eff6ff;color:#2563eb;border-left-color:#2563eb}.bil-nav-icon-only.active svg{opacity:1}.bil-main{flex:1;overflow-y:auto;padding:16px 20px;min-width:0}.bil-main:has(.page--no-pad),.bil-main:has(.bi-schedule-page){padding:0;overflow:hidden}.bil-main>.page--no-pad{height:100%}.bil-main .tree-split{height:100%}.bid-dashboard{padding:20px;max-width:100%;overflow-y:auto}.bid-kpi-row{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-bottom:16px}.bid-kpi-card{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:14px 12px;text-align:center;position:relative}.bid-kpi-card--danger{border-color:#fecaca;background:#fef2f2}.bid-kpi-icon{color:#94a3b8;margin-bottom:4px}.bid-kpi-icon--blue{color:#3b82f6}.bid-kpi-icon--green{color:#22c55e}.bid-kpi-icon--red{color:#dc2626}.bid-kpi-icon--orange{color:#f59e0b}.bid-kpi-value{font-size:24px;font-weight:700;color:#1e293b;line-height:1.2}.bid-kpi-card--danger .bid-kpi-value{color:#dc2626}.bid-kpi-label{font-size:11px;color:#64748b;margin-top:2px;text-transform:uppercase;letter-spacing:.4px}.bid-alerts{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.bid-alert{display:flex;align-items:center;gap:6px;padding:6px 12px;border-radius:6px;font-size:12px;font-weight:500}.bid-alert--danger{background:#fef2f2;color:#dc2626;border:1px solid #fecaca}.bid-alert--warning{background:#fffbeb;color:#b45309;border:1px solid #fde68a}.bid-alert--info{background:#eff6ff;color:#2563eb;border:1px solid #bfdbfe}.bid-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.bid-card{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:16px}.bid-card--wide{grid-column:1 / -1}.bid-card-title{font-size:13px;font-weight:600;color:#334155;margin:0 0 12px;text-transform:uppercase;letter-spacing:.3px}.bid-status-bars{display:flex;flex-direction:column;gap:8px}.bid-status-row{display:grid;grid-template-columns:90px 1fr 32px;align-items:center;gap:8px}.bid-status-label{font-size:12px;color:#475569}.bid-status-bar-track{height:8px;background:#f1f5f9;border-radius:4px;overflow:hidden}.bid-status-bar-fill{height:100%;border-radius:4px;transition:width .3s ease}.bid-status-count{font-size:12px;font-weight:600;color:#1e293b;text-align:right}.bid-schedule-info{display:flex;flex-direction:column;gap:8px}.bid-schedule-row{display:flex;justify-content:space-between;align-items:center}.bid-schedule-label{font-size:12px;color:#64748b}.bid-schedule-value{font-size:13px;font-weight:500;color:#1e293b}.bid-schedule-divider{height:1px;background:#e2e8f0;margin:4px 0}.bid-progress-combo{display:flex;align-items:center;gap:8px;flex:1;max-width:200px}.bid-progress-bar-track{flex:1;height:8px;background:#f1f5f9;border-radius:4px;overflow:hidden}.bid-progress-bar-fill{height:100%;background:#3b82f6;border-radius:4px;transition:width .3s ease}.bid-progress-pct{font-size:13px;font-weight:600;color:#1e293b;min-width:36px;text-align:right}.bid-weeks{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.bid-week{border:1px solid #e2e8f0;border-radius:6px;overflow:hidden}.bid-week--current{border-color:#3b82f6}.bid-week-header{display:flex;justify-content:space-between;align-items:center;padding:8px 10px;background:#f8fafc;border-bottom:1px solid #e2e8f0}.bid-week--current .bid-week-header{background:#eff6ff;border-bottom-color:#bfdbfe}.bid-week-label{font-size:12px;font-weight:600;color:#334155}.bid-week-count{font-size:11px;font-weight:600;color:#64748b;background:#e2e8f0;padding:1px 6px;border-radius:8px}.bid-week--current .bid-week-count{background:#bfdbfe;color:#1d4ed8}.bid-week-items{padding:6px;max-height:220px;overflow-y:auto}.bid-week-empty{padding:14px;text-align:center;font-size:12px;color:#94a3b8}.bid-week-item{display:flex;align-items:center;gap:6px;padding:4px 6px;border-radius:4px;font-size:12px}.bid-week-item:hover{background:#f1f5f9}.bid-week-item-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.bid-week-item-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#334155}.bid-week-item-pct{font-size:11px;color:#64748b;flex-shrink:0}.bid-week-more{padding:4px 6px;font-size:11px;color:#3b82f6;text-align:center}.bid-children-table{display:flex;flex-direction:column}.bid-children-header{display:grid;grid-template-columns:100px 1fr 120px 160px;gap:8px;padding:6px 8px;font-size:11px;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.3px;border-bottom:1px solid #e2e8f0}.bid-children-row{display:grid;grid-template-columns:100px 1fr 120px 160px;gap:8px;padding:7px 8px;font-size:12px;color:#334155;text-decoration:none;border-bottom:1px solid #f1f5f9;transition:background .1s;align-items:center}.bid-children-row:hover{background:#f8fafc}.bid-children-code{font-family:var(--font-mono, monospace);font-size:11px;color:#2563eb}.bid-children-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bid-children-status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:5px}.bid-children-dates{font-size:11px;color:#64748b}@media(max-width:900px){.bid-kpi-row{grid-template-columns:repeat(3,1fr)}.bid-grid,.bid-weeks{grid-template-columns:1fr}}.bnt-tree{height:100%;display:flex;flex-direction:column;font-size:.8125rem;background:#fafbfc;overflow:hidden}.bnt-pane{display:flex;flex-direction:column;overflow:hidden;flex-shrink:0}.bnt-pane--bottom{flex:1;flex-shrink:1}.bnt-pane-scroll{flex:1;overflow-y:auto;min-height:0}.bnt-hdivider{height:5px;flex-shrink:0;cursor:row-resize;display:flex;align-items:center;justify-content:center;background:transparent;border-top:1px solid #e2e8f0;position:relative;z-index:5;transition:background .15s}.bnt-hdivider:hover,.bnt-hdivider:active{background:#f1f5f9}.bnt-hdivider-line{display:none}.bnt-section{display:flex;align-items:center;gap:6px;padding:10px 12px 6px}.bnt-section-label{font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#64748b}.bnt-section-count{font-size:.625rem;color:#94a3b8;background:#e2e8f0;border-radius:8px;padding:0 5px;line-height:16px;font-weight:500}.bnt-node{display:flex;align-items:center;gap:4px;padding:5px 8px;cursor:pointer;border-radius:5px;margin:1px 6px;transition:background .12s,color .12s;color:#334155}.bnt-node:hover{background:#eef2f7}.bnt-node--selected{background:#dbeafe;color:#1d4ed8;font-weight:500}.bnt-node--selected:hover{background:#c7d9f5}.bnt-chevron{display:flex;align-items:center;justify-content:center;width:18px;height:18px;flex-shrink:0;border:none;background:none;padding:0;cursor:pointer;color:#94a3b8;border-radius:3px;transition:color .1s,background .1s}.bnt-chevron:hover{background:#e2e8f0;color:#475569}.bnt-chevron--leaf{cursor:default}.bnt-chevron--leaf:hover{background:none;color:#94a3b8}.bnt-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;line-height:1.4}.bnt-loading{padding:6px 12px;font-size:.75rem;color:#94a3b8;font-style:italic}.bnt-scope{padding-left:14px!important;padding-right:8px!important;justify-content:space-between;gap:8px}.bnt-scope .bnt-label{flex:1;min-width:0}.bnt-scope-wbs{color:#64748b;font-weight:400}.bnt-scope-code{display:inline-block;font-size:.6875rem;font-family:SF Mono,Fira Code,monospace;color:var(--color-primary);background:#eff6ff;padding:0 5px;border-radius:3px;margin-right:6px;font-weight:500}.bnt-scope-codes{color:#94a3b8;font-size:.6875rem;font-weight:400;margin-left:4px}.bnt-scope-count{flex-shrink:0;font-size:.6875rem;font-weight:500;color:#64748b;background:#e2e8f0;border-radius:9px;padding:0 7px;min-width:20px;text-align:center;line-height:18px}.bnt-scope-status{flex-shrink:0;font-size:.625rem;font-weight:600;color:#fff;border-radius:9px;padding:0 7px;line-height:18px;white-space:nowrap}.bnt-scope-status--clickable{cursor:pointer}.bnt-scope-status--clickable:hover{opacity:.85}.bnt-node--selected .bnt-scope-status{opacity:.9}.bnt-node--selected .bnt-scope-count{background:#bfdbfe;color:#1d4ed8}.bnt-empty{padding:12px 14px;font-size:.75rem;color:#94a3b8;font-style:italic}padding: 8px 12px; font-size: .75rem; color: #94a3b8; font-style: italic; } .bdt-page{padding:20px;max-width:100%;overflow-y:auto;height:100%}.bdt-card{background:#fff;border:1px solid var(--color-border);border-radius:8px;margin-bottom:16px}.bdt-card-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--color-border)}.bdt-card-title{font-size:.875rem;font-weight:600;color:var(--color-text);margin:0}.bdt-card-actions{display:flex;gap:6px}.bdt-card-body{padding:16px}.bdt-detail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.bdt-field{display:flex;flex-direction:column;gap:4px}.bdt-field--wide{grid-column:span 3}.bdt-field-label{font-size:11px;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.03em}.bdt-field-value{font-size:.875rem;color:var(--color-text);min-height:20px}.bdt-field-value--muted{color:#94a3b8;font-style:italic}.bdt-edit-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.bdt-edit-group{display:flex;flex-direction:column;gap:4px}.bdt-edit-group--wide{grid-column:span 3}.bdt-edit-group label{font-size:11px;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.03em}.bdt-edit-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:12px;padding-top:12px;border-top:1px solid var(--color-border)}.bdt-status-badge{display:inline-flex;align-items:center;gap:5px;font-size:.8rem;font-weight:500}.bdt-status-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.bdt-info-row{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid #f1f5f9}.bdt-info-row:last-child{margin-bottom:0;padding-bottom:0;border-bottom:none}@media(max-width:900px){.bdt-detail-grid,.bdt-edit-grid{grid-template-columns:repeat(2,1fr)}.bdt-field--wide,.bdt-edit-group--wide{grid-column:span 2}.bdt-info-row{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.bdt-detail-grid,.bdt-edit-grid{grid-template-columns:1fr}.bdt-field--wide,.bdt-edit-group--wide{grid-column:span 1}.bdt-info-row{grid-template-columns:1fr}}.lbs-configure-page{display:flex;flex-direction:column;height:100vh;background:#f8fafc}.lbs-configure-page-header{display:flex;align-items:center;justify-content:space-between;padding:10px 20px;background:#fff;border-bottom:1px solid #e2e8f0;flex-shrink:0}.lbs-configure-page-title{display:flex;align-items:center;gap:10px;color:#1e293b}.lbs-configure-page-title h1{margin:0;font-size:17px;font-weight:600}.lbs-configure-page-body{flex:1;overflow:hidden;padding:0;display:flex;flex-direction:column}.project-settings{padding:24px 32px;max-width:720px}.project-settings h2{font-size:1.25rem;font-weight:600;color:var(--color-text);margin:0 0 24px}.setting-card{background:#fff;border:1px solid var(--color-border);border-radius:var(--radius);padding:20px;margin-bottom:16px}.setting-card h3{font-size:.95rem;font-weight:600;color:var(--color-text);margin:0 0 4px}.setting-card p{font-size:.8125rem;color:#64748b;margin:0 0 16px;line-height:1.4}.setting-toggle{display:flex;align-items:center;gap:10px}.setting-toggle label{font-size:.8125rem;color:var(--color-text)}.toggle-switch{position:relative;width:40px;height:22px;flex-shrink:0}.toggle-switch input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer;z-index:1}.toggle-slider{position:absolute;cursor:pointer;inset:0;background:#cbd5e1;border-radius:22px;transition:background .2s ease}.toggle-slider:before{content:"";position:absolute;width:16px;height:16px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:transform .2s ease}.toggle-switch input:checked+.toggle-slider{background:var(--color-primary)}.toggle-switch input:checked+.toggle-slider:before{transform:translate(18px)}.settings-status{font-size:.8125rem;margin-top:8px}.settings-status.success{color:#16a34a}.settings-status.error{color:#dc2626}.settings-loading{font-size:.875rem;color:#64748b;padding:24px 0}.setting-labels-grid{display:grid;grid-template-columns:repeat(4,1fr);max-width:800px;gap:16px}.setting-labels-grid label{display:flex;flex-direction:column;font-size:.8125rem;font-weight:500;color:var(--color-text);gap:4px}.setting-labels-actions{display:flex;gap:8px;margin-top:16px}.setting-labels-actions .btn{padding:.4rem 1.25rem;border-radius:var(--radius);font-size:.8125rem;font-weight:500;cursor:pointer;border:1px solid transparent}.setting-labels-actions .btn:disabled{opacity:.5;cursor:not-allowed}.setting-labels-actions .btn-primary{background:var(--color-primary);color:#fff}.setting-labels-actions .btn-primary:hover:not(:disabled){background:#1d4ed8}.setting-labels-actions .btn-secondary{background:#fff;color:var(--color-text);border-color:var(--color-border)}.setting-labels-actions .btn-secondary:hover:not(:disabled){background:#f8fafc}.pattern-section{margin-bottom:20px}.pattern-label{display:block;font-size:.8125rem;font-weight:600;color:var(--color-text);margin-bottom:6px}.pattern-input-row{display:flex;align-items:center;gap:16px}.pattern-input-row>input[type=text]{flex:1}.pattern-pad-label{display:flex;align-items:center;gap:6px;font-size:.8125rem;font-weight:500;color:var(--color-text);white-space:nowrap}.pattern-pad-label input[type=number]{width:60px}.pattern-tokens{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.token-chip{display:inline-block;padding:2px 10px;font-size:.75rem;font-family:SF Mono,Fira Code,monospace;background:#eff6ff;color:var(--color-primary);border:1px solid #bfdbfe;border-radius:12px;cursor:pointer;transition:background .15s}.token-chip:hover:not(:disabled){background:#dbeafe}.token-chip:disabled{opacity:.5;cursor:not-allowed}.workflow-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.5rem}.workflow-card-header h3{margin-bottom:.25rem}.workflow-manage-link{display:inline-flex;align-items:center;gap:.3rem;font-size:.8rem;color:var(--color-primary);background:none;border:1px solid var(--color-primary);border-radius:var(--radius);padding:.35rem .65rem;cursor:pointer;white-space:nowrap}.workflow-manage-link:hover{background:#eff6ff}.workflow-assignments{display:flex;flex-direction:column;gap:1rem}.workflow-assignment-block{display:flex;flex-direction:column;gap:.35rem}.workflow-assignment-row{display:flex;align-items:center;gap:.75rem}.workflow-label{width:150px;font-size:.8rem;font-weight:500;color:var(--color-text, #1e293b)}.workflow-select{flex:1}.workflow-status-pills{display:flex;flex-wrap:wrap;gap:.35rem;padding-left:150px;margin-left:.75rem}.workflow-status-pill{display:inline-flex;align-items:center;gap:.25rem;font-size:.7rem;padding:.15rem .45rem;border:1px solid;border-radius:12px;background:#fff;color:#475569}.workflow-pill-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.node-code-row{display:flex;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid var(--color-border)}.node-code-row:last-of-type{border-bottom:none}.node-code-label{width:80px;font-size:.8125rem;font-weight:600;color:var(--color-text);flex-shrink:0}.cal-item{border:1px solid var(--color-border);border-radius:var(--radius);margin-bottom:10px}.cal-item-header{display:flex;align-items:center;gap:10px;padding:10px 12px;flex-wrap:wrap}.cal-item-name{font-weight:600;font-size:.875rem;color:var(--color-text);display:flex;align-items:center;gap:8px;min-width:140px}.cal-default-badge{font-size:.6875rem;font-weight:500;background:#dbeafe;color:#1d4ed8;padding:1px 7px;border-radius:10px}.cal-day-chips{display:flex;gap:4px}.cal-day-chip{display:inline-flex;align-items:center;justify-content:center;width:36px;height:26px;font-size:.75rem;border-radius:4px;border:1px solid var(--color-border);color:#94a3b8;background:#f8fafc}.cal-day-chip.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.cal-day-chip.selectable{cursor:pointer}.cal-day-chip.selectable:hover{border-color:var(--color-primary)}.cal-item-actions{margin-left:auto;display:flex;gap:4px;align-items:center}.btn-icon{background:none;border:none;cursor:pointer;padding:4px 6px;font-size:.8125rem;color:#64748b;border-radius:4px}.btn-icon:hover{background:#f1f5f9;color:var(--color-text)}.btn-danger-icon:hover{background:#fef2f2;color:#dc2626}.cal-exceptions{border-top:1px solid var(--color-border);padding:12px;background:#f8fafc}.cal-exc-table{width:100%;border-collapse:collapse;font-size:.8125rem;margin-bottom:10px}.cal-exc-table th{text-align:left;font-weight:600;color:#64748b;padding:4px 8px;border-bottom:1px solid var(--color-border);font-size:.75rem;text-transform:uppercase}.cal-exc-table td{padding:5px 8px;color:var(--color-text)}.cal-exc-type{font-size:.75rem;padding:1px 6px;border-radius:3px;font-weight:500}.cal-exc-type.holiday{background:#fef2f2;color:#dc2626}.cal-exc-type.working{background:#f0fdf4;color:#16a34a}.cal-exc-add{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.cal-exc-add input,.cal-exc-add select{padding:.375rem .5rem;font-size:.8125rem;border:1px solid var(--color-border);border-radius:var(--radius)}.cal-form{border:1px dashed var(--color-border);border-radius:var(--radius);padding:16px;margin-top:10px;background:#fafbfc}.cal-day-selector{margin-top:12px;display:flex;flex-direction:column;gap:6px}.wf-editor{display:flex;gap:0;height:calc(100vh - 120px)}.wf-sidebar{width:240px;flex-shrink:0;background:#fff;border-right:1px solid var(--color-border);overflow-y:auto}.wf-sidebar h3{font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;color:#64748b;margin:0}.wf-sidebar-header{display:flex;justify-content:space-between;align-items:center;padding:.5rem .5rem .25rem;margin-bottom:0}.wf-new-btn{display:inline-flex;align-items:center;gap:.2rem;font-size:.7rem;padding:.25rem .5rem;background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius);cursor:pointer}.wf-new-btn:hover{opacity:.9}.wf-def-list{display:flex;flex-direction:column;gap:.25rem}.wf-def-item{display:flex;flex-direction:column;align-items:flex-start;gap:.125rem;padding:.4rem .5rem;border:none;border-left:3px solid transparent;background:none;cursor:pointer;text-align:left;width:100%}.wf-def-item:hover{background:#f8fafc}.wf-def-item.active{border-left-color:var(--color-primary);background:#eff6ff}.wf-def-type{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:#94a3b8}.wf-def-name{font-size:.875rem;color:var(--color-text)}.wf-def-badge{font-size:.65rem;background:#dbeafe;color:var(--color-primary);padding:.1rem .4rem;border-radius:3px}.wf-main{flex:1;overflow-y:auto;min-width:0;padding:0 .5rem}.wf-placeholder{display:flex;align-items:center;justify-content:center;height:200px;color:#94a3b8;font-size:.95rem}.wf-header{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem}.wf-header-fields{display:flex;align-items:center;gap:.75rem}.wf-name-input{font-size:1.1rem;font-weight:600;padding:.4rem .6rem;border:1px solid var(--color-border);border-radius:var(--radius);width:280px}.wf-entity-select{font-size:.8rem;padding:.35rem .5rem;border:1px solid var(--color-border);border-radius:var(--radius);color:#64748b;background:#f8fafc}.wf-header-actions{display:flex;gap:.5rem}.wf-header-actions .btn{display:inline-flex;align-items:center;gap:.35rem;font-size:.8rem;padding:.4rem .75rem;border-radius:var(--radius);cursor:pointer;border:1px solid var(--color-border)}.wf-header-actions .btn-primary{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.wf-header-actions .btn-primary:disabled{opacity:.6;cursor:not-allowed}.wf-header-actions .btn-secondary{background:#fff;color:var(--color-text)}.wf-section{margin-bottom:1.5rem}.wf-section h4{margin:0 0 .5rem;font-size:.875rem;color:var(--color-text)}.wf-section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.wf-section-header h4{margin:0}.wf-section-header .btn-sm{display:inline-flex;align-items:center;gap:.25rem;font-size:.75rem;padding:.3rem .5rem;background:#fff;border:1px solid var(--color-border);border-radius:var(--radius);cursor:pointer;color:var(--color-text)}.wf-section-header .btn-sm:hover{background:#f8fafc}.wf-section-hint{font-size:.75rem;color:#64748b;margin:-.5rem 0 .75rem}.wf-table{width:100%;border-collapse:collapse;font-size:.8rem;background:var(--color-surface);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.wf-table th{text-align:left;font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:#64748b;padding:.1rem .75rem .2rem;background:#f8fafc;border-bottom:1px solid var(--color-border)}.wf-table td{padding:.4rem .75rem;border-bottom:1px solid #f1f5f9;vertical-align:middle}.wf-table tr:last-child td{border-bottom:none}.wf-table input[type=text],.wf-table select{font-size:.8rem;padding:.3rem .5rem;border:1px solid var(--color-border);border-radius:4px;width:100%}.wf-input-sm{width:100%!important}.wf-input-xs{width:50px!important}.wf-icon-btn{background:none;border:none;color:#94a3b8;cursor:pointer;padding:.25rem;border-radius:4px}.wf-icon-btn:hover{color:#ef4444;background:#fef2f2}.wf-preview{display:flex;flex-wrap:wrap;gap:.75rem}.wf-preview-node{display:flex;align-items:center;gap:.35rem;padding:.4rem .75rem;border:2px solid;border-radius:var(--radius);background:#fff;font-size:.8rem}.wf-preview-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.wf-preview-cat{font-size:.65rem;text-transform:uppercase;font-weight:600;margin-left:.25rem}.wf-checkbox-group{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.wf-checkbox-label{display:inline-flex;align-items:center;gap:.25rem;cursor:pointer;font-size:.8rem}.wf-status-chip{display:inline-block;padding:.15rem .5rem;border-radius:10px;color:#fff;font-size:.75rem;font-weight:500}.wf-cascade-table td:last-child{width:40px;text-align:center}.wf-cascade-sentence{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;font-size:.85rem;color:var(--color-text)}.wf-cascade-sentence strong{color:var(--color-primary);text-transform:capitalize}.wf-cascade-sentence select{padding:.25rem .5rem;font-size:.8rem;min-width:0;width:auto}.wf-gate-checkboxes{margin-top:.4rem;padding-left:.1rem}.field-access-page{padding:1.5rem}.field-access-page h2{margin:0 0 1.5rem;font-size:1.25rem;font-weight:600;color:var(--color-text)}.fa-toolbar{display:flex;gap:1rem;align-items:flex-end;flex-wrap:wrap;margin-bottom:1.5rem}.fa-toolbar .form-group{display:flex;flex-direction:column;gap:.25rem;margin-bottom:0}.fa-toolbar label{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#64748b}.fa-toolbar select{padding:.5rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.875rem;min-width:180px}.fa-toolbar-actions{margin-left:auto;display:flex;gap:.5rem;align-items:flex-end}.fa-tabs{display:flex;gap:0;margin-bottom:1rem;border-bottom:2px solid var(--color-border)}.fa-tab{padding:.5rem 1.25rem;font-size:.8125rem;font-weight:600;color:#64748b;background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;transition:color .15s,border-color .15s}.fa-tab:hover{color:var(--color-text)}.fa-tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.fa-status{padding:.75rem 1rem;border-radius:var(--radius);font-size:.8125rem;margin-bottom:1rem}.fa-status.success{background:#f0fdf4;color:#16a34a;border:1px solid #bbf7d0}.fa-status.error{background:#fef2f2;color:#dc2626;border:1px solid #fecaca}.fa-empty{text-align:center;padding:3rem;color:#94a3b8;font-size:.875rem}.fa-legend{display:flex;gap:1rem;margin-bottom:1rem;font-size:.75rem;color:#64748b;align-items:center;flex-wrap:wrap}.fa-legend-item{display:flex;align-items:center;gap:.375rem}.fa-legend-dot{width:10px;height:10px;border-radius:2px}.fa-legend-dot.edit{background:#16a34a}.fa-legend-dot.view{background:#ca8a04}.fa-legend-dot.hidden{background:#dc2626}.fa-legend-note{font-style:italic;color:#94a3b8}.fa-matrix-container{overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius)}.fa-matrix{width:100%;border-collapse:collapse;font-size:.8125rem}.fa-matrix th,.fa-matrix td{padding:.375rem .5rem;border-bottom:1px solid var(--color-border);text-align:center;white-space:nowrap}.fa-matrix th{background:#f8fafc;font-weight:600;color:#475569;position:sticky;top:0;z-index:1}.fa-matrix tr:last-child td{border-bottom:none}.fa-group-row td{background:#eef2ff!important;font-weight:600;color:var(--color-primary);font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;border-bottom:2px solid var(--color-primary);text-align:left}.fa-full-matrix .fa-field-header,.fa-full-matrix .fa-field-name{text-align:left;position:sticky;left:0;background:#fff;z-index:2;min-width:140px;max-width:200px;font-weight:500;vertical-align:top;padding-top:.625rem!important}.fa-full-matrix .fa-field-header{background:#f8fafc;z-index:4;font-weight:600;vertical-align:middle}.fa-full-matrix .fa-row-action-header{background:#f8fafc;z-index:3}.fa-status-col-header{background:#f1f5f9!important;border-left:2px solid var(--color-border);font-size:.75rem;text-transform:uppercase;letter-spacing:.03em;color:var(--color-text)!important;min-width:140px;padding:.5rem!important}.fa-status-col-header div{margin-bottom:.375rem}.fa-stacked-cell{border-left:2px solid var(--color-border);padding:.25rem .375rem!important;vertical-align:top}.fa-resp-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.125rem .25rem;border-radius:3px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .1s;font-size:.75rem}.fa-resp-row:hover{background:#e2e8f0}.fa-resp-row:focus-visible{outline:2px solid var(--color-primary);outline-offset:-1px}.fa-resp-row+.fa-resp-row{border-top:1px solid #f1f5f9}.fa-resp-label{color:#475569;font-weight:500;font-size:.6875rem;white-space:nowrap}.fa-resp-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:18px;border-radius:3px;font-size:.625rem;font-weight:700;color:#cbd5e1}.fa-resp-badge.level-EDIT{color:#fff;background:#16a34a}.fa-resp-badge.level-VIEW{color:#fff;background:#ca8a04}.fa-resp-badge.level-HIDDEN{color:#fff;background:#dc2626}.fa-row-action{position:sticky;right:0;background:#fff;z-index:2;vertical-align:top;padding-top:.625rem!important}.fa-full-matrix tbody tr:hover td,.fa-full-matrix tbody tr:hover .fa-field-name,.fa-full-matrix tbody tr:hover .fa-row-action{background:#f8fafc}.fa-bulk-select{width:64px;padding:.15rem .2rem;font-size:.625rem;border:1px solid var(--color-border);border-radius:3px;background:#f8fafc;cursor:pointer}.fa-trans-matrix td:first-child{min-width:220px;text-align:left}.fa-trans-label{font-weight:500}.fa-trans-badge{display:inline-block;margin-left:.5rem;padding:.125rem .5rem;font-size:.625rem;font-weight:600;text-transform:uppercase;border-radius:9999px}.fa-trans-badge.open{color:#16a34a;background:#f0fdf4}.fa-trans-badge.closed{color:#dc2626;background:#fef2f2}.fa-trans-unrestricted td{background:#fafbfc}.fa-trans-cell{text-align:center}.fa-trans-cell input[type=checkbox]{width:16px;height:16px;cursor:pointer;accent-color:var(--color-primary)}.fa-bulk-btn{padding:.2rem .5rem;font-size:.6875rem;border:1px solid var(--color-border);border-radius:4px;background:#f8fafc;cursor:pointer;color:#475569}.fa-bulk-btn:hover{background:#e2e8f0}.team-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;padding:4rem 1rem;color:var(--color-text-muted);text-align:center}.team-empty p{margin:0}.team-user-cell{display:flex;flex-direction:column;gap:.1rem}.team-user-name{font-weight:600;font-size:.88rem}.team-user-email{font-size:.75rem;color:var(--color-text-muted)}.team-scope-badge{font-size:.75rem;font-weight:500;padding:.15rem .5rem;border-radius:4px;background:var(--color-bg);border:1px solid var(--color-border)}.team-scope-node{font-family:var(--font-mono, monospace);font-size:.7rem;color:var(--color-text-muted)}.bs-page{display:flex;flex-direction:column;height:100%;min-height:0}.bs-table-wrap{flex:1;overflow:auto;min-height:0}.bs-table{width:max-content;min-width:100%;border-collapse:collapse;font-size:.78rem}.bs-table thead th{position:sticky;top:0;background:#f8fafc;border-bottom:2px solid var(--color-border);padding:.5rem .75rem;text-align:left;font-weight:600;white-space:nowrap;z-index:2}.bs-table th.bs-col-sticky,.bs-table td.bs-col-sticky{position:sticky;background:#fff;z-index:1}.bs-table thead th.bs-col-sticky{z-index:3;background:#f8fafc}.bs-col-lbs{left:0;min-width:120px}.bs-col-pbs{left:120px;min-width:140px;border-right:2px solid var(--color-border)}.bs-table tbody tr{border-bottom:1px solid #f1f5f9}.bs-table tbody tr:hover{background:#f8fafc}.bs-table td{padding:.4rem .75rem;white-space:nowrap;vertical-align:middle}.bs-table td.bs-col-sticky{background:#fff}.bs-table tbody tr:hover td.bs-col-sticky{background:#f8fafc}.bs-wbs-col{min-width:130px;text-align:center}.bs-status-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:10px;font-size:.75rem;font-weight:500;line-height:1.4}.bs-status-badge--NOT_STARTED{background:#f1f5f9;color:#64748b}.bs-status-badge--IN_PROGRESS{background:#fef3c7;color:#92400e}.bs-status-badge--COMPLETED{background:#dcfce7;color:#166534}.bs-status-badge--ON_HOLD{background:#fee2e2;color:#991b1b}.bs-status-badge--CANCELLED{background:#f1f5f9;color:#475569}.bs-cell-empty{color:#cbd5e1;text-align:center}.bs-pagination{display:flex;align-items:center;justify-content:space-between;padding:6px 8px;font-size:.78rem;color:var(--color-text-muted, #64748b);border-top:1px solid var(--color-border)}.bs-pagination-btns{display:flex;gap:.25rem}.bs-pagination-btns button{padding:2px 10px;height:28px;border:1px solid var(--color-border);border-radius:4px;background:var(--color-surface, #fff);cursor:pointer;font-size:.78rem;color:var(--color-text)}.bs-pagination-btns button:disabled{opacity:.4;cursor:default}.bs-pagination-btns button:hover:not(:disabled){background:#f8fafc}.bs-loading,.bs-empty{display:flex;align-items:center;justify-content:center;padding:3rem;color:#94a3b8;font-size:.875rem}.wsg-container{display:flex;flex-direction:column;height:100%;padding:1rem}.wsg-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.wsg-header h3{margin:0;font-size:1.1rem;color:var(--color-text)}.wsg-error{color:#dc2626;font-size:.85rem;padding:.5rem;background:#fef2f2;border-radius:var(--radius);margin-bottom:.75rem}.wsg-body{display:grid;grid-template-columns:380px 1fr;gap:1rem;flex:1;min-height:0;overflow:hidden}.wsg-list{overflow-y:auto;border:1px solid var(--color-border);border-radius:var(--radius);background:#fff}.wsg-loading,.wsg-empty{padding:2rem;text-align:center;color:#64748b;font-size:.85rem}.wsg-item{padding:.65rem .75rem;border-bottom:1px solid var(--color-border);cursor:pointer;transition:background .1s}.wsg-item:last-child{border-bottom:none}.wsg-item:hover{background:#f8fafc}.wsg-item.selected{background:#eff6ff;border-left:3px solid var(--color-primary)}.wsg-item-main{display:flex;align-items:center;gap:.5rem}.wsg-item-code{font-weight:600;font-size:.8rem;color:var(--color-primary);min-width:60px}.wsg-item-name{flex:1;font-size:.85rem;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wsg-item-arrow{color:#94a3b8;flex-shrink:0}.wsg-item-meta{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.35rem}.wsg-tag{font-size:.7rem;background:#f1f5f9;padding:1px 6px;border-radius:4px;color:#475569}.wsg-item-stats{display:flex;align-items:center;gap:.75rem;margin-top:.35rem;font-size:.75rem;color:#64748b}.wsg-item-stats span{display:flex;align-items:center;gap:3px}.wsg-status-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.wsg-progress{font-weight:600}.wsg-delete-btn{background:none;border:none;cursor:pointer;color:#94a3b8;padding:2px;border-radius:4px;margin-left:auto}.wsg-delete-btn:hover{color:#dc2626;background:#fef2f2}.wsg-detail{border:1px solid var(--color-border);border-radius:var(--radius);background:#fff;overflow-y:auto}.wsg-detail-empty{display:flex;align-items:center;justify-content:center;height:100%;color:#94a3b8;font-size:.9rem}.wsg-detail-content{padding:1rem}.wsg-detail-content h4{margin:0 0 .25rem;font-size:1rem;color:var(--color-text)}.wsg-detail-desc{margin:0 0 1rem;font-size:.85rem;color:#64748b}.wsg-rollup-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem;margin-bottom:1.25rem}.wsg-rollup-card{background:#f8fafc;border:1px solid var(--color-border);border-radius:var(--radius);padding:.75rem;text-align:center}.wsg-rollup-value{font-size:1.5rem;font-weight:700;color:var(--color-text)}.wsg-rollup-status{font-size:.8rem;font-weight:700;text-transform:uppercase}.wsg-rollup-label{font-size:.7rem;color:#64748b;margin-top:2px;text-transform:uppercase;letter-spacing:.5px}.wsg-detail-dims{margin-bottom:1rem}.wsg-detail-dims h5{margin:0 0 .5rem;font-size:.85rem;color:var(--color-text)}.wsg-dim-table{width:100%;font-size:.82rem}.wsg-dim-table td{padding:.35rem .5rem;border-bottom:1px solid #f1f5f9}.wsg-dim-table td:first-child{font-weight:600;color:#475569;width:80px}.wsg-dim-table td:last-child{color:#64748b;font-size:.75rem}.wsg-detail-members{margin-top:1rem}.wsg-detail-members h5{margin:0 0 .5rem;font-size:.85rem;color:var(--color-text)}.wsg-members-table{width:100%;border-collapse:collapse;font-size:.82rem}.wsg-members-table th{text-align:left;padding:.4rem .5rem;border-bottom:2px solid var(--color-border);font-weight:600;color:#475569;font-size:.75rem;text-transform:uppercase;letter-spacing:.3px}.wsg-members-table td{padding:.35rem .5rem;border-bottom:1px solid #f1f5f9;color:var(--color-text)}.wsg-modal-overlay{position:fixed;inset:0;z-index:900;background:#0006;display:flex;align-items:center;justify-content:center}.wsg-modal{background:#fff;border-radius:8px;width:560px;max-width:92vw;max-height:88vh;overflow:auto;box-shadow:0 8px 32px #00000040}.wsg-modal-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;border-bottom:1px solid var(--color-border)}.wsg-modal-header h4{margin:0;font-size:.95rem}.wsg-modal-close{background:none;border:none;cursor:pointer;color:#64748b;padding:4px;border-radius:4px}.wsg-modal-close:hover{color:#1e293b}.wsg-modal-body{padding:1rem;display:flex;flex-direction:column;gap:.65rem}.wsg-modal-footer{display:flex;gap:.5rem;justify-content:flex-end;padding:.75rem 1rem;border-top:1px solid var(--color-border)}.wsg-section-title{margin:.5rem 0 .25rem;font-size:.82rem;color:#475569}.wsg-dim-row{display:flex;align-items:flex-end;gap:.75rem}.wsg-dim-select{flex:1}.wsg-checkbox{display:flex;align-items:center;gap:.35rem;font-size:.8rem;color:#475569;white-space:nowrap;padding-bottom:.35rem;cursor:pointer}.wsg-checkbox input[type=checkbox]{width:auto}.wsg-preview-btn{align-self:flex-start;font-size:.8rem;padding:.35rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius);background:#f8fafc;cursor:pointer;color:#475569}.wsg-preview-btn:hover{background:#f1f5f9}.wsg-preview-btn:disabled{opacity:.5;cursor:not-allowed}.wsg-preview{background:#f8fafc;border:1px solid var(--color-border);border-radius:var(--radius);padding:.5rem .75rem;font-size:.82rem}.wsg-preview-count{font-weight:600;color:var(--color-text)}.wsg-preview-overlaps{display:flex;align-items:center;gap:.4rem;margin-top:.35rem;color:#d97706;font-size:.78rem}.wsg-overlap-tag{background:#fef3c7;padding:1px 6px;border-radius:4px;font-size:.72rem}.user-name-cell{display:flex;align-items:center;gap:.5rem}.user-name-cell div{line-height:1.3}.user-name-cell small{color:var(--color-text-muted);font-size:.78rem}.actions-cell{display:flex;gap:.25rem}.role-list{display:flex;flex-direction:column;gap:.5rem}.role-card{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border:1px solid var(--color-border);border-radius:8px;transition:border-color .15s,background .15s}.role-card.assigned{border-color:var(--color-primary);background:#2563eb0a}.role-card-info{flex:1}.role-card-info strong{display:block;font-size:.9rem}.role-card-code{font-size:.75rem;color:var(--color-text-muted);font-family:var(--font-mono, monospace)}.role-card-desc{font-size:.8rem;color:var(--color-text-muted);margin-top:.15rem}.um-section-label{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);padding-bottom:.25rem;margin-top:1rem;margin-bottom:.4rem;border-bottom:1px solid var(--color-border)}.um-section-label:first-child{margin-top:0}.um-temp-password{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:var(--color-surface, #f8fafc);border:1px solid var(--color-border);border-radius:var(--radius)}.um-temp-password code{font-size:1.1rem;font-family:SF Mono,Fira Code,monospace;letter-spacing:.05em;flex:1;-webkit-user-select:all;user-select:all}.page--no-pad{padding:0}.page-header-sub{margin:.15rem 0 0;color:var(--color-text-muted);font-size:.85rem;font-weight:400}.roles-layout--full{display:flex;height:calc(100vh - 140px);min-height:400px;border-top:1px solid var(--color-border);overflow:hidden;background:var(--color-surface)}.roles-sidebar{width:300px;min-width:260px;border-right:1px solid var(--color-border);display:flex;flex-direction:column;background:var(--color-bg)}.roles-sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:.85rem 1rem;border-bottom:1px solid var(--color-border);font-weight:600;font-size:.88rem;flex-shrink:0;gap:.5rem}.roles-scope-filter{flex:1;min-width:0;padding:.35rem .5rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.8rem;background:var(--color-surface);color:var(--color-text)}.roles-sidebar-count{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 6px;border-radius:11px;background:var(--color-border);color:var(--color-text-muted);font-size:.72rem;font-weight:600}.roles-sidebar-list{flex:1;overflow-y:auto}.roles-sidebar-empty{padding:2rem 1rem;text-align:center;color:var(--color-text-muted);font-size:.88rem}.role-list-item{display:flex;align-items:center;gap:.65rem;padding:.7rem 1rem;cursor:pointer;border-bottom:1px solid var(--color-border);border-left:3px solid transparent;transition:background .12s,border-color .12s;position:relative}.role-list-item:hover{background:var(--color-surface)}.role-list-item.active{background:var(--color-surface);border-left-color:var(--color-primary)}.role-icon{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:8px;flex-shrink:0;color:#fff}.role-icon--super_admin{background:linear-gradient(135deg,#7c3aed,#4f46e5)}.role-icon--admin{background:linear-gradient(135deg,#2563eb,#0ea5e9)}.role-icon--user{background:linear-gradient(135deg,#64748b,#94a3b8)}.role-icon-lg{width:40px;height:40px;border-radius:10px}.role-list-body{flex:1;min-width:0}.role-list-name{font-weight:600;font-size:.88rem;display:flex;align-items:center;gap:.4rem;line-height:1.3}.role-list-name .badge{font-size:.65rem;padding:.1rem .4rem}.role-list-arrow{color:var(--color-text-muted);flex-shrink:0;opacity:0;transition:opacity .12s}.role-list-item:hover .role-list-arrow,.role-list-item.active .role-list-arrow{opacity:1}.role-hover-actions{display:flex;gap:.25rem;flex-shrink:0;opacity:0;transition:opacity .15s}.role-list-item:hover .role-hover-actions,.role-list-item.active .role-hover-actions{opacity:1}.role-action-icon{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--color-border);border-radius:6px;background:var(--color-surface);color:var(--color-text-muted);cursor:pointer;transition:all .12s;padding:0;font:inherit}.role-action-icon:hover{border-color:var(--color-primary);color:var(--color-primary);background:#2563eb0f}.role-action-icon.active{border-color:var(--color-primary);color:#fff;background:var(--color-primary)}.roles-detail{flex:1;overflow-y:auto;display:flex;flex-direction:column}.roles-detail-inner{padding:1.5rem;flex:1}.roles-detail-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;color:var(--color-text-muted);font-size:.95rem}.roles-detail-empty p{margin:0}.roles-detail-header{margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--color-border)}.roles-detail-title-row{display:flex;align-items:center;gap:.75rem;margin-bottom:.25rem}.roles-detail-header h2{margin:0;font-size:1.2rem;font-weight:700;line-height:1.3}.roles-detail-code{font-size:.75rem;font-family:var(--font-mono, monospace);color:var(--color-text-muted);background:var(--color-bg);padding:.15rem .5rem;border-radius:4px}.roles-detail-desc{color:var(--color-text-muted);font-size:.88rem;margin:.5rem 0 0;line-height:1.5}.btn-icon-sm{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--color-border);border-radius:6px;background:none;color:var(--color-text-muted);cursor:pointer;margin-left:auto;transition:all .12s}.btn-icon-sm:hover{border-color:var(--color-primary);color:var(--color-primary);background:#2563eb0f}.btn-icon-sm--active{border-color:var(--color-primary);color:var(--color-primary);background:#2563eb1a}.roles-perm-section{margin-top:.25rem}.roles-perm-title-row{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem}.roles-perm-title{font-size:.95rem;font-weight:600;margin:0}.roles-perm-count{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 6px;border-radius:11px;background:#2563eb1a;color:var(--color-primary);font-size:.72rem;font-weight:600}.roles-perm-empty{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:2rem 1rem;color:var(--color-text-muted);text-align:center}.roles-perm-empty p{margin:0}.perm-groups{display:flex;flex-direction:column;gap:1.25rem}.perm-group-header{display:flex;align-items:center;gap:.4rem;margin-bottom:.5rem}.perm-group-title{font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);margin:0}.perm-group-count{font-size:.68rem;color:var(--color-text-muted)}.perm-chips{display:flex;flex-wrap:wrap;gap:.4rem}.perm-chip{display:inline-flex;flex-direction:column;padding:.35rem .7rem;background:var(--color-bg);border:1px solid var(--color-border);border-radius:6px;transition:border-color .12s;line-height:1.3}.perm-chip:hover{border-color:#cbd5e1}.perm-chip--edit{cursor:pointer;border-style:dashed}.perm-chip--edit:hover{border-color:#ef4444;background:#ef44440a}.perm-chip-action{font-size:.8rem;font-weight:500;color:var(--color-text)}.perm-chip-code{font-size:.68rem;font-family:var(--font-mono, monospace);color:var(--color-text-muted)}.roles-users-section{margin-top:.25rem}.role-users-list{display:flex;flex-direction:column;gap:.5rem}.role-user-card{display:flex;align-items:center;gap:.75rem;padding:.65rem .85rem;background:var(--color-bg);border:1px solid var(--color-border);border-radius:8px;transition:border-color .12s}.role-user-card:hover{border-color:#cbd5e1}.role-user-avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;font-size:.78rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;letter-spacing:.03em}.role-user-info{flex:1;min-width:0}.role-user-name{font-weight:600;font-size:.88rem;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.role-user-meta{font-size:.75rem;color:var(--color-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.role-user-status{font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;padding:.15rem .5rem;border-radius:4px;flex-shrink:0}.role-user-status--active{color:#16a34a;background:#16a34a14}.role-user-status--inactive{color:#dc2626;background:#dc262614}.role-user-status--suspended{color:#d97706;background:#d9770614}.role-user-remove{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:1px solid var(--color-border);border-radius:6px;background:none;color:var(--color-text-muted);cursor:pointer;flex-shrink:0;transition:all .12s;padding:0;font:inherit}.role-user-remove:hover{border-color:#ef4444;color:#ef4444;background:#ef44440f}.role-user-remove:disabled{opacity:.5;cursor:default}.role-add-user{margin-bottom:1rem;position:relative}.role-add-user-input-wrap{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border:1px solid var(--color-border);border-radius:8px;background:var(--color-bg);color:var(--color-text-muted)}.role-add-user-input-wrap:focus-within{border-color:var(--color-primary);box-shadow:0 0 0 2px #2563eb1f}.role-add-user-input{flex:1;border:none;outline:none;background:none;font:inherit;font-size:.85rem;color:var(--color-text)}.role-add-user-input::placeholder{color:var(--color-text-muted)}.role-add-user-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;box-shadow:0 6px 20px #0000001a;max-height:280px;overflow-y:auto;z-index:20}.role-add-user-option{display:flex;align-items:center;gap:.65rem;width:100%;padding:.5rem .75rem;border:none;background:none;cursor:pointer;text-align:left;font:inherit;color:inherit;transition:background .1s}.role-add-user-option:hover{background:var(--color-bg)}.role-add-user-option:disabled{opacity:.5;cursor:default}.role-add-user-option+.role-add-user-option{border-top:1px solid var(--color-border)}.role-add-user-icon{color:var(--color-primary);flex-shrink:0}.role-add-user-adding{font-size:.72rem;color:var(--color-text-muted);flex-shrink:0}.role-add-user-empty{padding:1rem;text-align:center;color:var(--color-text-muted);font-size:.85rem}.role-list-code{font-size:.72rem;color:var(--color-text-muted);font-family:var(--font-mono, monospace);display:flex;align-items:center;gap:.3rem}.role-list-sep{color:var(--color-border)}.roles-detail-actions{display:flex;gap:.35rem;margin-left:auto}.btn-icon-sm--danger:hover{border-color:#ef4444;color:#ef4444;background:#ef44440f}.roles-tab-bar{display:flex;gap:0;border-bottom:1px solid var(--color-border);margin-bottom:1rem}.roles-tab{display:inline-flex;align-items:center;gap:.35rem;padding:.6rem 1rem;border:none;background:none;color:var(--color-text-muted);font-size:.85rem;font-weight:500;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:all .12s}.roles-tab:hover{color:var(--color-text)}.roles-tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.perm-edit-groups{display:flex;flex-direction:column;gap:1.25rem}.perm-edit-group-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.4rem}.perm-edit-group-header h5{font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);margin:0}.perm-edit-list{display:flex;flex-direction:column;gap:.15rem}.perm-edit-item{display:flex;align-items:center;gap:.5rem;padding:.35rem .5rem;border-radius:6px;cursor:pointer;transition:background .1s}.perm-edit-item:hover{background:var(--color-bg)}.perm-edit-item input[type=checkbox]{width:16px;height:16px;flex-shrink:0;accent-color:var(--color-primary)}.perm-edit-info{display:flex;flex-direction:column;gap:0}.perm-edit-name{font-size:.85rem;font-weight:500;color:var(--color-text);line-height:1.3}.perm-edit-code{font-size:.68rem;font-family:var(--font-mono, monospace);color:var(--color-text-muted)}.role-icon--project_admin{background:linear-gradient(135deg,#dc2626,#f97316)}.role-icon--planning_engineer{background:linear-gradient(135deg,#0d9488,#06b6d4)}.role-icon--qa_inspector{background:linear-gradient(135deg,#7c3aed,#a855f7)}.role-icon--construction_manager{background:linear-gradient(135deg,#ca8a04,#eab308)}.role-icon--viewer{background:linear-gradient(135deg,#94a3b8,#cbd5e1)}.my-dashboard{padding:24px;max-width:1400px;margin:0 auto}.my-dashboard h2{margin:0 0 24px;font-size:1.4rem;font-weight:600;color:var(--color-text, #1e293b)}.my-dashboard-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:32px}.summary-card{background:var(--color-surface, #fff);border:1px solid var(--color-border, #e2e8f0);border-radius:10px;padding:20px;display:flex;align-items:center;gap:16px;box-shadow:0 1px 3px #0000000f;transition:box-shadow .2s}.summary-card:hover{box-shadow:0 4px 12px #0000001a}.summary-card-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.summary-card-icon.assigned{background:#dbeafe;color:#2563eb}.summary-card-icon.in-progress{background:#fef3c7;color:#d97706}.summary-card-icon.overdue{background:#fee2e2;color:#dc2626}.summary-card-icon.completed{background:#dcfce7;color:#16a34a}.summary-card-info{display:flex;flex-direction:column}.summary-card-value{font-size:1.75rem;font-weight:700;line-height:1;color:var(--color-text, #1e293b)}.summary-card-label{font-size:.8rem;color:var(--color-text-muted, #64748b);margin-top:4px}.my-dashboard-sections{display:grid;grid-template-columns:1fr;gap:24px}.my-dashboard-section{background:var(--color-surface, #fff);border:1px solid var(--color-border, #e2e8f0);border-radius:10px;overflow:hidden;box-shadow:0 1px 3px #0000000f}.my-dashboard-section-header{padding:14px 20px;font-weight:600;font-size:.95rem;border-bottom:1px solid var(--color-border, #e2e8f0);background:var(--color-surface-alt, #f8fafc);display:flex;align-items:center;gap:8px}.my-dashboard-section-body{padding:0}.my-dashboard-table{width:100%;border-collapse:collapse;font-size:.85rem}.my-dashboard-table th{background:var(--color-surface-alt, #f8fafc);padding:8px 14px;text-align:left;font-weight:600;font-size:.8rem;color:var(--color-text-muted, #64748b);border-bottom:2px solid var(--color-border, #e2e8f0);white-space:nowrap}.my-dashboard-table td{padding:8px 14px;border-bottom:1px solid var(--color-border, #e2e8f0);color:var(--color-text, #1e293b)}.my-dashboard-table tr:last-child td{border-bottom:none}.my-dashboard-table tr:hover td{background:var(--color-row-hover, #f1f5f9)}.my-dashboard-table tr.overdue-row td{background:#fef2f2}.my-dashboard-table tr.overdue-row:hover td{background:#fee2e2}.status-pill{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.3px}.status-pill.not-started{background:#f1f5f9;color:#64748b}.status-pill.in-progress{background:#fef3c7;color:#92400e}.status-pill.completed{background:#dcfce7;color:#166534}.status-pill.on-hold{background:#e0e7ff;color:#3730a3}.status-pill.cancelled{background:#f1f5f9;color:#94a3b8}.status-pill.assigned{background:#dbeafe;color:#1e40af}.status-pill.submitted{background:#fef3c7;color:#92400e}.status-pill.reviewed{background:#dcfce7;color:#166534}.priority-pill{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.7rem;font-weight:600;text-transform:uppercase}.priority-pill.high{background:#fee2e2;color:#991b1b}.priority-pill.medium{background:#fef3c7;color:#92400e}.priority-pill.low{background:#dcfce7;color:#166534}.overdue-badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.7rem;font-weight:600;background:#fee2e2;color:#dc2626}.progress-inline{display:flex;align-items:center;gap:8px}.progress-bar-track{width:60px;height:6px;background:#e2e8f0;border-radius:3px;overflow:hidden}.progress-bar-fill{height:100%;border-radius:3px;background:var(--color-primary, #2563eb);transition:width .3s ease}.progress-text{font-size:.75rem;color:var(--color-text-muted, #64748b);min-width:32px}.my-dashboard-projects{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;padding:16px}.project-card{border:1px solid var(--color-border, #e2e8f0);border-radius:8px;padding:16px;transition:box-shadow .2s;cursor:pointer;text-decoration:none;color:inherit}.project-card:hover{box-shadow:0 4px 12px #00000014}.project-card-name{font-weight:600;font-size:.95rem;margin-bottom:4px;color:var(--color-text, #1e293b)}.project-card-ref{font-size:.8rem;color:var(--color-text-muted, #64748b);margin-bottom:12px}.project-card-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;font-size:.8rem}.project-card-stat{display:flex;flex-direction:column}.project-card-stat-value{font-weight:600;font-size:1rem}.project-card-stat-label{color:var(--color-text-muted, #64748b);font-size:.75rem}.project-card-stat-value.overdue{color:#dc2626}.my-dashboard-empty{padding:40px 20px;text-align:center;color:var(--color-text-muted, #64748b);font-size:.9rem}.my-dashboard-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 20px;gap:12px}.my-dashboard-spinner{width:36px;height:36px;border:3px solid var(--color-border, #e2e8f0);border-top-color:var(--color-primary, #2563eb);border-radius:50%;animation:my-dash-spin .8s linear infinite}@keyframes my-dash-spin{to{transform:rotate(360deg)}}.my-dashboard-error{padding:40px 20px;text-align:center;color:var(--color-error, #ef4444)}.my-dashboard-drawer-overlay{position:fixed;inset:0;background:#0000004d;z-index:1000;display:flex;justify-content:flex-end}.my-dashboard-drawer{width:420px;max-width:90vw;height:100%;background:var(--color-surface, #fff);box-shadow:-4px 0 16px #00000026;overflow:auto}@media(max-width:768px){.my-dashboard-summary{grid-template-columns:repeat(2,1fr)}}:root{--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-success: #16a34a;--color-success-hover: #15803d;--color-danger: #dc2626;--color-danger-hover: #b91c1c;--color-warning: #d97706;--color-info: #0891b2;--color-bg: #f8fafc;--color-surface: #ffffff;--color-border: #e2e8f0;--color-text: #1e293b;--color-text-muted: #64748b;--radius: 6px;--shadow: 0 1px 3px rgba(0,0,0,.08);--shadow-md: 0 4px 6px rgba(0,0,0,.1)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:var(--color-text);background:var(--color-bg)}.app-shell{min-height:100vh;display:flex;flex-direction:column;background:var(--color-bg)}.app-header{background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:0 .75rem;height:48px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:100;flex-shrink:0}.header-left,.header-right{display:flex;align-items:center;gap:.75rem}.app-title{font-size:1rem;font-weight:700;color:var(--color-primary);letter-spacing:-.01em}.user-name{color:var(--color-text-muted);font-size:.8rem}.sb-toggle-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:transparent;color:var(--color-text-muted);border-radius:6px;cursor:pointer;transition:all .15s}.sb-toggle-btn:hover{background:var(--color-bg);color:var(--color-text)}.main-nav{display:flex;gap:.125rem}.nav-link{padding:.35rem .625rem;border-radius:var(--radius);text-decoration:none;color:var(--color-text-muted);font-size:.8rem;font-weight:500;transition:all .15s}.nav-link:hover{color:var(--color-text);background:var(--color-bg)}.nav-link.active{color:var(--color-primary);background:#eff6ff}.nav-dropdown{position:relative}.nav-dropdown-trigger{cursor:pointer;border:none;background:none;display:flex;align-items:center;gap:.25rem}.dropdown-arrow{font-size:.6rem;line-height:1}.nav-dropdown-menu{position:absolute;top:100%;left:0;margin-top:.25rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-md);min-width:180px;z-index:200;padding:.25rem 0}.dropdown-item{display:block;padding:.45rem .875rem;text-decoration:none;color:var(--color-text-muted);font-size:.8rem;font-weight:500;transition:all .15s;white-space:nowrap}.dropdown-item:hover{color:var(--color-text);background:var(--color-bg)}.dropdown-item.active{color:var(--color-primary);background:#eff6ff}.app-body{display:flex;flex:1;min-height:0;overflow:hidden;position:relative;padding-left:48px}.app-sidebar{width:48px;background:var(--color-surface);border-right:1px solid var(--color-border);display:flex;flex-direction:column;overflow:hidden;position:absolute;top:0;bottom:0;left:0;z-index:100;transition:width .15s ease}.app-sidebar:not(.collapsed){width:210px;box-shadow:2px 0 8px #0000001a}.app-sidebar.collapsed{width:48px}.sb-nav{padding:6px;overflow-y:auto;overflow-x:hidden;flex:1}.sb-loading{padding:1rem;color:var(--color-text-muted);font-size:.75rem;text-align:center}.sb-item{display:flex;align-items:center;gap:8px;padding:6px 10px;text-decoration:none;color:var(--color-text-muted);font-size:.8rem;font-weight:500;border:none;background:none;width:100%;text-align:left;cursor:pointer;border-radius:6px;transition:all .12s;white-space:nowrap;position:relative;min-height:32px}.sb-item:hover{color:var(--color-text);background:var(--color-bg)}.sb-item.active{color:var(--color-primary);background:#eff6ff}.sb-item.active:before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:3px;border-radius:0 3px 3px 0;background:var(--color-primary)}.sb-item svg{flex-shrink:0;opacity:.65}.sb-item.active svg{opacity:1}.sb-item:hover svg{opacity:.9}.sb-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.sb-icon-only{justify-content:center;padding:8px}.sb-icon-only svg{opacity:.7}.sb-icon-only.active svg{opacity:1}.sb-dot{width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.5}.sb-arrow{margin-left:auto;flex-shrink:0;opacity:.4;transition:transform .2s ease}.sb-arrow-open{transform:rotate(180deg)}.sb-accordion{justify-content:flex-start}.sb-children{padding:0 0 2px}.sb-child{padding-left:32px;font-size:.78rem}.sb-child-dot{width:4px;height:4px;border-radius:50%;background:currentColor;opacity:.35;flex-shrink:0}.sb-child.active .sb-child-dot{opacity:1;background:var(--color-primary)}.sb-tooltip{position:fixed;left:56px;transform:translateY(-50%);background:#1e293b;color:#fff;font-size:.72rem;font-weight:500;padding:4px 8px;border-radius:4px;white-space:nowrap;z-index:300;pointer-events:none;box-shadow:0 2px 8px #00000026}.sb-tooltip:before{content:"";position:absolute;left:-4px;top:50%;transform:translateY(-50%);border:4px solid transparent;border-right-color:#1e293b;border-left:none}.app-main{flex:1;overflow-y:auto;overflow-x:hidden;min-width:0;min-height:0}.app-main:has(.pj-layout){overflow:hidden}.app-main:has(.designer-page){padding:0;overflow:hidden}.app-shell:has(.designer-page){height:100vh;max-height:100vh}.app-shell:has(.bit-page){height:100vh;max-height:100vh}.menu-config-tabs{display:flex;gap:0;margin-bottom:1rem;border-bottom:2px solid var(--color-border)}.tab-btn{padding:.6rem 1.5rem;border:none;background:none;font-size:.9rem;font-weight:500;color:var(--color-text-muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .15s}.tab-btn:hover{color:var(--color-text)}.tab-btn.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.menu-config-layout{display:flex;gap:1.5rem;align-items:flex-start}.menu-config-list{flex:1;min-width:0}.menu-config-list-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.menu-config-list-header h3{margin:0;font-size:1rem}.mc-tree{border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden}.mc-row{display:flex;align-items:center;gap:.25rem;padding:.5rem .75rem;border-bottom:1px solid var(--color-border);transition:background .12s;cursor:grab;-webkit-user-select:none;user-select:none}.mc-row:last-child{border-bottom:none}.mc-row:hover{background:var(--color-bg)}.mc-row.mc-editing{background:#eff6ff}.mc-row.mc-inactive{opacity:.45}.mc-row.mc-drop-above{box-shadow:inset 0 2px 0 var(--color-primary)}.mc-row.mc-drop-below{box-shadow:inset 0 -2px 0 var(--color-primary)}.mc-row.mc-drop-inside{background:#eff6ff;box-shadow:inset 0 0 0 2px var(--color-primary);border-radius:4px}.mc-drag-handle{color:var(--color-text-muted);cursor:grab;display:flex;align-items:center;flex-shrink:0}.mc-drag-handle:active{cursor:grabbing}.mc-row.mc-level-0{font-weight:600;background:var(--color-surface)}.mc-row.mc-level-0:hover{background:var(--color-bg)}.mc-expand{width:20px;display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;color:var(--color-text-muted)}.mc-expand-empty{cursor:default}.mc-row.mc-level-1{font-weight:400;padding-left:1rem;background:#00000003}.mc-row.mc-level-1:hover{background:var(--color-bg)}.mc-tree-indent{width:24px;display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative}.mc-tree-line{position:relative;width:12px;height:100%}.mc-tree-line:before{content:"";position:absolute;left:0;top:-50%;bottom:50%;width:1px;background:var(--color-border)}.mc-tree-line:after{content:"";position:absolute;left:0;top:50%;width:12px;height:1px;background:var(--color-border);transform:translateY(-50%)}.mc-row.mc-last-child .mc-tree-line:before{bottom:50%}.mc-label{flex:1;min-width:0;font-size:.875rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mc-icon-col{display:flex;align-items:center;gap:.35rem;width:130px;flex-shrink:0;font-size:.8rem;color:var(--color-text-muted)}.mc-icon-name{font-size:.75rem}.mc-icon-none{font-size:.75rem;color:var(--color-text-muted);opacity:.4}.mc-route-col{width:180px;flex-shrink:0;font-size:.75rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mc-route-badge{background:var(--color-bg);color:var(--color-text-muted);padding:.1rem .4rem;border-radius:3px;font-family:SF Mono,Consolas,monospace;font-size:.7rem}.mc-actions{display:flex;gap:.25rem;flex-shrink:0;opacity:0;transition:opacity .15s}.mc-row:hover .mc-actions{opacity:1}.btn-icon{width:28px;height:28px;border:1px solid var(--color-border);background:var(--color-surface);border-radius:var(--radius);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:.8rem;color:var(--color-text-muted);transition:all .15s}.btn-icon:hover{background:var(--color-bg);color:var(--color-text)}.btn-icon:disabled{opacity:.3;cursor:default}.btn-icon.danger:hover{background:#fef2f2;color:var(--color-error);border-color:var(--color-error)}.menu-config-editor{width:320px;min-width:320px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.25rem}.menu-config-editor h3{margin:0 0 1rem;font-size:1rem}.badge-muted{font-size:.7rem;background:var(--color-bg);color:var(--color-text-muted);padding:.1rem .4rem;border-radius:3px}.table-container{overflow-x:auto}.data-table{width:100%;border-collapse:collapse;background:var(--color-surface);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.data-table th{text-align:left;padding:.1rem .75rem .2rem;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#64748b;background:#f8fafc;border-bottom:1px solid var(--color-border);white-space:nowrap;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.data-table td{padding:.4rem .75rem;font-size:.8rem;line-height:1.4;color:#1e293b;border-bottom:1px solid #f1f5f9;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.data-table tr:last-child td{border-bottom:none}.data-table tr:hover td{background:#f8fafc}.data-table td a{color:var(--color-primary);text-decoration:none;font-weight:500}.data-table td a:hover{text-decoration:underline}.data-table td .btn+.btn{margin-left:.25rem}.icon-action{cursor:pointer;color:var(--color-text-muted);display:inline-flex;align-items:center;padding:5px;border-radius:6px;transition:color .15s,background .15s;text-decoration:none}.icon-action:hover{color:var(--color-primary);background:#3b82f614}.icon-action.danger:hover{color:var(--color-danger, #ef4444);background:#ef444414}.icon-action.success:hover{color:var(--color-success, #22c55e);background:#22c55e14}.empty-state{text-align:center;color:var(--color-text-muted);padding:2rem!important}.pagination{display:flex;align-items:center;justify-content:space-between;padding:.75rem 0;border-top:1px solid var(--color-border);margin-top:.5rem;font-size:.875rem;flex-wrap:wrap;gap:.75rem}.pagination-info{color:var(--color-text-muted)}.pagination-controls{display:flex;align-items:center;gap:.25rem}.pagination-controls .btn{min-width:2rem;text-align:center}.pagination-page{padding:0 .75rem;font-weight:500;white-space:nowrap}.pagination-size{display:flex;align-items:center;gap:.5rem}.pagination-size label{display:flex;align-items:center;gap:.375rem;color:var(--color-text-muted)}.pagination-size select{padding:.25rem .5rem;border:1px solid var(--color-border);border-radius:.25rem;font-size:.8125rem;background:#fff}.search-bar{display:flex;gap:.75rem;margin-bottom:1.5rem}.search-bar input{flex:1}.badge{display:inline-block;padding:.125rem .5rem;border-radius:999px;font-size:.75rem;font-weight:500;background:#e2e8f0;color:var(--color-text);white-space:nowrap}.badge-success{background:#dcfce7;color:#15803d}.badge-danger{background:#fee2e2;color:#b91c1c}.badge-warning{background:#fef3c7;color:#b45309}.badge-info{background:#cffafe;color:#0e7490}.alert{padding:.75rem 1rem;border-radius:var(--radius);margin-bottom:1rem;font-size:.875rem}.alert-error{background:#fee2e2;color:#b91c1c;border:1px solid #fecaca}.alert-success{background:#dcfce7;color:#15803d;border:1px solid #bbf7d0}.detail-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.5rem;margin-bottom:2rem}.detail-section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.25rem}.detail-section h3{font-size:.875rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid var(--color-border)}.detail-list{display:grid;grid-template-columns:auto 1fr;gap:.375rem 1rem}.detail-list dt{font-size:.8125rem;color:var(--color-text-muted);font-weight:500}.detail-list dd{font-size:.875rem}.section{margin-bottom:2rem}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.section-header h3{font-size:1.125rem;font-weight:600}.loading{text-align:center;padding:3rem;color:var(--color-text-muted);font-size:.875rem}.attachment-list{list-style:none;padding:0;margin:.25rem 0 .5rem}.attachment-list li{display:flex;align-items:center;gap:.5rem;padding:.25rem 0;font-size:.85rem}.attachment-list.pending li{color:var(--color-text-muted);font-style:italic}.btn-remove{background:none;border:none;color:#b91c1c;cursor:pointer;font-size:.75rem;padding:0 .25rem}.btn-remove:hover{color:#ef4444}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spin{animation:spin .8s linear infinite}.inline-form{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.5rem;margin-bottom:1.5rem}.inline-form h3{margin-bottom:1rem;font-size:1.125rem}.preview-banner{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;margin-bottom:1rem;background:#fef3cd;border:1px solid #ffc107;border-radius:var(--radius);font-size:.875rem;color:#664d03}.preview-banner-icon{font-size:1.25rem;flex-shrink:0}.act-toolbar{display:flex;flex-direction:column;gap:0;margin-bottom:.5rem;border:1px solid var(--color-border);border-radius:6px;background:var(--color-surface);flex-shrink:0}.act-toolbar-row{display:flex;align-items:center;gap:6px;padding:6px 8px}.act-toolbar-row--filters{border-top:1px solid var(--color-border);background:var(--color-bg)}.act-toolbar-toggle{display:flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;border:1px solid var(--color-border);border-radius:4px;background:var(--color-bg);color:var(--color-text-muted);cursor:pointer;flex-shrink:0;transition:all .15s}.act-toolbar-toggle:hover{border-color:var(--color-primary);color:var(--color-primary)}.act-filter-search{padding:0 8px;height:28px;border:1px solid var(--color-border);border-radius:4px;font-size:.78rem;flex:1 1 200px;min-width:120px;outline:none;transition:border-color .15s;box-sizing:border-box}.act-filter-search:focus{border-color:var(--color-primary)}.act-filter-search::placeholder{color:var(--color-text-muted);opacity:.7}.act-filter-select{min-width:100px;max-width:150px;flex-shrink:0}.act-filter-select .ss-trigger{padding:4px 6px;border-radius:4px;font-size:.78rem;min-height:unset}.act-filter-select:focus{border-color:var(--color-primary)}.act-filter-status{padding:0 8px;height:28px;border:1px solid var(--color-border);border-radius:4px;font-size:.78rem;width:120px;flex-shrink:0;background:var(--color-surface);color:var(--color-text);cursor:pointer;outline:none;box-sizing:border-box}.act-filter-status:focus{border-color:var(--color-primary)}.act-filter-clear{display:flex;align-items:center;gap:4px;padding:4px 10px;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-muted);border-radius:4px;cursor:pointer;font-size:.75rem;white-space:nowrap;transition:all .15s}.act-filter-clear:hover{background:var(--color-danger);color:#fff;border-color:var(--color-danger)}.act-action-btn{display:flex;align-items:center;gap:5px;padding:5px 12px;font-size:.78rem;font-weight:500;border-radius:6px;border:none;cursor:pointer;white-space:nowrap;transition:background .15s,color .15s,box-shadow .15s}.act-action-btn:hover{box-shadow:0 1px 4px #0000001f}.act-action-btn--danger{background:#fef2f2;color:#dc2626}.act-action-btn--danger:hover{background:#dc2626;color:#fff}.act-action-btn--primary{background:#eff6ff;color:#2563eb}.act-action-btn--primary:hover{background:#2563eb;color:#fff}.act-action-btn--schedule{background:#f0fdf4;color:#16a34a}.act-action-btn--schedule:hover{background:#16a34a;color:#fff}.act-action-btn--warn{background:#fffbeb;color:#d97706}.act-action-btn--warn:hover,.act-action-btn--warn.act-action-btn--active{background:#d97706;color:#fff}.act-unanchored-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:#dc2626;color:#fff;font-size:.7rem;font-weight:600;margin-left:2px}.hp-overlay{position:fixed;inset:0;background:#0006;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:1000;display:flex;align-items:center;justify-content:center;animation:hp-fade-in .15s ease-out}@keyframes hp-fade-in{0%{opacity:0}to{opacity:1}}@keyframes hp-slide-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.hp-dialog{background:var(--color-surface, #fff);border-radius:12px;width:90%;box-shadow:0 20px 60px #00000026,0 0 0 1px #0000000d;animation:hp-slide-up .2s ease-out}.hp-dialog--raise{max-width:600px}.hp-dialog--clear{max-width:440px}.hp-dialog-header{display:flex;align-items:center;gap:.6rem;padding:1.25rem 1.5rem;border-bottom:1px solid var(--color-border);border-radius:12px 12px 0 0}.hp-dialog-header-icon{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:10px;flex-shrink:0}.hp-dialog-header-icon--raise{background:#fef2f2;color:#dc2626}.hp-dialog-header-icon--clear{background:#f0fdf4;color:#16a34a}.hp-dialog-header h3{margin:0;font-size:1.05rem;font-weight:600;color:var(--color-text)}.hp-dialog-header p{margin:.15rem 0 0;font-size:.78rem;color:var(--color-text-muted)}.hp-dialog-body{padding:1.25rem 1.5rem;display:flex;flex-direction:column;gap:1rem}.hp-field-row{display:grid;gap:.75rem}.hp-field-row--2{grid-template-columns:1fr 1fr}.hp-field-row--3{grid-template-columns:repeat(3,minmax(0,1fr))}.hp-field label{display:block;font-size:.78rem;font-weight:500;color:var(--color-text-muted);margin-bottom:.35rem;letter-spacing:.01em}.hp-field select,.hp-field textarea,.hp-field input{width:100%;padding:.5rem .65rem;border-radius:var(--radius);border:1px solid var(--color-border);font-size:.85rem;color:var(--color-text);background:var(--color-surface, #fff);transition:border-color .15s,box-shadow .15s}.hp-field select:focus,.hp-field textarea:focus,.hp-field input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #2563eb1a}.hp-field textarea{min-height:5rem;resize:vertical;line-height:1.5}.hp-dialog-footer{display:flex;align-items:center;justify-content:flex-end;gap:.5rem;padding:1rem 1.5rem;border-top:1px solid var(--color-border);background:var(--color-bg);border-radius:0 0 12px 12px}.hp-scope-section{background:var(--color-bg);border-radius:var(--radius);padding:.75rem;border:1px solid var(--color-border)}.hp-scope-title{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);margin-bottom:.5rem}.btn-danger-outline{background:transparent;color:var(--color-danger, #dc2626);border:1px solid var(--color-danger, #dc2626);border-radius:4px;cursor:pointer;font-size:inherit;padding:.25rem .5rem;transition:background .15s,color .15s}.btn-danger-outline:hover{background:var(--color-danger, #dc2626);color:#fff}.user-avatar-sm{width:32px;height:32px;border-radius:50%;background:var(--color-primary);color:#fff;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:600;flex-shrink:0}.loading-text{font-size:.8125rem;color:var(--color-text-muted)}.row-selected{background:var(--color-primary-bg, #eff6ff)!important}.data-table tbody tr.row-selected td{border-bottom-color:var(--color-primary, #3b82f6)}.rd-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 0;border-bottom:1px solid var(--color-border);margin-bottom:0;flex-shrink:0}.rd-header-left{display:flex;align-items:center;gap:.75rem}.rd-header-left h2{font-size:1.25rem;font-weight:600;margin:0}.rd-header-left .back-link{font-size:.8125rem}.setup-btn{display:flex;align-items:center;gap:.35rem;cursor:pointer;border:none;background:none}.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--color-bg)}.login-card{background:var(--color-surface);padding:2rem;border-radius:8px;box-shadow:var(--shadow-md);width:100%;max-width:400px}.login-card h2{margin-bottom:1.5rem;text-align:center}.page{padding:1rem 0}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem;padding:0 .5rem}.page-header h2{font-size:1.25rem;font-weight:600}.back-link{color:var(--color-text-muted);text-decoration:none;font-size:.8rem;display:block;margin-bottom:.15rem}.back-link:hover{color:var(--color-primary)}.pd-header{margin-bottom:0}.pd-header-top{display:flex;align-items:baseline;gap:.35rem;margin-bottom:.35rem;flex-wrap:wrap}.pd-back{color:var(--color-text-muted);text-decoration:none;font-size:.8rem;font-weight:500;transition:color .15s}.pd-back:hover{color:var(--color-primary)}.pd-sep{color:var(--color-border);font-size:.8rem}.pd-title{margin:0;font-size:1.1rem;font-weight:600;line-height:1.2}.pd-desc{color:var(--color-text-muted);font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:400px}.pd-tabs{display:flex;gap:0;border-bottom:2px solid var(--color-border);margin-bottom:.5rem}.btn{display:inline-flex;align-items:center;padding:.5rem 1rem;border:1px solid transparent;border-radius:var(--radius);font-size:.875rem;font-weight:500;cursor:pointer;text-decoration:none;transition:all .15s;gap:.375rem}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-secondary{background:#f1f5f9;color:var(--color-text);border-color:var(--color-border)}.btn-secondary:hover:not(:disabled){background:#e2e8f0}.btn-success{background:var(--color-success);color:#fff}.btn-success:hover:not(:disabled){background:var(--color-success-hover)}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover:not(:disabled){background:var(--color-danger-hover)}.btn-outline{background:transparent;color:var(--color-text);border-color:var(--color-border)}.btn-outline:hover:not(:disabled){background:var(--color-bg)}.btn-sm{padding:.25rem .5rem;font-size:.8125rem;white-space:nowrap}.btn-xs{font-size:.7rem;padding:.15rem .5rem}.btn-link{background:none;border:none;padding:0;color:var(--color-primary);font-size:inherit;cursor:pointer;text-decoration:none}.btn-link:hover{text-decoration:underline}.action-buttons{display:flex;gap:.5rem}.form-group{margin-bottom:1rem}.form-group label{display:block;font-size:.875rem;font-weight:500;margin-bottom:.25rem;color:var(--color-text)}.form-group.label-left{display:flex;align-items:flex-start;gap:.75rem}.form-group.label-left>label{flex-shrink:0;width:140px;text-align:right;padding-top:.5rem;margin-bottom:0}.form-group.label-left>input,.form-group.label-left>select,.form-group.label-left>textarea,.form-group.label-left>div{flex:1;min-width:0}.form-hint{display:block;font-size:.7rem;color:var(--color-text-muted);margin-top:.25rem}.required{color:var(--color-danger)}input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],select,textarea{width:100%;padding:.5rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.875rem;color:var(--color-text);background:var(--color-surface);transition:border-color .15s}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #2563eb1a}input:disabled,select:disabled,textarea:disabled{background:#f1f5f9;cursor:not-allowed}.input-sm{padding:2px 6px!important;font-size:.75rem!important;width:auto!important;border:none!important;border-radius:0!important;background:transparent!important}.input-sm:focus{box-shadow:none!important}.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:0 1.5rem}.form-group-full{grid-column:1 / -1}.form-spacer{min-height:1px}.form-row{display:flex;gap:1rem;flex-wrap:wrap}.form-row .form-group{flex:1;min-width:200px}.form-actions{display:flex;gap:.75rem;margin-top:1.5rem}.modal-overlay{position:fixed;inset:0;z-index:1000;background:#00000073;display:flex;align-items:center;justify-content:center;padding:2rem;animation:fadeIn .15s ease-out}.modal-dialog{background:var(--color-surface, #fff);border-radius:12px;box-shadow:0 8px 32px #0000002e;width:100%;max-width:520px;max-height:90vh;display:flex;flex-direction:column;animation:slideUp .2s ease-out}.modal-dialog.modal-lg{max-width:720px}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--color-border);flex-shrink:0}.modal-header h3{margin:0;font-size:1.05rem;font-weight:600}.modal-close{background:none;border:none;cursor:pointer;padding:.25rem;color:var(--color-text-muted);font-size:1.2rem;line-height:1;border-radius:4px;transition:background .15s}.modal-close:hover{background:var(--color-bg)}.modal-body{padding:1.25rem;overflow-y:auto;flex:1}.modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:.5rem;padding:.75rem 1.25rem;border-top:1px solid var(--color-border);flex-shrink:0}.info-grid{display:grid;grid-template-columns:120px 1fr;gap:.4rem 1rem;font-size:.875rem;background:var(--color-bg-muted, #f8fafc);border-radius:var(--radius);padding:.75rem 1rem}.info-grid .detail-label{font-weight:500;color:var(--color-text-muted)}.activity-context-banner{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.5rem .75rem;margin-bottom:.75rem;background:#eff6ff;border:1px solid #bfdbfe;border-radius:var(--radius);font-size:.825rem}.activity-context-label{font-weight:500;color:#1e40af}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:.6rem 1rem}.form-grid .form-group{margin-bottom:0}.form-grid .form-group.full-width{grid-column:1 / -1}@media(max-width:600px){.form-grid{grid-template-columns:1fr}}@media(max-width:768px){.roles-layout,.roles-layout--full{flex-direction:column;height:auto}.roles-sidebar{width:100%;min-width:0;border-right:none;border-bottom:1px solid var(--color-border);max-height:220px}.obs-layout{flex-direction:column;height:auto}.obs-tree{width:100%;min-width:0;border-right:none;border-bottom:1px solid var(--color-border);max-height:250px}.form-grid{grid-template-columns:1fr}.modal-dialog{max-width:100%;margin:.5rem}}
