@import "https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800&family=IBM+Plex+Mono:wght@400;500;600&display=swap";:root{--primary-hue:215;--primary:hsl(var(--primary-hue), 85%, 52%);--primary-hover:hsl(var(--primary-hue), 85%, 45%);--primary-light:hsl(var(--primary-hue), 80%, 96%);--primary-glow:hsla(var(--primary-hue), 85%, 52%, .15);--bg:#f8f9fc;--surface:#fff;--surface-header:#f9fafb;--text-main:#030711;--text-muted:#6b7280;--border:#e5e7eb;--border-focus:hsl(var(--primary-hue), 80%, 75%);--success:#0fae5e;--success-bg:#e8fcf2;--warning:#f5930a;--warning-bg:#fff7eb;--danger:#f43e5c;--danger-bg:#ffebee;--term-bg:#030711;--term-border:#0c1631;--term-text:#e0e4eb;--term-ok:#8cf2b7;--term-warn:#f7d56e;--term-err:#fa9ea6;--term-act:#9ed4fa;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--shadow:0 4px 20px -2px #0a19320a, 0 2px 8px -1px #0a193205;--shadow-lg:0 20px 40px -4px #0a19321f, 0 8px 16px -2px #0a19320f;--transition:all .2s cubic-bezier(.16, 1, .3, 1)}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg);color:var(--text-main);-webkit-font-smoothing:antialiased;height:100vh;font-family:Outfit,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5;overflow:hidden}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#c7cad1;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#abb0ba}button,.btn{border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition);border:1px solid #0000;align-items:center;gap:8px;padding:8px 16px;font-family:inherit;font-size:.875rem;font-weight:600;display:inline-flex}button:focus-visible{outline:2px solid var(--primary);outline-offset:2px}button:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:linear-gradient(135deg, var(--primary), hsl(var(--primary-hue), 85%, 46%));color:#fff;box-shadow:0 4px 12px hsla(var(--primary-hue), 85%, 52%, .2)}.btn-primary:hover:not(:disabled){box-shadow:0 6px 16px hsla(var(--primary-hue), 85%, 52%, .3);transform:translateY(-1px)}.btn-primary:active:not(:disabled){transform:translateY(0)}.btn-outline{background:var(--surface);border:1px solid var(--border);color:var(--text-main)}.btn-outline:hover:not(:disabled){background:var(--bg);border-color:#9da3af}.btn-ghost{color:var(--text-muted);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--primary-light);color:var(--primary)}.btn-danger{background:var(--danger-bg);color:var(--danger);border:1px solid #f43e5c33}.btn-danger:hover:not(:disabled){background:var(--danger);color:#fff}.navbar{background:var(--surface);border-bottom:1px solid var(--border);z-index:100;height:64px;box-shadow:var(--shadow);justify-content:space-between;align-items:center;padding:0 24px;display:flex}.nav-logo{background:linear-gradient(135deg, var(--primary), hsl(var(--primary-hue), 90%, 35%));-webkit-text-fill-color:transparent;letter-spacing:-.5px;-webkit-background-clip:text;font-size:1.3rem;font-weight:800}.nav-logo-badge{background:var(--primary-light);color:var(--primary);vertical-align:middle;border-radius:4px;margin-left:6px;padding:2px 6px;font-size:.65rem;font-weight:700}.app-container{background:var(--bg);flex-direction:column;height:100vh;display:flex}.workspace-shell{flex:1;height:calc(100vh - 64px);display:flex;overflow:hidden}.main-content{flex-direction:column;flex:1;gap:20px;min-width:0;padding:20px;display:flex;overflow:hidden}.ribbon-container{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow);flex-direction:column;display:flex;overflow:hidden}.ribbon-tabs{background:var(--surface-header);border-bottom:1px solid var(--border);padding:0 8px;display:flex}.ribbon-tab-btn{color:var(--text-muted);background:0 0;border-bottom:2px solid #0000;border-radius:0;gap:4px;padding:12px 20px;font-size:.85rem;font-weight:600}.ribbon-tab-btn:hover{color:var(--text-main)}.ribbon-tab-btn.active{color:var(--primary);border-bottom-color:var(--primary)}.ribbon-panel{flex-wrap:wrap;align-items:center;gap:12px;padding:12px 16px;display:none}.ribbon-panel.active{display:flex}.ribbon-divider{background:var(--border);width:1px;height:28px}.grid-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow);flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.grid-card-header{border-bottom:1px solid var(--border);background:var(--surface-header);justify-content:space-between;align-items:center;padding:14px 20px;display:flex}.grid-title-container{align-items:center;gap:10px;display:flex}.grid-title{color:var(--text-main);font-size:1rem;font-weight:700}.grid-badge{color:var(--text-muted);background:#e3e5e8;border-radius:20px;padding:2px 8px;font-size:.75rem;font-weight:600}.table-container{flex:1;min-height:0;position:relative;overflow:auto}table.data-grid-table{border-collapse:separate;border-spacing:0;width:100%;font-size:.8rem}table.data-grid-table th{background:var(--surface-header);color:var(--text-main);border-bottom:2px solid var(--border);border-right:1px solid var(--border);z-index:10;text-align:left;-webkit-user-select:none;user-select:none;min-width:165px;padding:6px 10px;font-weight:600;position:sticky;top:0}table.data-grid-table th.index-header{text-align:center;z-index:15;border-right:2px solid var(--border);width:50px;min-width:50px;left:0}table.data-grid-table td.row-num-cell{background:var(--surface-header);color:var(--text-muted);text-align:center;border-right:2px solid var(--border);z-index:5;font-family:IBM Plex Mono,monospace;font-weight:600;position:sticky;left:0}table.data-grid-table td{border-bottom:1px solid var(--border);border-right:1px solid var(--border);white-space:nowrap;text-overflow:ellipsis;background:var(--surface);max-width:250px;color:var(--text-main);padding:8px 14px;font-family:IBM Plex Mono,monospace;font-size:.75rem;overflow:hidden}table.data-grid-table tr:hover td{background-color:var(--primary-light)}table.data-grid-table th.selected-col,table.data-grid-table td.selected-col{background-color:hsl(var(--primary-hue), 70%, 94%)!important}table.data-grid-table th.ignored-col,table.data-grid-table td.ignored-col{opacity:.45;filter:grayscale(80%);background:#eeeff1!important}table.data-grid-table th.deleted-col,table.data-grid-table td.deleted-col{color:var(--danger);opacity:.6;text-decoration:line-through;background-color:var(--danger-bg)!important}.col-header-inner{flex-direction:column;gap:4px;display:flex}.col-header-top-row{align-items:center;gap:6px;width:100%;display:flex}.col-letter-badge{background:var(--bg);border:1px solid var(--border);color:var(--text-muted);border-radius:3px;justify-content:center;align-items:center;min-width:18px;height:18px;padding:1px 5px;font-size:.65rem;font-weight:700;line-height:1;display:inline-flex}.col-name-input{color:var(--text-main);background:0 0;border:1px solid #0000;border-radius:4px;outline:none;flex:1;min-width:0;padding:1px 4px;font-family:inherit;font-size:.8rem;font-weight:700}.col-name-input:focus{border-color:var(--border-focus);background:var(--surface);box-shadow:0 0 0 3px var(--primary-glow)}.col-header-bottom-row{align-items:center;gap:6px;width:100%;display:flex}.col-map-select{border:1px solid var(--border);background:var(--surface);border-radius:4px;outline:none;flex:1;min-width:0;height:22px;padding:2px 4px;font-size:.7rem;font-weight:500}.col-map-select:focus{border-color:var(--primary)}.col-header-actions{align-items:center;gap:4px;display:flex}.col-badge-delete{background:var(--danger);color:#fff;border-radius:2px;padding:2px 4px;font-size:.55rem;font-weight:800;line-height:1}.col-btn-icon-compact{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:3px;justify-content:center;align-items:center;width:20px;height:20px;padding:2px;font-size:.75rem;display:flex}.col-btn-icon-compact:hover{color:var(--text-main);background:#e3e5e8}.dashboard-grid{grid-template-columns:1fr 1.2fr;gap:20px;height:280px;min-height:280px;display:grid}.dashboard-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow);flex-direction:column;display:flex;overflow:hidden}.dashboard-card-header{background:var(--term-bg);border-bottom:1px solid var(--term-border);justify-content:space-between;align-items:center;padding:10px 16px;display:flex}.dashboard-card-title{color:var(--term-text);align-items:center;gap:8px;font-family:IBM Plex Mono,monospace;font-size:.85rem;font-weight:700;display:flex}.dashboard-tabs{gap:4px;display:flex}.dashboard-tab-btn{color:#9096a2;background:0 0;border:none;border-radius:4px;padding:6px 12px;font-family:IBM Plex Mono,monospace;font-size:.75rem;font-weight:600}.dashboard-tab-btn.active{color:var(--primary);background:#07112c}.console-terminal{background:var(--term-bg);color:var(--term-text);flex:1;padding:12px 16px;font-family:IBM Plex Mono,monospace;font-size:.75rem;line-height:1.6;overflow-y:auto}.console-line{border-bottom:1px dashed #e0e4eb0d;align-items:flex-start;padding:4px 0;display:flex}.console-time{color:#5d636f;white-space:nowrap;margin-right:12px}.console-tag{white-space:nowrap;margin-right:8px;font-weight:700}.tag-sys{color:var(--term-act)}.tag-err{color:var(--term-err)}.tag-warn{color:var(--term-warn)}.tag-ok{color:var(--term-ok)}.tag-info{color:#c7cad1}.console-msg{word-break:break-all;flex:1}.console-undo-btn{color:var(--term-text);cursor:pointer;background:#ffffff1a;border:none;border-radius:4px;margin-left:12px;padding:2px 6px;font-size:.65rem}.console-undo-btn:hover{background:var(--danger);color:#fff}.sidebar-panel{background:var(--surface);border-left:1px solid var(--border);flex-direction:column;width:320px;min-width:320px;display:flex;overflow:hidden}.sidebar-header{border-bottom:1px solid var(--border);background:var(--surface-header);padding:18px 20px}.sidebar-title{color:var(--text-main);align-items:center;gap:8px;font-size:.95rem;font-weight:700;display:flex}.sidebar-body{flex-direction:column;flex:1;gap:20px;padding:20px;display:flex;overflow-y:auto}.rec-card{background:var(--primary-light);border:1px solid hsla(var(--primary-hue), 85%, 52%, .15);border-radius:var(--radius-md);transition:var(--transition);flex-direction:column;gap:10px;padding:14px;display:flex}.rec-card:hover{border-color:var(--primary);box-shadow:var(--shadow);transform:translateY(-1px)}.rec-tag-row{justify-content:space-between;align-items:center;display:flex}.rec-tag{text-transform:uppercase;background:var(--primary);color:#fff;border-radius:4px;padding:2px 6px;font-size:.65rem;font-weight:700}.rec-tag.warn{background:var(--warning)}.rec-title{color:var(--text-main);font-size:.85rem;font-weight:700}.rec-desc{color:var(--text-muted);font-size:.75rem;line-height:1.4}.progress-list{flex-direction:column;gap:12px;display:flex}.progress-item{flex-direction:column;gap:6px;display:flex}.progress-labels{justify-content:space-between;font-size:.75rem;font-weight:600;display:flex}.progress-rule-name{color:var(--text-main)}.progress-percent{color:var(--primary)}.progress-bar-bg{background:#e3e5e8;border-radius:4px;height:6px;overflow:hidden}.progress-bar-fill{background:linear-gradient(90deg, var(--primary), var(--primary-glow));border-radius:4px;height:100%;transition:width .4s}.welcome-overlay{z-index:1000;background:linear-gradient(135deg,#0c121d,#172136);justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.welcome-card{border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);text-align:center;background:#fffffffa;flex-direction:column;gap:28px;width:100%;max-width:500px;padding:40px;animation:.3s cubic-bezier(.34,1.56,.64,1) modalSlide;display:flex}.welcome-logo{background:linear-gradient(135deg, var(--primary), hsl(var(--primary-hue), 85%, 35%));-webkit-text-fill-color:transparent;letter-spacing:-1px;-webkit-background-clip:text;font-size:2.2rem;font-weight:800}.welcome-subtitle{color:var(--text-muted);margin-top:-16px;font-size:.95rem}.scope-options-grid{grid-template-columns:1fr 1fr;gap:16px;display:grid}.scope-option-card{background:var(--surface);border:2px solid var(--border);border-radius:var(--radius-md);cursor:pointer;transition:var(--transition);flex-direction:column;align-items:center;gap:8px;padding:20px 16px;display:flex}.scope-option-card:hover{border-color:var(--primary);background:var(--primary-light)}.scope-option-card.active{border-color:var(--primary);background:var(--primary-light);box-shadow:0 0 0 3px var(--primary-glow)}.scope-option-title{font-size:.95rem;font-weight:700}.scope-option-desc{color:var(--text-muted);font-size:.7rem;line-height:1.4}.file-drop-zone{border:2px dashed var(--border);border-radius:var(--radius-md);background:var(--bg);cursor:pointer;transition:var(--transition);flex-direction:column;align-items:center;gap:10px;padding:30px 20px;display:flex}.file-drop-zone:hover{border-color:var(--primary);background:var(--primary-light)}.file-drop-icon{font-size:2rem}.file-drop-text{font-size:.85rem;font-weight:600}.file-drop-subtext{color:var(--text-muted);font-size:.7rem}.dialog-modal{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:500;background:#0f172a73;justify-content:center;align-items:center;padding:20px;animation:.15s ease-out fadeIn;display:flex;position:fixed;inset:0}.modal-content-card{background:var(--surface);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);width:100%;max-width:480px;animation:.2s cubic-bezier(.16,1,.3,1) modalScale;overflow:hidden}.modal-header{background:var(--surface-header);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.modal-title{color:var(--text-main);font-size:1rem;font-weight:700}.modal-body{flex-direction:column;gap:16px;padding:20px;display:flex}.modal-footer{background:var(--surface-header);border-top:1px solid var(--border);justify-content:flex-end;gap:10px;padding:14px 20px;display:flex}.form-group{flex-direction:column;gap:6px;display:flex}.form-group label{color:var(--text-main);font-size:.8rem;font-weight:600}.form-group input[type=text],.form-group select{border-radius:var(--radius-sm);border:1px solid var(--border);transition:var(--transition);outline:none;padding:8px 12px;font-family:inherit;font-size:.85rem}.form-group input[type=text]:focus,.form-group select:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-glow)}.checkbox-label{cursor:pointer;align-items:center;gap:8px;margin-top:6px;font-size:.8rem;font-weight:600;display:inline-flex}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes modalSlide{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes modalScale{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-spin{animation:1s linear infinite spin}
