.layout{display:flex;min-height:100vh}.sidebar{width:240px;background:var(--bg-secondary);border-right:1px solid var(--border-color);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:100}.sidebar-header{padding:1.5rem;border-bottom:1px solid var(--border-color)}.logo{display:flex;align-items:center;gap:.75rem}.logo-icon{font-size:1.5rem}.logo-text{font-size:1.25rem;font-weight:600;background:linear-gradient(135deg,var(--accent-primary),var(--accent-secondary));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.nav{flex:1;padding:1rem;display:flex;flex-direction:column;gap:.25rem;overflow-y:auto}.nav-item{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;border-radius:8px;color:var(--text-secondary);transition:all var(--transition-fast);font-size:.9rem}.nav-item:hover{background:var(--bg-hover);color:var(--text-primary)}.nav-item.active{background:var(--accent-glow);color:var(--accent-primary);border:1px solid rgba(34,211,238,.2)}.nav-icon{font-size:1.1rem}.nav-section{margin-top:1.5rem;padding:0 1rem}.nav-section-title{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--accent-primary);padding-bottom:.5rem;display:block;border-bottom:1px solid var(--border-color);margin-bottom:.5rem}.sidebar-footer{padding:1rem;border-top:1px solid var(--border-color)}.logout-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.75rem;background:transparent;border:1px solid var(--border-color);border-radius:8px;color:var(--text-secondary);font-size:.9rem;transition:all var(--transition-fast)}.logout-btn:hover{background:#ef44441a;border-color:var(--error);color:var(--error)}.main{flex:1;margin-left:240px;display:flex;flex-direction:column;min-height:100vh}.topbar{height:60px;padding:0 2rem;display:flex;align-items:center;justify-content:space-between;background:var(--bg-secondary);border-bottom:1px solid var(--border-color);position:sticky;top:0;z-index:50}.page-title{font-size:1.25rem;font-weight:500;color:var(--text-primary)}.topbar-actions{display:flex;gap:1rem}.topbar-link{padding:.5rem 1rem;background:var(--bg-tertiary);border-radius:6px;font-size:.85rem;color:var(--text-secondary);transition:all var(--transition-fast)}.topbar-link:hover{background:var(--bg-hover);color:var(--accent-primary)}.content{flex:1;padding:2rem;animation:fadeIn .3s ease}@media(max-width:768px){.sidebar{width:60px}.logo-text,.nav-label{display:none}.main{margin-left:60px}.sidebar-footer span:last-child{display:none}}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2rem;position:relative;overflow:hidden}.login-bg{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}.login-bg-pattern{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at 30% 20%,rgba(34,211,238,.1) 0%,transparent 50%),radial-gradient(ellipse at 70% 80%,rgba(6,182,212,.08) 0%,transparent 50%),linear-gradient(180deg,var(--bg-primary) 0%,var(--bg-secondary) 100%)}.login-card{width:100%;max-width:400px;padding:2.5rem;background:var(--bg-card);border:1px solid var(--border-color);border-radius:16px;box-shadow:var(--shadow-lg),var(--shadow-glow);position:relative;z-index:1;animation:fadeIn .5s ease}.login-header{text-align:center;margin-bottom:2rem}.login-logo{font-size:3rem;display:block;margin-bottom:1rem}.login-header h1{font-size:1.75rem;font-weight:600;background:linear-gradient(135deg,var(--accent-primary),var(--accent-secondary));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:.5rem}.login-header p{color:var(--text-secondary);font-size:.9rem}.login-form{display:flex;flex-direction:column;gap:1.25rem}.login-error{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:8px;color:var(--error);font-size:.9rem}.form-group label{font-size:.85rem;font-weight:500;color:var(--text-secondary)}.form-group input{padding:.875rem 1rem;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:8px;color:var(--text-primary);font-size:.95rem;transition:all var(--transition-fast)}.form-group input:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 3px var(--accent-glow)}.form-group input::placeholder{color:var(--text-muted)}.login-btn{padding:.875rem;background:linear-gradient(135deg,var(--accent-primary),var(--accent-secondary));border:none;border-radius:8px;color:var(--bg-primary);font-size:1rem;font-weight:600;transition:all var(--transition-fast);display:flex;align-items:center;justify-content:center;gap:.5rem}.login-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 12px #22d3ee4d}.login-btn:disabled{opacity:.7;cursor:not-allowed}.spinner{width:20px;height:20px;border:2px solid var(--bg-primary);border-top-color:transparent;border-radius:50%;animation:spin .8s linear infinite}.login-footer{text-align:center;margin-top:1.5rem;font-size:.8rem;color:var(--text-muted)}.dashboard{display:flex;flex-direction:column;gap:2rem}.dashboard-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem;gap:1rem;color:var(--text-secondary)}.spinner-lg{width:48px;height:48px;border:3px solid var(--border-color);border-top-color:var(--accent-primary);border-radius:50%;animation:spin 1s linear infinite}.dashboard-error{display:flex;align-items:center;gap:.5rem;padding:1rem 1.5rem;background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:8px;color:var(--error)}.dashboard-section{animation:fadeIn .3s ease}.section-title{font-size:1rem;font-weight:500;color:var(--text-secondary);margin-bottom:1rem;display:flex;align-items:center;gap:.5rem}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.stat-card{display:flex;align-items:flex-start;gap:1rem;padding:1.25rem;background:var(--bg-card);border:1px solid var(--border-color);border-radius:12px;transition:all var(--transition-fast)}.stat-card:hover{border-color:var(--border-accent);transform:translateY(-2px);box-shadow:var(--shadow-md)}.stat-card-primary .stat-value{color:var(--accent-primary)}.stat-card-success .stat-value{color:var(--success)}.stat-card-warning .stat-value{color:var(--warning)}.stat-card-error .stat-value{color:var(--error)}.stat-icon{font-size:1.5rem;padding:.5rem;background:var(--bg-tertiary);border-radius:8px}.stat-content{display:flex;flex-direction:column}.stat-value{font-size:1.5rem;font-weight:600;font-family:var(--font-mono)}.stat-title{font-size:.85rem;color:var(--text-secondary)}.stat-subtitle{font-size:.75rem;color:var(--text-muted);margin-top:.25rem}.processes-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem}.process-card{padding:1rem;background:var(--bg-card);border:1px solid var(--border-color);border-radius:10px;transition:all var(--transition-fast)}.process-card:hover{border-color:var(--border-accent)}.process-card.process-online{border-left:3px solid var(--success)}.process-card.process-stopped{border-left:3px solid var(--error)}.process-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem;padding-bottom:.75rem;border-bottom:1px solid var(--border-color)}.process-name{font-weight:500;font-family:var(--font-mono)}.process-status{padding:.25rem .5rem;font-size:.75rem;font-weight:500;border-radius:4px;text-transform:uppercase}.status-online{background:#10b98126;color:var(--success)}.status-stopped,.status-errored{background:#ef444426;color:var(--error)}.status-launching,.status-stopping{background:#f59e0b26;color:var(--warning)}.process-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem}.process-stat{display:flex;flex-direction:column}.process-stat .label{font-size:.7rem;color:var(--text-muted);text-transform:uppercase}.process-stat .value{font-family:var(--font-mono);font-size:.9rem;color:var(--text-primary)}.wizard-container{display:flex;flex-direction:column;gap:2rem;max-width:800px;margin:0 auto}.wizard-progress{display:flex;gap:1rem;padding:1rem;background:var(--bg-secondary);border-radius:12px;border:1px solid var(--border-color);overflow-x:auto}.wizard-step-indicator{display:flex;align-items:center;gap:.75rem;padding:.5rem 1rem;border-radius:8px;cursor:default;opacity:.5;transition:all .2s ease;min-width:fit-content}.wizard-step-indicator.completed{opacity:1;cursor:pointer}.wizard-step-indicator.completed:hover{background:rgba(var(--accent-rgb),.1)}.wizard-step-indicator.active{opacity:1;background:rgba(var(--accent-rgb),.15);border:1px solid var(--accent-primary)}.step-number{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:var(--bg-tertiary);border-radius:50%;font-weight:600;font-size:.875rem;color:var(--text-secondary)}.wizard-step-indicator.completed .step-number{background:var(--success-color);color:#fff}.wizard-step-indicator.active .step-number{background:var(--accent-primary);color:#fff}.step-info{display:flex;flex-direction:column;gap:.125rem}.step-title{font-weight:500;font-size:.875rem;color:var(--text-primary)}.step-description{font-size:.75rem;color:var(--text-secondary)}.wizard-content{padding:2rem;background:var(--bg-secondary);border-radius:12px;border:1px solid var(--border-color);min-height:300px}.wizard-actions{display:flex;justify-content:space-between;align-items:center;padding-top:1rem;border-top:1px solid var(--border-color)}.wizard-nav{display:flex;gap:.75rem}.wizard-form{display:flex;flex-direction:column;gap:1.5rem}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-group label{font-weight:500;font-size:.875rem;color:var(--text-primary)}.form-group input,.form-group select,.form-group textarea{padding:.75rem 1rem;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:8px;font-size:.9375rem;color:var(--text-primary);transition:border-color .2s,box-shadow .2s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 3px rgba(var(--accent-rgb),.2)}.form-group input::placeholder{color:var(--text-secondary);opacity:.7}.form-group .hint{font-size:.75rem;color:var(--text-secondary)}.form-group .error{font-size:.75rem;color:var(--error-color)}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.select-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem}.select-card{padding:1.25rem;background:var(--bg-primary);border:2px solid var(--border-color);border-radius:12px;cursor:pointer;transition:all .2s ease;text-align:center}.select-card:hover{border-color:var(--accent-primary);background:rgba(var(--accent-rgb),.05)}.select-card.selected{border-color:var(--accent-primary);background:rgba(var(--accent-rgb),.1)}.select-card .icon{font-size:2rem;margin-bottom:.75rem}.select-card .title{font-weight:600;color:var(--text-primary);margin-bottom:.25rem}.select-card .description{font-size:.75rem;color:var(--text-secondary)}.checkbox-list{display:flex;flex-direction:column;gap:.5rem;max-height:300px;overflow-y:auto;padding:.5rem;background:var(--bg-primary);border-radius:8px;border:1px solid var(--border-color)}.checkbox-item{display:flex;align-items:center;gap:.75rem;padding:.5rem .75rem;border-radius:6px;cursor:pointer;transition:background .2s}.checkbox-item:hover{background:rgba(var(--accent-rgb),.05)}.checkbox-item input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent-primary)}.checkbox-item label{cursor:pointer;font-size:.9375rem}.test-result{padding:1rem;border-radius:8px;display:flex;align-items:center;gap:.75rem}.test-result.success{background:#4caf501a;border:1px solid rgba(76,175,80,.3);color:#4caf50}.test-result.error{background:#f443361a;border:1px solid rgba(244,67,54,.3);color:#f44336}.test-result .icon{font-size:1.5rem}.test-result .message{flex:1}.test-result .latency{font-size:.75rem;opacity:.8}.test-result-inline{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:8px;font-size:.875rem}.test-result-inline.success{background:#4caf501a;color:#4caf50}.test-result-inline.error{background:#f443361a;color:#f44336}.test-result-inline .latency{font-size:.75rem;opacity:.7}.api-key-display{padding:1.5rem;background:linear-gradient(135deg,rgba(var(--accent-rgb),.1),rgba(var(--accent-rgb),.05));border:2px dashed var(--accent-primary);border-radius:12px;text-align:center}.api-key-display .warning{font-size:.875rem;color:var(--warning-color);margin-bottom:1rem;display:flex;align-items:center;justify-content:center;gap:.5rem}.api-key-display .key{font-family:SF Mono,Consolas,monospace;font-size:1rem;word-break:break-all;padding:1rem;background:var(--bg-primary);border-radius:8px;color:var(--accent-primary);-webkit-user-select:all;user-select:all}.api-key-display .hint{margin-top:1rem;font-size:.75rem;color:var(--text-secondary)}.loading-spinner{width:18px;height:18px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite;display:inline-block}.column-types-list{display:flex;flex-direction:column;gap:.75rem;max-height:450px;overflow-y:auto}.table-section{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:10px;overflow:hidden}.table-header-btn{width:100%;display:flex;align-items:center;gap:.75rem;padding:.875rem 1rem;background:var(--bg-secondary);border:none;cursor:pointer;text-align:left;font-size:.9rem;color:var(--text-primary);transition:background .15s}.table-header-btn:hover{background:var(--bg-tertiary)}.table-header-btn .table-name{font-weight:600;font-family:JetBrains Mono,monospace;flex:1}.table-header-btn .column-count{font-size:.75rem;color:var(--text-muted);background:var(--bg-tertiary);padding:.25rem .5rem;border-radius:4px}.columns-grid{display:flex;flex-direction:column;padding:.5rem;gap:.375rem}.column-type-row{display:flex;align-items:center;gap:.75rem;padding:.5rem .75rem;background:var(--bg-secondary);border-radius:6px;transition:background .15s}.column-type-row:hover{background:var(--bg-tertiary)}.column-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:.125rem}.column-info .column-name{font-family:JetBrains Mono,monospace;font-size:.8rem;color:var(--text-primary);font-weight:500}.column-info .auto-detected{font-size:.7rem;color:var(--accent-primary);opacity:.8}.type-select{min-width:180px;padding:.375rem .5rem;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:6px;color:var(--text-primary);font-size:.8rem;cursor:pointer}.type-select:focus{outline:none;border-color:var(--accent-primary)}.type-select optgroup{font-weight:600;color:var(--text-secondary)}.type-select option{padding:.25rem}.selected-type-badge{font-size:1.1rem;width:28px;text-align:center}.wizard-warning{color:var(--warning-color);font-size:.875rem;margin-top:1rem}.wizard-loading{text-align:center;padding:3rem}.wizard-loading p{margin-top:1rem;color:var(--text-secondary)}.wizard-empty{text-align:center;padding:2rem;color:var(--text-secondary)}.wizard-empty button{margin-top:1rem}.table-preview{margin-top:1.5rem;padding:1rem;background:var(--bg-primary);border-radius:8px;border:1px solid var(--border-color)}.table-preview h4{margin:0 0 .75rem;font-size:.875rem;color:var(--text-secondary)}.columns-preview{display:flex;flex-wrap:wrap;gap:.5rem}.column-tag{display:inline-flex;align-items:center;gap:.5rem;padding:.25rem .75rem;background:var(--bg-secondary);border-radius:16px;font-size:.8rem;font-family:monospace}.column-tag small{color:var(--text-muted);font-size:.7rem}.columns-actions{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem}.columns-count{margin-left:auto;color:var(--text-secondary);font-size:.875rem}.columns-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.5rem;max-height:400px;overflow-y:auto;padding:1rem;background:var(--bg-primary);border-radius:8px;border:1px solid var(--border-color)}.column-checkbox{display:flex;align-items:center;gap:.5rem;padding:.5rem;border-radius:6px;cursor:pointer;transition:background .15s}.column-checkbox input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent-primary)}.column-name{font-family:monospace;font-size:.875rem;flex:1}.column-type{font-size:.7rem;color:var(--text-muted);padding:.125rem .5rem;background:var(--bg-secondary);border-radius:4px}.no-filters{text-align:center;padding:2rem;margin-top:1rem;background:var(--bg-primary);border-radius:8px;border:1px dashed var(--border-color);color:var(--text-secondary)}.filters-list{display:flex;flex-direction:column;gap:1rem;margin-top:1rem}.filter-card{padding:1rem;background:var(--bg-primary);border-radius:12px;border:1px solid var(--border-color)}.filter-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.filter-number{font-weight:600;color:var(--accent-primary)}.filter-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.filter-field{display:flex;flex-direction:column;gap:.25rem}.filter-field label{font-size:.75rem;color:var(--text-secondary);font-weight:500}.filter-field select,.filter-field input{padding:.5rem;border:1px solid var(--border-color);border-radius:6px;background:var(--bg-secondary);color:var(--text-primary);font-size:.875rem}.filter-field select:focus,.filter-field input:focus{outline:none;border-color:var(--accent-primary)}.filter-field small{font-size:.7rem;color:var(--text-muted)}.filter-value-section{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--border-color)}.value-type-toggle{display:flex;gap:1.5rem;margin-bottom:1rem}.value-type-toggle label{display:flex;align-items:center;gap:.5rem;cursor:pointer;padding:.5rem 1rem;border-radius:6px;transition:background .15s}.value-type-toggle label.active{background:rgba(var(--accent-rgb),.15);color:var(--accent-primary)}.value-type-toggle input[type=radio]{accent-color:var(--accent-primary)}.param-input{display:flex;align-items:center}.param-prefix{padding:.5rem;background:var(--bg-tertiary);border:1px solid var(--border-color);border-right:none;border-radius:6px 0 0 6px;color:var(--accent-primary);font-weight:600;font-family:monospace}.param-input input{border-radius:0 6px 6px 0!important;flex:1}.sql-preview{margin-top:1.5rem;padding:1rem;background:var(--bg-primary);border-radius:12px;border:1px solid var(--border-color)}.sql-preview h4{margin:0 0 .75rem;font-size:.875rem;display:flex;align-items:center;gap:.5rem}.sql-code{padding:1rem;background:#1a1a2e;color:#00f5d4;border-radius:8px;font-family:Fira Code,JetBrains Mono,monospace;font-size:.875rem;line-height:1.5;overflow-x:auto;white-space:pre-wrap;word-break:break-word}.sql-preview.compact{margin-top:1rem}.sql-preview.compact .sql-code{font-size:.8rem;padding:.75rem}.params-preview{margin-top:1rem;padding:1rem;background:rgba(var(--accent-rgb),.1);border-radius:8px;border:1px solid var(--accent-primary)}.params-preview h4{margin:0 0 .5rem;font-size:.875rem}.params-preview p{margin:0 0 .75rem;font-size:.8rem;color:var(--text-secondary)}.params-list code{padding:.25rem .75rem;background:var(--bg-primary);border-radius:4px;font-size:.8rem}.confirm-summary dl{display:grid;gap:.75rem;margin-bottom:1rem}.summary-row dd{font-weight:500;font-family:monospace}.btn-danger{background:var(--error-color);color:#fff;border:none;padding:.25rem .5rem;border-radius:4px;cursor:pointer;font-size:.75rem}.edit-badge{display:inline-block;margin-left:.75rem;padding:.25rem .75rem;background:rgba(var(--accent-rgb),.15);color:var(--accent-primary);border-radius:6px;font-size:.85rem;font-weight:500}.required-toggle{display:flex;gap:1rem;margin-top:.75rem;padding:.5rem;background:var(--bg-secondary);border-radius:8px}.required-option{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:6px;cursor:pointer;transition:all .15s;font-size:.85rem}.required-option:hover{background:var(--bg-hover)}.required-option.active{background:var(--bg-primary);font-weight:500}.required-option input[type=radio]{display:none}.required-icon{font-size:.7rem}.optional-hint{display:block;margin-top:.5rem;padding:.5rem;background:rgba(var(--accent-rgb),.1);border-radius:4px;color:var(--text-secondary);font-size:.75rem!important}.params-section{margin-bottom:.75rem}.params-section:last-child{margin-bottom:0}.params-label{display:block;font-size:.8rem;font-weight:500;margin-bottom:.5rem}.params-section.required .params-label{color:#e74c3c}.params-section.optional .params-label{color:var(--text-secondary)}.params-section small{display:block;margin-top:.5rem;font-size:.7rem;color:var(--text-muted)}.multi-column-section{margin-top:1rem;padding:1rem;background:var(--bg-secondary);border-radius:8px;border:1px dashed var(--border-color)}.multi-column-toggle{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:.85rem;font-weight:500;color:var(--text-primary)}.multi-column-toggle input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent-primary)}.multi-column-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.5rem;margin-top:.75rem;max-height:400px;overflow-y:auto;padding:.5rem;background:var(--bg-primary);border-radius:6px}.multi-column-item{display:flex;align-items:center;gap:.5rem;padding:.35rem .5rem;border-radius:4px;cursor:pointer;font-size:.8rem;transition:background .15s}.multi-column-item:hover{background:var(--bg-hover)}.multi-column-item input[type=checkbox]{width:14px;height:14px;accent-color:var(--accent-primary)}.multi-column-item span{font-family:monospace;flex:1}.multi-column-item small{color:var(--text-muted);font-size:.65rem;padding:.1rem .35rem;background:var(--bg-secondary);border-radius:3px}.multi-column-preview{margin-top:.75rem;padding:.5rem;background:rgba(var(--accent-rgb),.1);border-radius:6px;font-size:.8rem}.multi-column-preview strong{color:var(--accent-primary);font-family:monospace}.btn-xs{padding:.25rem .5rem;font-size:.75rem}.wizard-subtitle{color:var(--text-secondary);margin-bottom:1.5rem}.wizard-subtitle code{background:var(--bg-secondary);padding:.15rem .5rem;border-radius:4px;font-size:.85rem;color:var(--accent-primary)}.wizard-info{color:var(--text-secondary);font-size:.875rem;margin-top:1rem}.field-group{margin-bottom:1.25rem}.field-group label{display:block;font-size:.85rem;font-weight:500;color:var(--text-secondary);margin-bottom:.5rem}.field-group small{display:block;font-size:.75rem;color:var(--text-muted);margin-top:.375rem}.form-select{width:100%;padding:.75rem;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-secondary);color:var(--text-primary);font-size:.9rem}.form-select:focus{outline:none;border-color:var(--accent-primary)}.columns-section{margin-top:1.5rem}.columns-section label{display:block;font-size:.85rem;font-weight:500;color:var(--text-secondary);margin-bottom:.75rem}.columns-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.5rem;max-height:300px;overflow-y:auto;padding:1rem;background:var(--bg-primary);border-radius:8px;border:1px solid var(--border-color)}.columns-grid.compact{max-height:200px;padding:.75rem}.columns-section.compact{margin-top:1rem}.column-checkbox{display:flex;align-items:center;gap:.5rem;padding:.375rem .5rem;border-radius:6px;cursor:pointer;transition:background .15s;font-size:.8rem}.column-checkbox input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent-primary)}.column-name{font-family:monospace;flex:1}.column-type{font-size:.65rem;color:var(--text-muted);padding:.1rem .35rem;background:var(--bg-secondary);border-radius:3px}.empty-secondary{text-align:center;padding:2rem;margin-top:1rem;background:var(--bg-primary);border-radius:8px;border:1px dashed var(--border-color);color:var(--text-secondary)}.empty-secondary small{display:block;margin-top:.5rem;color:var(--text-muted)}.secondary-list{display:flex;flex-direction:column;gap:1rem;margin-top:1rem}.secondary-card{padding:1rem;background:var(--bg-primary);border-radius:12px;border:1px solid var(--border-color);border-left:4px solid #9b59b6}.secondary-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid var(--border-color)}.secondary-number{font-weight:600;color:#9b59b6}.secondary-form{display:flex;flex-direction:column;gap:1rem}.form-field{display:flex;flex-direction:column;gap:.25rem}.form-field label{font-size:.75rem;color:var(--text-secondary);font-weight:500}.form-field select,.form-field input{padding:.5rem;border:1px solid var(--border-color);border-radius:6px;background:var(--bg-secondary);color:var(--text-primary);font-size:.85rem}.form-field select:focus,.form-field input:focus{outline:none;border-color:var(--accent-primary)}.form-field small{font-size:.7rem;color:var(--text-muted)}.preview-section{margin-top:1.5rem;padding:1rem;background:var(--bg-primary);border-radius:12px;border:1px solid var(--border-color)}.preview-section h4{margin:0 0 1rem;font-size:.9rem;display:flex;align-items:center;gap:.5rem}.preview-item{display:flex;align-items:center;gap:.75rem;padding:.5rem 0;border-bottom:1px solid var(--border-color)}.preview-item:last-of-type{border-bottom:none;margin-bottom:.75rem}.preview-label{font-size:.8rem;color:var(--text-secondary);min-width:140px}.preview-item code{background:var(--bg-secondary);padding:.15rem .5rem;border-radius:4px;font-size:.8rem;color:var(--accent-primary)}.preview-secondary{display:flex;align-items:center;gap:1rem;padding:.5rem .75rem;background:var(--bg-secondary);border-radius:6px;margin-bottom:.5rem;font-size:.8rem}.preview-secondary .sec-name{font-weight:600;color:#9b59b6}.preview-secondary .sec-source{color:var(--text-secondary);flex:1}.preview-secondary .sec-cols{color:var(--text-muted);font-size:.75rem}.response-preview{margin-top:1.5rem}.response-preview h4{margin:0 0 .75rem;font-size:.9rem}.json-preview{padding:1rem;background:#1a1a2e;color:#00f5d4;border-radius:8px;font-family:Fira Code,JetBrains Mono,monospace;font-size:.8rem;line-height:1.5;overflow-x:auto;white-space:pre;margin:0}.confirm-summary{background:var(--bg-primary);padding:1.5rem;border-radius:12px;border:1px solid var(--border-color)}.confirm-summary dl{display:grid;gap:.75rem;margin:0}.summary-row{display:flex;justify-content:space-between;align-items:center}.summary-row dt{color:var(--text-secondary)}.summary-row dd{font-weight:500;font-family:monospace;margin:0}.btn-sm{padding:.375rem .75rem;font-size:.8rem}.btn-danger{background:var(--error-color);color:#fff;border:none;padding:.375rem .75rem;border-radius:6px;cursor:pointer;font-size:.8rem}.btn-danger:hover{opacity:.9}.wizard-loading-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:400px;gap:1rem}.wizard-loading-screen .loading-spinner{width:48px;height:48px;border:3px solid var(--border-color);border-top-color:var(--accent-primary);border-radius:50%;animation:spin 1s linear infinite}.wizard-loading-screen p{color:var(--text-secondary)}.analysis-loading{display:flex;align-items:center;gap:.75rem;padding:1rem;margin-top:1rem;background:linear-gradient(135deg,#6366f11a,#a855f71a);border-radius:8px;border:1px solid rgba(99,102,241,.3);color:var(--text-secondary);font-size:.875rem}.loading-spinner-small{width:20px;height:20px;border:2px solid var(--border-color);border-top-color:var(--accent-primary);border-radius:50%;animation:spin 1s linear infinite}.mode-cards{display:flex;flex-direction:column;gap:1rem;margin-top:1rem}.mode-card{display:flex;align-items:flex-start;gap:1rem;padding:1.25rem;background:var(--bg-primary);border-radius:12px;border:2px solid var(--border-color);cursor:pointer;transition:all .2s ease}.mode-card:hover{border-color:var(--accent-primary);background:var(--bg-hover)}.mode-card.selected{border-color:var(--accent-primary);background:linear-gradient(135deg,#6366f114,#a855f714)}.mode-card.semantic.selected{background:linear-gradient(135deg,#10b98114,#3b82f614);border-color:#10b981}.mode-icon{font-size:2rem;line-height:1}.mode-info{flex:1}.mode-info h4{margin:0 0 .375rem;font-size:1rem;color:var(--text-primary)}.mode-info p{margin:0;font-size:.875rem;color:var(--text-secondary)}.mode-note{display:block;margin-top:.5rem;font-size:.8rem;color:var(--text-muted)}.mode-check{font-size:1.25rem;color:var(--accent-primary);font-weight:700;min-width:24px}.mode-card.semantic .mode-check{color:#10b981}.common-types-preview{display:flex;flex-wrap:wrap;gap:.375rem;margin-top:.75rem}.type-badge{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.7rem;border-radius:20px;background:var(--bg-secondary);color:var(--text-secondary);border:1px solid var(--border-color)}.type-badge.category-identificacao{background:#ef444426;border-color:#ef444466;color:#ef4444}.type-badge.category-pessoa{background:#3b82f626;border-color:#3b82f666;color:#3b82f6}.type-badge.category-contato{background:#10b98126;border-color:#10b98166;color:#10b981}.type-badge.category-endereco{background:#f59e0b26;border-color:#f59e0b66;color:#f59e0b}.type-badge.category-financeiro{background:#a855f726;border-color:#a855f766;color:#a855f7}.type-badge.category-veiculo{background:#ec489926;border-color:#ec489966;color:#ec4899}.type-badge.more{background:var(--bg-tertiary);color:var(--text-muted)}.semantic-key-section{margin-top:1rem}.semantic-key-section h4{font-size:.9rem;color:var(--text-secondary);margin:0 0 1rem;display:flex;align-items:center;gap:.5rem}.semantic-types-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.75rem}.semantic-type-card{padding:1rem;background:var(--bg-primary);border-radius:10px;border:2px solid var(--border-color);cursor:pointer;transition:all .2s ease}.semantic-type-card:hover{border-color:var(--accent-primary);transform:translateY(-2px)}.semantic-type-card.selected{border-color:#10b981;background:linear-gradient(135deg,#10b98114,#10b98105)}.semantic-type-card .type-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.semantic-type-card .type-icon{font-size:1.25rem}.semantic-type-card .type-name{flex:1;font-weight:600;color:var(--text-primary)}.semantic-type-card .check{color:#10b981;font-weight:700;font-size:1.1rem}.semantic-type-card .type-sources{font-size:.75rem;color:var(--text-muted);margin-bottom:.5rem}.semantic-type-card .type-columns{display:flex;flex-direction:column;gap:.25rem}.semantic-type-card .source-col{display:flex;align-items:center;gap:.5rem;font-size:.7rem;padding:.2rem .4rem;background:var(--bg-secondary);border-radius:4px}.semantic-type-card .source-col .source-name{color:var(--text-secondary);min-width:70px;font-size:.65rem}.semantic-type-card .source-col code{font-family:monospace;color:var(--accent-primary);font-size:.65rem}.semantic-type-card .source-col.more{color:var(--text-muted);font-style:italic;background:transparent}.no-key-types{margin-top:1rem;padding:1rem;background:#f59e0b1a;border-radius:8px;border:1px solid rgba(245,158,11,.3)}.no-key-types p{margin:0 0 1rem;font-size:.875rem;color:var(--text-secondary)}.semantic-config-section{display:flex;flex-direction:column;gap:1.5rem}.config-group{display:flex;flex-direction:column;gap:.75rem}.config-group>label{font-size:.9rem;font-weight:500;color:var(--text-primary)}.config-hint{font-size:.8rem;color:var(--text-muted);margin:-.5rem 0 .5rem}.primary-source-options{display:flex;flex-direction:column;gap:.5rem}.source-option{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:var(--bg-primary);border:2px solid var(--border-color);border-radius:8px;cursor:pointer;transition:all .2s ease}.source-option:hover{border-color:var(--accent-primary)}.source-option.selected,.source-option:has(input:checked){border-color:#10b981;background:#10b98114}.source-option input[type=radio]{accent-color:#10b981}.source-option .source-info{display:flex;flex-direction:column;gap:.125rem}.source-option .source-info strong{color:var(--text-primary)}.source-option .source-info code{font-size:.75rem;color:var(--text-muted);font-family:monospace}.data-types-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.5rem}.data-type-option{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:8px;cursor:pointer;transition:all .15s ease}.data-type-option:hover{border-color:var(--accent-primary);background:var(--bg-hover)}.data-type-option.selected,.data-type-option:has(input:checked){border-color:#3b82f6;background:#3b82f614}.data-type-option input[type=checkbox]{accent-color:#3b82f6}.data-type-option .type-icon{font-size:1rem}.data-type-option .type-name{flex:1;font-size:.85rem;color:var(--text-primary)}.data-type-option .type-count{font-size:.65rem;padding:.1rem .35rem;background:var(--bg-secondary);border-radius:10px;color:var(--text-muted)}.semantic-preview{margin-top:1rem;padding:1rem;background:var(--bg-primary);border-radius:10px;border:1px solid var(--border-color)}.semantic-preview h4{margin:0 0 .75rem;font-size:.85rem;color:var(--text-primary)}.preview-tree{display:flex;flex-direction:column;gap:.375rem}.tree-item{display:flex;align-items:center;gap:.5rem;padding:.4rem .6rem;background:var(--bg-secondary);border-radius:6px;font-size:.8rem}.tree-item .tree-icon{font-size:.9rem}.tree-item .tree-label{color:var(--text-secondary);min-width:70px}.tree-item .tree-value{color:var(--text-primary);font-weight:500}.tree-item code{font-family:monospace;background:var(--bg-tertiary);padding:.1rem .3rem;border-radius:4px;font-size:.75rem;color:var(--accent-primary)}.tree-item.primary{border-left:3px solid #10b981}.tree-item.key{border-left:3px solid #ef4444}.tree-item.data{border-left:3px solid #3b82f6}.tree-item.secondary{border-left:3px solid #a855f7}.semantic-groups-list{display:flex;flex-direction:column;gap:1rem;margin-top:1rem}.semantic-group-card{padding:1rem;background:var(--bg-primary);border-radius:12px;border:1px solid var(--border-color);border-left:4px solid #6366f1}.semantic-group-card.category-identificacao{border-left-color:#ef4444}.semantic-group-card.category-pessoa{border-left-color:#3b82f6}.semantic-group-card.category-contato{border-left-color:#10b981}.semantic-group-card.category-endereco{border-left-color:#f59e0b}.semantic-group-card.category-financeiro{border-left-color:#a855f7}.semantic-group-card.category-veiculo{border-left-color:#ec4899}.group-header{display:flex;align-items:center;gap:1rem;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid var(--border-color)}.group-icon{font-size:1.5rem}.group-name-edit{flex:1;display:flex;flex-direction:column;gap:.25rem}.group-name-edit label{font-size:.7rem;color:var(--text-muted)}.group-name-input{padding:.5rem .75rem;border:1px solid var(--border-color);border-radius:6px;background:var(--bg-secondary);color:var(--text-primary);font-size:.9rem;font-weight:600;font-family:monospace}.group-name-input:focus{outline:none;border-color:var(--accent-primary)}.group-type-label{font-size:.75rem;padding:.25rem .5rem;background:var(--bg-secondary);border-radius:4px;color:var(--text-secondary)}.group-columns{display:flex;flex-direction:column;gap:.5rem}.columns-label{font-size:.8rem;color:var(--text-secondary);font-weight:500}.group-columns-list{display:flex;flex-direction:column;gap:.25rem;max-height:200px;overflow-y:auto}.group-column-item{display:flex;align-items:center;gap:.5rem;padding:.4rem .6rem;background:var(--bg-secondary);border-radius:6px;cursor:pointer;transition:all .15s ease;font-size:.8rem}.group-column-item:hover{background:var(--bg-hover)}.group-column-item.excluded{opacity:.5}.group-column-item input[type=checkbox]{accent-color:var(--accent-primary)}.group-column-item .col-source{color:var(--text-secondary);min-width:80px;font-size:.75rem}.group-column-item .col-path{font-family:monospace;color:var(--accent-primary);font-size:.75rem;background:var(--bg-tertiary);padding:.1rem .3rem;border-radius:3px}.primary-source-info{margin-top:1.5rem;padding:1rem;background:#10b98114;border-radius:8px;border:1px solid rgba(16,185,129,.3)}.primary-source-info h4{margin:0 0 .5rem;font-size:.85rem;color:#10b981}.primary-source-info p{margin:0;font-size:.85rem;color:var(--text-secondary)}.primary-source-info code{background:var(--bg-secondary);padding:.1rem .35rem;border-radius:3px;font-size:.8rem}.preview-group{display:flex;align-items:center;gap:.75rem;padding:.5rem .75rem;background:var(--bg-secondary);border-radius:6px;margin-bottom:.5rem;font-size:.8rem}.group-output-name{font-weight:600;color:var(--accent-primary);font-family:monospace}.group-type-badge{font-size:.7rem;padding:.15rem .4rem;background:var(--bg-tertiary);border-radius:4px;color:var(--text-secondary)}.group-cols-count{color:var(--text-muted);font-size:.75rem;margin-left:auto}.sources-page,.endpoints-page,.users-page,.bundles-page{display:flex;flex-direction:column;gap:2rem}.page-header{display:flex;justify-content:space-between;align-items:flex-start;padding-bottom:1rem;border-bottom:1px solid var(--border-color)}.page-header h2{font-size:1.25rem;font-weight:500;margin-bottom:.5rem}.page-description{color:var(--text-secondary);font-size:.9rem}.filters{display:flex;gap:1rem;flex-wrap:wrap}.filter-select{padding:.5rem 1rem;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;color:var(--text-primary);font-size:.875rem;min-width:200px}.filter-select:focus{outline:none;border-color:var(--accent-primary)}.loading-state,.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;text-align:center}.loading-spinner{width:32px;height:32px;border:3px solid var(--border-color);border-top-color:var(--accent-primary);border-radius:50%;animation:spin .8s linear infinite}.empty-state .empty-icon{font-size:3rem;margin-bottom:1rem}.empty-state h3{margin-bottom:.5rem}.empty-state p{color:var(--text-secondary);margin-bottom:1.5rem}.sources-table-container{background:var(--bg-secondary);border-radius:12px;border:1px solid var(--border-color);overflow:hidden}.sources-table{width:100%;border-collapse:collapse}.sources-table th{background:var(--bg-tertiary);padding:.875rem 1rem;text-align:left;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);border-bottom:1px solid var(--border-color)}.sources-table td{padding:.875rem 1rem;border-bottom:1px solid var(--border-color);font-size:.875rem;vertical-align:middle}.sources-table tbody tr:last-child td{border-bottom:none}.source-row{cursor:pointer;transition:background .15s}.source-row:hover{background:var(--bg-tertiary)}.source-name-cell{color:var(--text-primary);font-weight:500}.source-host-cell code{font-size:.8rem;background:var(--bg-tertiary);padding:.125rem .375rem;border-radius:4px;font-family:JetBrains Mono,monospace}.bundle-tag{background:var(--bg-tertiary);padding:.25rem .5rem;border-radius:4px;font-size:.75rem;color:var(--text-secondary)}.status-badge{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;font-size:.8rem}.status-badge.pending{background:var(--bg-tertiary);color:var(--text-muted)}.status-testing{animation:pulse 1s infinite}.row-actions{display:flex;gap:.375rem}.btn-icon.small{width:28px;height:28px;font-size:.8rem}.source-type-badge{padding:.25rem .5rem;background:var(--bg-tertiary);border-radius:6px;font-size:.7rem;font-weight:600;display:inline-flex;align-items:center;gap:.25rem}.source-type-badge[data-type=mysql]{background:#00708f26;color:#00707f}.source-type-badge[data-type=postgres]{background:#33679126;color:#336791}.source-type-badge[data-type=sqlite]{background:#0088cc26;color:#08c}.source-actions{display:flex;gap:.5rem}.btn-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid var(--border-color);border-radius:8px;cursor:pointer;transition:all .2s}.btn-icon:hover{background:var(--bg-tertiary)}.btn-icon.delete:hover{background:#f443361a;border-color:#f44336}@media(max-width:900px){.sources-table-container{overflow-x:auto}.sources-table{min-width:700px}}.data-table{width:100%;border-collapse:collapse;background:var(--bg-secondary);border-radius:12px;overflow:hidden}.data-table th,.data-table td{padding:1rem;text-align:left;border-bottom:1px solid var(--border-color)}.data-table th{background:var(--bg-tertiary);font-weight:500;font-size:.8rem;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary)}.data-table tr:last-child td{border-bottom:none}.data-table tr:hover td{background:rgba(var(--accent-rgb),.05)}.path-code{font-family:SF Mono,Consolas,monospace;background:var(--bg-tertiary);padding:.25rem .5rem;border-radius:4px;color:var(--accent-primary)}.type-badge{padding:.25rem .75rem;border-radius:20px;font-size:.75rem;background:var(--bg-tertiary)}.user-card{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:12px;overflow:hidden;transition:border-color .2s}.user-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;cursor:pointer}.user-type-badge{padding:.25rem .75rem;border-radius:20px;font-size:.75rem;font-weight:500}.user-type-badge.user{background:var(--bg-tertiary);color:var(--text-secondary)}.user-name{font-size:1rem;font-weight:500;margin:0}.user-email{font-size:.8rem;color:var(--text-secondary);margin:0}.user-actions{display:flex;align-items:center;gap:.75rem}.status-badge{font-size:.75rem}.expand-icon{color:var(--text-secondary);transition:transform .2s}.user-card.expanded .expand-icon{transform:rotate(90deg)}.user-details{padding:1.5rem;background:var(--bg-primary);border-top:1px solid var(--border-color);display:grid;grid-template-columns:1fr 2fr;gap:2rem}.details-section h4{font-size:.8rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:1rem}.details-section dl{display:grid;grid-template-columns:auto 1fr;gap:.5rem 1rem}.details-section dt{color:var(--text-secondary);font-size:.875rem}.details-section dd{font-size:.875rem;margin:0}.api-keys-list{display:flex;flex-direction:column;gap:.5rem}.api-key-item{display:flex;justify-content:space-between;align-items:center;padding:.75rem;background:var(--bg-secondary);border-radius:8px}.key-info{display:flex;align-items:center;gap:1rem}.key-info code{font-family:SF Mono,Consolas,monospace;font-size:.875rem}.key-meta,.key-expiry{font-size:.75rem;color:var(--text-secondary)}.no-keys{color:var(--text-secondary);font-size:.875rem}.btn-icon.small{width:24px;height:24px;font-size:.75rem}.create-bundle{display:flex;gap:.75rem}.create-input{flex:1;max-width:400px;padding:.75rem 1rem;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;color:var(--text-primary);font-size:.9375rem}.create-input:focus{outline:none;border-color:var(--accent-primary)}.bundles-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem}.bundle-card{background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:12px;padding:1.5rem;transition:all .2s}.bundle-card.active{border-color:#4caf50;background:#4caf500d}.bundle-card.published{border-color:#ffc107}.bundle-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.bundle-card .status-badge{padding:.25rem .75rem;border-radius:20px;font-size:.75rem;font-weight:500}.bundle-card .status-badge.active{background:#4caf5026;color:#4caf50}.bundle-card .status-badge.published{background:#ffc10726;color:#ffc107}.bundle-card .status-badge.draft{background:var(--bg-tertiary);color:var(--text-secondary)}.bundle-card .version{font-size:.75rem;color:var(--text-secondary)}.bundle-name{font-size:1.1rem;font-weight:600;margin-bottom:.5rem}.bundle-meta{display:flex;flex-direction:column;gap:.25rem;font-size:.75rem;color:var(--text-secondary);margin-bottom:1rem}.bundle-actions{display:flex;gap:.5rem}.active-indicator{color:#4caf50;font-size:.875rem;font-weight:500}.lifecycle{display:flex;align-items:center;justify-content:center;gap:1.5rem;flex-wrap:wrap}.lifecycle-step{text-align:center;padding:1.5rem;background:var(--bg-secondary);border-radius:12px;max-width:200px}.lifecycle-step .step-icon{font-size:2rem;display:block;margin-bottom:.75rem}.lifecycle-step h4{font-size:.9rem;margin-bottom:.5rem}.lifecycle-step p{font-size:.8rem;color:var(--text-secondary)}.lifecycle .arrow{font-size:1.5rem;color:var(--text-secondary)}.btn{padding:.75rem 1.5rem;border-radius:8px;font-weight:500;font-size:.9375rem;cursor:pointer;transition:all .2s ease;border:none;display:inline-flex;align-items:center;justify-content:center;gap:.5rem}.btn-primary:hover:not(:disabled){filter:brightness(1.1)}.btn-secondary{background:var(--bg-tertiary);color:var(--text-primary)}.btn-secondary:hover:not(:disabled){background:var(--border-color)}.btn-outline:hover:not(:disabled){border-color:var(--accent-primary);color:var(--accent-primary)}.info-section h3{font-size:1rem;color:var(--text-secondary);margin-bottom:1rem}.info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem}.info-card{padding:1.25rem;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:10px}.info-icon{font-size:1.5rem;display:block;margin-bottom:.75rem}.info-card h4{font-size:.95rem;margin-bottom:.5rem}.info-card p{font-size:.85rem;color:var(--text-secondary);line-height:1.5}.info-card code{background:var(--bg-tertiary);padding:.1rem .3rem;border-radius:3px;color:var(--accent-primary);font-size:.8rem}.source-details-page{padding:1.5rem;max-width:1200px;margin:0 auto}.details-header{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap;padding:1rem;background:var(--bg-secondary);border-radius:12px;border:1px solid var(--border-color)}.btn-back{background:transparent;border:1px solid var(--border-color);color:var(--text-secondary);padding:.5rem .75rem;border-radius:6px;cursor:pointer;font-size:.85rem;transition:all .2s;white-space:nowrap}.btn-back:hover{background:var(--bg-tertiary);color:var(--text-primary)}.source-title{display:flex;align-items:center;gap:.75rem;flex:1;min-width:0;overflow:hidden}.source-title h1{margin:0;font-size:1.25rem;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.source-connection{margin:.125rem 0 0;color:var(--text-muted);font-family:JetBrains Mono,monospace;font-size:.75rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:300px}.source-type-badge.large{padding:.5rem .75rem;font-size:.8rem;border-radius:8px;flex-shrink:0}.header-actions{display:flex;gap:.5rem;flex-shrink:0}.header-actions .btn{padding:.5rem .75rem;font-size:.8rem;white-space:nowrap}.btn-success{background:var(--success-color, #22c55e);color:#fff;border:none}.connection-banner{padding:.625rem 1rem;border-radius:8px;margin-bottom:1rem;font-weight:500;font-size:.85rem;display:flex;align-items:center;gap:.5rem}.connection-banner.success{background:#22c55e26;color:#22c55e;border:1px solid rgba(34,197,94,.3)}.connection-banner.error{background:#ef444426;color:#ef4444;border:1px solid rgba(239,68,68,.3)}.tabs-nav{display:flex;gap:0;border-bottom:2px solid var(--border-color);margin-bottom:1.5rem;overflow-x:auto;background:var(--bg-secondary);border-radius:8px 8px 0 0}.tab-btn{background:transparent;border:none;padding:.75rem 1rem;color:var(--text-secondary);cursor:pointer;font-size:.85rem;font-weight:500;border-bottom:2px solid transparent;margin-bottom:-2px;white-space:nowrap;transition:all .2s;display:flex;align-items:center;gap:.375rem}.tab-btn:hover{color:var(--text-primary);background:var(--bg-tertiary)}.tab-btn.active{color:var(--accent-primary);border-bottom-color:var(--accent-primary);background:var(--bg-tertiary)}.tab-content{min-height:300px}.overview-tab{display:flex;flex-direction:column;gap:1.5rem}.stats-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:.75rem}.stat-card{background:var(--bg-secondary);border-radius:10px;padding:1rem;display:flex;align-items:center;gap:.75rem;border:1px solid var(--border-color);min-width:0}.stat-icon{font-size:1.5rem;flex-shrink:0}.stat-info{display:flex;flex-direction:column;min-width:0;overflow:hidden}.stat-value{font-size:1.25rem;font-weight:700;color:var(--text-primary);font-family:JetBrains Mono,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stat-label{font-size:.65rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.details-section{background:var(--bg-secondary);border-radius:10px;padding:1.25rem;border:1px solid var(--border-color)}.details-section h3{margin:0 0 1rem;font-size:.9rem;color:var(--text-primary);padding-bottom:.5rem;border-bottom:1px solid var(--border-color)}.config-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem}.config-item{display:flex;flex-direction:column;gap:.125rem;min-width:0}.config-item label{font-size:.65rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.3px}.config-item span{font-size:.85rem;color:var(--text-primary);font-family:JetBrains Mono,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.status-bars{display:flex;flex-direction:column;gap:.75rem}.status-bar-item{display:flex;flex-direction:column;gap:.375rem}.status-label{display:flex;justify-content:space-between;align-items:center}.status-code{padding:.25rem .5rem;border-radius:4px;font-size:.75rem;font-weight:600;font-family:monospace}.status-code.status-2xx{background:#22c55e33;color:#22c55e}.status-code.status-3xx{background:#3b82f633;color:#3b82f6}.status-code.status-4xx{background:#f59e0b33;color:#f59e0b}.status-code.status-5xx{background:#ef444433;color:#ef4444}.status-count{font-size:.85rem;color:var(--text-secondary);font-family:monospace}.status-bar{height:6px;background:var(--bg-tertiary);border-radius:3px;overflow:hidden}.status-fill{height:100%;border-radius:3px;transition:width .5s ease}.status-fill.status-2xx{background:#22c55e}.status-fill.status-3xx{background:#3b82f6}.status-fill.status-4xx{background:#f59e0b}.status-fill.status-5xx{background:#ef4444}.tab-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.tab-header h3{margin:0;font-size:1.1rem;color:var(--text-primary)}.empty-tab{text-align:center;padding:3rem 2rem;background:var(--bg-secondary);border-radius:12px;border:2px dashed var(--border-color)}.empty-tab .empty-icon{font-size:3rem;display:block;margin-bottom:1rem}.empty-tab h4{margin:0 0 .5rem;color:var(--text-primary)}.empty-tab p{margin:0 0 1.5rem;color:var(--text-muted)}.items-list{display:flex;flex-direction:column;gap:1rem}.item-card{background:var(--bg-secondary);border-radius:12px;padding:1.25rem;border:1px solid var(--border-color);transition:border-color .2s,box-shadow .2s}.item-card:hover{border-color:var(--accent-primary);box-shadow:0 4px 12px #0000001a}.item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.item-header h4{margin:0;font-size:1rem;color:var(--text-primary)}.item-header h4 code{font-family:JetBrains Mono,monospace;color:var(--accent-primary)}.item-actions{display:flex;gap:.5rem}.item-meta{display:flex;flex-wrap:wrap;gap:1rem;font-size:.85rem;color:var(--text-secondary)}.item-meta code{background:var(--bg-tertiary);padding:.125rem .375rem;border-radius:4px;font-family:JetBrains Mono,monospace;font-size:.8rem}.type-badge{padding:.25rem .5rem;border-radius:4px;font-size:.75rem;font-weight:600}.type-badge.single-query{background:#3b82f626;color:#3b82f6}.type-badge.composite-primary-secondary{background:#a855f726;color:#a855f7}.sql-preview{margin-top:.75rem;padding:.75rem;background:var(--bg-tertiary);border-radius:8px;overflow-x:auto}.sql-preview code{font-family:JetBrains Mono,monospace;font-size:.8rem;color:var(--text-secondary);white-space:pre-wrap;word-break:break-word}.loading-state,.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:300px;text-align:center}.loading-spinner{width:40px;height:40px;border:3px solid var(--border-color);border-top-color:var(--accent-primary);border-radius:50%;animation:spin 1s linear infinite;margin-bottom:1rem}@media(max-width:1024px){.stats-grid{grid-template-columns:repeat(3,1fr)}.config-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:768px){.source-details-page{padding:1rem}.details-header{flex-direction:column;align-items:flex-start;gap:.75rem}.source-title{flex-direction:column;align-items:flex-start;gap:.5rem}.source-connection{max-width:100%}.header-actions{width:100%;justify-content:flex-start}.stats-grid{grid-template-columns:repeat(2,1fr)}.config-grid{grid-template-columns:1fr}.tab-btn{padding:.625rem .75rem;font-size:.8rem}}.column-types-tab{padding:1rem}.tab-header-actions{display:flex;gap:.75rem}.tab-description{color:var(--text-secondary);margin-bottom:1.5rem;font-size:.9rem}.column-types-tables{display:flex;flex-direction:column;gap:1rem}.column-type-table{background:var(--bg-secondary);border-radius:8px;border:1px solid var(--border-color);overflow:hidden}.table-header-row{display:flex;align-items:center;gap:.75rem;padding:.875rem 1rem;background:var(--bg-tertiary);cursor:pointer;transition:background .2s}.table-header-row:hover{background:var(--bg-hover)}.expand-icon{color:var(--text-secondary);font-size:.75rem;width:1rem}.table-icon{font-size:1rem}.table-name{font-weight:600;color:var(--text-primary);flex:1}.column-count{font-size:.8rem;color:var(--text-secondary);background:var(--bg-secondary);padding:.25rem .5rem;border-radius:4px}.table-columns{padding:.5rem}.column-row:last-child{border-bottom:none}.column-row:hover{background:var(--bg-hover)}.column-row .col-name code{font-size:.85rem;color:var(--text-primary);background:var(--bg-tertiary);padding:.125rem .375rem;border-radius:4px}.datatype-badge{font-size:.75rem;color:var(--text-secondary);background:var(--bg-tertiary);padding:.125rem .5rem;border-radius:4px;font-family:monospace}.col-semantic select{flex:1;min-width:150px;padding:.375rem .5rem;border:1px solid var(--border-color);border-radius:4px;background:var(--bg-primary);color:var(--text-primary);font-size:.85rem;cursor:pointer}.col-semantic select:focus{outline:none;border-color:var(--accent-color)}.col-semantic select.has-type{border-color:var(--accent-color);background:#3b82f61a}.type-preview{display:none}.empty-state.small{padding:2rem;font-size:.9rem}.empty-state.small .empty-icon{font-size:2rem}.suggestion-hint{color:#f59e0b;display:inline}.column-row.suggested{background:#f59e0b14;border-left:3px solid #f59e0b}.column-row.saved{background:#22c55e0d}.col-semantic select.is-suggestion{border-color:#f59e0b;border-width:2px;background-color:var(--bg-primary);color:var(--text-primary)}.col-semantic select option{background-color:var(--bg-primary);color:var(--text-primary)}.col-semantic select optgroup{background-color:var(--bg-secondary);color:var(--text-primary);font-weight:600}.col-semantic{display:flex;align-items:center;gap:.5rem;min-width:280px;flex-wrap:wrap}.suggestion-badge{font-size:.65rem;color:#b45309;background:#fef3c7;padding:.2rem .5rem;border-radius:4px;white-space:nowrap;font-weight:600;border:1px solid #f59e0b;flex-shrink:0}.saved-badge{font-size:.75rem;color:#22c55e;font-weight:700;flex-shrink:0}.columns-header{display:grid;grid-template-columns:1fr 100px 280px;gap:1rem;padding:.5rem 1rem;background:var(--bg-tertiary);border-radius:6px;margin-bottom:.5rem;font-size:.75rem;font-weight:600;text-transform:uppercase;color:var(--text-secondary)}.column-row{display:grid;grid-template-columns:1fr 100px 280px;gap:1rem;padding:.625rem 1rem;border-bottom:1px solid var(--border-color);align-items:center}.btn-outline{background:transparent;border:1px solid #f59e0b;color:#f59e0b;padding:.5rem 1rem;border-radius:6px;cursor:pointer;font-size:.85rem;transition:all .2s}.btn-outline:hover{background:#f59e0b1a}@media(max-width:900px){.columns-header,.column-row{grid-template-columns:1fr 80px 200px}.col-semantic{min-width:200px}}.queries-page{padding:2rem;max-width:1400px;margin:0 auto}.queries-list{display:flex;flex-direction:column;gap:1rem}.query-card{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:12px;overflow:hidden;transition:all .2s}.query-card:hover{border-color:var(--accent-primary)}.query-card.expanded{border-color:var(--accent-primary);box-shadow:0 4px 20px #00000026}.query-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem;cursor:pointer;transition:background .15s}.query-header:hover{background:var(--bg-hover)}.query-info{flex:1}.query-name{margin:0 0 .5rem;font-size:1.1rem;font-weight:600;font-family:monospace;color:var(--text-primary)}.query-meta{display:flex;flex-wrap:wrap;gap:1rem}.meta-item.params{color:var(--accent-primary);font-weight:500}.query-actions{display:flex;align-items:center;gap:.75rem}.query-card.expanded .expand-icon{transform:rotate(0)}.query-details{padding:1.25rem;padding-top:0;border-top:1px solid var(--border-color);margin-top:.5rem}.columns-tags{display:flex;flex-wrap:wrap;gap:.5rem}.column-tag{padding:.25rem .75rem;background:var(--bg-primary);border-radius:16px;font-size:.75rem;font-family:monospace;color:var(--text-primary);border:1px solid var(--border-color)}.params-tags{display:flex;flex-wrap:wrap;gap:.5rem}.param-tag{display:flex;flex-direction:column;padding:.375rem .75rem;background:rgba(var(--accent-rgb),.15);border-radius:8px;font-size:.8rem;font-family:monospace;color:var(--accent-primary);border:1px solid var(--accent-primary)}.param-tag small{font-size:.65rem;color:var(--text-muted);font-family:inherit;margin-top:.125rem}.sql-section{margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--border-color)}.sql-section .detail-label{display:block;margin-bottom:.5rem}.sql-code{padding:1rem;background:#1a1a2e;color:#00f5d4;border-radius:8px;font-family:Fira Code,JetBrains Mono,monospace;font-size:.85rem;line-height:1.5;overflow-x:auto;white-space:pre-wrap;word-break:break-word;margin:0}.edit-modal{background:var(--bg-secondary);border-radius:16px;max-width:600px;width:100%;max-height:90vh;overflow:hidden;display:flex;flex-direction:column;border:1px solid var(--border-color)}.close-btn{background:none;border:none;font-size:1.25rem;cursor:pointer;color:var(--text-secondary);padding:.25rem}.form-group input.disabled{opacity:.6;cursor:not-allowed}.sql-textarea{font-family:Fira Code,JetBrains Mono,monospace;font-size:.85rem;line-height:1.5;resize:vertical;min-height:150px}.query-name.editable{display:flex;align-items:center;gap:.5rem;cursor:text;transition:color .15s}.query-name.editable:hover{color:var(--accent-primary)}.query-name.editable .edit-hint{font-size:.75rem;opacity:0;transition:opacity .15s}.query-name.editable:hover .edit-hint{opacity:1}.composites-page{padding:2rem;max-width:1400px;margin:0 auto}.composites-list{display:flex;flex-direction:column;gap:1rem}.composite-card{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:12px;overflow:hidden;transition:all .2s}.composite-card:hover{border-color:var(--accent-primary)}.composite-card.expanded{border-color:var(--accent-primary);box-shadow:0 4px 20px #00000026}.composite-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem;cursor:pointer;transition:background .15s}.composite-header:hover{background:var(--bg-hover)}.composite-info{flex:1}.composite-name{margin:0 0 .5rem;font-size:1.1rem;font-weight:600;font-family:monospace;color:var(--text-primary)}.composite-name.editable{display:flex;align-items:center;gap:.5rem;cursor:text;transition:color .15s}.composite-name.editable:hover{color:var(--accent-primary)}.composite-name.editable .edit-hint{font-size:.75rem;opacity:0;transition:opacity .15s}.composite-name.editable:hover .edit-hint{opacity:1}.editable-name.editing{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.editable-name .name-input{font-size:1.1rem;font-weight:600;font-family:monospace;padding:.25rem .5rem;border:2px solid var(--accent-primary);border-radius:6px;background:var(--bg-primary);color:var(--text-primary);min-width:200px}.editable-name .name-input:focus{outline:none;box-shadow:0 0 0 3px rgba(var(--accent-rgb),.2)}.editable-name .saving-indicator{animation:pulse 1s ease-in-out infinite}.composite-meta{display:flex;flex-wrap:wrap;gap:1rem}.meta-item{display:flex;align-items:center;gap:.25rem;font-size:.8rem;color:var(--text-secondary)}.meta-item.primary{color:#3498db;font-weight:500}.meta-item.secondary{color:#9b59b6;font-weight:500}.meta-icon{font-size:.9rem}.composite-actions{display:flex;align-items:center;gap:.75rem}.expand-icon{color:var(--text-muted);font-size:.75rem;transition:transform .2s}.btn-icon{background:none;border:none;font-size:1.1rem;cursor:pointer;padding:.25rem;opacity:.7;transition:opacity .15s}.composite-details{padding:1.25rem;padding-top:0;border-top:1px solid var(--border-color);margin-top:.5rem}.detail-row{display:flex;align-items:flex-start;gap:1rem;padding:.75rem 0;border-bottom:1px solid var(--border-color)}.detail-label{font-size:.8rem;color:var(--text-secondary);min-width:100px;font-weight:500}.detail-value{font-size:.9rem;color:var(--text-primary)}.source-section{margin:1rem 0;padding:1rem;border-radius:12px;background:var(--bg-primary);border:1px solid var(--border-color)}.source-section h4{margin:0 0 1rem;font-size:.95rem;display:flex;align-items:center;gap:.5rem}.primary-source{border-color:#3498db;border-left-width:4px}.secondary-sources{border-color:#9b59b6;border-left-width:4px}.source-info{display:flex;align-items:center;gap:.75rem;margin-bottom:.5rem}.source-name{font-weight:600;font-size:.95rem}.source-type{font-size:.75rem;padding:.15rem .5rem;background:var(--bg-secondary);border-radius:4px;color:var(--text-muted)}.source-table{font-size:.85rem;margin-bottom:.75rem;color:var(--text-secondary)}.source-table code{background:var(--bg-secondary);padding:.15rem .5rem;border-radius:4px;font-size:.8rem}.source-columns{display:flex;align-items:flex-start;gap:.75rem}.source-columns .label{font-size:.8rem;color:var(--text-secondary)}.secondary-item{padding:.75rem;margin-bottom:.75rem;background:var(--bg-secondary);border-radius:8px;border:1px solid var(--border-color)}.secondary-item:last-child{margin-bottom:0}.secondary-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.secondary-name{font-weight:600;font-size:.9rem;color:#9b59b6}.secondary-source{font-size:.75rem;color:var(--text-secondary)}.secondary-details{display:flex;gap:1.5rem;font-size:.8rem;color:var(--text-secondary);margin-bottom:.5rem}.secondary-details code{background:var(--bg-primary);padding:.1rem .35rem;border-radius:3px;font-size:.75rem}.columns-tags{display:flex;flex-wrap:wrap;gap:.375rem}.columns-tags.small{gap:.25rem}.column-tag{padding:.2rem .5rem;background:var(--bg-secondary);border-radius:12px;font-size:.7rem;font-family:monospace;color:var(--text-primary);border:1px solid var(--border-color)}.column-tag.more{background:var(--accent-primary);color:#fff;border-color:transparent}.btn-primary:hover{opacity:.9;transform:translateY(-1px)}.endpoints-page{padding:2rem;max-width:1400px;margin:0 auto}.endpoints-list{display:flex;flex-direction:column;gap:1rem}.endpoint-card{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:12px;overflow:hidden;transition:all .2s}.endpoint-card:hover{border-color:var(--accent-primary)}.endpoint-card.expanded{border-color:var(--accent-primary);box-shadow:0 4px 20px #00000026}.endpoint-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem;cursor:pointer;transition:background .15s}.endpoint-header:hover{background:var(--bg-hover)}.endpoint-main{display:flex;align-items:center;gap:1rem}.endpoint-path{font-family:Fira Code,JetBrains Mono,monospace;font-size:1rem;font-weight:600;color:var(--accent-primary);background:rgba(var(--accent-rgb),.1);padding:.375rem .75rem;border-radius:6px}.type-badge{font-size:.75rem;padding:.25rem .5rem;border-radius:4px;background:var(--bg-primary)}.active-badge{font-size:.7rem;padding:.2rem .5rem;border-radius:4px;background:#2ecc7133;color:#2ecc71}.endpoint-meta{display:flex;align-items:center;gap:1rem}.meta-item{font-size:.8rem;color:var(--text-secondary)}.expand-icon{color:var(--text-muted);font-size:.75rem;margin-left:.5rem}.endpoint-details{padding:1.25rem;padding-top:0;border-top:1px solid var(--border-color)}.details-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem;margin-bottom:1rem}.detail-item{background:var(--bg-primary);padding:.75rem;border-radius:8px}.detail-label{display:block;font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:.25rem}.detail-value{font-size:.9rem;font-weight:500}.section-label{display:block;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:.5rem}.params-section{margin-bottom:1rem}.params-list{display:flex;flex-wrap:wrap;gap:.5rem}.param-badge{display:flex;flex-direction:column;padding:.375rem .75rem;background:rgba(var(--accent-rgb),.15);border:1px solid var(--accent-primary);border-radius:8px;font-family:monospace;font-size:.85rem;color:var(--accent-primary)}.param-badge small{font-size:.65rem;color:var(--text-muted);margin-top:.125rem}.url-section{margin-bottom:1rem}.url-example{display:block;padding:.75rem;background:#1a1a2e;color:#00f5d4;border-radius:8px;font-family:Fira Code,monospace;font-size:.8rem;overflow-x:auto;white-space:nowrap}.endpoint-actions{display:flex;gap:.75rem;padding-top:1rem;border-top:1px solid var(--border-color)}.btn-sm{padding:.5rem 1rem;font-size:.85rem}.test-modal{background:var(--bg-secondary);border-radius:16px;max-width:800px;width:100%;max-height:90vh;overflow:hidden;display:flex;flex-direction:column;border:1px solid var(--border-color)}.modal-header{display:flex;align-items:center;gap:1rem;padding:1.25rem 1.5rem;border-bottom:1px solid var(--border-color);background:var(--bg-primary)}.modal-header h3{margin:0;font-size:1.1rem}.modal-path{font-family:Fira Code,monospace;font-size:.9rem;color:var(--accent-primary);background:rgba(var(--accent-rgb),.1);padding:.25rem .75rem;border-radius:4px}.close-btn{margin-left:auto;background:none;border:none;font-size:1.25rem;cursor:pointer;color:var(--text-secondary);padding:.25rem}.close-btn:hover{color:var(--text-primary)}.modal-body{padding:1.5rem;overflow-y:auto;flex:1}.test-section{margin-bottom:1.5rem}.test-section>label{display:block;font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);margin-bottom:.5rem}.test-section small{display:block;font-size:.75rem;color:var(--text-muted);margin-top:.375rem}.input-full{width:100%;padding:.75rem;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-primary);color:var(--text-primary);font-size:.9rem;font-family:monospace}.input-full:focus{outline:none;border-color:var(--accent-primary)}.params-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.param-field{display:flex;flex-direction:column;gap:.375rem}.param-field label{font-size:.8rem;font-weight:500;color:var(--text-secondary)}.param-field input{padding:.625rem;border:1px solid var(--border-color);border-radius:6px;background:var(--bg-primary);color:var(--text-primary);font-size:.9rem}.param-field input:focus{outline:none;border-color:var(--accent-primary)}.request-url{display:block;padding:.75rem;background:#1a1a2e;color:#00f5d4;border-radius:8px;font-family:Fira Code,monospace;font-size:.8rem;overflow-x:auto;word-break:break-all;white-space:pre-wrap}.btn-execute{width:100%;justify-content:center;padding:.875rem;font-size:1rem}.loading-spinner-sm{width:18px;height:18px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}.response-section{margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid var(--border-color)}.response-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.response-header label{font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary)}.latency-badge{font-size:.8rem;padding:.25rem .75rem;border-radius:4px}.latency-badge.success{background:#2ecc7126;color:#2ecc71}.latency-badge.error{background:#e74c3c26;color:#e74c3c}.response-body{margin:0;padding:1rem;background:#1a1a2e;color:#a8e6cf;border-radius:8px;font-family:Fira Code,monospace;font-size:.8rem;overflow-x:auto;max-height:400px;overflow-y:auto;white-space:pre-wrap;word-break:break-word}.response-body.error{color:#ff6b6b}.edit-modal{background:var(--bg-secondary);border-radius:16px;max-width:500px;width:100%;max-height:90vh;overflow:hidden;display:flex;flex-direction:column;border:1px solid var(--border-color)}.edit-modal .modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.5rem;border-bottom:1px solid var(--border-color);background:var(--bg-primary)}.edit-modal .modal-header h3{margin:0;font-size:1.1rem}.edit-modal .modal-body{padding:1.5rem;overflow-y:auto}.form-group input,.form-group select{width:100%;padding:.75rem;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-primary);color:var(--text-primary);font-size:.9rem}.form-actions{display:flex;gap:1rem;justify-content:flex-end;margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--border-color)}.grouping-section{margin-top:1.5rem;padding:1rem;background:var(--bg-primary);border-radius:12px;border:1px solid var(--border-color)}.grouping-header{display:flex;flex-direction:column;gap:.25rem}.grouping-header .toggle-label{display:flex;align-items:center;gap:.5rem;font-weight:600;cursor:pointer}.grouping-header .toggle-label input{width:auto;margin:0}.grouping-header small{font-size:.75rem;color:var(--text-muted);margin-left:1.5rem}.grouping-config{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--border-color)}.loading-prefixes{text-align:center;padding:1rem;color:var(--text-muted);font-size:.9rem}.prefix-suggestions{margin-bottom:1rem}.prefix-suggestions>label{display:block;font-size:.8rem;font-weight:500;color:var(--text-secondary);margin-bottom:.5rem}.prefix-buttons{display:flex;flex-wrap:wrap;gap:.5rem}.prefix-btn-group{display:flex;align-items:center;gap:.25rem;padding:.375rem .5rem;background:var(--bg-secondary);border-radius:8px;border:1px solid var(--border-color)}.prefix-name{font-size:.85rem;font-weight:500;margin-right:.5rem}.btn-xs{padding:.25rem .5rem;font-size:.7rem;border-radius:4px;background:var(--accent-primary);color:#fff;border:none;cursor:pointer;transition:opacity .15s}.btn-xs:hover{opacity:.85}.grouping-columns{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.column-section{display:flex;flex-direction:column;gap:.25rem}.column-section>label{font-size:.85rem;font-weight:600;color:var(--text-primary)}.column-section>small{font-size:.7rem;color:var(--text-muted);margin-bottom:.5rem}.column-list{max-height:200px;overflow-y:auto;padding:.5rem;background:var(--bg-secondary);border-radius:8px;border:1px solid var(--border-color)}.column-checkbox{display:flex;align-items:center;gap:.5rem;padding:.25rem;font-size:.8rem;cursor:pointer;border-radius:4px}.column-checkbox:hover{background:var(--bg-hover)}.column-checkbox input{width:auto;margin:0}.column-checkbox span{font-family:Fira Code,monospace;font-size:.75rem}.array-name-field{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.75rem}.array-name-field label{font-size:.8rem;font-weight:500;color:var(--text-secondary)}.array-name-field input{padding:.5rem;border:1px solid var(--border-color);border-radius:6px;background:var(--bg-secondary);color:var(--text-primary);font-family:Fira Code,monospace;font-size:.85rem}.array-name-field input:focus{outline:none;border-color:var(--accent-primary)}.grouping-preview{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--border-color)}.grouping-preview>label{display:block;font-size:.8rem;font-weight:500;color:var(--text-secondary);margin-bottom:.5rem}.grouping-preview pre{margin:0;padding:.75rem;background:#1a1a2e;color:#a8e6cf;border-radius:8px;font-family:Fira Code,monospace;font-size:.75rem;overflow-x:auto;white-space:pre-wrap}.edit-modal{max-width:700px}@media(max-width:768px){.grouping-columns{grid-template-columns:1fr}}.users-page{padding:2rem;max-width:1400px;margin:0 auto}.page-header h2{margin:0;font-size:1.75rem}.page-description{margin:.5rem 0 0;color:var(--text-secondary)}.loading-spinner{display:inline-block;width:32px;height:32px;border:3px solid var(--border-color);border-top-color:var(--accent-primary);border-radius:50%;animation:spin .8s linear infinite}.empty-icon{font-size:4rem;display:block;margin-bottom:1rem}.empty-state h3{margin:0 0 .5rem}.empty-state p{color:var(--text-secondary);margin:0 0 1.5rem}.users-list{display:flex;flex-direction:column;gap:1rem}.user-card{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:12px;overflow:hidden;transition:border-color .2s,box-shadow .2s}.user-card:hover{border-color:var(--accent-primary)}.user-card.expanded{border-color:var(--accent-primary);box-shadow:0 4px 20px rgba(var(--accent-rgb),.15)}.user-header{display:flex;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;cursor:pointer;transition:background .2s}.user-header:hover{background:rgba(var(--accent-rgb),.05)}.user-info{display:flex;align-items:center;gap:1rem}.user-type-badge{padding:.25rem .75rem;border-radius:20px;font-size:.75rem;font-weight:600;background:rgba(var(--accent-rgb),.1);color:var(--accent-primary)}.user-type-badge.admin{background:#ffc10726;color:#ffc107}.user-name{margin:0;font-size:1.1rem;font-weight:600}.user-email{margin:0;color:var(--text-secondary);font-size:.875rem}.user-actions{display:flex;align-items:center;gap:1rem}.status-badge{padding:.25rem .75rem;border-radius:20px;font-size:.75rem;font-weight:500}.status-badge.active{background:#4caf501a;color:#4caf50}.status-badge.inactive{background:#f443361a;color:#f44336}.btn-icon{background:none;border:none;cursor:pointer;padding:.5rem;border-radius:8px;transition:background .2s}.btn-icon:hover{background:#f443361a}.btn-icon.small{padding:.25rem;font-size:.875rem}.expand-icon{font-size:.75rem;color:var(--text-secondary);transition:transform .2s}.user-details{border-top:1px solid var(--border-color);padding:1.5rem;background:var(--bg-primary)}.loading-details{text-align:center;padding:2rem}.loading-details p{margin-top:1rem;color:var(--text-secondary)}.details-section{margin-bottom:2rem}.details-section:last-child{margin-bottom:0}.details-section h4{margin:0 0 1rem;font-size:1rem;font-weight:600;display:flex;align-items:center;gap:.5rem}.details-section h5{margin:1rem 0 .75rem;font-size:.875rem;font-weight:500;color:var(--text-secondary)}.info-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem}.info-item{display:flex;flex-direction:column;gap:.25rem}.info-item .label{font-size:.75rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.info-item .value{font-weight:500}.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:1rem}.stat-card{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:10px;padding:1rem;text-align:center}.stat-card.error .stat-value{color:var(--error-color)}.stat-value{display:block;font-size:1.5rem;font-weight:700;color:var(--accent-primary);margin-bottom:.25rem}.stat-label{font-size:.75rem;color:var(--text-secondary)}.status-breakdown{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:10px;padding:1rem;margin-top:1rem}.status-bars{display:flex;flex-direction:column;gap:.5rem}.status-bar-item{display:grid;grid-template-columns:50px 1fr 60px;align-items:center;gap:.75rem}.status-code{font-weight:600;font-family:monospace}.bar-container{height:8px;background:var(--bg-primary);border-radius:4px;overflow:hidden}.bar{height:100%;border-radius:4px;transition:width .3s ease}.status-bar-item .count{text-align:right;font-size:.875rem;color:var(--text-secondary)}.top-endpoints{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:10px;padding:1rem;margin-top:1rem}.endpoints-list{display:flex;flex-direction:column;gap:.5rem}.endpoint-item{display:grid;grid-template-columns:30px 1fr auto;align-items:center;gap:.75rem;padding:.5rem;background:var(--bg-primary);border-radius:6px}.endpoint-item .rank{color:var(--text-secondary);font-size:.75rem}.endpoint-item .path{font-size:.875rem;color:var(--accent-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.endpoint-item .count{font-weight:600;font-size:.875rem}.apikeys-section .no-keys{color:var(--text-secondary);text-align:center;padding:1rem}.api-keys-list{display:flex;flex-direction:column;gap:1rem}.api-key-card{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:10px;overflow:hidden}.key-header{display:flex;align-items:center;gap:1rem;padding:1rem;background:rgba(var(--accent-rgb),.05);border-bottom:1px solid var(--border-color)}.key-preview{font-family:monospace;font-size:1rem;padding:.25rem .5rem;background:var(--bg-primary);border-radius:4px}.key-type{padding:.25rem .75rem;border-radius:20px;font-size:.75rem;font-weight:500;background:rgba(var(--accent-rgb),.1);color:var(--accent-primary)}.key-type.unlimited{background:#4caf501a;color:#4caf50}.key-header .btn-icon{margin-left:auto}.key-details{padding:1rem;display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}@media(max-width:768px){.key-details{grid-template-columns:1fr}}.key-limits h5,.key-meta h5{margin:0 0 .75rem;font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary)}.limits-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem}.limit-item{display:flex;flex-direction:column;gap:.25rem}.limit-item .label{font-size:.7rem;color:var(--text-secondary);text-transform:uppercase}.limit-item .value{font-weight:600;font-family:monospace}.key-meta{display:flex;flex-direction:column;gap:.5rem}.meta-item{display:flex;justify-content:space-between;font-size:.875rem}.meta-item .label{color:var(--text-secondary)}.meta-item .expiry{color:var(--warning-color)}.usage-visual{padding:1rem;border-top:1px solid var(--border-color);display:flex;align-items:center;gap:1rem}.usage-bar-container{flex:1;height:8px;background:var(--bg-primary);border-radius:4px;overflow:hidden}.usage-bar{height:100%;border-radius:4px;transition:width .3s ease}.usage-text{font-size:.75rem;color:var(--text-secondary);white-space:nowrap}.error-text{color:var(--error-color);text-align:center;padding:1rem}.btn{padding:.75rem 1.5rem;border-radius:8px;font-weight:500;cursor:pointer;transition:all .2s;border:none}.btn-primary:hover{background:var(--accent-secondary);transform:translateY(-1px)}.btn-sm{padding:.5rem 1rem;font-size:.875rem}.btn-copy{padding:.5rem 1rem;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:6px;cursor:pointer;transition:all .2s}.btn-copy:hover{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary)}.btn-copy.copied{background:var(--success-color);color:#fff;border-color:var(--success-color)}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.section-header h4{margin:0}.no-stats-message{text-align:center;padding:2rem;background:rgba(var(--accent-rgb),.05);border-radius:10px;margin-top:1rem}.no-stats-message span{font-size:2rem;display:block;margin-bottom:.5rem}.no-stats-message p{margin:0;color:var(--text-primary);font-weight:500}.no-stats-message small{display:block;margin-top:.5rem;color:var(--text-secondary);font-size:.8rem}.no-keys{text-align:center;padding:2rem;background:var(--bg-secondary);border:1px dashed var(--border-color);border-radius:10px}.no-keys p{margin:0;color:var(--text-primary)}.no-keys small{display:block;margin-top:.5rem;color:var(--text-secondary);font-size:.8rem}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-content{background:var(--bg-secondary);border-radius:16px;padding:2rem;max-width:600px;width:90%;box-shadow:0 10px 40px #0000004d}.modal-content h3{margin:0 0 1rem;font-size:1.25rem}.modal-warning{background:#ffc1071a;border:1px solid rgba(255,193,7,.3);border-radius:8px;padding:1rem;margin-bottom:1.5rem;color:#ffc107;font-size:.875rem}.api-key-display{display:flex;gap:.5rem;margin-bottom:1.5rem}.api-key-display code{flex:1;padding:1rem;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:8px;font-family:monospace;font-size:.9rem;word-break:break-all;overflow-x:auto}.loading-spinner.small{width:14px;height:14px;border-width:2px;margin-right:.5rem}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-secondary{background:var(--bg-primary);color:var(--text-primary);border:1px solid var(--border-color)}.btn-secondary:hover{background:var(--bg-secondary)}.modal-sm{max-width:400px}.modal-actions{display:flex;gap:1rem;justify-content:flex-end;margin-top:1.5rem}.form-group label{display:block;font-weight:500;margin-bottom:.5rem;color:var(--text-primary)}.input-field{width:100%;padding:.75rem 1rem;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:8px;color:var(--text-primary);font-size:1rem;transition:border-color .2s}.input-field:focus{outline:none;border-color:var(--accent-primary)}.hint{display:block;font-size:.75rem;color:var(--text-secondary);margin-top:.5rem}.user-type-note{margin-bottom:1rem}.user-type-note .note{display:inline-block;padding:.5rem 1rem;border-radius:8px;font-size:.8rem}.user-type-note .note.admin{background:#ffc1071a;color:#ffc107}.user-type-note .note.user{background:rgba(var(--accent-rgb),.1);color:var(--accent-primary)}.validity-badge{padding:.25rem .5rem;border-radius:12px;font-size:.7rem;font-weight:500}.validity-badge.valid{background:#4caf501a;color:#4caf50}.validity-badge.expiring{background:#ff98001a;color:#ff9800}.validity-badge.expired{background:#f443361a;color:#f44336}.validity-badge.no-expiry{background:#9c27b01a;color:#9c27b0}.key-actions{display:flex;gap:.5rem;margin-left:auto}.btn-icon.renew{color:var(--accent-primary)}.btn-icon.renew:hover{background:rgba(var(--accent-rgb),.1)}.api-key-card.expired{border-color:#f443364d;background:#f4433605}.api-key-card.expiring-soon{border-color:#ff98004d;background:#ff980005}.expired-text{color:#f44336!important;font-weight:600}.expiring-text{color:#ff9800!important;font-weight:600}.mappings-page{padding:2rem;max-width:1400px;margin:0 auto}.modal-content{background:var(--bg-secondary);border-radius:16px;padding:2rem;max-width:600px;width:100%;max-height:90vh;overflow-y:auto;border:1px solid var(--border-color)}.mappings-table-container{overflow-x:auto}.mappings-table{width:100%;border-collapse:collapse;background:var(--bg-secondary);border-radius:12px;overflow:hidden}.mappings-table th,.mappings-table td{padding:.875rem 1rem;text-align:left;border-bottom:1px solid var(--border-color)}.mappings-table th{background:var(--bg-primary);font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary)}.mappings-table tr:hover{background:var(--bg-hover)}.mappings-table code{background:var(--bg-primary);padding:.25rem .5rem;border-radius:4px;font-family:monospace;font-size:.85rem}.pattern-cell code{color:var(--accent-primary)}.scope-cell{max-width:200px}.scope-info{display:flex;flex-direction:column;gap:.25rem}.scope-bundle{font-weight:500;font-size:.875rem}.scope-source{font-size:.75rem;color:var(--text-secondary)}.scope-table{font-size:.7rem;color:var(--text-muted);font-family:monospace}.prec-cell{text-align:center;font-weight:600;color:var(--accent-primary)}.actions-cell{white-space:nowrap}.hidden-badge{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;background:#ff6b6b26;color:#ff6b6b;border-radius:4px;font-size:.75rem;font-weight:500}.mask-badge{display:inline-block;padding:.25rem .5rem;background:rgba(var(--accent-rgb),.15);color:var(--accent-primary);border-radius:4px;font-size:.75rem}.muted{color:var(--text-muted);font-style:italic}.profiles-page{padding:2rem;max-width:1400px;margin:0 auto}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.modal-content{background:var(--bg-secondary);border-radius:16px;padding:2rem;max-width:700px;width:100%;max-height:90vh;overflow-y:auto;border:1px solid var(--border-color)}.modal-content h3{margin:0 0 1.5rem}.form-group{margin-bottom:1rem}.form-group label{display:block;margin-bottom:.375rem;font-weight:500;font-size:.875rem}.form-group input,.form-group select{width:100%;padding:.625rem;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-primary);color:var(--text-primary);font-size:.9rem}.form-group input:focus,.form-group select:focus{outline:none;border-color:var(--accent-primary)}.form-group small{display:block;margin-top:.25rem;font-size:.75rem;color:var(--text-muted)}.radio-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem}.radio-card{position:relative;cursor:pointer}.radio-card input{position:absolute;opacity:0}.radio-card .card-content{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:1rem;background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:10px;transition:all .15s}.radio-card:hover .card-content{border-color:var(--accent-primary)}.radio-card.selected .card-content{border-color:var(--accent-primary);background:rgba(var(--accent-rgb),.1)}.radio-card .card-title{font-weight:500;font-size:.9rem}.radio-card code{font-size:.75rem;color:var(--text-muted);background:var(--bg-primary);padding:.25rem .5rem;border-radius:4px}.radio-list{display:flex;flex-direction:column;gap:.5rem}.radio-item{display:flex;align-items:center;gap:.75rem;padding:.75rem;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;cursor:pointer;transition:all .15s}.radio-item:hover{border-color:var(--accent-primary)}.radio-item.selected{border-color:var(--accent-primary);background:rgba(var(--accent-rgb),.1)}.radio-item input{width:18px;height:18px;accent-color:var(--accent-primary)}.radio-item .item-title{display:block;font-weight:500}.radio-item .item-desc{display:block;font-size:.75rem;color:var(--text-muted)}.checkbox-label{display:flex!important;align-items:center;gap:.5rem;cursor:pointer;padding:.75rem 0}.checkbox-label input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent-primary)}.form-actions{display:flex;justify-content:flex-end;gap:.75rem;margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid var(--border-color)}.profiles-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.5rem}.profile-card{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:16px;padding:1.5rem;transition:all .2s}.profile-card:hover{border-color:var(--accent-primary);box-shadow:0 4px 20px #0000001a}.profile-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.profile-name{font-size:1.25rem;font-weight:600}.profile-actions{display:flex;gap:.25rem}.profile-bundle{font-size:.875rem;color:var(--text-secondary);margin-bottom:1rem}.profile-config{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.config-item{display:flex;flex-direction:column;padding:.75rem;background:var(--bg-primary);border-radius:8px}.config-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:.25rem}.config-value{font-weight:500;font-size:.875rem}.config-value.active{color:var(--accent-primary)}.btn-icon{background:none;border:none;font-size:1rem;cursor:pointer;padding:.25rem .5rem;opacity:.7;transition:opacity .15s}.btn{padding:.625rem 1.25rem;border-radius:8px;font-weight:500;cursor:pointer;transition:all .15s;border:none}.formatters-page{padding:2rem;max-width:1400px;margin:0 auto}.filters{margin-bottom:1.5rem}.filter-select{padding:.5rem 1rem;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-secondary);color:var(--text-primary);min-width:200px}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-icon{background:none;border:none;font-size:1rem;cursor:pointer;padding:.25rem;opacity:.7;transition:opacity .15s}.modal-content{background:var(--bg-secondary);border-radius:16px;max-width:500px;width:100%;max-height:90vh;overflow-y:auto;padding:1.5rem;border:1px solid var(--border-color)}.modal-content.large{max-width:700px}.form-group input.mono,.form-group textarea.mono{font-family:Fira Code,JetBrains Mono,monospace}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.form-section{margin:1.5rem 0;padding:1rem;background:var(--bg-primary);border-radius:12px}.form-section h4{margin:0 0 1rem;font-size:.9rem;color:var(--text-secondary)}.test-section{margin-top:.5rem}.test-result{display:flex;align-items:center;gap:.75rem;padding:.75rem;border-radius:8px;margin-top:.75rem}.test-result.success{background:#2ecc711a;border:1px solid rgba(46,204,113,.3)}.test-result.error{background:#e74c3c1a;border:1px solid rgba(231,76,60,.3)}.test-result .result-icon{font-size:1.1rem}.test-result code{font-family:Fira Code,monospace;font-size:.85rem;padding:.25rem .5rem;background:var(--bg-secondary);border-radius:4px}.test-result .arrow{color:var(--text-muted)}.test-result .result-value{color:#2ecc71;font-weight:600}.category-section{margin-bottom:2rem}.category-title{display:flex;align-items:center;gap:.5rem;margin:0 0 1rem;font-size:1.1rem;color:var(--text-primary)}.category-icon{font-size:1.25rem}.category-count{margin-left:auto;font-size:.75rem;font-weight:400;color:var(--text-muted);background:var(--bg-primary);padding:.25rem .5rem;border-radius:4px}.formatters-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem}.formatter-card{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:12px;padding:1rem;transition:all .2s}.formatter-card:hover{border-color:var(--accent-primary)}.formatter-card.builtin{background:linear-gradient(135deg,var(--bg-secondary) 0%,rgba(var(--accent-rgb),.05) 100%)}.formatter-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.formatter-name{font-family:Fira Code,monospace;font-size:.9rem;font-weight:600;color:var(--accent-primary);background:rgba(var(--accent-rgb),.1);padding:.25rem .5rem;border-radius:4px}.builtin-badge{font-size:.65rem;text-transform:uppercase;letter-spacing:.05em;padding:.2rem .5rem;background:var(--bg-primary);border-radius:4px;color:var(--text-muted)}.formatter-actions{display:flex;gap:.25rem}.formatter-desc{font-size:.8rem;color:var(--text-secondary);margin:.5rem 0}.formatter-example{display:flex;align-items:center;gap:.5rem;padding:.5rem;background:var(--bg-primary);border-radius:6px;margin:.75rem 0;font-size:.85rem}.formatter-example code{font-family:Fira Code,monospace;padding:.2rem .4rem;border-radius:4px}.example-input{background:#e74c3c1a;color:#e74c3c}.example-output{background:#2ecc711a;color:#2ecc71}.formatter-example .arrow{color:var(--text-muted);font-size:.9rem}.formatter-pattern{display:flex;align-items:center;gap:.5rem;font-size:.75rem;margin-top:.5rem}.pattern-label{color:var(--text-muted)}.formatter-pattern code{font-family:Fira Code,monospace;font-size:.7rem;color:var(--text-secondary);background:var(--bg-primary);padding:.2rem .4rem;border-radius:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}.blacklist-page{padding:2rem;max-width:1400px;margin:0 auto}.page-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:2rem}.page-header h2{margin:0 0 .5rem}.page-description{margin:0;color:var(--text-secondary)}.page-description .stats{display:inline-block;margin-left:.75rem;padding:.25rem .5rem;background:var(--bg-primary);border-radius:4px;font-size:.8rem}.btn{padding:.625rem 1.25rem;border-radius:8px;font-weight:500;cursor:pointer;transition:all .15s;border:none;display:inline-flex;align-items:center;gap:.5rem}.btn-primary{background:var(--accent-primary);color:#fff}.btn-primary:hover{opacity:.9}.btn-danger{background:#e74c3c;color:#fff}.btn-danger:hover{background:#c0392b}.btn-danger-outline{background:transparent;border:1px solid #e74c3c;color:#e74c3c}.btn-danger-outline:hover{background:#e74c3c1a}.btn-outline{background:transparent;border:1px solid var(--border-color);color:var(--text-primary)}.btn-outline:hover{background:var(--bg-hover)}.btn-icon{background:none;border:none;font-size:1.1rem;cursor:pointer;padding:.25rem .5rem;opacity:.7;transition:opacity .15s}.btn-icon:hover{opacity:1}.btn-icon.delete:hover{filter:saturate(2)}.loading-state,.empty-state{text-align:center;padding:4rem 2rem}.loading-state p,.empty-state p{color:var(--text-secondary);margin-top:1rem}.empty-state h3{margin:1rem 0 .5rem}.empty-icon{font-size:4rem;opacity:.5}.loading-spinner{width:40px;height:40px;border:3px solid var(--border-color);border-top-color:var(--accent-primary);border-radius:50%;animation:spin 1s linear infinite;margin:0 auto;display:block}@keyframes spin{to{transform:rotate(360deg)}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.modal-content{background:var(--bg-secondary);border-radius:16px;max-width:500px;width:100%;padding:1.5rem;border:1px solid var(--border-color)}.modal-content h3{margin:0 0 1.5rem;font-size:1.25rem}.form-group{margin-bottom:1.25rem}.form-group label{display:block;font-size:.85rem;font-weight:500;color:var(--text-secondary);margin-bottom:.5rem}.form-group input,.form-group select,.form-group textarea{width:100%;padding:.75rem;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-primary);color:var(--text-primary);font-size:.9rem;font-family:inherit}.form-group textarea{resize:vertical;min-height:80px}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--accent-primary)}.form-group input:disabled{opacity:.6;cursor:not-allowed}.form-group small{display:block;font-size:.75rem;color:var(--text-muted);margin-top:.375rem}.checkbox-label{display:flex!important;align-items:center;gap:.5rem;cursor:pointer}.checkbox-label input[type=checkbox]{width:auto;accent-color:var(--accent-primary)}.form-actions{display:flex;gap:1rem;margin-top:1.5rem;justify-content:flex-end}.blacklist-table-container{background:var(--bg-secondary);border-radius:12px;border:1px solid var(--border-color);overflow:hidden}.blacklist-table{width:100%;border-collapse:collapse}.blacklist-table th{text-align:left;padding:1rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);border-bottom:1px solid var(--border-color);background:var(--bg-primary)}.blacklist-table td{padding:1rem;border-bottom:1px solid var(--border-color);vertical-align:middle}.blacklist-table tr:last-child td{border-bottom:none}.blacklist-table tr.expired{opacity:.6}.blacklist-table tr:hover{background:var(--bg-hover)}.status-badge{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;border-radius:4px;font-size:.75rem;font-weight:500}.status-badge.active{background:#e74c3c26;color:#e74c3c}.status-badge.expired{background:var(--bg-primary);color:var(--text-muted)}.ip-cell code{font-family:Fira Code,JetBrains Mono,monospace;font-size:.9rem;padding:.25rem .5rem;background:var(--bg-primary);border-radius:4px}.reason-cell{max-width:250px}.reason-cell span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.expiration-cell{white-space:nowrap;font-size:.85rem}.date-cell{font-size:.8rem;color:var(--text-secondary);white-space:nowrap}.actions-cell{white-space:nowrap;text-align:right}.metrics-page{display:flex;flex-direction:column;gap:1.5rem}.metrics-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem;gap:1rem;color:var(--text-secondary)}.metrics-header{display:flex;justify-content:flex-end}.period-selector{display:flex;align-items:center;gap:.5rem;padding:.5rem;background:var(--bg-card);border:1px solid var(--border-color);border-radius:8px}.period-selector span{color:var(--text-secondary);font-size:.85rem;padding-right:.5rem}.period-btn{padding:.5rem .75rem;background:transparent;border:none;border-radius:6px;color:var(--text-secondary);font-size:.85rem;transition:all var(--transition-fast)}.period-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.period-btn.active{background:var(--accent-glow);color:var(--accent-primary)}.metrics-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem}.summary-card{display:flex;flex-direction:column;padding:1.25rem;background:var(--bg-card);border:1px solid var(--border-color);border-radius:10px}.summary-label{font-size:.8rem;color:var(--text-muted);text-transform:uppercase;margin-bottom:.5rem}.summary-value{font-size:1.75rem;font-weight:600;font-family:var(--font-mono);color:var(--accent-primary)}.summary-value.error{color:var(--error)}.summary-extra{font-size:.75rem;color:var(--text-muted);margin-top:.25rem}.charts-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.5rem}.chart-card{padding:1.25rem;background:var(--bg-card);border:1px solid var(--border-color);border-radius:12px}.chart-card.full-width{grid-column:span 2}.chart-title{font-size:.9rem;font-weight:500;color:var(--text-secondary);margin-bottom:1rem}.chart-container{width:100%}.recharts-tooltip-wrapper{font-family:var(--font-mono);font-size:.8rem}@media(max-width:900px){.charts-grid{grid-template-columns:1fr}.chart-card.full-width{grid-column:span 1}}.subscribers-page{padding:24px;max-width:1400px;margin:0 auto}.btn-primary{background:#10b981;color:#000;border:none;padding:10px 20px;border-radius:8px;font-weight:600;cursor:pointer;transition:all .2s}.filters-bar{display:flex;gap:16px;margin-bottom:24px}.search-input{flex:1;max-width:400px;padding:10px 16px;border:1px solid #374151;border-radius:8px;background:#1f2937;color:#f9fafb;font-size:.95rem}.search-input:focus{outline:none;border-color:#10b981}.filter-select{padding:10px 16px;border:1px solid #374151;border-radius:8px;background:#1f2937;color:#f9fafb;font-size:.95rem;cursor:pointer}.subscribers-table{background:#1f2937;border-radius:12px;overflow:hidden;border:1px solid #374151}.subscribers-table table{width:100%;border-collapse:collapse}.subscribers-table th,.subscribers-table td{padding:14px 16px;text-align:left;border-bottom:1px solid #374151}.subscribers-table th{background:#111827;color:#9ca3af;font-weight:600;font-size:.85rem;text-transform:uppercase;letter-spacing:.5px}.subscribers-table tr:hover{background:#374151}.username-cell{font-weight:600;color:#f9fafb}.status-badge{display:inline-block;padding:4px 10px;border-radius:12px;font-size:.8rem;font-weight:600;color:#fff}.actions-cell{display:flex;gap:8px}.btn-sm{padding:6px 12px;border-radius:6px;font-size:.8rem;border:none;cursor:pointer;transition:all .2s}.btn-view{background:#374151;color:#f9fafb}.btn-view:hover{background:#4b5563}.empty-row{text-align:center;color:#6b7280;padding:48px!important}.modal-content{background:#1f2937;border-radius:16px;max-width:900px;width:100%;max-height:90vh;overflow-y:auto;border:1px solid #374151}.subscriber-details .details-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;padding:24px}.detail-card{background:#111827;border-radius:12px;padding:20px;border:1px solid #374151}.detail-card.full-width{grid-column:span 2}.detail-card h3{margin:0 0 16px;color:#f9fafb;font-size:1rem}.detail-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid #374151}.detail-row:last-child{border-bottom:none}.detail-row span:first-child{color:#9ca3af}.detail-row strong{color:#f9fafb}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.stats-grid.five-cols{grid-template-columns:repeat(5,1fr)}.stat-item{text-align:center;padding:12px;background:#1f2937;border-radius:8px}.stat-item.error .stat-value{color:#ef4444}.stat-value{display:block;font-size:1.75rem;font-weight:700;color:#10b981}.stat-label{display:block;font-size:.8rem;color:#9ca3af;margin-top:4px}.stats-breakdown{margin-top:20px;padding-top:16px;border-top:1px solid #374151}.stats-breakdown h4{margin:0 0 12px;font-size:.9rem;color:#9ca3af}.distribution-bars{display:flex;flex-direction:column;gap:8px}.distribution-item{display:flex;align-items:center;gap:12px}.dist-label{width:100px;font-size:.85rem}.dist-label.success{color:#10b981}.dist-label.error{color:#ef4444}.dist-bar-container{flex:1;height:8px;background:#374151;border-radius:4px;overflow:hidden}.dist-bar{height:100%;border-radius:4px;transition:width .3s ease}.dist-bar.success{background:#10b981}.dist-bar.error{background:#ef4444}.dist-count{width:60px;text-align:right;font-size:.9rem;font-weight:600;color:#f9fafb}.top-modules{margin-top:20px;padding-top:16px;border-top:1px solid #374151}.top-modules h4{margin:0 0 12px;font-size:.9rem;color:#9ca3af}.modules-list{display:flex;flex-direction:column;gap:8px}.module-item{display:flex;align-items:center;gap:12px;padding:8px 12px;background:#1f2937;border-radius:6px}.module-item .rank{font-size:.8rem;font-weight:700;color:#10b981;width:30px}.module-item .module-name{flex:1;font-size:.9rem;color:#f9fafb}.module-item .module-count{font-size:.9rem;font-weight:600;color:#9ca3af}.no-stats-message{text-align:center;padding:24px;color:#6b7280}.no-stats-message span{font-size:2rem;display:block;margin-bottom:12px}.no-stats-message p{margin:0 0 4px;color:#9ca3af}.no-stats-message small{font-size:.8rem}.no-subscription,.no-payments{color:#6b7280;text-align:center;padding:20px}.payments-table{width:100%;border-collapse:collapse;margin-top:12px}.payments-table th,.payments-table td{padding:10px 12px;text-align:left;border-bottom:1px solid #374151}.payments-table th{color:#9ca3af;font-size:.8rem;text-transform:uppercase}.payment-status{padding:3px 8px;border-radius:6px;font-size:.8rem}.payment-status.paid{background:#10b98133;color:#10b981}.payment-status.pending{background:#f59e0b33;color:#f59e0b}.create-modal{max-width:500px}.form-group{padding:0 24px;margin-bottom:20px}.form-group:first-of-type{margin-top:20px}.form-group input{width:100%;padding:12px 16px;border:1px solid #374151;border-radius:8px;background:#111827;color:#f9fafb;font-size:1rem}.form-group input:focus{outline:none;border-color:#10b981}.expiration-badge{display:inline-block;padding:4px 10px;border-radius:12px;font-size:.8rem;font-weight:600}.expiration-badge.ok{background:#10b98133;color:#10b981}.expiration-badge.warning{background:#f59e0b33;color:#f59e0b}.expiration-badge.expired{background:#ef444433;color:#ef4444}.renewal-actions{display:flex;gap:8px;margin-top:16px;flex-wrap:wrap}.no-subscription{display:flex;flex-direction:column;align-items:center;gap:16px}.subscription-modal{max-width:500px}.subscription-info{padding:16px 24px;background:#111827;border-bottom:1px solid #374151}.subscription-info p{margin:0;color:#9ca3af}.subscription-info strong{color:#f9fafb}.form-group select{width:100%;padding:12px 16px;border:1px solid #374151;border-radius:8px;background:#111827;color:#f9fafb;font-size:1rem;cursor:pointer}.form-group select:focus{outline:none;border-color:#10b981}.form-group small{display:block;margin-top:6px;color:#6b7280;font-size:.85rem}.duration-presets{display:flex;gap:8px;padding:0 24px;margin-bottom:20px;flex-wrap:wrap}.preset-btn{padding:8px 16px;border:1px solid #374151;border-radius:8px;background:#111827;color:#9ca3af;cursor:pointer;transition:all .2s}.preset-btn:hover{border-color:#10b981;color:#10b981}.preset-btn.active{background:#10b981;border-color:#10b981;color:#000}.btn-primary:disabled{opacity:.5;cursor:not-allowed}@media(max-width:768px){.subscriber-details .details-grid{grid-template-columns:1fr}.detail-card.full-width{grid-column:span 1}.stats-grid{grid-template-columns:1fr}.filters-bar{flex-direction:column}.search-input{max-width:none}.renewal-actions{flex-direction:column}}.modules-page{padding:24px;max-width:1400px;margin:0 auto}.categories-bar{display:flex;gap:12px;margin-bottom:24px;flex-wrap:wrap}.category-btn{padding:10px 16px;border:1px solid #374151;border-radius:8px;background:#1f2937;color:#9ca3af;cursor:pointer;transition:all .2s;font-size:.9rem}.category-btn:hover{border-color:#10b981;color:#f9fafb}.category-btn.active{background:#10b981;border-color:#10b981;color:#000;font-weight:600}.modules-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:20px}.module-card{background:#1f2937;border:1px solid #374151;border-radius:12px;padding:20px;transition:all .2s}.module-card:hover{border-color:#10b981;transform:translateY(-2px)}.module-card.maintenance{opacity:.7;border-color:#f59e0b}.module-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.module-icon{font-size:2rem}.module-badges{display:flex;gap:8px}.badge{padding:4px 8px;border-radius:6px;font-size:.7rem;font-weight:700;text-transform:uppercase}.badge.maintenance{background:#f59e0b33;color:#f59e0b;border:1px solid #F59E0B}.module-name{margin:0 0 8px;color:#f9fafb;font-size:1.1rem}.module-description{color:#9ca3af;font-size:.9rem;margin:0 0 16px;line-height:1.4}.module-meta{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:12px}.category-tag{background:#374151;padding:4px 10px;border-radius:6px;font-size:.8rem;color:#d1d5db}.group-tag{background:linear-gradient(135deg,#3b82f6,#8b5cf6);padding:4px 10px;border-radius:6px;font-size:.75rem;color:#fff;font-weight:500}.limits{font-size:.8rem;color:#6b7280}.endpoint-link{font-size:.8rem;color:#10b981;margin-bottom:16px}.module-actions{display:flex;gap:8px;padding-top:16px;border-top:1px solid #374151}.btn-sm{padding:8px 12px;border-radius:6px;font-size:.8rem;border:none;cursor:pointer;transition:all .2s}.modal-content{background:#1f2937;border-radius:16px;max-width:700px;width:100%;max-height:90vh;overflow-y:auto;border:1px solid #374151}.modal-header h2{margin:0;color:#10b981}.form-group textarea{resize:vertical}.params-section{margin-top:16px}.params-list{background:#111827;border:1px solid #374151;border-radius:8px;padding:16px}.params-hint{margin:0 0 12px;font-size:.85rem;color:#9ca3af}.param-item{background:#1f2937;border:1px solid #374151;border-radius:8px;padding:12px;margin-bottom:12px}.param-item:last-child{margin-bottom:0}.param-checkbox{display:flex;align-items:center;gap:10px;cursor:pointer;font-weight:500;color:#f9fafb}.param-checkbox input[type=checkbox]{width:18px;height:18px;accent-color:#10B981}.param-name{font-family:monospace;background:#374151;padding:2px 8px;border-radius:4px}.param-config{display:grid;grid-template-columns:1fr 120px auto;gap:12px;margin-top:12px;padding-top:12px;border-top:1px solid #374151}.param-label-input,.param-type-select{padding:8px 12px;border:1px solid #374151;border-radius:6px;background:#111827;color:#f9fafb;font-size:.9rem}.param-label-input:focus,.param-type-select:focus{outline:none;border-color:#10b981}.param-required{display:flex;align-items:center;gap:6px;color:#9ca3af;font-size:.85rem;cursor:pointer;white-space:nowrap}.param-required input[type=checkbox]{width:14px;height:14px;accent-color:#F59E0B}.loading-params{text-align:center;padding:20px;color:#9ca3af}.no-params{text-align:center;padding:20px;color:#6b7280;background:#111827;border:1px dashed #374151;border-radius:8px}@media(max-width:768px){.form-row,.modules-grid{grid-template-columns:1fr}.categories-bar{overflow-x:auto;flex-wrap:nowrap;padding-bottom:8px}.param-config{grid-template-columns:1fr}}.plans-page{padding:24px;max-width:1400px;margin:0 auto}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.page-header h1{margin:0;color:#10b981;font-size:1.75rem}.page-header p{margin:4px 0 0;color:#9ca3af}.plans-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:24px}.plan-card{background:#1f2937;border:2px solid #374151;border-radius:16px;padding:24px;text-align:center;transition:all .2s}.plan-card:hover{border-color:#10b981;transform:translateY(-4px)}.plan-card.inactive{opacity:.6;border-color:#6b7280}.plan-header{display:flex;justify-content:center;margin-bottom:16px;min-height:28px}.plan-badges{display:flex;gap:8px}.badge{padding:4px 10px;border-radius:8px;font-size:.7rem;font-weight:700;text-transform:uppercase}.badge.premium{background:linear-gradient(135deg,#f59e0b,#d97706);color:#000}.badge.inactive{background:#6b7280;color:#fff}.plan-name{margin:0 0 16px;color:#f9fafb;font-size:1.5rem}.plan-price{margin-bottom:8px}.plan-price .currency{font-size:1.25rem;color:#9ca3af;vertical-align:top}.plan-price .value{font-size:2.5rem;font-weight:700;color:#10b981}.plan-duration{color:#9ca3af;font-size:.95rem;margin-bottom:16px}.plan-duration .bonus{display:block;color:#10b981;font-size:.85rem;margin-top:4px}.plan-description{color:#6b7280;font-size:.9rem;line-height:1.4;margin-bottom:20px}.plan-actions{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;padding-top:20px;border-top:1px solid #374151}.btn-sm{padding:8px 12px;border-radius:8px;font-size:.85rem;border:none;cursor:pointer;transition:all .2s}.btn-edit{background:#374151;color:#f9fafb}.btn-edit:hover{background:#4b5563}.btn-modules{background:#3b82f6;color:#fff}.btn-modules:hover{background:#2563eb}.btn-warning{background:#f59e0b;color:#000}.btn-warning:hover{background:#d97706}.btn-success{background:#10b981;color:#000}.btn-success:hover{background:#059669}.btn-danger{background:#ef4444;color:#fff}.btn-danger:hover{background:#dc2626}.btn-primary{background:#10b981;color:#000;border:none;padding:10px 20px;border-radius:8px;font-weight:600;cursor:pointer}.btn-primary:hover{background:#059669}.btn-secondary{background:#374151;color:#f9fafb;border:none;padding:10px 20px;border-radius:8px;cursor:pointer}.btn-secondary:hover{background:#4b5563}.loading{text-align:center;padding:48px;color:#9ca3af}.empty-state{grid-column:1 / -1;text-align:center;padding:48px;color:#6b7280}.error-banner{background:#fee2e2;border:1px solid #EF4444;color:#991b1b;padding:12px 16px;border-radius:8px;margin-bottom:16px;display:flex;justify-content:space-between;align-items:center}.error-banner button{background:none;border:none;color:#991b1b;cursor:pointer;font-size:1.2rem}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.modal-content{background:#1f2937;border-radius:16px;max-width:600px;width:100%;max-height:90vh;overflow-y:auto;border:1px solid #374151}.modules-modal{max-width:800px}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #374151}.modal-header h2{margin:0;color:#10b981;font-size:1.25rem}.close-btn{background:none;border:none;color:#9ca3af;font-size:1.5rem;cursor:pointer}.close-btn:hover{color:#f9fafb}.form-body{padding:24px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:8px;color:#f9fafb;font-weight:500}.form-group input,.form-group select,.form-group textarea{width:100%;padding:12px 16px;border:1px solid #374151;border-radius:8px;background:#111827;color:#f9fafb;font-size:1rem}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:#10b981}.checkbox-group{display:flex;align-items:center}.checkbox-group label{display:flex;align-items:center;gap:8px;cursor:pointer}.checkbox-group input[type=checkbox]{width:auto;accent-color:#10B981}.modal-actions{display:flex;justify-content:flex-end;gap:12px;padding:20px 24px;border-top:1px solid #374151}.modules-list{padding:0 24px;max-height:400px;overflow-y:auto}.modules-header{display:grid;grid-template-columns:1fr 120px 120px 80px;gap:12px;padding:12px 0;border-bottom:1px solid #374151;color:#9ca3af;font-size:.85rem;font-weight:600;position:sticky;top:0;background:#1f2937}.module-row{display:grid;grid-template-columns:1fr 120px 120px 80px;gap:12px;padding:12px 0;border-bottom:1px solid #374151;align-items:center}.module-name-col{color:#f9fafb;font-size:.9rem}.module-row input[type=number]{padding:8px;border:1px solid #374151;border-radius:6px;background:#111827;color:#f9fafb;font-size:.85rem;width:100%}.module-row input[type=number]:focus{outline:none;border-color:#10b981}.module-row input[type=checkbox]{width:20px;height:20px;accent-color:#10B981;cursor:pointer;margin:0 auto}.empty-modules{text-align:center;padding:40px;color:#6b7280}@media(max-width:768px){.form-row,.plans-grid{grid-template-columns:1fr}.modules-header,.module-row{grid-template-columns:1fr;gap:8px}.modules-header span:not(:first-child){display:none}.module-row{padding:16px;background:#111827;border-radius:8px;margin-bottom:8px;border:none}}.module-groups-page{padding:24px;max-width:1400px;margin:0 auto}.page-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px;gap:16px;flex-wrap:wrap}.header-content h1{font-size:1.5rem;font-weight:600;margin:0;color:#e0e0e0}.header-content p{color:#888;margin:8px 0 0;font-size:.9rem}.error-banner{background:#ef444426;border:1px solid #ef4444;color:#f87171;padding:12px 16px;border-radius:8px;margin-bottom:20px;display:flex;justify-content:space-between;align-items:center}.error-banner button{background:none;border:none;color:#f87171;cursor:pointer;font-size:1.2rem}.groups-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:20px}.group-card{background:#1e1e2e;border:1px solid #2a2a3e;border-radius:12px;padding:20px;transition:all .2s}.group-card:hover{border-color:#3d3d5c;box-shadow:0 4px 12px #0000004d}.group-card.inactive{opacity:.6;background:#16161e}.group-header{display:flex;align-items:center;gap:12px;margin-bottom:12px}.group-icon{font-size:2rem;background:linear-gradient(135deg,#3b82f6,#8b5cf6);width:48px;height:48px;border-radius:10px;display:flex;align-items:center;justify-content:center}.group-info{flex:1}.group-info h3{margin:0;font-size:1.1rem;font-weight:600;color:#e0e0e0}.group-slug{font-size:.75rem;color:#666;font-family:JetBrains Mono,monospace}.group-order{font-size:.75rem;color:#666;background:#2a2a3e;padding:4px 8px;border-radius:6px}.group-description{color:#888;font-size:.85rem;margin:0 0 12px;line-height:1.5}.group-stats{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-top:1px solid #2a2a3e;border-bottom:1px solid #2a2a3e;margin-bottom:12px}.group-stats .stat{font-size:.85rem;color:#888}.group-stats .stat strong{color:#3b82f6}.status-badge{font-size:.75rem;padding:4px 10px;border-radius:20px}.status-badge.active{background:#10b98126;color:#10b981}.status-badge.inactive{background:#9ca3af26;color:#9ca3af}.group-actions{display:flex;gap:8px;justify-content:flex-end}.btn-icon{background:#2a2a3e;border:none;padding:8px 12px;border-radius:6px;cursor:pointer;font-size:1rem;transition:all .2s}.btn-icon:hover{background:#3d3d5c}.btn-icon.danger:hover{background:#ef444433}.btn-icon:disabled{opacity:.5;cursor:not-allowed}.empty-state{grid-column:1 / -1;text-align:center;padding:60px 20px;background:#1e1e2e;border-radius:12px;border:2px dashed #2a2a3e}.empty-icon{font-size:3rem;display:block;margin-bottom:16px}.empty-state h3{color:#e0e0e0;margin:0 0 8px}.empty-state p{color:#888;margin:0 0 20px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.modal{background:#1e1e2e;border-radius:16px;width:100%;max-width:500px;max-height:90vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 20px 60px #00000080}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid #2a2a3e}.modal-header h2{margin:0;font-size:1.2rem;color:#e0e0e0}.close-btn{background:none;border:none;color:#888;font-size:1.5rem;cursor:pointer}.close-btn:hover{color:#e0e0e0}.modal-body{padding:20px;overflow-y:auto;flex:1}.form-group{margin-bottom:16px}.form-group label{display:block;margin-bottom:6px;font-size:.85rem;color:#888;font-weight:500}.form-group input,.form-group textarea,.form-group select{width:100%;padding:10px 14px;background:#121218;border:1px solid #2a2a3e;border-radius:8px;color:#e0e0e0;font-size:.9rem}.form-group input:focus,.form-group textarea:focus,.form-group select:focus{outline:none;border-color:#3b82f6}.form-group small{display:block;margin-top:4px;font-size:.75rem;color:#666}.icon-selector{display:flex;flex-wrap:wrap;gap:8px}.icon-btn{width:42px;height:42px;border:2px solid #2a2a3e;background:#121218;border-radius:8px;font-size:1.2rem;cursor:pointer;transition:all .2s}.icon-btn:hover{border-color:#3d3d5c}.icon-btn.selected{border-color:#3b82f6;background:#3b82f626}.modal-footer{display:flex;justify-content:flex-end;gap:12px;padding:16px 20px;border-top:1px solid #2a2a3e}.btn-primary{background:linear-gradient(135deg,#3b82f6,#8b5cf6);color:#fff;border:none;padding:10px 20px;border-radius:8px;font-weight:500;cursor:pointer;transition:all .2s}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 12px #3b82f64d}.btn-primary:disabled{opacity:.6;cursor:not-allowed;transform:none}.btn-secondary{background:#2a2a3e;color:#e0e0e0;border:none;padding:10px 20px;border-radius:8px;cursor:pointer;transition:all .2s}.btn-secondary:hover{background:#3d3d5c}.loading{text-align:center;padding:60px;color:#888}:root{--bg-primary: #0a0e14;--bg-secondary: #11161d;--bg-tertiary: #1a2028;--bg-card: #141a22;--bg-hover: #1e2630;--text-primary: #e6edf3;--text-secondary: #8b949e;--text-muted: #6e7681;--accent-primary: #22d3ee;--accent-secondary: #06b6d4;--accent-tertiary: #0891b2;--accent-glow: rgba(34, 211, 238, .15);--success: #10b981;--warning: #f59e0b;--error: #ef4444;--info: #3b82f6;--border-color: #21262d;--border-accent: #30363d;--font-sans: "Outfit", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .5);--shadow-glow: 0 0 20px var(--accent-glow);--transition-fast: .15s ease;--transition-base: .25s ease}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font-sans);background:var(--bg-primary);color:var(--text-primary);line-height:1.6;min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at 20% 20%,rgba(34,211,238,.05) 0%,transparent 50%),radial-gradient(ellipse at 80% 80%,rgba(6,182,212,.03) 0%,transparent 50%);pointer-events:none;z-index:-1}a{color:var(--accent-primary);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--accent-secondary)}button{font-family:inherit;cursor:pointer}input,textarea,select{font-family:inherit}code{font-family:var(--font-mono);font-size:.9em}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--border-accent);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-fadeIn{animation:fadeIn .3s ease forwards}.animate-pulse{animation:pulse 2s infinite}.animate-spin{animation:spin 1s linear infinite}
