Files
tilbudgivern/build/static/css/main.aa8078bc.css.map
T
alex 0e62cd6f0b Add frontend deployment scripts
- Created deploy-frontend.sh for detailed build and deployment process with logging.
- Created quick-deploy.sh for fast deployment without detailed logging.
- Both scripts handle building the React frontend, copying build files, and restarting the PM2 service.
2025-09-17 07:53:28 +02:00

1 line
103 KiB
Plaintext

{"version":3,"file":"static/css/main.aa8078bc.css","mappings":"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","sources":["index.css","App.css","components/ProjectFlow.css","components/CompletedQuotes.css","components/ProjectReview.css"],"sourcesContent":["body {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n background-color: #f5f5f5;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',\n monospace;\n}\n\n.container {\n max-width: 1200px;\n margin: 0 auto;\n padding: 20px;\n}\n\n.header {\n text-align: center;\n margin-bottom: 40px;\n background: white;\n padding: 20px;\n border-radius: 10px;\n box-shadow: 0 2px 10px rgba(0,0,0,0.1);\n position: relative;\n}\n\n.header h1 {\n color: #2c3e50;\n margin: 0 0 10px 0;\n font-size: 2.5em;\n}\n\n.header p {\n color: #7f8c8d;\n margin: 0;\n font-size: 1.1em;\n}\n\n.ai-budget-bar {\n position: absolute;\n top: 10px;\n right: 20px;\n background: #ecf0f1;\n padding: 8px 16px;\n border-radius: 20px;\n font-size: 0.85em;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.budget-summary {\n display: flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.budget-label {\n color: #34495e;\n}\n\n.budget-used {\n color: #27ae60;\n font-weight: bold;\n}\n\n.budget-separator {\n color: #bdc3c7;\n}\n\n.budget-total {\n color: #34495e;\n font-weight: bold;\n}\n\n.budget-mini-bar {\n width: 60px;\n height: 4px;\n background: #ecf0f1;\n border-radius: 2px;\n overflow: hidden;\n}\n\n.budget-mini-fill {\n height: 100%;\n transition: width 0.3s ease;\n}\n\n.budget-tokens {\n color: #7f8c8d;\n font-size: 0.9em;\n}\n\n.budget-refresh-btn {\n background: none;\n border: none;\n cursor: pointer;\n font-size: 1em;\n padding: 2px;\n border-radius: 3px;\n transition: background-color 0.2s;\n}\n\n.budget-refresh-btn:hover {\n background-color: #bdc3c7;\n}\n\n.nav-buttons {\n display: flex;\n justify-content: center;\n gap: 10px;\n margin: 20px 0;\n flex-wrap: wrap;\n}\n\n.nav-btn {\n background: #3498db;\n color: white;\n border: none;\n padding: 12px 20px;\n border-radius: 6px;\n cursor: pointer;\n font-weight: 500;\n transition: all 0.3s ease;\n font-size: 0.95em;\n}\n\n.nav-btn:hover {\n background: #2980b9;\n transform: translateY(-1px);\n}\n\n.nav-btn.active {\n background: #27ae60;\n}\n\n.logout-btn {\n position: absolute;\n top: 20px;\n left: 20px;\n background: #e74c3c;\n color: white;\n border: none;\n padding: 8px 16px;\n border-radius: 4px;\n cursor: pointer;\n font-weight: 500;\n}\n\n.logout-btn:hover {\n background: #c0392b;\n}\n\n.login-form {\n max-width: 400px;\n margin: 0 auto;\n background: white;\n padding: 40px;\n border-radius: 10px;\n box-shadow: 0 4px 20px rgba(0,0,0,0.1);\n}\n\n.login-form h2 {\n text-align: center;\n color: #2c3e50;\n margin-bottom: 10px;\n}\n\n.login-form p {\n text-align: center;\n color: #7f8c8d;\n margin-bottom: 30px;\n}\n\n.form-group {\n margin-bottom: 20px;\n}\n\n.form-group label {\n display: block;\n margin-bottom: 8px;\n color: #34495e;\n font-weight: 500;\n}\n\n.form-group input,\n.form-group textarea,\n.form-group select {\n width: 100%;\n padding: 12px;\n border: 2px solid #ecf0f1;\n border-radius: 6px;\n font-size: 16px;\n transition: border-color 0.3s ease;\n box-sizing: border-box;\n}\n\n.form-group input:focus,\n.form-group textarea:focus,\n.form-group select:focus {\n outline: none;\n border-color: #3498db;\n}\n\n.form-group textarea {\n min-height: 100px;\n resize: vertical;\n}\n\n.form-row {\n display: flex;\n gap: 20px;\n flex-wrap: wrap;\n}\n\n.form-row .form-group {\n flex: 1;\n min-width: 250px;\n}\n\n.btn {\n background: #27ae60;\n color: white;\n border: none;\n padding: 14px 28px;\n border-radius: 6px;\n cursor: pointer;\n font-size: 16px;\n font-weight: 500;\n width: 100%;\n transition: all 0.3s ease;\n}\n\n.btn:hover:not(:disabled) {\n background: #229954;\n transform: translateY(-1px);\n}\n\n.btn:disabled {\n background: #bdc3c7;\n cursor: not-allowed;\n transform: none;\n}\n\n.btn.btn-secondary {\n background: #95a5a6;\n}\n\n.btn.btn-secondary:hover:not(:disabled) {\n background: #7f8c8d;\n}\n\n.btn.btn-small {\n padding: 6px 12px;\n font-size: 14px;\n width: auto;\n}\n\n.btn.btn-primary {\n background: #3498db;\n}\n\n.btn.btn-primary:hover:not(:disabled) {\n background: #2980b9;\n}\n\n.btn.btn-danger {\n background: #e74c3c;\n}\n\n.btn.btn-danger:hover:not(:disabled) {\n background: #c0392b;\n}\n\n.error {\n background: #f8d7da;\n color: #721c24;\n padding: 12px;\n border-radius: 6px;\n margin: 20px 0;\n border: 1px solid #f5c6cb;\n}\n\n.quote-form {\n background: white;\n padding: 30px;\n border-radius: 10px;\n box-shadow: 0 2px 10px rgba(0,0,0,0.1);\n margin-bottom: 30px;\n}\n\n.quote-form h2 {\n color: #2c3e50;\n margin-bottom: 20px;\n text-align: center;\n}\n\n.loading {\n text-align: center;\n padding: 50px 20px;\n background: white;\n border-radius: 10px;\n box-shadow: 0 2px 10px rgba(0,0,0,0.1);\n}\n\n.loading-animation {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 20px;\n}\n\n.loading-spinner {\n width: 50px;\n height: 50px;\n border: 5px solid #ecf0f1;\n border-top: 5px solid #3498db;\n border-radius: 50%;\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n.loading-text h3 {\n color: #2c3e50;\n margin: 0 0 15px 0;\n}\n\n.loading-steps {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.loading-steps .step {\n color: #bdc3c7;\n transition: color 0.3s ease;\n}\n\n.loading-steps .step.active {\n color: #27ae60;\n font-weight: 500;\n}\n\n.loading-progress {\n margin-top: 30px;\n}\n\n.progress-bar {\n width: 100%;\n height: 6px;\n background: #ecf0f1;\n border-radius: 3px;\n overflow: hidden;\n}\n\n.progress-fill {\n height: 100%;\n background: linear-gradient(90deg, #3498db, #27ae60);\n border-radius: 3px;\n animation: progress 20s ease-in-out;\n}\n\n@keyframes progress {\n 0% { width: 0%; }\n 100% { width: 100%; }\n}\n\n.loading-time {\n color: #7f8c8d;\n margin-top: 10px;\n font-style: italic;\n}\n\n.quote-result {\n background: white;\n padding: 30px;\n border-radius: 10px;\n box-shadow: 0 2px 10px rgba(0,0,0,0.1);\n margin-top: 30px;\n}\n\n.quote-result h2 {\n color: #27ae60;\n margin-bottom: 20px;\n}\n\n.quote-result div {\n white-space: pre-line;\n line-height: 1.6;\n color: #2c3e50;\n font-size: 15px;\n}\n\n.quote-actions {\n display: flex;\n gap: 15px;\n margin-top: 30px;\n flex-wrap: wrap;\n}\n\n.quote-actions .btn {\n flex: 1;\n min-width: 200px;\n}\n\n.feedback-section {\n margin-top: 30px;\n padding: 25px;\n background: #f8f9fa;\n border-radius: 8px;\n border-left: 4px solid #3498db;\n}\n\n.feedback-section h3 {\n color: #2c3e50;\n margin-bottom: 15px;\n}\n\n.upload-section {\n background: white;\n padding: 30px;\n border-radius: 10px;\n box-shadow: 0 2px 10px rgba(0,0,0,0.1);\n}\n\n.upload-section h2 {\n color: #2c3e50;\n margin-bottom: 15px;\n}\n\n.upload-section p {\n color: #7f8c8d;\n margin-bottom: 25px;\n}\n\n.upload-form {\n margin-bottom: 30px;\n}\n\n.file-info {\n color: #27ae60;\n font-style: italic;\n margin-top: 8px;\n}\n\n.upload-status {\n padding: 15px;\n border-radius: 6px;\n margin: 20px 0;\n}\n\n.upload-status.success {\n background: #d4edda;\n color: #155724;\n border: 1px solid #c3e6cb;\n}\n\n.upload-status.error {\n background: #f8d7da;\n color: #721c24;\n border: 1px solid #f5c6cb;\n}\n\n.parse-results {\n margin-top: 15px;\n padding: 15px;\n background: rgba(255,255,255,0.5);\n border-radius: 4px;\n}\n\n.parse-results ul {\n margin: 10px 0;\n padding-left: 20px;\n}\n\n.recent-uploads {\n margin: 30px 0;\n}\n\n.recent-uploads h3 {\n color: #2c3e50;\n margin-bottom: 15px;\n}\n\n.uploads-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.upload-item {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px;\n background: #f8f9fa;\n border-radius: 6px;\n border-left: 4px solid #3498db;\n}\n\n.upload-name {\n font-weight: 500;\n color: #2c3e50;\n flex: 1;\n}\n\n.upload-status {\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 0.9em;\n}\n\n.upload-type {\n background: #ecf0f1;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 0.85em;\n color: #34495e;\n}\n\n.upload-date {\n color: #7f8c8d;\n font-size: 0.9em;\n}\n\n.materials-overview {\n margin-top: 30px;\n}\n\n.materials-overview h3 {\n color: #2c3e50;\n margin-bottom: 15px;\n}\n\n.materials-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 15px;\n}\n\n.material-item {\n padding: 15px;\n background: #f8f9fa;\n border-radius: 8px;\n border-left: 4px solid #27ae60;\n}\n\n.material-item strong {\n color: #2c3e50;\n display: block;\n margin-bottom: 8px;\n}\n\n.material-item .price {\n color: #27ae60;\n font-weight: 500;\n display: block;\n margin-bottom: 4px;\n}\n\n.material-item .category {\n color: #3498db;\n font-size: 0.9em;\n display: block;\n margin-bottom: 4px;\n}\n\n.material-item .supplier {\n color: #7f8c8d;\n font-size: 0.85em;\n}\n\n.more-items {\n text-align: center;\n color: #7f8c8d;\n font-style: italic;\n margin-top: 15px;\n}\n\n.pricing-management-section {\n background: white;\n padding: 30px;\n border-radius: 10px;\n box-shadow: 0 2px 10px rgba(0,0,0,0.1);\n}\n\n.pricing-management-section h2 {\n color: #2c3e50;\n margin-bottom: 15px;\n}\n\n.pricing-management-section p {\n color: #7f8c8d;\n margin-bottom: 25px;\n}\n\n.category-selector {\n margin-bottom: 20px;\n}\n\n.category-selector label {\n display: block;\n margin-bottom: 5px;\n font-weight: bold;\n color: #2c3e50;\n}\n\n.category-selector select {\n width: 100%;\n max-width: 300px;\n padding: 8px 12px;\n border: 1px solid #ddd;\n border-radius: 4px;\n background: white;\n font-size: 14px;\n margin-bottom: 10px;\n}\n\n.web-search-btn {\n background: linear-gradient(135deg, #3498db, #2980b9);\n color: white;\n border: none;\n padding: 8px 16px;\n border-radius: 6px;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n transition: all 0.3s ease;\n margin-left: 10px;\n}\n\n.web-search-btn:hover {\n background: linear-gradient(135deg, #2980b9, #3498db);\n transform: translateY(-1px);\n box-shadow: 0 4px 8px rgba(52, 152, 219, 0.3);\n}\n\n.web-search-btn:disabled {\n background: #bdc3c7;\n cursor: not-allowed;\n transform: none;\n box-shadow: none;\n}\n\n.add-price-form {\n margin-bottom: 40px;\n padding: 25px;\n background: #f8f9fa;\n border-radius: 8px;\n border-left: 4px solid #27ae60;\n}\n\n.add-price-form h3 {\n color: #2c3e50;\n margin-bottom: 20px;\n}\n\n.prices-list {\n margin-top: 30px;\n}\n\n.prices-list h3 {\n color: #2c3e50;\n margin-bottom: 20px;\n}\n\n.prices-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));\n gap: 20px;\n}\n\n.price-item {\n padding: 20px;\n background: white;\n border-radius: 8px;\n border: 1px solid #ecf0f1;\n box-shadow: 0 2px 5px rgba(0,0,0,0.05);\n transition: box-shadow 0.3s ease;\n}\n\n.price-item:hover {\n box-shadow: 0 4px 15px rgba(0,0,0,0.1);\n}\n\n.price-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 15px;\n padding-bottom: 10px;\n border-bottom: 2px solid #ecf0f1;\n}\n\n.price-header strong {\n color: #2c3e50;\n font-size: 1.1em;\n}\n\n.price-value {\n color: #27ae60;\n font-weight: bold;\n font-size: 1.1em;\n}\n\n.price-details {\n margin-bottom: 15px;\n}\n\n.price-details p {\n margin: 5px 0;\n color: #34495e;\n font-size: 0.95em;\n}\n\n.price-date {\n color: #7f8c8d;\n font-size: 0.85em;\n margin-bottom: 15px;\n}\n\n.price-actions {\n display: flex;\n gap: 10px;\n}\n\n.edit-form {\n border: 2px solid #3498db;\n border-radius: 8px;\n padding: 15px;\n background: #f8f9fa;\n}\n\n.edit-actions {\n display: flex;\n gap: 10px;\n margin-top: 15px;\n}\n\n.no-data {\n text-align: center;\n padding: 40px 20px;\n color: #7f8c8d;\n font-style: italic;\n}\n\n.usage-stats {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 20px;\n}\n\n.usage-overview {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 20px;\n margin-bottom: 30px;\n}\n\n.stat-card {\n background: white;\n padding: 25px;\n border-radius: 10px;\n box-shadow: 0 2px 10px rgba(0,0,0,0.1);\n}\n\n.stat-card h3 {\n color: #2c3e50;\n margin-bottom: 15px;\n font-size: 1.2em;\n}\n\n.budget-info p,\n.token-info p,\n.general-info p {\n margin: 8px 0;\n color: #34495e;\n}\n\n.budget-bar,\n.token-bar {\n width: 100%;\n height: 12px;\n background: #ecf0f1;\n border-radius: 6px;\n overflow: hidden;\n margin: 10px 0;\n}\n\n.budget-fill,\n.token-fill {\n height: 100%;\n transition: width 0.3s ease;\n border-radius: 6px;\n}\n\n.budget-percent,\n.token-percent {\n font-weight: 500;\n color: #2c3e50;\n}\n\n.warning-level {\n padding: 2px 8px;\n border-radius: 4px;\n font-weight: 500;\n font-size: 0.9em;\n}\n\n.warning-level.low {\n background: #d4edda;\n color: #155724;\n}\n\n.warning-level.medium {\n background: #fff3cd;\n color: #856404;\n}\n\n.warning-level.high {\n background: #f8d7da;\n color: #721c24;\n}\n\n.refresh-section {\n text-align: center;\n margin-top: 30px;\n padding: 20px;\n background: #f8f9fa;\n border-radius: 8px;\n}\n\n.last-update {\n color: #7f8c8d;\n font-size: 0.9em;\n margin-top: 15px;\n}\n\n.loading-usage {\n text-align: center;\n padding: 50px 20px;\n color: #7f8c8d;\n}\n\n@media (max-width: 768px) {\n .container {\n padding: 15px;\n }\n \n .header {\n padding: 15px;\n }\n \n .ai-budget-bar {\n position: static;\n margin-top: 15px;\n justify-content: center;\n }\n \n .logout-btn {\n position: static;\n margin-bottom: 15px;\n }\n \n .nav-buttons {\n flex-direction: column;\n align-items: center;\n }\n \n .nav-btn {\n width: 100%;\n max-width: 300px;\n }\n \n .form-row {\n flex-direction: column;\n }\n \n .form-row .form-group {\n min-width: auto;\n }\n \n .quote-actions {\n flex-direction: column;\n }\n \n .quote-actions .btn {\n min-width: auto;\n }\n \n .prices-grid {\n grid-template-columns: 1fr;\n }\n \n .usage-overview {\n grid-template-columns: 1fr;\n }\n \n .materials-grid {\n grid-template-columns: 1fr;\n }\n}\n\n/* Web Search Approval Dialog */\n.modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.7);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 1000;\n}\n\n.approval-dialog {\n background: white;\n border-radius: 12px;\n padding: 30px;\n max-width: 700px;\n width: 90%;\n max-height: 80vh;\n overflow-y: auto;\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);\n}\n\n.approval-dialog h3 {\n margin: 0 0 15px 0;\n color: #2c3e50;\n font-size: 1.4em;\n}\n\n.approval-dialog p {\n color: #7f8c8d;\n margin-bottom: 25px;\n}\n\n.approval-list {\n margin-bottom: 25px;\n}\n\n.approval-item {\n border: 2px solid #ecf0f1;\n border-radius: 8px;\n margin-bottom: 12px;\n transition: all 0.2s ease;\n}\n\n.approval-item:hover {\n border-color: #3498db;\n box-shadow: 0 2px 8px rgba(52, 152, 219, 0.1);\n}\n\n.approval-checkbox {\n display: flex;\n align-items: flex-start;\n padding: 15px;\n cursor: pointer;\n gap: 12px;\n}\n\n.approval-checkbox input[type=\"checkbox\"] {\n margin: 4px 0 0 0;\n transform: scale(1.2);\n}\n\n.approval-details {\n flex: 1;\n}\n\n.approval-main {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.approval-main strong {\n color: #2c3e50;\n font-size: 1.1em;\n}\n\n.approval-price {\n background: #e8f5e8;\n color: #27ae60;\n padding: 4px 12px;\n border-radius: 20px;\n font-weight: bold;\n font-size: 0.9em;\n}\n\n.approval-meta {\n display: flex;\n gap: 15px;\n margin-bottom: 8px;\n}\n\n.approval-source {\n color: #7f8c8d;\n font-size: 0.9em;\n}\n\n.approval-confidence {\n color: #8e44ad;\n font-size: 0.9em;\n font-weight: 500;\n}\n\n.approval-notes {\n background: #f8f9fa;\n padding: 8px 12px;\n border-radius: 6px;\n font-size: 0.85em;\n color: #6c757d;\n border-left: 3px solid #dee2e6;\n}\n\n.approval-actions {\n display: flex;\n gap: 15px;\n justify-content: flex-end;\n margin-top: 25px;\n padding-top: 20px;\n border-top: 1px solid #ecf0f1;\n}\n\n.approval-actions .btn {\n min-width: 120px;\n}\n\n.btn-primary:disabled {\n background: #bdc3c7;\n cursor: not-allowed;\n}\n\n@media (max-width: 768px) {\n .approval-dialog {\n padding: 20px;\n margin: 20px;\n }\n \n .approval-main {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n \n .approval-meta {\n flex-direction: column;\n gap: 5px;\n }\n \n .approval-actions {\n flex-direction: column-reverse;\n }\n}\n\n/* Material suggestion feedback */\n.add-suggestion-btn {\n background: #3498db;\n color: white;\n border: none;\n padding: 8px 16px;\n border-radius: 5px;\n cursor: pointer;\n transition: all 0.3s ease;\n font-size: 14px;\n}\n\n.add-suggestion-btn:hover:not(:disabled) {\n background: #2980b9;\n transform: translateY(-1px);\n}\n\n.add-suggestion-btn.added {\n background: #27ae60;\n animation: pulse 0.5s ease-out;\n}\n\n.add-suggestion-btn:disabled {\n opacity: 0.7;\n cursor: not-allowed;\n}\n\n@keyframes pulse {\n 0% { transform: scale(1); }\n 50% { transform: scale(1.05); }\n 100% { transform: scale(1); }\n}\n\n/* Historical data sections */\n.historical-section {\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n border-radius: 8px;\n padding: 20px;\n margin-bottom: 20px;\n}\n\n.historical-header {\n display: flex;\n justify-content: between;\n align-items: center;\n margin-bottom: 15px;\n}\n\n.historical-header h4 {\n margin: 0;\n color: #2c3e50;\n}\n\n.hide-historical-btn {\n background: none;\n border: none;\n color: #95a5a6;\n cursor: pointer;\n font-size: 16px;\n}\n\n.historical-summary {\n background: white;\n padding: 15px;\n border-radius: 5px;\n margin-bottom: 15px;\n border-left: 4px solid #3498db;\n}\n\n.avg-stats {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 10px;\n}\n\n.avg-stats span {\n background: #ecf0f1;\n padding: 8px 12px;\n border-radius: 20px;\n font-size: 14px;\n text-align: center;\n}\n\n.historical-projects {\n display: grid;\n gap: 15px;\n}\n\n.historical-project {\n background: white;\n padding: 15px;\n border-radius: 5px;\n border: 1px solid #e9ecef;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.project-info h5 {\n margin: 0 0 5px 0;\n color: #2c3e50;\n}\n\n.project-details {\n display: flex;\n gap: 15px;\n margin-top: 8px;\n}\n\n.project-details span {\n background: #f8f9fa;\n padding: 4px 8px;\n border-radius: 12px;\n font-size: 13px;\n color: #6c757d;\n}\n\n.apply-historical-btn {\n background: #17a2b8;\n color: white;\n border: none;\n padding: 8px 16px;\n border-radius: 5px;\n cursor: pointer;\n font-size: 14px;\n white-space: nowrap;\n}\n\n.apply-historical-btn:hover {\n background: #138496;\n}\n\n.used-materials {\n margin-top: 10px;\n}\n\n.materials-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.add-all-materials-btn {\n background: #28a745;\n color: white;\n border: none;\n padding: 4px 12px;\n border-radius: 15px;\n cursor: pointer;\n font-size: 11px;\n transition: all 0.2s ease;\n}\n\n.add-all-materials-btn:hover {\n background: #218838;\n transform: translateY(-1px);\n}\n\n.materials-chips {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n.material-chip {\n display: inline-block;\n background: #e7f3ff;\n color: #0066cc;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n margin: 2px 5px 2px 0;\n border: none;\n cursor: default;\n}\n\n.material-chip.clickable {\n cursor: pointer;\n transition: all 0.2s ease;\n border: 1px solid #b3d9ff;\n}\n\n.material-chip.clickable:hover {\n background: #cce7ff;\n color: #004499;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,102,204,0.2);\n}\n\n/* Project sorting and filtering */\n.projects-container {\n width: 100%;\n}\n\n.projects-controls {\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: white;\n padding: 15px 20px;\n border-radius: 8px;\n margin-bottom: 20px;\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n gap: 20px;\n flex-wrap: wrap;\n}\n\n.filter-controls, .sort-controls {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.filter-controls label, .sort-controls label {\n font-weight: 500;\n color: #2c3e50;\n font-size: 14px;\n}\n\n.filter-select, .sort-select {\n padding: 8px 12px;\n border: 1px solid #ddd;\n border-radius: 5px;\n background: white;\n font-size: 14px;\n min-width: 150px;\n}\n\n.sort-order-btn {\n background: #3498db;\n color: white;\n border: none;\n padding: 8px 12px;\n border-radius: 5px;\n cursor: pointer;\n font-size: 16px;\n font-weight: bold;\n transition: all 0.2s ease;\n}\n\n.sort-order-btn:hover {\n background: #2980b9;\n transform: scale(1.1);\n}\n\n@media (max-width: 768px) {\n .projects-controls {\n flex-direction: column;\n align-items: stretch;\n gap: 15px;\n }\n \n .filter-controls, .sort-controls {\n justify-content: space-between;\n }\n \n .filter-select, .sort-select {\n min-width: auto;\n flex: 1;\n }\n}\n","body {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n background-color: #f5f5f5;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',\n monospace;\n}\n\n.container {\n max-width: 1200px;\n margin: 0 auto;\n padding: 20px;\n}\n\n.header {\n text-align: center;\n margin-bottom: 40px;\n background: white;\n padding: 20px;\n border-radius: 10px;\n box-shadow: 0 2px 10px rgba(0,0,0,0.1);\n position: relative;\n}\n\n.header h1 {\n color: #2c3e50;\n margin: 0 0 10px 0;\n font-size: 2.5em;\n}\n\n.header p {\n color: #7f8c8d;\n margin: 0;\n font-size: 1.1em;\n}\n\n.ai-budget-bar {\n position: absolute;\n top: 10px;\n right: 20px;\n background: #ecf0f1;\n padding: 8px 16px;\n border-radius: 20px;\n font-size: 0.85em;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.budget-summary {\n display: flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.budget-label {\n color: #34495e;\n}\n\n.budget-used {\n color: #27ae60;\n font-weight: bold;\n}\n\n.budget-separator {\n color: #bdc3c7;\n}\n\n.budget-total {\n color: #34495e;\n font-weight: bold;\n}\n\n.budget-mini-bar {\n width: 60px;\n height: 4px;\n background: #ecf0f1;\n border-radius: 2px;\n overflow: hidden;\n}\n\n.budget-mini-fill {\n height: 100%;\n transition: width 0.3s ease;\n}\n\n.budget-tokens {\n color: #7f8c8d;\n font-size: 0.9em;\n}\n\n.budget-refresh-btn {\n background: none;\n border: none;\n cursor: pointer;\n font-size: 1em;\n padding: 2px;\n border-radius: 3px;\n transition: background-color 0.2s;\n}\n\n.budget-refresh-btn:hover {\n background-color: #bdc3c7;\n}\n\n.nav-buttons {\n display: flex;\n justify-content: center;\n gap: 10px;\n margin: 20px 0;\n flex-wrap: wrap;\n}\n\n.nav-btn {\n background: #3498db;\n color: white;\n border: none;\n padding: 12px 20px;\n border-radius: 6px;\n cursor: pointer;\n font-weight: 500;\n transition: all 0.3s ease;\n font-size: 0.95em;\n}\n\n.nav-btn:hover {\n background: #2980b9;\n transform: translateY(-1px);\n}\n\n.nav-btn.active {\n background: #27ae60;\n}\n\n.logout-btn {\n position: absolute;\n top: 20px;\n left: 20px;\n background: #e74c3c;\n color: white;\n border: none;\n padding: 8px 16px;\n border-radius: 4px;\n cursor: pointer;\n font-weight: 500;\n}\n\n.logout-btn:hover {\n background: #c0392b;\n}\n\n.login-form {\n max-width: 400px;\n margin: 0 auto;\n background: white;\n padding: 40px;\n border-radius: 10px;\n box-shadow: 0 4px 20px rgba(0,0,0,0.1);\n}\n\n.login-form h2 {\n text-align: center;\n color: #2c3e50;\n margin-bottom: 10px;\n}\n\n.login-form p {\n text-align: center;\n color: #7f8c8d;\n margin-bottom: 30px;\n}\n\n.form-group {\n margin-bottom: 20px;\n}\n\n.form-group label {\n display: block;\n margin-bottom: 8px;\n color: #34495e;\n font-weight: 500;\n}\n\n.form-group input,\n.form-group textarea,\n.form-group select {\n width: 100%;\n padding: 12px;\n border: 2px solid #ecf0f1;\n border-radius: 6px;\n font-size: 16px;\n transition: border-color 0.3s ease;\n box-sizing: border-box;\n}\n\n.form-group input:focus,\n.form-group textarea:focus,\n.form-group select:focus {\n outline: none;\n border-color: #3498db;\n}\n\n.form-group textarea {\n min-height: 100px;\n resize: vertical;\n}\n\n.form-row {\n display: flex;\n gap: 20px;\n flex-wrap: wrap;\n}\n\n.form-row .form-group {\n flex: 1;\n min-width: 250px;\n}\n\n.btn {\n background: #27ae60;\n color: white;\n border: none;\n padding: 14px 28px;\n border-radius: 6px;\n cursor: pointer;\n font-size: 16px;\n font-weight: 500;\n width: 100%;\n transition: all 0.3s ease;\n}\n\n.btn:hover:not(:disabled) {\n background: #229954;\n transform: translateY(-1px);\n}\n\n.btn:disabled {\n background: #bdc3c7;\n cursor: not-allowed;\n transform: none;\n}\n\n.btn.btn-secondary {\n background: #95a5a6;\n}\n\n.btn.btn-secondary:hover:not(:disabled) {\n background: #7f8c8d;\n}\n\n.btn.btn-small {\n padding: 6px 12px;\n font-size: 14px;\n width: auto;\n}\n\n.btn.btn-primary {\n background: #3498db;\n}\n\n.btn.btn-primary:hover:not(:disabled) {\n background: #2980b9;\n}\n\n.btn.btn-danger {\n background: #e74c3c;\n}\n\n.btn.btn-danger:hover:not(:disabled) {\n background: #c0392b;\n}\n\n.error {\n background: #f8d7da;\n color: #721c24;\n padding: 12px;\n border-radius: 6px;\n margin: 20px 0;\n border: 1px solid #f5c6cb;\n}\n\n.quote-form {\n background: white;\n padding: 30px;\n border-radius: 10px;\n box-shadow: 0 2px 10px rgba(0,0,0,0.1);\n margin-bottom: 30px;\n}\n\n.quote-form h2 {\n color: #2c3e50;\n margin-bottom: 20px;\n text-align: center;\n}\n\n.loading {\n text-align: center;\n padding: 50px 20px;\n background: white;\n border-radius: 10px;\n box-shadow: 0 2px 10px rgba(0,0,0,0.1);\n}\n\n.loading-animation {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 20px;\n}\n\n.loading-spinner {\n width: 50px;\n height: 50px;\n border: 5px solid #ecf0f1;\n border-top: 5px solid #3498db;\n border-radius: 50%;\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n.loading-text h3 {\n color: #2c3e50;\n margin: 0 0 15px 0;\n}\n\n.loading-steps {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.loading-steps .step {\n color: #bdc3c7;\n transition: color 0.3s ease;\n}\n\n.loading-steps .step.active {\n color: #27ae60;\n font-weight: 500;\n}\n\n.loading-progress {\n margin-top: 30px;\n}\n\n.progress-bar {\n width: 100%;\n height: 6px;\n background: #ecf0f1;\n border-radius: 3px;\n overflow: hidden;\n}\n\n.progress-fill {\n height: 100%;\n background: linear-gradient(90deg, #3498db, #27ae60);\n border-radius: 3px;\n animation: progress 20s ease-in-out;\n}\n\n@keyframes progress {\n 0% { width: 0%; }\n 100% { width: 100%; }\n}\n\n.loading-time {\n color: #7f8c8d;\n margin-top: 10px;\n font-style: italic;\n}\n\n.quote-result {\n background: white;\n padding: 30px;\n border-radius: 10px;\n box-shadow: 0 2px 10px rgba(0,0,0,0.1);\n margin-top: 30px;\n}\n\n.quote-result h2 {\n color: #27ae60;\n margin-bottom: 20px;\n}\n\n.quote-result div {\n white-space: pre-line;\n line-height: 1.6;\n color: #2c3e50;\n font-size: 15px;\n}\n\n.quote-actions {\n display: flex;\n gap: 15px;\n margin-top: 30px;\n flex-wrap: wrap;\n}\n\n.quote-actions .btn {\n flex: 1;\n min-width: 200px;\n}\n\n.feedback-section {\n margin-top: 30px;\n padding: 25px;\n background: #f8f9fa;\n border-radius: 8px;\n border-left: 4px solid #3498db;\n}\n\n.feedback-section h3 {\n color: #2c3e50;\n margin-bottom: 15px;\n}\n\n.upload-section {\n background: white;\n padding: 30px;\n border-radius: 10px;\n box-shadow: 0 2px 10px rgba(0,0,0,0.1);\n}\n\n.upload-section h2 {\n color: #2c3e50;\n margin-bottom: 15px;\n}\n\n.upload-section p {\n color: #7f8c8d;\n margin-bottom: 25px;\n}\n\n.upload-form {\n margin-bottom: 30px;\n}\n\n.file-info {\n color: #27ae60;\n font-style: italic;\n margin-top: 8px;\n}\n\n.upload-status {\n padding: 15px;\n border-radius: 6px;\n margin: 20px 0;\n}\n\n.upload-status.success {\n background: #d4edda;\n color: #155724;\n border: 1px solid #c3e6cb;\n}\n\n.upload-status.error {\n background: #f8d7da;\n color: #721c24;\n border: 1px solid #f5c6cb;\n}\n\n.parse-results {\n margin-top: 15px;\n padding: 15px;\n background: rgba(255,255,255,0.5);\n border-radius: 4px;\n}\n\n.parse-results ul {\n margin: 10px 0;\n padding-left: 20px;\n}\n\n.recent-uploads {\n margin: 30px 0;\n}\n\n.recent-uploads h3 {\n color: #2c3e50;\n margin-bottom: 15px;\n}\n\n.uploads-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.upload-item {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px;\n background: #f8f9fa;\n border-radius: 6px;\n border-left: 4px solid #3498db;\n}\n\n.upload-name {\n font-weight: 500;\n color: #2c3e50;\n flex: 1;\n}\n\n.upload-status {\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 0.9em;\n}\n\n.upload-type {\n background: #ecf0f1;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 0.85em;\n color: #34495e;\n}\n\n.upload-date {\n color: #7f8c8d;\n font-size: 0.9em;\n}\n\n.materials-overview {\n margin-top: 30px;\n}\n\n.materials-overview h3 {\n color: #2c3e50;\n margin-bottom: 15px;\n}\n\n.materials-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 15px;\n}\n\n.material-item {\n padding: 15px;\n background: #f8f9fa;\n border-radius: 8px;\n border-left: 4px solid #27ae60;\n}\n\n.material-item strong {\n color: #2c3e50;\n display: block;\n margin-bottom: 8px;\n}\n\n.material-item .price {\n color: #27ae60;\n font-weight: 500;\n display: block;\n margin-bottom: 4px;\n}\n\n.material-item .category {\n color: #3498db;\n font-size: 0.9em;\n display: block;\n margin-bottom: 4px;\n}\n\n.material-item .supplier {\n color: #7f8c8d;\n font-size: 0.85em;\n}\n\n.more-items {\n text-align: center;\n color: #7f8c8d;\n font-style: italic;\n margin-top: 15px;\n}\n\n.pricing-management-section {\n background: white;\n padding: 30px;\n border-radius: 10px;\n box-shadow: 0 2px 10px rgba(0,0,0,0.1);\n}\n\n.pricing-management-section h2 {\n color: #2c3e50;\n margin-bottom: 15px;\n}\n\n.pricing-management-section p {\n color: #7f8c8d;\n margin-bottom: 25px;\n}\n\n.category-selector {\n margin-bottom: 20px;\n}\n\n.category-selector label {\n display: block;\n margin-bottom: 5px;\n font-weight: bold;\n color: #2c3e50;\n}\n\n.category-selector select {\n width: 100%;\n max-width: 300px;\n padding: 8px 12px;\n border: 1px solid #ddd;\n border-radius: 4px;\n background: white;\n font-size: 14px;\n margin-bottom: 10px;\n}\n\n.web-search-btn {\n background: linear-gradient(135deg, #3498db, #2980b9);\n color: white;\n border: none;\n padding: 8px 16px;\n border-radius: 6px;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n transition: all 0.3s ease;\n margin-left: 10px;\n}\n\n.web-search-btn:hover {\n background: linear-gradient(135deg, #2980b9, #3498db);\n transform: translateY(-1px);\n box-shadow: 0 4px 8px rgba(52, 152, 219, 0.3);\n}\n\n.web-search-btn:disabled {\n background: #bdc3c7;\n cursor: not-allowed;\n transform: none;\n box-shadow: none;\n}\n\n.add-price-form {\n margin-bottom: 40px;\n padding: 25px;\n background: #f8f9fa;\n border-radius: 8px;\n border-left: 4px solid #27ae60;\n}\n\n.add-price-form h3 {\n color: #2c3e50;\n margin-bottom: 20px;\n}\n\n.prices-list {\n margin-top: 30px;\n}\n\n.prices-list h3 {\n color: #2c3e50;\n margin-bottom: 20px;\n}\n\n.prices-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));\n gap: 20px;\n}\n\n.price-item {\n padding: 20px;\n background: white;\n border-radius: 8px;\n border: 1px solid #ecf0f1;\n box-shadow: 0 2px 5px rgba(0,0,0,0.05);\n transition: box-shadow 0.3s ease;\n}\n\n.price-item:hover {\n box-shadow: 0 4px 15px rgba(0,0,0,0.1);\n}\n\n.price-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 15px;\n padding-bottom: 10px;\n border-bottom: 2px solid #ecf0f1;\n}\n\n.price-header strong {\n color: #2c3e50;\n font-size: 1.1em;\n}\n\n.price-value {\n color: #27ae60;\n font-weight: bold;\n font-size: 1.1em;\n}\n\n.price-details {\n margin-bottom: 15px;\n}\n\n.price-details p {\n margin: 5px 0;\n color: #34495e;\n font-size: 0.95em;\n}\n\n.price-date {\n color: #7f8c8d;\n font-size: 0.85em;\n margin-bottom: 15px;\n}\n\n.price-actions {\n display: flex;\n gap: 10px;\n}\n\n.edit-form {\n border: 2px solid #3498db;\n border-radius: 8px;\n padding: 15px;\n background: #f8f9fa;\n}\n\n.edit-actions {\n display: flex;\n gap: 10px;\n margin-top: 15px;\n}\n\n.no-data {\n text-align: center;\n padding: 40px 20px;\n color: #7f8c8d;\n font-style: italic;\n}\n\n.usage-stats {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 20px;\n}\n\n.usage-overview {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 20px;\n margin-bottom: 30px;\n}\n\n.stat-card {\n background: white;\n padding: 25px;\n border-radius: 10px;\n box-shadow: 0 2px 10px rgba(0,0,0,0.1);\n}\n\n.stat-card h3 {\n color: #2c3e50;\n margin-bottom: 15px;\n font-size: 1.2em;\n}\n\n.budget-info p,\n.token-info p,\n.general-info p {\n margin: 8px 0;\n color: #34495e;\n}\n\n.budget-bar,\n.token-bar {\n width: 100%;\n height: 12px;\n background: #ecf0f1;\n border-radius: 6px;\n overflow: hidden;\n margin: 10px 0;\n}\n\n.budget-fill,\n.token-fill {\n height: 100%;\n transition: width 0.3s ease;\n border-radius: 6px;\n}\n\n.budget-percent,\n.token-percent {\n font-weight: 500;\n color: #2c3e50;\n}\n\n.warning-level {\n padding: 2px 8px;\n border-radius: 4px;\n font-weight: 500;\n font-size: 0.9em;\n}\n\n.warning-level.low {\n background: #d4edda;\n color: #155724;\n}\n\n.warning-level.medium {\n background: #fff3cd;\n color: #856404;\n}\n\n.warning-level.high {\n background: #f8d7da;\n color: #721c24;\n}\n\n.refresh-section {\n text-align: center;\n margin-top: 30px;\n padding: 20px;\n background: #f8f9fa;\n border-radius: 8px;\n}\n\n.last-update {\n color: #7f8c8d;\n font-size: 0.9em;\n margin-top: 15px;\n}\n\n.loading-usage {\n text-align: center;\n padding: 50px 20px;\n color: #7f8c8d;\n}\n\n@media (max-width: 768px) {\n .container {\n padding: 15px;\n }\n \n .header {\n padding: 15px;\n }\n \n .ai-budget-bar {\n position: static;\n margin-top: 15px;\n justify-content: center;\n }\n \n .logout-btn {\n position: static;\n margin-bottom: 15px;\n }\n \n .nav-buttons {\n flex-direction: column;\n align-items: center;\n }\n \n .nav-btn {\n width: 100%;\n max-width: 300px;\n }\n \n .form-row {\n flex-direction: column;\n }\n \n .form-row .form-group {\n min-width: auto;\n }\n \n .quote-actions {\n flex-direction: column;\n }\n \n .quote-actions .btn {\n min-width: auto;\n }\n \n .prices-grid {\n grid-template-columns: 1fr;\n }\n \n .usage-overview {\n grid-template-columns: 1fr;\n }\n \n .materials-grid {\n grid-template-columns: 1fr;\n }\n}\n\n/* Web Search Approval Dialog */\n.modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.7);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 1000;\n}\n\n.approval-dialog {\n background: white;\n border-radius: 12px;\n padding: 30px;\n max-width: 700px;\n width: 90%;\n max-height: 80vh;\n overflow-y: auto;\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);\n}\n\n.approval-dialog h3 {\n margin: 0 0 15px 0;\n color: #2c3e50;\n font-size: 1.4em;\n}\n\n.approval-dialog p {\n color: #7f8c8d;\n margin-bottom: 25px;\n}\n\n.approval-list {\n margin-bottom: 25px;\n}\n\n.approval-item {\n border: 2px solid #ecf0f1;\n border-radius: 8px;\n margin-bottom: 12px;\n transition: all 0.2s ease;\n}\n\n.approval-item:hover {\n border-color: #3498db;\n box-shadow: 0 2px 8px rgba(52, 152, 219, 0.1);\n}\n\n.approval-checkbox {\n display: flex;\n align-items: flex-start;\n padding: 15px;\n cursor: pointer;\n gap: 12px;\n}\n\n.approval-checkbox input[type=\"checkbox\"] {\n margin: 4px 0 0 0;\n transform: scale(1.2);\n}\n\n.approval-details {\n flex: 1;\n}\n\n.approval-main {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.approval-main strong {\n color: #2c3e50;\n font-size: 1.1em;\n}\n\n.approval-price {\n background: #e8f5e8;\n color: #27ae60;\n padding: 4px 12px;\n border-radius: 20px;\n font-weight: bold;\n font-size: 0.9em;\n}\n\n.approval-meta {\n display: flex;\n gap: 15px;\n margin-bottom: 8px;\n}\n\n.approval-source {\n color: #7f8c8d;\n font-size: 0.9em;\n}\n\n.approval-confidence {\n color: #8e44ad;\n font-size: 0.9em;\n font-weight: 500;\n}\n\n.approval-notes {\n background: #f8f9fa;\n padding: 8px 12px;\n border-radius: 6px;\n font-size: 0.85em;\n color: #6c757d;\n border-left: 3px solid #dee2e6;\n}\n\n.approval-actions {\n display: flex;\n gap: 15px;\n justify-content: flex-end;\n margin-top: 25px;\n padding-top: 20px;\n border-top: 1px solid #ecf0f1;\n}\n\n.approval-actions .btn {\n min-width: 120px;\n}\n\n.btn-primary:disabled {\n background: #bdc3c7;\n cursor: not-allowed;\n}\n\n@media (max-width: 768px) {\n .approval-dialog {\n padding: 20px;\n margin: 20px;\n }\n \n .approval-main {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n \n .approval-meta {\n flex-direction: column;\n gap: 5px;\n }\n \n .approval-actions {\n flex-direction: column-reverse;\n }\n}\n\n/* Enhanced Materials Section Styles */\n.search-and-filter {\n display: flex;\n gap: 15px;\n align-items: center;\n flex-wrap: wrap;\n margin-bottom: 20px;\n padding: 20px;\n background: #f8f9fa;\n border-radius: 8px;\n border: 1px solid #e9ecef;\n}\n\n.search-input {\n flex: 1;\n min-width: 250px;\n padding: 12px 16px;\n border: 2px solid #e9ecef;\n border-radius: 6px;\n font-size: 14px;\n transition: border-color 0.2s ease;\n}\n\n.search-input:focus {\n outline: none;\n border-color: #007bff;\n box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.1);\n}\n\n.category-filter {\n padding: 12px 16px;\n border: 2px solid #e9ecef;\n border-radius: 6px;\n background: white;\n font-size: 14px;\n min-width: 200px;\n transition: border-color 0.2s ease;\n}\n\n.category-filter:focus {\n outline: none;\n border-color: #007bff;\n}\n\n.materials-table-container {\n background: white;\n border-radius: 8px;\n overflow: hidden;\n box-shadow: 0 2px 10px rgba(0,0,0,0.1);\n margin-top: 20px;\n}\n\n.results-info {\n padding: 15px 20px;\n background: #f8f9fa;\n border-bottom: 1px solid #e9ecef;\n font-size: 14px;\n color: #6c757d;\n font-weight: 500;\n}\n\n.materials-table.enhanced {\n width: 100%;\n border-collapse: collapse;\n margin: 0;\n table-layout: fixed;\n}\n\n.materials-table.enhanced th {\n background: #495057;\n color: white;\n padding: 15px 12px;\n text-align: left;\n font-weight: 600;\n font-size: 14px;\n border: none;\n white-space: nowrap;\n}\n\n.materials-table.enhanced th:nth-child(1) { width: 25%; } /* Materiale */\n.materials-table.enhanced th:nth-child(2) { width: 15%; } /* Kategori */\n.materials-table.enhanced th:nth-child(3) { width: 10%; } /* Enhed */\n.materials-table.enhanced th:nth-child(4) { width: 15%; } /* Pris */\n.materials-table.enhanced th:nth-child(5) { width: 15%; } /* Leverandør */\n.materials-table.enhanced th:nth-child(6) { width: 20%; } /* Beskrivelse */\n.materials-table.enhanced th:nth-child(7) { width: 10%; } /* Handlinger */\n\n.materials-table.enhanced td {\n padding: 12px;\n border-bottom: 1px solid #e9ecef;\n vertical-align: middle;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.materials-table.enhanced tr:hover {\n background-color: #f8f9fa;\n}\n\n.material-name {\n font-weight: 600;\n color: #2c3e50;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.category-badge {\n background: #e3f2fd;\n color: #1976d2;\n padding: 4px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 500;\n display: inline-block;\n white-space: nowrap;\n}\n\n.unit-cell {\n font-family: 'Courier New', monospace;\n background: #f8f9fa;\n color: #495057;\n font-weight: 500;\n text-align: center;\n border-radius: 4px;\n font-size: 12px;\n padding: 6px 8px;\n}\n\n.price-cell {\n text-align: right;\n padding-right: 16px;\n}\n\n.price-value {\n color: #28a745;\n font-size: 14px;\n font-weight: 700;\n white-space: nowrap;\n}\n\n.supplier-cell {\n color: #6c757d;\n font-style: italic;\n font-size: 13px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.description-cell {\n color: #6c757d;\n font-size: 12px;\n line-height: 1.3;\n max-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.actions-cell {\n text-align: center;\n white-space: nowrap;\n}\n\n.btn-small {\n padding: 6px 10px;\n font-size: 12px;\n margin: 0 2px;\n border-radius: 4px;\n border: none;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-edit {\n background: #ffc107;\n color: #212529;\n}\n\n.btn-edit:hover {\n background: #e0a800;\n transform: translateY(-1px);\n}\n\n.btn-danger {\n background: #dc3545;\n color: white;\n}\n\n.btn-danger:hover {\n background: #c82333;\n transform: translateY(-1px);\n}\n\n.empty-state {\n text-align: center;\n padding: 60px 20px;\n color: #6c757d;\n}\n\n.empty-icon {\n font-size: 48px;\n display: block;\n margin-bottom: 20px;\n}\n\n.empty-state h4 {\n margin: 0 0 10px 0;\n color: #495057;\n font-weight: 600;\n}\n\n.empty-state p {\n margin: 0 0 20px 0;\n font-size: 14px;\n line-height: 1.5;\n}\n\n/* Enhanced OpenAI Usage Section Styles */\n.usage-stats-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 20px;\n margin-top: 30px;\n}\n\n.stat-card {\n background: white;\n border-radius: 12px;\n padding: 25px;\n box-shadow: 0 4px 20px rgba(0,0,0,0.1);\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n border: 1px solid #e9ecef;\n display: flex;\n align-items: flex-start;\n gap: 15px;\n}\n\n.stat-card:hover {\n transform: translateY(-2px);\n box-shadow: 0 8px 30px rgba(0,0,0,0.15);\n}\n\n.stat-card.primary-stat {\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n color: white;\n grid-column: span 2;\n}\n\n.stat-card.secondary-stat {\n background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);\n color: white;\n}\n\n.stat-card.wide-stat {\n grid-column: span 2;\n background: #f8f9fa;\n}\n\n.stat-icon {\n font-size: 24px;\n padding: 8px;\n background: rgba(255,255,255,0.1);\n border-radius: 8px;\n flex-shrink: 0;\n}\n\n.stat-card.primary-stat .stat-icon,\n.stat-card.secondary-stat .stat-icon {\n background: rgba(255,255,255,0.2);\n}\n\n.stat-content {\n flex: 1;\n}\n\n.stat-card h3 {\n margin: 0 0 8px 0;\n font-size: 14px;\n font-weight: 600;\n opacity: 0.9;\n}\n\n.stat-value {\n font-size: 24px;\n font-weight: 700;\n margin: 0 0 5px 0;\n line-height: 1.2;\n}\n\n.stat-value.large {\n font-size: 32px;\n}\n\n.stat-value.medium {\n font-size: 20px;\n}\n\n.stat-value.small {\n font-size: 14px;\n font-weight: 500;\n}\n\n.stat-label {\n font-size: 12px;\n opacity: 0.7;\n font-weight: 500;\n}\n\n.token-breakdown {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-top: 10px;\n}\n\n.token-item {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 12px;\n background: white;\n border-radius: 6px;\n font-size: 14px;\n}\n\n.token-item.total {\n background: #e3f2fd;\n font-weight: 600;\n border: 2px solid #1976d2;\n}\n\n.loading-state {\n text-align: center;\n padding: 60px 20px;\n}\n\n.loading-spinner {\n width: 40px;\n height: 40px;\n border: 4px solid #f3f3f3;\n border-top: 4px solid #007bff;\n border-radius: 50%;\n animation: spin 1s linear infinite;\n margin: 0 auto 20px;\n}\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n/* Responsive adjustments */\n@media (max-width: 768px) {\n .search-and-filter {\n flex-direction: column;\n align-items: stretch;\n }\n \n .search-input,\n .category-filter {\n min-width: auto;\n width: 100%;\n }\n \n .usage-stats-grid {\n grid-template-columns: 1fr;\n }\n \n .stat-card.primary-stat,\n .stat-card.wide-stat {\n grid-column: span 1;\n }\n \n .materials-table.enhanced {\n font-size: 11px;\n }\n \n .materials-table.enhanced th,\n .materials-table.enhanced td {\n padding: 8px 4px;\n }\n \n /* Hide less important columns on mobile */\n .materials-table.enhanced th:nth-child(5),\n .materials-table.enhanced td:nth-child(5), /* Leverandør */\n .materials-table.enhanced th:nth-child(6),\n .materials-table.enhanced td:nth-child(6) { /* Beskrivelse */\n display: none;\n }\n \n /* Adjust remaining column widths for mobile */\n .materials-table.enhanced th:nth-child(1) { width: 35%; } /* Materiale */\n .materials-table.enhanced th:nth-child(2) { width: 20%; } /* Kategori */\n .materials-table.enhanced th:nth-child(3) { width: 15%; } /* Enhed */\n .materials-table.enhanced th:nth-child(4) { width: 20%; } /* Pris */\n .materials-table.enhanced th:nth-child(7) { width: 10%; } /* Handlinger */\n}\n","/* Project Flow Styles */\n.project-flow {\n max-width: 1200px;\n margin: 0 auto;\n padding: 20px;\n}\n\n.project-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: #f8f9fa;\n padding: 20px;\n border-radius: 8px;\n margin-bottom: 30px;\n border: 1px solid #e9ecef;\n}\n\n.project-info h2 {\n margin: 0 0 5px 0;\n color: #2c3e50;\n}\n\n.project-info p {\n margin: 2px 0;\n color: #6c757d;\n}\n\n.reset-btn {\n background: #dc3545;\n color: white;\n border: none;\n padding: 10px 15px;\n border-radius: 5px;\n cursor: pointer;\n font-size: 14px;\n}\n\n.reset-btn:hover {\n background: #c82333;\n}\n\n/* Step Navigation */\n.step-navigation {\n display: flex;\n justify-content: space-between;\n margin-bottom: 40px;\n background: white;\n padding: 20px;\n border-radius: 10px;\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n overflow-x: auto;\n}\n\n.step {\n flex: 1;\n display: flex;\n align-items: center;\n padding: 15px;\n margin: 0 5px;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.3s ease;\n min-width: 180px;\n}\n\n.step.active {\n background: #007bff;\n color: white;\n transform: scale(1.05);\n}\n\n.step.accessible:hover {\n background: #e9ecef;\n}\n\n.step.accessible.active:hover {\n background: #0056b3;\n}\n\n.step.locked {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.step-icon {\n font-size: 24px;\n margin-right: 10px;\n}\n\n.step-info {\n flex: 1;\n}\n\n.step-name {\n font-weight: bold;\n font-size: 16px;\n}\n\n.step-description {\n font-size: 12px;\n opacity: 0.8;\n}\n\n.step-arrow {\n font-size: 20px;\n margin-left: 10px;\n opacity: 0.5;\n}\n\n.step.active .step-arrow {\n display: none;\n}\n\n/* Content Area */\n.step-content {\n background: white;\n border-radius: 10px;\n padding: 30px;\n box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n min-height: 600px;\n}\n\n/* Project Creation Styles */\n.project-creation {\n max-width: 800px;\n margin: 0 auto;\n}\n\n.section-header {\n text-align: center;\n margin-bottom: 30px;\n}\n\n.section-header h3 {\n margin: 0 0 10px 0;\n color: #2c3e50;\n font-size: 28px;\n}\n\n.section-header p {\n color: #6c757d;\n margin: 0;\n}\n\n.header-actions {\n display: flex;\n justify-content: center;\n gap: 10px;\n margin-top: 20px;\n}\n\n.toggle-btn {\n padding: 10px 20px;\n border: 2px solid #007bff;\n background: white;\n color: #007bff;\n border-radius: 5px;\n cursor: pointer;\n transition: all 0.3s ease;\n}\n\n.toggle-btn.active {\n background: #007bff;\n color: white;\n}\n\n.toggle-btn:hover {\n background: #007bff;\n color: white;\n}\n\n/* Form Styles */\n.form-container {\n max-width: 600px;\n margin: 0 auto;\n}\n\n.project-form {\n background: #f8f9fa;\n padding: 30px;\n border-radius: 8px;\n border: 1px solid #e9ecef;\n}\n\n.form-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 20px;\n}\n\n.form-group {\n display: flex;\n flex-direction: column;\n}\n\n.form-group.full-width {\n grid-column: 1 / -1;\n}\n\n.form-group.checkbox-group {\n flex-direction: row;\n align-items: center;\n}\n\n.form-group.checkbox-group input {\n margin-right: 8px;\n width: auto;\n}\n\n.form-group label {\n font-weight: bold;\n margin-bottom: 5px;\n color: #2c3e50;\n}\n\n.form-group input,\n.form-group select,\n.form-group textarea {\n padding: 12px;\n border: 1px solid #ced4da;\n border-radius: 5px;\n font-size: 14px;\n transition: border-color 0.3s ease;\n}\n\n.form-group input:focus,\n.form-group select:focus,\n.form-group textarea:focus {\n border-color: #007bff;\n outline: none;\n box-shadow: 0 0 0 2px rgba(0,123,255,0.25);\n}\n\n.submit-btn {\n width: 100%;\n padding: 15px;\n background: #28a745;\n color: white;\n border: none;\n border-radius: 5px;\n font-size: 16px;\n font-weight: bold;\n cursor: pointer;\n margin-top: 20px;\n transition: background 0.3s ease;\n}\n\n.submit-btn:hover {\n background: #218838;\n}\n\n.submit-btn:disabled {\n background: #6c757d;\n cursor: not-allowed;\n}\n\n.error-message {\n background: #f8d7da;\n color: #721c24;\n padding: 12px;\n border-radius: 5px;\n border: 1px solid #f5c6cb;\n margin: 15px 0;\n}\n\n/* Existing Projects */\n.existing-projects {\n max-width: 900px;\n margin: 0 auto;\n}\n\n.no-projects {\n text-align: center;\n padding: 60px 20px;\n color: #6c757d;\n}\n\n.create-first-btn {\n padding: 12px 24px;\n background: #007bff;\n color: white;\n border: none;\n border-radius: 5px;\n cursor: pointer;\n margin-top: 20px;\n}\n\n.projects-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n gap: 20px;\n}\n\n.project-card {\n background: white;\n border: 1px solid #e9ecef;\n border-radius: 8px;\n padding: 20px;\n cursor: pointer;\n transition: all 0.3s ease;\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.project-card:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 8px rgba(0,0,0,0.15);\n border-color: #007bff;\n}\n\n.project-card-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 15px;\n}\n\n.project-card-header h4 {\n margin: 0;\n color: #2c3e50;\n}\n\n.status-badge {\n padding: 4px 8px;\n border-radius: 12px;\n color: white;\n font-size: 12px;\n font-weight: bold;\n}\n\n.project-card-body p {\n margin: 8px 0;\n color: #6c757d;\n font-size: 14px;\n}\n\n.project-card-footer {\n margin-top: 15px;\n text-align: center;\n}\n\n.continue-text {\n color: #007bff;\n font-size: 12px;\n font-weight: bold;\n}\n\n/* Geometry Input Styles */\n.geometry-input {\n max-width: 800px;\n margin: 0 auto;\n}\n\n.geometry-form {\n background: #f8f9fa;\n padding: 30px;\n border-radius: 8px;\n border: 1px solid #e9ecef;\n}\n\n.calculations-display {\n background: #e3f2fd;\n padding: 20px;\n border-radius: 8px;\n margin: 20px 0;\n border: 1px solid #bbdefb;\n}\n\n.calculations-display h4 {\n margin: 0 0 15px 0;\n color: #1976d2;\n}\n\n.calc-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 15px;\n}\n\n.calc-item {\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: white;\n padding: 12px;\n border-radius: 5px;\n border: 1px solid #bbdefb;\n}\n\n.calc-label {\n font-weight: bold;\n color: #2c3e50;\n}\n\n.calc-value {\n color: #1976d2;\n font-weight: bold;\n}\n\n/* Labor Input Styles */\n.labor-input {\n max-width: 900px;\n margin: 0 auto;\n}\n\n.labor-form {\n background: #f8f9fa;\n padding: 30px;\n border-radius: 8px;\n border: 1px solid #e9ecef;\n}\n\n.labor-overview {\n background: #fff3cd;\n padding: 20px;\n border-radius: 8px;\n margin-bottom: 30px;\n border: 1px solid #ffeaa7;\n}\n\n.overview-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 20px;\n margin-bottom: 20px;\n}\n\n.overview-item {\n display: flex;\n flex-direction: column;\n}\n\n.overview-item label {\n font-weight: bold;\n margin-bottom: 5px;\n color: #2c3e50;\n}\n\n.overview-item input {\n padding: 10px;\n border: 1px solid #ced4da;\n border-radius: 5px;\n}\n\n.overview-item input.fixed-rate {\n background: #e9ecef;\n}\n\n.overview-item small {\n margin-top: 5px;\n color: #6c757d;\n font-size: 12px;\n}\n\n.calculations {\n display: flex;\n gap: 30px;\n justify-content: center;\n margin-top: 20px;\n}\n\n.work-breakdown {\n background: white;\n padding: 20px;\n border-radius: 8px;\n border: 1px solid #e9ecef;\n margin: 20px 0;\n}\n\n.work-breakdown h4 {\n margin: 0 0 20px 0;\n color: #2c3e50;\n}\n\n.breakdown-list {\n display: flex;\n flex-direction: column;\n gap: 15px;\n}\n\n.breakdown-item {\n background: #f8f9fa;\n padding: 15px;\n border-radius: 5px;\n border: 1px solid #e9ecef;\n}\n\n.breakdown-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 10px;\n}\n\n.hours-input {\n width: 80px;\n padding: 5px;\n border: 1px solid #ced4da;\n border-radius: 3px;\n text-align: center;\n}\n\n.description-input {\n width: 100%;\n padding: 8px;\n border: 1px solid #ced4da;\n border-radius: 3px;\n}\n\n.breakdown-total {\n text-align: center;\n margin-top: 20px;\n padding: 15px;\n background: #d4edda;\n border-radius: 5px;\n color: #155724;\n}\n\n/* Materials Manager Styles */\n.materials-manager {\n max-width: 1000px;\n margin: 0 auto;\n}\n\n.suggestions-section {\n background: #d1ecf1;\n padding: 20px;\n border-radius: 8px;\n margin-bottom: 30px;\n border: 1px solid #bee5eb;\n}\n\n.suggestions-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 15px;\n}\n\n.suggestions-header h4 {\n margin: 0;\n color: #0c5460;\n}\n\n.hide-suggestions-btn {\n background: none;\n border: none;\n color: #0c5460;\n cursor: pointer;\n font-size: 16px;\n}\n\n.suggestions-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n gap: 15px;\n}\n\n.suggestion-card {\n background: white;\n padding: 15px;\n border-radius: 5px;\n border: 1px solid #bee5eb;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.suggestion-info {\n flex: 1;\n}\n\n.suggestion-info strong {\n color: #2c3e50;\n}\n\n.suggestion-info p {\n margin: 5px 0;\n color: #6c757d;\n font-size: 14px;\n}\n\n.suggestion-details {\n display: flex;\n flex-direction: column;\n gap: 2px;\n font-size: 12px;\n color: #6c757d;\n}\n\n.add-suggestion-btn {\n background: #28a745;\n color: white;\n border: none;\n padding: 8px 12px;\n border-radius: 5px;\n cursor: pointer;\n font-size: 14px;\n}\n\n.add-suggestion-btn:hover {\n background: #218838;\n}\n\n.add-material-section {\n background: white;\n padding: 20px;\n border-radius: 8px;\n border: 1px solid #e9ecef;\n margin-bottom: 30px;\n}\n\n.add-material-section h4 {\n margin: 0 0 20px 0;\n color: #2c3e50;\n}\n\n.material-form {\n display: flex;\n flex-direction: column;\n}\n\n.total-display {\n background: #d4edda;\n color: #155724;\n padding: 15px;\n border-radius: 5px;\n text-align: center;\n border: 1px solid #c3e6cb;\n}\n\n.add-btn {\n background: #007bff;\n color: white;\n border: none;\n padding: 12px 20px;\n border-radius: 5px;\n cursor: pointer;\n margin-top: 15px;\n}\n\n.add-btn:hover {\n background: #0056b3;\n}\n\n.add-btn:disabled {\n background: #6c757d;\n cursor: not-allowed;\n}\n\n.materials-list {\n background: white;\n padding: 20px;\n border-radius: 8px;\n border: 1px solid #e9ecef;\n margin-bottom: 20px;\n}\n\n.materials-list h4 {\n margin: 0 0 20px 0;\n color: #2c3e50;\n}\n\n.material-category {\n margin-bottom: 25px;\n}\n\n.material-category h5 {\n margin: 0 0 10px 0;\n color: #495057;\n font-size: 16px;\n padding-bottom: 5px;\n border-bottom: 1px solid #e9ecef;\n}\n\n.materials-table {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.material-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: #f8f9fa;\n padding: 15px;\n border-radius: 5px;\n border: 1px solid #e9ecef;\n}\n\n.material-info {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.material-info strong {\n color: #2c3e50;\n}\n\n.material-info span {\n color: #6c757d;\n font-size: 14px;\n}\n\n.material-actions {\n display: flex;\n align-items: center;\n gap: 15px;\n}\n\n.material-total {\n font-weight: bold;\n color: #28a745;\n font-size: 16px;\n}\n\n.remove-btn {\n background: #dc3545;\n color: white;\n border: none;\n padding: 6px 10px;\n border-radius: 3px;\n cursor: pointer;\n font-size: 14px;\n}\n\n.remove-btn:hover {\n background: #c82333;\n}\n\n.materials-summary {\n background: #e9ecef;\n padding: 20px;\n border-radius: 8px;\n margin-top: 20px;\n}\n\n.summary-item {\n display: flex;\n justify-content: space-between;\n margin-bottom: 10px;\n}\n\n.summary-item.total {\n font-size: 18px;\n color: #28a745;\n border-top: 1px solid #ced4da;\n padding-top: 10px;\n margin-top: 15px;\n}\n\n/* Calculation View Styles */\n.calculation-view {\n max-width: 1000px;\n margin: 0 auto;\n}\n\n.project-summary {\n background: #f8f9fa;\n padding: 20px;\n border-radius: 8px;\n margin-bottom: 30px;\n border: 1px solid #e9ecef;\n}\n\n.project-summary h4 {\n margin: 0 0 15px 0;\n color: #2c3e50;\n}\n\n.summary-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 15px;\n}\n\n.summary-item {\n background: white;\n padding: 12px;\n border-radius: 5px;\n border: 1px solid #e9ecef;\n display: flex;\n justify-content: space-between;\n}\n\n.calculation-section {\n background: white;\n padding: 20px;\n border-radius: 8px;\n border: 1px solid #e9ecef;\n margin-bottom: 30px;\n}\n\n.calculation-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n}\n\n.calculation-header h4 {\n margin: 0;\n color: #2c3e50;\n}\n\n.calculate-btn {\n background: #17a2b8;\n color: white;\n border: none;\n padding: 12px 20px;\n border-radius: 5px;\n cursor: pointer;\n font-size: 14px;\n}\n\n.calculate-btn:hover {\n background: #138496;\n}\n\n.calculate-btn:disabled {\n background: #6c757d;\n cursor: not-allowed;\n}\n\n.calculation-results {\n background: #f8f9fa;\n padding: 20px;\n border-radius: 8px;\n border: 1px solid #e9ecef;\n}\n\n.calculation-breakdown {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.breakdown-section {\n background: white;\n padding: 15px;\n border-radius: 5px;\n border: 1px solid #e9ecef;\n}\n\n.breakdown-section h5 {\n margin: 0 0 10px 0;\n color: #495057;\n}\n\n.breakdown-item {\n display: flex;\n justify-content: space-between;\n margin-bottom: 8px;\n padding: 5px 0;\n}\n\n.breakdown-item.total {\n border-top: 2px solid #28a745;\n padding-top: 10px;\n margin-top: 10px;\n font-size: 18px;\n color: #28a745;\n}\n\n.quote-generation {\n background: white;\n padding: 20px;\n border-radius: 8px;\n border: 1px solid #e9ecef;\n margin-bottom: 30px;\n}\n\n.quote-generation h4 {\n margin: 0 0 20px 0;\n color: #2c3e50;\n}\n\n.quote-options {\n background: #f8f9fa;\n padding: 15px;\n border-radius: 5px;\n margin-bottom: 20px;\n}\n\n.options-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 15px;\n}\n\n.quote-buttons {\n display: flex;\n gap: 15px;\n justify-content: center;\n margin-bottom: 20px;\n}\n\n.static-quote-btn {\n background: #28a745;\n color: white;\n border: none;\n padding: 15px 25px;\n border-radius: 5px;\n cursor: pointer;\n font-size: 16px;\n font-weight: bold;\n}\n\n.static-quote-btn:hover {\n background: #218838;\n}\n\n.ai-quote-btn {\n background: #6f42c1;\n color: white;\n border: none;\n padding: 15px 25px;\n border-radius: 5px;\n cursor: pointer;\n font-size: 16px;\n font-weight: bold;\n}\n\n.ai-quote-btn:hover {\n background: #5a32a3;\n}\n\n.quote-info {\n background: #d1ecf1;\n padding: 15px;\n border-radius: 5px;\n border: 1px solid #bee5eb;\n}\n\n.quote-info p {\n margin: 5px 0;\n color: #0c5460;\n font-size: 14px;\n}\n\n.quotes-list {\n background: white;\n padding: 20px;\n border-radius: 8px;\n border: 1px solid #e9ecef;\n}\n\n.quotes-list h4 {\n margin: 0 0 20px 0;\n color: #2c3e50;\n}\n\n.quotes-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n gap: 20px;\n}\n\n.quote-card {\n background: #f8f9fa;\n padding: 15px;\n border-radius: 5px;\n border: 1px solid #e9ecef;\n}\n\n.quote-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 10px;\n}\n\n.quote-id {\n font-weight: bold;\n color: #2c3e50;\n}\n\n.quote-date {\n font-size: 12px;\n color: #6c757d;\n}\n\n.quote-info {\n margin-bottom: 15px;\n}\n\n.quote-info p {\n margin: 5px 0;\n font-size: 14px;\n color: #495057;\n}\n\n.quote-actions {\n text-align: center;\n}\n\n.view-quote-btn {\n background: #007bff;\n color: white;\n border: none;\n padding: 8px 15px;\n border-radius: 5px;\n cursor: pointer;\n font-size: 14px;\n}\n\n.view-quote-btn:hover {\n background: #0056b3;\n}\n\n/* Responsive Design */\n@media (max-width: 768px) {\n .step-navigation {\n flex-direction: column;\n gap: 10px;\n }\n \n .step {\n min-width: auto;\n }\n \n .step-arrow {\n display: none;\n }\n \n .form-grid {\n grid-template-columns: 1fr;\n }\n \n .overview-grid {\n grid-template-columns: 1fr;\n }\n \n .calc-grid {\n grid-template-columns: 1fr;\n }\n \n .summary-grid {\n grid-template-columns: 1fr;\n }\n \n .projects-grid {\n grid-template-columns: 1fr;\n }\n \n .suggestions-grid {\n grid-template-columns: 1fr;\n }\n \n .quotes-grid {\n grid-template-columns: 1fr;\n }\n \n .quote-buttons {\n flex-direction: column;\n }\n}\n\n/* Project Card Action Buttons */\n.project-card-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 15px;\n}\n\n.header-actions {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.card-actions {\n display: flex;\n gap: 5px;\n}\n\n.action-btn {\n background: none;\n border: none;\n padding: 5px;\n cursor: pointer;\n border-radius: 4px;\n font-size: 14px;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n}\n\n.action-btn:hover {\n transform: scale(1.1);\n box-shadow: 0 2px 8px rgba(0,0,0,0.15);\n}\n\n.edit-btn {\n background: #ffc107;\n color: #212529;\n}\n\n.edit-btn:hover {\n background: #e0a800;\n}\n\n.delete-btn {\n background: #dc3545;\n color: white;\n}\n\n.delete-btn:hover {\n background: #c82333;\n}\n\n/* Form Actions */\n.form-actions {\n display: flex;\n gap: 15px;\n align-items: center;\n}\n\n.cancel-btn {\n background: #6c757d;\n color: white;\n border: none;\n padding: 12px 20px;\n border-radius: 5px;\n cursor: pointer;\n font-size: 14px;\n transition: background-color 0.2s ease;\n}\n\n.cancel-btn:hover {\n background: #5a6268;\n}\n",".completed-quotes-view {\n padding: 20px;\n max-width: 1400px;\n margin: 0 auto;\n}\n\n.quotes-header {\n margin-bottom: 30px;\n}\n\n.quotes-header h2 {\n color: #2c3e50;\n margin-bottom: 10px;\n}\n\n.quotes-header p {\n color: #7f8c8d;\n margin-bottom: 20px;\n}\n\n.quotes-controls {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n gap: 20px;\n flex-wrap: wrap;\n}\n\n.filter-controls {\n display: flex;\n gap: 15px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.filter-controls label {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n}\n\n.filter-controls select {\n padding: 8px 12px;\n border: 1px solid #ddd;\n border-radius: 4px;\n background: white;\n min-width: 120px;\n}\n\n.refresh-btn {\n padding: 10px 16px;\n background: #3498db;\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-weight: 500;\n transition: background-color 0.2s;\n}\n\n.refresh-btn:hover {\n background: #2980b9;\n}\n\n.quotes-summary {\n background: #f8f9fa;\n padding: 20px;\n border-radius: 8px;\n margin-bottom: 20px;\n}\n\n.summary-stats {\n display: flex;\n gap: 30px;\n justify-content: center;\n flex-wrap: wrap;\n}\n\n.stat-item {\n text-align: center;\n}\n\n.stat-label {\n display: block;\n color: #7f8c8d;\n font-size: 14px;\n margin-bottom: 5px;\n}\n\n.stat-value {\n display: block;\n font-size: 24px;\n font-weight: bold;\n color: #2c3e50;\n}\n\n.quotes-table-container {\n background: white;\n border-radius: 8px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n overflow: hidden;\n}\n\n.quotes-table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.quotes-table th {\n background: #34495e;\n color: white;\n padding: 15px 12px;\n text-align: left;\n font-weight: 600;\n font-size: 14px;\n}\n\n.quotes-table td {\n padding: 12px;\n border-bottom: 1px solid #ecf0f1;\n vertical-align: middle;\n}\n\n.quote-row:hover {\n background: #f8f9fa;\n}\n\n.quote-row.newest-quote {\n background: #e8f5e8;\n border-left: 4px solid #27ae60;\n transition: all 0.3s ease;\n}\n\n.quote-row.newest-quote:hover {\n background: #d5f4d5;\n}\n\n.project-name {\n font-weight: 500;\n color: #2c3e50;\n}\n\n.quote-type {\n padding: 4px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 500;\n display: inline-block;\n}\n\n.quote-type.static {\n background: #e8f5e8;\n color: #27ae60;\n}\n\n.quote-type.ai {\n background: #e3f2fd;\n color: #2196f3;\n}\n\n.quote-total {\n font-weight: 600;\n color: #27ae60;\n}\n\n.ai-cost {\n color: #7f8c8d;\n font-size: 14px;\n}\n\n.actions {\n display: flex;\n gap: 8px;\n}\n\n.view-btn, .download-btn, .delete-btn {\n padding: 6px 10px;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 14px;\n transition: background-color 0.2s;\n}\n\n.view-btn {\n background: #3498db;\n color: white;\n}\n\n.view-btn:hover {\n background: #2980b9;\n}\n\n.download-btn {\n background: #95a5a6;\n color: white;\n}\n\n.download-btn:hover {\n background: #7f8c8d;\n}\n\n.delete-btn {\n background: #e74c3c;\n color: white;\n}\n\n.delete-btn:hover {\n background: #c0392b;\n}\n\n.empty-state {\n text-align: center;\n padding: 60px 20px;\n color: #7f8c8d;\n}\n\n.empty-state p {\n font-size: 18px;\n margin: 0;\n}\n\n.loading-state {\n text-align: center;\n padding: 60px 20px;\n}\n\n.loading-spinner {\n border: 3px solid #f3f3f3;\n border-top: 3px solid #3498db;\n border-radius: 50%;\n width: 40px;\n height: 40px;\n animation: spin 1s linear infinite;\n margin: 0 auto 20px;\n}\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n.error-message {\n background: #f8d7da;\n color: #721c24;\n padding: 15px;\n border-radius: 6px;\n margin-bottom: 20px;\n border: 1px solid #f5c6cb;\n}\n\n/* Quote Modal */\n.quote-modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.7);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n padding: 20px;\n}\n\n.quote-modal {\n background: white;\n border-radius: 8px;\n width: 100%;\n max-width: 800px;\n max-height: 90vh;\n overflow-y: auto;\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);\n}\n\n.modal-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px;\n border-bottom: 1px solid #ecf0f1;\n}\n\n.modal-header h3 {\n margin: 0;\n color: #2c3e50;\n}\n\n.close-btn {\n background: none;\n border: none;\n font-size: 20px;\n cursor: pointer;\n color: #7f8c8d;\n padding: 5px;\n border-radius: 4px;\n transition: background-color 0.2s;\n}\n\n.close-btn:hover {\n background: #ecf0f1;\n}\n\n.modal-content {\n padding: 24px;\n}\n\n.quote-meta {\n background: #f8f9fa;\n padding: 16px;\n border-radius: 6px;\n margin-bottom: 20px;\n}\n\n.meta-row {\n display: flex;\n margin-bottom: 8px;\n}\n\n.meta-row:last-child {\n margin-bottom: 0;\n}\n\n.meta-row strong {\n min-width: 120px;\n color: #34495e;\n}\n\n.quote-text h4 {\n color: #2c3e50;\n margin-bottom: 12px;\n}\n\n.quote-content {\n background: #f8f9fa;\n padding: 16px;\n border-radius: 6px;\n white-space: pre-wrap;\n font-family: 'Courier New', monospace;\n font-size: 14px;\n line-height: 1.5;\n max-height: 400px;\n overflow-y: auto;\n border: 1px solid #e9ecef;\n}\n\n.modal-actions {\n padding: 20px 24px;\n border-top: 1px solid #ecf0f1;\n display: flex;\n gap: 12px;\n justify-content: flex-end;\n}\n\n.modal-actions .download-btn {\n background: #27ae60;\n}\n\n.modal-actions .download-btn:hover {\n background: #229954;\n}\n\n.modal-actions .close-btn {\n background: #95a5a6;\n color: white;\n padding: 10px 16px;\n border-radius: 4px;\n}\n\n.modal-actions .close-btn:hover {\n background: #7f8c8d;\n}\n\n/* Responsive design */\n@media (max-width: 768px) {\n .completed-quotes-view {\n padding: 15px;\n }\n \n .quotes-controls {\n flex-direction: column;\n align-items: stretch;\n }\n \n .filter-controls {\n justify-content: center;\n }\n \n .summary-stats {\n gap: 15px;\n }\n \n .quotes-table-container {\n overflow-x: auto;\n }\n \n .quotes-table {\n min-width: 700px;\n }\n \n .quote-modal {\n margin: 10px;\n max-height: 95vh;\n }\n \n .modal-content {\n padding: 16px;\n }\n \n .modal-actions {\n padding: 16px;\n flex-direction: column;\n }\n}\n","/* ProjectReview CSS */\n.project-review {\n padding: 20px;\n max-width: 1400px;\n margin: 0 auto;\n}\n\n.project-review h2 {\n margin-bottom: 20px;\n color: #2c3e50;\n border-bottom: 2px solid #3498db;\n padding-bottom: 10px;\n}\n\n.error-message {\n background-color: #e74c3c;\n color: white;\n padding: 15px;\n border-radius: 5px;\n margin-bottom: 20px;\n text-align: center;\n}\n\n.project-review-layout {\n display: grid;\n grid-template-columns: 400px 1fr;\n gap: 30px;\n height: calc(100vh - 200px);\n}\n\n/* Project List */\n.project-list {\n background: #f8f9fa;\n border-radius: 10px;\n padding: 20px;\n overflow-y: auto;\n border: 1px solid #dee2e6;\n}\n\n.project-list h3 {\n margin-top: 0;\n margin-bottom: 20px;\n color: #495057;\n text-align: center;\n padding-bottom: 10px;\n border-bottom: 1px solid #dee2e6;\n}\n\n.project-item {\n background: white;\n border: 2px solid #e9ecef;\n border-radius: 8px;\n padding: 15px;\n margin-bottom: 15px;\n cursor: pointer;\n transition: all 0.3s ease;\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.project-item:hover {\n border-color: #3498db;\n transform: translateY(-2px);\n box-shadow: 0 4px 8px rgba(0,0,0,0.15);\n}\n\n.project-item.selected {\n border-color: #27ae60;\n background: #e8f5e8;\n box-shadow: 0 4px 12px rgba(39, 174, 96, 0.2);\n}\n\n.project-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 10px;\n}\n\n.project-header h4 {\n margin: 0;\n color: #2c3e50;\n font-size: 16px;\n}\n\n.status-badge {\n padding: 4px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: bold;\n text-transform: uppercase;\n}\n\n.status-badge.active { background: #d4edda; color: #155724; }\n.status-badge.completed { background: #cce5ff; color: #004085; }\n.status-badge.pending { background: #fff3cd; color: #856404; }\n.status-badge.cancelled { background: #f8d7da; color: #721c24; }\n\n.project-details p {\n margin: 5px 0;\n font-size: 14px;\n color: #6c757d;\n}\n\n.project-stats {\n display: flex;\n flex-wrap: wrap;\n gap: 10px;\n margin-top: 10px;\n padding-top: 10px;\n border-top: 1px solid #e9ecef;\n}\n\n.project-stats span {\n background: #e9ecef;\n padding: 3px 8px;\n border-radius: 12px;\n font-size: 12px;\n color: #495057;\n}\n\n/* Project Details Panel */\n.project-details-panel {\n background: white;\n border-radius: 10px;\n padding: 25px;\n overflow-y: auto;\n border: 1px solid #dee2e6;\n box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n}\n\n.project-details-panel h3 {\n margin-top: 0;\n margin-bottom: 25px;\n color: #2c3e50;\n font-size: 24px;\n border-bottom: 2px solid #3498db;\n padding-bottom: 10px;\n}\n\n.project-details-panel h4 {\n color: #34495e;\n margin-top: 30px;\n margin-bottom: 15px;\n font-size: 18px;\n border-bottom: 1px solid #ecf0f1;\n padding-bottom: 8px;\n}\n\n/* Project Steps */\n.steps-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 15px;\n margin-bottom: 25px;\n}\n\n.step-item {\n background: #f8f9fa;\n border: 2px solid #e9ecef;\n border-radius: 8px;\n padding: 15px;\n text-align: center;\n transition: all 0.3s ease;\n}\n\n.step-item.completed {\n background: #d4edda;\n border-color: #c3e6cb;\n}\n\n.step-item.pending {\n background: #fff3cd;\n border-color: #ffeaa7;\n}\n\n.step-status {\n font-size: 18px;\n font-weight: bold;\n margin-bottom: 8px;\n}\n\n.step-title {\n font-weight: 600;\n color: #495057;\n text-transform: capitalize;\n margin-bottom: 5px;\n}\n\n.step-timestamp {\n font-size: 12px;\n color: #6c757d;\n}\n\n/* Geometry Section */\n.geometry-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 15px;\n margin-bottom: 15px;\n}\n\n.geometry-item {\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n border-radius: 6px;\n padding: 12px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.geometry-item label {\n font-weight: 600;\n color: #495057;\n}\n\n.geometry-item span {\n font-weight: bold;\n color: #2c3e50;\n}\n\n.geometry-notes {\n background: #e3f2fd;\n border-left: 4px solid #2196f3;\n padding: 15px;\n margin-top: 15px;\n border-radius: 0 6px 6px 0;\n color: #1565c0;\n}\n\n/* Quotes Section */\n.quotes-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 20px;\n margin-bottom: 25px;\n}\n\n.quote-item {\n background: #f8f9fa;\n border: 2px solid #e9ecef;\n border-radius: 8px;\n padding: 20px;\n cursor: pointer;\n transition: all 0.3s ease;\n}\n\n.quote-item:hover {\n border-color: #3498db;\n transform: translateY(-2px);\n box-shadow: 0 4px 8px rgba(52, 152, 219, 0.2);\n}\n\n.quote-item.selected {\n border-color: #e74c3c;\n background: #fdf2f2;\n box-shadow: 0 4px 12px rgba(231, 76, 60, 0.2);\n}\n\n.quote-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 15px;\n}\n\n.quote-header h5 {\n margin: 0;\n color: #2c3e50;\n}\n\n.delivery-status {\n padding: 4px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: bold;\n}\n\n.delivery-status.delivered {\n background: #d4edda;\n color: #155724;\n}\n\n.delivery-status.draft {\n background: #fff3cd;\n color: #856404;\n}\n\n.quote-amounts {\n margin-bottom: 15px;\n}\n\n.amount-item {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n}\n\n.amount-item label {\n font-weight: 600;\n color: #495057;\n}\n\n.total-amount {\n font-size: 18px;\n font-weight: bold;\n color: #27ae60;\n}\n\n.amount-breakdown {\n display: flex;\n flex-direction: column;\n gap: 5px;\n font-size: 14px;\n color: #6c757d;\n}\n\n.quote-method {\n background: #e3f2fd;\n padding: 8px 12px;\n border-radius: 6px;\n margin-bottom: 10px;\n font-size: 14px;\n color: #1565c0;\n}\n\n.quote-date {\n font-size: 12px;\n color: #6c757d;\n text-align: right;\n}\n\n/* Quote Details */\n.quote-details {\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n border-radius: 8px;\n padding: 25px;\n margin-top: 25px;\n}\n\n.quote-details h4 {\n margin-top: 0;\n color: #e74c3c;\n}\n\n.quote-details h5 {\n color: #495057;\n margin-bottom: 10px;\n border-bottom: 1px solid #dee2e6;\n padding-bottom: 5px;\n}\n\n.quote-content {\n background: white;\n border: 1px solid #dee2e6;\n border-radius: 6px;\n padding: 15px;\n margin-bottom: 20px;\n white-space: pre-wrap;\n font-family: 'Courier New', monospace;\n font-size: 14px;\n line-height: 1.5;\n max-height: 300px;\n overflow-y: auto;\n}\n\n.materials-table {\n width: 100%;\n border-collapse: collapse;\n margin-bottom: 20px;\n background: white;\n border-radius: 6px;\n overflow: hidden;\n border: 1px solid #dee2e6;\n}\n\n.materials-table th,\n.materials-table td {\n padding: 12px;\n text-align: left;\n border-bottom: 1px solid #e9ecef;\n}\n\n.materials-table th {\n background: #f8f9fa;\n font-weight: 600;\n color: #495057;\n}\n\n.materials-table tr:last-child td {\n border-bottom: none;\n}\n\n.materials-table tr:hover {\n background: #f8f9fa;\n}\n\n.quote-responses {\n display: grid;\n gap: 15px;\n}\n\n.response-item {\n display: flex;\n flex-direction: column;\n gap: 5px;\n}\n\n.response-item label {\n font-weight: 600;\n color: #495057;\n}\n\n.response-item span {\n background: white;\n border: 1px solid #dee2e6;\n border-radius: 6px;\n padding: 10px;\n color: #495057;\n}\n\n.loading {\n text-align: center;\n padding: 20px;\n color: #6c757d;\n font-style: italic;\n}\n\n/* Responsive Design */\n@media (max-width: 1024px) {\n .project-review-layout {\n grid-template-columns: 1fr;\n height: auto;\n }\n \n .project-list {\n height: 400px;\n }\n \n .quotes-grid {\n grid-template-columns: 1fr;\n }\n \n .steps-grid {\n grid-template-columns: repeat(2, 1fr);\n }\n \n .geometry-grid {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (max-width: 768px) {\n .project-review {\n padding: 10px;\n }\n \n .steps-grid,\n .geometry-grid {\n grid-template-columns: 1fr;\n }\n \n .project-stats {\n flex-direction: column;\n gap: 5px;\n }\n \n .quote-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 10px;\n }\n}\n"],"names":[],"sourceRoot":""}