.skill-selector h2{margin:0 0 8px}.selected-count{background:var(--bg-color);border-radius:var(--radius);font-size:14px;margin-bottom:24px;padding:12px 16px}.skill-category{margin-bottom:32px}.category-header{align-items:center;display:flex;gap:12px;margin-bottom:16px}.category-icon{font-size:24px}.category-info h3{font-size:18px;margin:0}.category-info p{color:var(--text-light);font-size:14px;margin:4px 0 0}.skill-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.skill-card{border:2px solid var(--border-color);border-radius:var(--radius);cursor:pointer;padding:16px;transition:all .2s}.skill-card.selected,.skill-card:hover{border-color:var(--primary-color)}.skill-card.selected{background:#3498db0d}.skill-header{align-items:center;display:flex;gap:12px;margin-bottom:8px}.skill-header input[type=checkbox]{cursor:pointer;height:18px;width:18px}.skill-header h4{font-size:15px;margin:0}.skill-description{color:var(--text-light);font-size:13px;line-height:1.5;margin:0 0 8px}.skill-dependencies{background:var(--bg-color);border-radius:4px;color:var(--text-light);display:inline-block;font-size:11px;padding:4px 8px}.selected-skills-summary{border-top:1px solid var(--border-color);margin-top:32px;padding-top:24px}.selected-skills-summary h3{font-size:16px;margin:0 0 16px}.selected-skills-list{display:flex;flex-wrap:wrap;gap:8px}.skill-tag{align-items:center;background:var(--primary-color);border-radius:16px;color:#fff;display:inline-flex;font-size:13px;gap:8px;padding:6px 12px}.skill-tag button{background:#0000;color:#fff;font-size:16px;line-height:1;opacity:.7;padding:0}.skill-tag button:hover{opacity:1}.requirement-editor .editor-header{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:24px}.requirement-editor h2{margin:0 0 8px}.requirement-form{background:var(--bg-color);border-radius:var(--radius);margin-bottom:24px;padding:24px}.priority-buttons{display:flex;gap:8px}.priority-btn{background:#fff;border:2px solid var(--border-color);border-radius:var(--radius);font-size:13px;font-weight:500;padding:8px 16px}.priority-btn.selected{color:#fff}.form-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:24px}.requirements-list{display:flex;flex-direction:column;gap:24px}.priority-group h3{font-size:16px;font-weight:600;margin:0 0 12px}.requirement-cards{display:flex;flex-direction:column;gap:12px}.requirement-card{align-items:flex-start;background:var(--card-bg);border:1px solid var(--border-color);border-left:4px solid;border-radius:var(--radius);display:flex;justify-content:space-between;padding:16px}.requirement-content{flex:1 1}.requirement-content h4{font-size:15px;margin:0 0 4px}.requirement-content p{color:var(--text-light);font-size:13px;margin:0}.requirement-actions{display:flex;gap:8px}.requirement-actions button{background:#0000;font-size:14px;opacity:.6;padding:4px 8px}.requirement-actions button:hover{opacity:1}.empty-state{color:var(--text-light);padding:48px 24px}.empty-state p,.steering-panel h2{margin:0 0 8px}.steering-sections{display:flex;flex-direction:column;gap:32px;margin-top:24px}.steering-section{background:var(--bg-color);border-radius:var(--radius);padding:24px}.steering-section h3{border-bottom:1px solid var(--border-color);font-size:18px;margin:0 0 20px;padding-bottom:12px}.toggle-label{align-items:center;cursor:pointer;display:flex;font-weight:500;gap:12px}.toggle-label input[type=checkbox]{height:18px;width:18px}.radio-group{display:flex;flex-direction:column;gap:12px}.radio-group label{align-items:center;cursor:pointer;display:flex;font-weight:400;gap:8px}.radio-group input[type=radio]{height:16px;width:16px}.group-checkboxes{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));margin-top:12px}.checkbox-label{align-items:center;cursor:pointer;display:flex;font-weight:400;gap:8px}.checkbox-label input[type=checkbox]{height:16px;width:16px}.steering-section.summary{background:#3498db1a;border:1px solid var(--primary-color)}.summary-table{border-collapse:collapse;width:100%}.summary-table td{border-bottom:1px solid var(--border-color);padding:10px 0}.summary-table tr:last-child td{border-bottom:none}.summary-table td:first-child{color:var(--text-light);font-weight:500;width:40%}.summary-table td:last-child{color:var(--text-color)}.mysql-config{background:#3498db1a;border:1px dashed var(--primary-color);border-radius:var(--radius);margin-top:16px;padding:16px}.mysql-config label{color:var(--primary-color)}.mysql-config small{color:var(--text-light);display:block;font-size:12px;margin-top:8px}.app-preview h2{margin:0 0 8px}.preview-sections{display:flex;flex-direction:column;gap:24px;margin-top:24px}.preview-section{background:var(--bg-color);border-radius:var(--radius);padding:20px}.preview-section h3{color:var(--text-light);font-size:16px;margin:0 0 16px}.portal-card-preview{background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius);display:flex;gap:16px;padding:20px}.card-icon{align-items:center;background:var(--primary-color);border-radius:var(--radius);display:flex;font-size:32px;justify-content:center;padding:12px}.card-content h4{font-size:18px;margin:0 0 8px}.card-content p{color:var(--text-light);font-size:14px;margin:0 0 8px}.card-url{color:var(--primary-color);font-size:12px}.skills-preview{display:flex;flex-wrap:wrap;gap:8px}.skill-preview-item{align-items:center;background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius);display:flex;gap:8px;padding:8px 12px}.skill-name{font-size:13px;font-weight:500}.skill-category{background:var(--bg-color);border-radius:10px;color:var(--text-light);font-size:11px;padding:2px 8px}.requirements-preview{display:flex;flex-direction:column;gap:8px}.requirement-preview-item{align-items:center;background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius);display:flex;gap:12px;padding:10px 12px}.requirement-priority{border-radius:4px;color:#fff;font-size:10px;font-weight:600;padding:2px 8px}.requirement-title{font-size:14px}.config-preview{flex-direction:column}.config-item,.config-preview{display:flex;gap:12px}.config-label{color:var(--text-light);font-weight:500;min-width:120px}.config-value{color:var(--text-color)}.structure-preview{background:var(--secondary-color);border-radius:var(--radius);overflow-x:auto;padding:16px}.structure-preview pre{color:#ecf0f1;font-family:Monaco,Menlo,monospace;font-size:12px;margin:0;white-space:pre}.deployment-preview{display:flex;flex-direction:column;gap:16px}.deployment-item{align-items:center;background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius);display:flex;gap:16px;padding:16px}.deployment-icon{font-size:28px}.deployment-info strong{display:block;margin-bottom:4px}.deployment-info span{color:var(--text-light);font-size:13px}.empty-preview{color:var(--text-light);font-style:italic}.spec-driven-page{margin:0 auto;max-width:1000px}.spec-driven-page .page-header{margin-bottom:32px}.back-button{background:#0000;color:var(--primary-color);font-size:14px;margin-bottom:16px;padding:8px 0}.back-button:hover{text-decoration:underline}.spec-driven-page h1{font-size:28px;margin:0}.step-progress{background:var(--card-bg);border-radius:var(--radius);box-shadow:var(--shadow);display:flex;justify-content:space-between;margin-bottom:32px;padding:24px}.step{align-items:center;cursor:pointer;display:flex;gap:8px;opacity:.5;transition:opacity .2s}.step:hover{opacity:.8}.step.active,.step.completed{opacity:1}.step-number{align-items:center;background:var(--border-color);border-radius:50%;display:flex;font-size:14px;font-weight:600;height:28px;justify-content:center;width:28px}.step.active .step-number{background:var(--primary-color);color:#fff}.step.completed .step-number{background:var(--success-color);color:#fff}.step-label{font-size:14px;font-weight:500}.step-content{background:var(--card-bg);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:24px;min-height:400px;padding:32px}.step-content h2{font-size:24px;margin:0 0 8px}.basics-form{max-width:600px}.subdomain-input{align-items:center;display:flex}.subdomain-input input{border-bottom-right-radius:0;border-top-right-radius:0}.subdomain-suffix{background:var(--bg-color);border:1px solid var(--border-color);border-left:none;border-radius:0 var(--radius) var(--radius) 0;color:var(--text-light);font-size:14px;padding:10px 12px}.icon-selector{display:flex;flex-wrap:wrap;gap:8px}.icon-option{background:var(--bg-color);border:2px solid #0000;border-radius:var(--radius);font-size:14px;padding:12px 16px}.icon-option.selected{background:#3498db1a;border-color:var(--primary-color)}.step-navigation{display:flex;justify-content:space-between}.generate-step{text-align:center}.generating-status{align-items:center;display:flex;flex-direction:column;gap:16px;padding:48px}.generating-status .loading-spinner{height:48px;width:48px}.summary{background:var(--bg-color);border-radius:var(--radius);margin:0 auto 32px;max-width:500px;padding:24px;text-align:left}.summary h3{margin:0 0 16px}.summary ul{list-style:none;margin:0;padding:0}.summary li{border-bottom:1px solid var(--border-color);padding:8px 0}.summary li:last-child{border-bottom:none}.generate-actions{display:flex;gap:16px;justify-content:center;margin-bottom:32px}.generate-btn{font-size:16px;padding:14px 32px}.generate-info{background:#3498db1a;border:1px solid var(--primary-color);border-radius:var(--radius);margin:0 auto;max-width:500px;padding:24px;text-align:left}.generate-info p{font-weight:500;margin:0 0 12px}.generate-info ol{margin:0;padding-left:20px}.generate-info li{margin-bottom:8px}.app-list-page{margin:0 auto;max-width:1200px}.app-list-page .page-header{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:32px}.header-content h1{font-size:28px;margin:0 0 8px}.create-btn{font-size:16px;padding:12px 24px}.filter-bar{border-bottom:1px solid var(--border-color);display:flex;gap:8px;margin-bottom:24px;padding-bottom:16px}.filter-bar button{background:#0000;border-radius:var(--radius);color:var(--text-light);padding:8px 16px}.filter-bar button.active,.filter-bar button:hover{background:var(--primary-color);color:#fff}.empty-state{background:var(--card-bg);border-radius:var(--radius);box-shadow:var(--shadow);padding:64px 24px;text-align:center}.empty-icon{font-size:64px;margin-bottom:16px}.empty-state h2{color:var(--text-color);margin-bottom:8px}.empty-state p{color:var(--text-light);margin-bottom:24px}.apps-grid{grid-gap:24px;display:grid;gap:24px;grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.app-card{background:var(--card-bg);border-radius:var(--radius);box-shadow:var(--shadow);display:flex;flex-direction:column;overflow:hidden}.app-card-header{align-items:center;background:var(--bg-color);display:flex;justify-content:space-between;padding:16px}.app-icon{font-size:24px}.app-status{border-radius:12px;color:#fff;font-size:12px;font-weight:600;padding:4px 12px}.app-card-content{flex:1 1;padding:16px}.app-card-content h3{font-size:18px;margin:0 0 8px}.app-description{color:var(--text-light);font-size:14px;line-height:1.5;margin-bottom:12px}.app-url{color:var(--primary-color);display:block;font-size:12px;margin-bottom:16px}.app-meta{color:var(--text-light);display:flex;font-size:13px;gap:16px}.app-card-actions{border-top:1px solid var(--border-color);display:flex;gap:8px;padding:16px}.app-card-actions a,.app-card-actions button{flex:1 1;font-size:13px;padding:8px 12px;text-align:center;text-decoration:none}.app-card-footer{background:var(--bg-color);color:var(--text-light);display:flex;font-size:12px;justify-content:space-between;padding:12px 16px}.loading-state{flex-direction:column;gap:16px;padding:64px}.loading-state,.login-page{align-items:center;display:flex;justify-content:center}.login-page{background:linear-gradient(135deg,var(--secondary-color) 0,#34495e 100%);min-height:100vh}.login-card{background:#fff;border-radius:16px;box-shadow:0 8px 32px #0003;max-width:420px;padding:48px;text-align:center;width:100%}.login-logo{margin-bottom:24px}.logo-icon{display:block;font-size:48px;margin-bottom:8px}.login-logo h1{color:var(--secondary-color);font-size:28px;margin:0}.login-subtitle{color:var(--text-light);font-size:16px;margin-bottom:32px}.login-features{margin-bottom:32px;text-align:left}.feature{border-bottom:1px solid var(--border-color);display:flex;gap:16px;padding:16px 0}.feature:last-child{border-bottom:none}.feature-icon{font-size:24px}.feature h3{color:var(--text-color);font-size:14px;margin-bottom:4px}.feature p{color:var(--text-light);font-size:13px;margin:0}.login-btn{background:var(--primary-color);border-radius:var(--radius);color:#fff;font-size:16px;font-weight:600;padding:14px 24px;width:100%}.login-btn:hover{background:var(--primary-dark)}.login-help{color:var(--text-light);font-size:13px;margin-top:16px}.app-header{background-color:var(--secondary-color);box-shadow:var(--shadow);color:#fff;height:60px;justify-content:space-between;padding:0 24px}.app-header,.header-left{align-items:center;display:flex}.header-left{gap:32px}.logo{cursor:pointer;font-size:20px;font-weight:600;margin:0}.nav-links{display:flex;gap:8px}.nav-links button{background:#0000;border-radius:var(--radius);color:#ffffffb3;padding:8px 16px}.nav-links button.active,.nav-links button:hover{background:#ffffff1a;color:#fff}.header-right{gap:16px}.header-right,.user-info{align-items:center;display:flex}.user-info{gap:8px}.username{font-weight:500}.admin-badge{background:var(--warning-color);border-radius:12px;color:#fff;font-size:11px;font-weight:600;padding:2px 8px}.logout-btn{background:#ffffff1a;border-radius:var(--radius);color:#fff;padding:8px 16px}.logout-btn:hover{background:#fff3}.app{display:flex;flex-direction:column;min-height:100vh}.main-content{flex:1 1;margin:0 auto;max-width:1400px;padding:24px;width:100%}*{box-sizing:border-box;margin:0;padding:0}:root{--primary-color:#3498db;--primary-dark:#2980b9;--secondary-color:#2c3e50;--success-color:#27ae60;--warning-color:#f39c12;--danger-color:#e74c3c;--text-color:#333;--text-light:#666;--border-color:#e0e0e0;--bg-color:#f5f7fa;--card-bg:#fff;--shadow:0 2px 8px #0000001a;--radius:8px}body{background-color:#f5f7fa;background-color:var(--bg-color);color:#333;color:var(--text-color);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;line-height:1.6}#root{min-height:100vh}.loading-container{align-items:center;display:flex;flex-direction:column;gap:16px;justify-content:center;min-height:100vh}.loading-spinner{animation:spin 1s linear infinite;border:3px solid #e0e0e0;border-top-color:#3498db;border:3px solid var(--border-color);border-radius:50%;border-top-color:var(--primary-color);height:40px;width:40px}@keyframes spin{to{transform:rotate(1turn)}}button{border:none;cursor:pointer;font-family:inherit;font-size:14px;transition:all .2s ease}.btn-primary{background-color:#3498db;background-color:var(--primary-color);border-radius:8px;border-radius:var(--radius);color:#fff;font-weight:500;padding:10px 20px}.btn-primary:hover:not(:disabled){background-color:#2980b9;background-color:var(--primary-dark)}.btn-primary:disabled{cursor:not-allowed;opacity:.6}.btn-secondary{background-color:initial;border:1px solid #e0e0e0;border:1px solid var(--border-color);border-radius:8px;border-radius:var(--radius);color:#333;color:var(--text-color);padding:10px 20px}.btn-secondary:hover:not(:disabled){background-color:#f5f7fa;background-color:var(--bg-color)}.btn-danger{background-color:#e74c3c;background-color:var(--danger-color);border-radius:8px;border-radius:var(--radius);color:#fff;padding:10px 20px}.btn-danger:hover:not(:disabled){background-color:#c0392b}input[type=email],input[type=password],input[type=text],select,textarea{border:1px solid #e0e0e0;border:1px solid var(--border-color);border-radius:8px;border-radius:var(--radius);font-family:inherit;font-size:14px;padding:10px 12px;transition:border-color .2s;width:100%}input:focus,select:focus,textarea:focus{border-color:#3498db;border-color:var(--primary-color);outline:none}label{color:#333;color:var(--text-color);display:block;font-weight:500;margin-bottom:6px}.form-group{margin-bottom:20px}.form-group small{color:#666;color:var(--text-light);display:block;font-size:12px;margin-top:4px}.error-banner{background-color:#fdeaea;border:1px solid #e74c3c;border:1px solid var(--danger-color);border-radius:8px;border-radius:var(--radius);color:#e74c3c;color:var(--danger-color);margin-bottom:20px;padding:12px 16px}.subtitle{color:#666;color:var(--text-light);margin-bottom:24px}
/*# sourceMappingURL=main.12fb6086.css.map*/