*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#0a0e1a;color:#e0e0e0}.app{min-height:100vh;display:flex;flex-direction:column}.header{background:linear-gradient(135deg,#1a1f3a,#2d3561);padding:2rem;text-align:center;border-bottom:2px solid #4a5568}.header h1{font-size:2.5rem;color:#67e8f9;margin-bottom:.5rem}.subtitle{color:#94a3b8;font-size:1rem}.nav{display:flex;gap:0;background:#1a1f3a;border-bottom:2px solid #4a5568}.nav a,.nav button{flex:1;padding:1rem 2rem;background:transparent;border:none;color:#94a3b8;font-size:1rem;cursor:pointer;transition:all .3s;border-bottom:3px solid transparent;text-decoration:none;display:flex;align-items:center;justify-content:center}.nav a:hover,.nav button:hover{background:#2d3561;color:#e0e0e0}.nav a.active,.nav button.active{color:#67e8f9;border-bottom-color:#67e8f9;background:#2d3561}.nav a.roadmap-link{border-left:1px solid #4a5568}.nav a.roadmap-link.active{color:#fbbf24;border-bottom-color:#fbbf24}.main{flex:1;padding:2rem;max-width:1400px;margin:0 auto;width:100%}.card{background:#1a1f3a;border-radius:8px;padding:1.5rem;margin-bottom:1.5rem;border:1px solid #4a5568}.card h2{color:#67e8f9;margin-bottom:1rem;font-size:1.5rem}.card h3{color:#94a3b8;margin-bottom:.75rem;font-size:1.2rem}button{background:#3b82f6;color:#fff;border:none;padding:.75rem 1.5rem;border-radius:4px;cursor:pointer;font-size:1rem;transition:background .3s}button:hover:not(:disabled){background:#2563eb}button:disabled{background:#4a5568;cursor:not-allowed}input[type=number],input[type=text],select{background:#0a0e1a;border:1px solid #4a5568;color:#e0e0e0;padding:.5rem;border-radius:4px;font-size:1rem}input[type=range]{width:100%;accent-color:#67e8f9}.input-group{display:flex;gap:1rem;margin-bottom:1rem;align-items:center}.input-group label{min-width:150px;color:#94a3b8}.terpene-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem}.terpene-card{background:#0a0e1a;padding:1rem;border-radius:4px;border:1px solid #4a5568}.terpene-card h4{color:#67e8f9;margin-bottom:.5rem}.tag-list{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}.tag{background:#2d3561;color:#94a3b8;padding:.25rem .75rem;border-radius:12px;font-size:.875rem}.tag.effect{background:#065f46;color:#6ee7b7}.tag.aroma{background:#7c3aed;color:#c4b5fd}.result-section{margin-top:2rem}.result-table{width:100%;border-collapse:collapse;margin-top:1rem}.result-table th,.result-table td{padding:.75rem;text-align:left;border-bottom:1px solid #4a5568}.result-table th{color:#67e8f9;font-weight:600}.result-table tr:hover{background:#2d3561}.similarity-bar{height:8px;background:#2d3561;border-radius:4px;overflow:hidden;margin-top:.5rem}.similarity-fill{height:100%;background:linear-gradient(90deg,#3b82f6,#67e8f9);transition:width .3s}.warning{background:#7c2d12;border-left:4px solid #f97316;padding:1rem;margin-top:1rem;border-radius:4px}.info{background:#1e3a5f;border-left:4px solid #3b82f6;padding:1rem;margin-top:1rem;border-radius:4px}.roadmap-page{max-width:1200px;margin:0 auto}.roadmap-header{text-align:center;margin-bottom:3rem}.roadmap-header h1{color:#fbbf24;font-size:2.5rem;margin-bottom:.5rem}.roadmap-subtitle{color:#94a3b8;font-size:1.2rem;margin-bottom:2rem}.overall-progress{background:#1a1f3a;border:1px solid #4a5568;border-radius:8px;padding:2rem;margin:2rem 0}.overall-progress h3{color:#67e8f9;margin-bottom:1rem;text-align:center}.progress-stats{display:flex;justify-content:center;gap:2rem;margin-bottom:1.5rem;flex-wrap:wrap}.progress-stats .stat{color:#94a3b8}.progress-stats .stat strong{color:#67e8f9}.progress-bar-container{position:relative;background:#0a0e1a;border-radius:8px;height:32px;overflow:hidden;border:1px solid #4a5568}.progress-bar{height:100%;background:linear-gradient(90deg,#3b82f6,#67e8f9);transition:width .5s ease;border-radius:8px}.progress-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#e0e0e0;font-weight:600;font-size:.9rem}.layer-progress-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1rem;margin-top:2rem}.layer-progress-item{background:#0a0e1a;border:1px solid #4a5568;border-radius:6px;padding:1rem}.layer-name{display:block;color:#94a3b8;font-size:.9rem;margin-bottom:.5rem;font-weight:500}.roadmap-actions{text-align:center;margin:2rem 0}.btn-secondary{display:inline-block;background:#2d3561;color:#67e8f9;padding:.75rem 1.5rem;border-radius:4px;text-decoration:none;font-weight:500;transition:background .3s;border:1px solid #4a5568}.btn-secondary:hover{background:#3d4571;border-color:#67e8f9}.roadmap-sections{margin-top:3rem}.roadmap-section{background:#1a1f3a;border:1px solid #4a5568;border-radius:8px;padding:2rem;margin-bottom:2rem}.roadmap-section h2{color:#fbbf24;font-size:1.8rem;margin-bottom:.5rem}.roadmap-section p{color:#94a3b8;margin-bottom:1rem}.roadmap-section ul{list-style:none;padding:0}.roadmap-section li{padding:.75rem;margin-bottom:.5rem;background:#0a0e1a;border-radius:4px;border-left:3px solid #4a5568;color:#94a3b8}.roadmap-section li strong{color:#67e8f9}.roadmap-timeline{margin:3rem 0;background:#1a1f3a;border:1px solid #4a5568;border-radius:8px;padding:2rem}.roadmap-timeline h2{color:#fbbf24;text-align:center;margin-bottom:2rem}.timeline{position:relative;padding:1rem 0}.timeline:before{content:"";position:absolute;left:30px;top:0;bottom:0;width:2px;background:#4a5568}.timeline-item{position:relative;padding-left:70px;margin-bottom:2rem}.timeline-item.completed .timeline-marker{background:#059669;border-color:#10b981}.timeline-marker{position:absolute;left:0;top:0;width:60px;height:60px;border-radius:50%;background:#1a1f3a;border:3px solid #4a5568;display:flex;align-items:center;justify-content:center;font-size:1.5rem;z-index:1}.timeline-content{background:#0a0e1a;padding:1.5rem;border-radius:8px;border:1px solid #4a5568}.timeline-content strong{color:#67e8f9;display:block;margin-bottom:.5rem;font-size:1.1rem}.timeline-content p{color:#94a3b8;margin:0}.roadmap-footer{text-align:center;margin-top:3rem;padding:2rem;background:#1a1f3a;border:1px solid #4a5568;border-radius:8px;color:#94a3b8}.roadmap-footer p{margin:.5rem 0}.loading{text-align:center;padding:3rem;color:#94a3b8;font-size:1.2rem}.recipe-manager{padding:2rem;max-width:1200px;margin:0 auto}.recipe-header{margin-bottom:2rem}.recipe-header h2{font-size:2rem;color:#67e8f9;margin-bottom:.5rem}.recipe-header p{color:#94a3b8;font-size:.95rem}.recipe-controls{display:flex;flex-direction:column;gap:1rem;margin-bottom:2rem}.search-bar{display:flex;gap:.5rem}.search-input{flex:1;padding:.75rem;background:#1a1f3a;border:1px solid #4a5568;border-radius:6px;color:#e0e0e0;font-size:1rem}.search-input:focus{outline:none;border-color:#67e8f9;box-shadow:0 0 8px #67e8f933}.filter-controls{display:flex;gap:.75rem;flex-wrap:wrap}.filter-btn{padding:.6rem 1rem;background:#2d3561;border:1px solid #4a5568;border-radius:6px;color:#94a3b8;cursor:pointer;transition:all .2s}.filter-btn:hover{background:#3a4578;border-color:#67e8f9}.filter-btn.active{background:#67e8f9;color:#0a0e1a;border-color:#67e8f9}.sort-select{padding:.6rem .8rem;background:#2d3561;border:1px solid #4a5568;border-radius:6px;color:#e0e0e0;cursor:pointer}.sort-select:focus{outline:none;border-color:#67e8f9}.recipe-form{background:#1a1f3a;border:1px solid #4a5568;border-radius:8px;padding:1.5rem;margin-bottom:2rem}.recipe-form h3{font-size:1.3rem;color:#67e8f9;margin-bottom:1rem}.form-group{margin-bottom:1.2rem}.form-group label{display:block;color:#94a3b8;margin-bottom:.5rem;font-weight:600}.form-input,.form-textarea{width:100%;padding:.75rem;background:#2d3561;border:1px solid #4a5568;border-radius:6px;color:#e0e0e0;font-family:inherit}.form-input:focus,.form-textarea:focus{outline:none;border-color:#67e8f9;box-shadow:0 0 8px #67e8f91a}.tag-input-group{display:flex;gap:.5rem}.tag-input-group .form-input{flex:1}.tags-display{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.75rem}.tag{background:#4a5568;color:#e0e0e0;padding:.4rem .8rem;border-radius:4px;display:inline-flex;align-items:center;gap:.5rem;font-size:.85rem}.tag-remove{background:none;border:none;color:#94a3b8;cursor:pointer;padding:0;font-size:1rem}.tag-remove:hover{color:#ff6b6b}.form-actions{display:flex;gap:.75rem;justify-content:flex-end}.recipe-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:1rem;margin-bottom:2rem}.stat{background:linear-gradient(135deg,#2d3561,#3a4578);padding:1rem;border-radius:8px;text-align:center;border:1px solid #4a5568}.stat strong{display:block;font-size:1.8rem;color:#67e8f9;margin-bottom:.25rem}.stat span{color:#94a3b8;font-size:.85rem}.empty-state{text-align:center;padding:3rem;background:#1a1f3a;border:2px dashed #4a5568;border-radius:8px;color:#94a3b8}.empty-state p{font-size:1.1rem}.empty-state .subtitle{font-size:.9rem;margin-top:.5rem}.recipe-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem}.recipe-card{background:#1a1f3a;border:1px solid #4a5568;border-radius:8px;padding:1.25rem;transition:all .3s ease}.recipe-card:hover{border-color:#67e8f9;box-shadow:0 4px 12px #67e8f91a;transform:translateY(-2px)}.recipe-card-header{display:flex;justify-content:space-between;align-items:start;margin-bottom:.75rem}.recipe-card-header h4{font-size:1.1rem;color:#67e8f9;flex:1}.favorite-btn{background:none;border:none;font-size:1.3rem;cursor:pointer;opacity:.5;transition:all .2s}.favorite-btn:hover,.favorite-btn.active{opacity:1;transform:scale(1.1)}.recipe-description{color:#94a3b8;font-size:.9rem;margin-bottom:.75rem;line-height:1.4}.recipe-metadata{display:flex;justify-content:space-between;font-size:.8rem;color:#5a6d7a;margin-bottom:.75rem;padding-bottom:.75rem;border-bottom:1px solid #4a5568}.recipe-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.75rem}.recipe-tag{background:#4a5568;color:#67e8f9;padding:.25rem .6rem;border-radius:3px;font-size:.75rem}.recipe-blend-preview{background:#2d3561;padding:.75rem;border-radius:6px;margin-bottom:1rem}.terpene-count{font-size:.85rem;color:#94a3b8;margin-bottom:.5rem}.blend-summary{display:flex;flex-wrap:wrap;gap:.4rem}.terpene-pill{background:#4a5568;color:#67e8f9;padding:.3rem .6rem;border-radius:3px;font-size:.75rem}.terpene-more{color:#94a3b8;font-size:.75rem;align-self:center}.recipe-actions{display:flex;gap:.5rem}.recipe-actions button{flex:1;padding:.6rem;font-size:.85rem}.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}.modal-content{background:#1a1f3a;border:1px solid #4a5568;border-radius:12px;max-width:600px;width:90%;max-height:80vh;overflow-y:auto;box-shadow:0 20px 60px #00000080}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid #4a5568}.modal-header h3{font-size:1.4rem;color:#67e8f9}.modal-close{background:none;border:none;color:#94a3b8;font-size:1.5rem;cursor:pointer;transition:color .2s}.modal-close:hover{color:#67e8f9}.modal-body{padding:1.5rem}.detail-section{margin-bottom:1.5rem}.detail-section h4{color:#67e8f9;margin-bottom:.75rem;font-size:1rem}.terpene-detail-list{display:flex;flex-direction:column;gap:.75rem}.terpene-detail{display:grid;grid-template-columns:60px 1fr 60px;align-items:center;gap:.75rem}.terpene-name{color:#94a3b8;font-size:.9rem}.terpene-bar{background:#2d3561;height:8px;border-radius:4px;overflow:hidden}.terpene-fill{background:linear-gradient(90deg,#4a90e2,#67e8f9);height:100%;border-radius:4px}.terpene-percent{text-align:right;color:#67e8f9;font-size:.85rem;font-weight:600}.metadata-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}.metadata-grid>div{background:#2d3561;padding:.75rem;border-radius:6px}.metadata-grid .label{display:block;color:#94a3b8;font-size:.85rem;margin-bottom:.25rem}.metadata-grid span{color:#e0e0e0;font-weight:600}.tags-detail{display:flex;flex-wrap:wrap;gap:.5rem}.tag-detail{background:#4a5568;color:#67e8f9;padding:.4rem .8rem;border-radius:4px;font-size:.9rem}.modal-footer{padding:1.5rem;border-top:1px solid #4a5568;display:flex;justify-content:flex-end;gap:.75rem}.error-banner{background:#7f1d1d;border:1px solid #dc2626;color:#fecaca;padding:1rem;border-radius:6px;margin-bottom:1.5rem;display:flex;align-items:center;gap:.75rem}.error-banner:before{content:"⚠️"}.success-banner{background:#1f3a1f;border:1px solid #22c55e;color:#86efac;padding:1rem;border-radius:6px;margin-bottom:1.5rem;display:flex;align-items:center;gap:.75rem;animation:slideDown .3s ease-out}.success-banner:before{content:""}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.recipe-debugger{background:#2d3561;border:1px solid #4a5568;border-radius:8px;padding:1rem;margin-top:2rem}.recipe-debugger h3{color:#67e8f9;margin-bottom:1rem;font-size:1rem}.debug-actions{display:flex;gap:.5rem;margin-bottom:1rem}.debug-actions button{padding:.5rem .75rem;font-size:.85rem}.debug-error{background:#7f1d1d;border:1px solid #dc2626;color:#fecaca;padding:.75rem;border-radius:4px;font-size:.85rem;margin-bottom:1rem}.debug-info{background:#1a1f3a;border:1px solid #4a5568;border-radius:4px;padding:.75rem;max-height:300px;overflow-y:auto}.debug-info pre{color:#67e8f9;font-size:.75rem;margin:0;white-space:pre-wrap;word-wrap:break-word}
