:root{--primary: #1a6b4a;--primary-dark: #124d35;--primary-light: #e8f5ee;--accent: #2196F3;--danger: #d32f2f;--warning: #f9a825;--warning-bg: #fff8e1;--error-bg: #ffebee;--success: #388e3c;--success-bg: #e8f5e9;--gray-50: #fafafa;--gray-100: #f5f5f5;--gray-200: #eeeeee;--gray-300: #e0e0e0;--gray-500: #9e9e9e;--gray-700: #616161;--gray-900: #212121;--radius: 8px;--shadow: 0 2px 8px rgba(0,0,0,.1);--shadow-lg: 0 4px 16px rgba(0,0,0,.12)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;color:var(--gray-900);background:var(--gray-50);line-height:1.6}.app{min-height:100vh;display:flex;flex-direction:column}main{flex:1}header{background:var(--primary);color:#fff;padding:1rem 2rem;box-shadow:var(--shadow)}.header-content{max-width:1200px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem}.brand h1{font-size:1.5rem;font-weight:600}.brand h1 a{color:#fff;text-decoration:none}.subtitle{font-size:.9rem;opacity:.85}.auth-section{display:flex;align-items:center;gap:.75rem}.user-display{font-size:.9rem}.btn{display:inline-block;padding:.5rem 1.25rem;border:none;border-radius:var(--radius);font-size:.9rem;font-weight:500;cursor:pointer;text-decoration:none;transition:background .2s,transform .1s}.btn:hover{transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn-primary{background:#fff;color:var(--primary)}.btn-primary:hover{background:var(--gray-100)}.btn-secondary{background:#fff3;color:#fff;border:1px solid rgba(255,255,255,.4)}.btn-secondary:hover{background:#ffffff4d}.btn-create{background:var(--primary);color:#fff;font-size:1rem;padding:.75rem 1.5rem}.btn-create:hover{background:var(--primary-dark)}.btn-submit{background:var(--success);color:#fff;padding:.75rem 2rem;font-size:1rem}.btn-submit:hover{background:#2e7d32}.btn-danger{background:var(--danger);color:#fff}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.container{max-width:1200px;margin:0 auto;padding:2rem}.card{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:1.5rem;margin-bottom:1.5rem}.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.5rem}.project-card{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;transition:box-shadow .2s,transform .2s}.project-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.project-card-image{height:140px;background-size:cover;background-position:center;background-color:var(--primary-light)}.project-card-body{padding:1.25rem}.project-card-body h3{margin-bottom:.5rem;font-size:1.1rem}.project-card-body p{color:var(--gray-700);font-size:.9rem;margin-bottom:.5rem}.dataset-count{font-size:.8rem;color:var(--gray-500)}.project-card-link{display:block;text-decoration:none;color:inherit}.project-card-actions{padding:0 1.25rem 1rem;display:flex;justify-content:flex-end}.btn-edit-project{font-size:.8rem;padding:.3rem .75rem;background:var(--gray-100);color:var(--gray-700);border:1px solid var(--gray-300);border-radius:var(--radius);text-decoration:none;transition:background .15s,color .15s}.btn-edit-project:hover{background:var(--primary);color:#fff;border-color:var(--primary)}.loading,.empty-state{text-align:center;padding:3rem;color:var(--gray-500)}footer{background:var(--gray-200);text-align:center;padding:1.5rem;color:var(--gray-700);font-size:.85rem}.wizard-container{max-width:900px;margin:0 auto}.wizard-steps{display:flex;justify-content:center;gap:.5rem;margin-bottom:2rem;flex-wrap:wrap}.wizard-step{padding:.5rem 1rem;background:var(--gray-200);border-radius:20px;font-size:.85rem;color:var(--gray-700)}.wizard-step.active{background:var(--primary);color:#fff}.wizard-step.completed{background:var(--primary-light);color:var(--primary)}.wizard-nav{display:flex;justify-content:space-between;gap:1rem;margin-top:1rem}.form-group{margin-bottom:1.25rem}.form-group label{display:block;font-weight:500;margin-bottom:.35rem;font-size:.9rem}.form-group input,.form-group select,.form-group textarea{width:100%;padding:.6rem .75rem;border:1px solid var(--gray-300);border-radius:var(--radius);font-size:.9rem;font-family:inherit}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #1a6b4a26}.form-hint{font-size:.8rem;color:var(--gray-500);margin-top:.25rem}.inline-items{display:flex;gap:.75rem;flex-wrap:wrap;align-items:flex-end}.schema-table{width:100%;border-collapse:collapse;margin:1rem 0;font-size:.85rem}.schema-table th,.schema-table td{padding:.6rem .75rem;border:1px solid var(--gray-300);text-align:left}.schema-table th{background:var(--gray-100);font-weight:600}.schema-table input,.schema-table select{border:1px solid var(--gray-300);border-radius:4px;padding:.35rem .5rem;font-size:.85rem;width:100%}.add-row-btn{background:var(--primary-light);color:var(--primary);border:1px dashed var(--primary);padding:.5rem 1rem;border-radius:var(--radius);cursor:pointer;font-size:.85rem;margin-top:.5rem}.add-row-btn:hover{background:var(--primary);color:#fff}.remove-btn{background:none;border:none;color:var(--danger);cursor:pointer;font-size:1.1rem;padding:.25rem}.remove-btn:hover{color:#b71c1c}.chip{display:inline-block;background:var(--gray-200);padding:.25rem .75rem;border-radius:12px;font-size:.8rem;margin:.15rem}.chip.removable{cursor:pointer}.chip.removable:hover{background:var(--error-bg)}.tab-bar{display:flex;gap:0;border-bottom:2px solid var(--gray-300);margin-bottom:1.5rem}.tab-btn{padding:.75rem 1.25rem;border:none;background:none;cursor:pointer;font-size:.9rem;color:var(--gray-700);border-bottom:2px solid transparent;margin-bottom:-2px;transition:color .2s,border-color .2s}.tab-btn.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}.tab-btn:hover{color:var(--primary)}.validation-summary{padding:1rem 1.25rem;border-radius:var(--radius);margin-bottom:1rem;font-weight:500}.validation-summary.has-errors{background:var(--error-bg);color:var(--danger)}.validation-summary.has-warnings{background:var(--warning-bg);color:#e65100}.validation-summary.clean{background:var(--success-bg);color:var(--success)}.error-table{width:100%;border-collapse:collapse;font-size:.85rem;margin-bottom:1rem}.error-table th,.error-table td{padding:.5rem .75rem;border:1px solid var(--gray-300);text-align:left}.error-table th{background:var(--gray-100)}.severity-error{color:var(--danger);font-weight:600}.severity-warning{color:#e65100;font-weight:600}.upload-area{border:2px dashed var(--gray-300);border-radius:var(--radius);padding:3rem;text-align:center;cursor:pointer;transition:border-color .2s,background .2s;margin:1.5rem 0}.upload-area:hover,.upload-area.dragover{border-color:var(--primary);background:var(--primary-light)}.upload-area p{color:var(--gray-700);margin-top:.5rem}.project-header{text-align:center;padding:3rem 2rem;background-size:cover;background-position:center;color:#fff;position:relative}.project-header:before{content:"";position:absolute;inset:0;background:#00000080}.project-header>*{position:relative;z-index:1}.spinner{display:inline-block;width:20px;height:20px;border:3px solid var(--gray-300);border-top-color:var(--primary);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width: 640px){.header-content{flex-direction:column;text-align:center}.projects-grid{grid-template-columns:1fr}.container{padding:1rem}}.input-shake{animation:shake .4s ease;border-color:var(--danger)!important;box-shadow:0 0 0 2px #d32f2f33}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}
