diff --git a/assets/css/custom.css b/assets/css/custom.css
new file mode 100644
index 0000000..04bd45e
--- /dev/null
+++ b/assets/css/custom.css
@@ -0,0 +1,77 @@
+@import url('https://fonts.googleapis.com/css2?family=Georgia&family=Helvetica+Neue&display=swap');
+
+body {
+ background-color: #FDFDFD;
+ color: #4A4A4A;
+ font-family: 'Helvetica Neue', Arial, sans-serif;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ font-family: 'Georgia', serif;
+}
+
+.btn-primary {
+ background-color: #D4AF37;
+ border-color: #D4AF37;
+}
+
+.btn-primary:hover, .btn-primary:focus {
+ background-color: #c09d2e;
+ border-color: #c09d2e;
+}
+
+.btn-secondary {
+ background-color: #6c757d;
+ border-color: #6c757d;
+}
+
+.card {
+ border-radius: 0.5rem;
+ border: 1px solid #EAEAEA;
+}
+
+.card-header {
+ border-bottom: 1px solid #EAEAEA;
+}
+
+.card-footer {
+ border-top: 1px solid #EAEAEA;
+}
+
+.form-control:focus {
+ border-color: #D4AF37;
+ box-shadow: 0 0 0 0.25rem rgba(212, 175, 55, 0.25);
+}
+
+.table {
+ margin-bottom: 0;
+}
+
+#estimator-section {
+ background: linear-gradient(to bottom, rgba(212, 175, 55, 0.05), rgba(212, 175, 55, 0));
+ padding-top: 2rem;
+ padding-bottom: 2rem;
+ border-radius: 0.5rem;
+}
+
+@media print {
+ body * {
+ visibility: hidden;
+ }
+ #estimator-section, #estimator-section * {
+ visibility: visible;
+ }
+ #estimator-section {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ }
+ .btn, .form-label, #item-form {
+ display: none !important;
+ }
+ .card {
+ box-shadow: none !important;
+ border: none !important;
+ }
+}
\ No newline at end of file
diff --git a/assets/js/main.js b/assets/js/main.js
new file mode 100644
index 0000000..b62f321
--- /dev/null
+++ b/assets/js/main.js
@@ -0,0 +1,81 @@
+document.addEventListener('DOMContentLoaded', () => {
+ const itemForm = document.getElementById('item-form');
+ const estimateItems = document.getElementById('estimate-items');
+ const subtotalEl = document.getElementById('subtotal');
+ const taxEl = document.getElementById('tax');
+ const totalEl = document.getElementById('total');
+ const printBtn = document.getElementById('print-btn');
+ const emptyState = document.getElementById('empty-state');
+
+ let items = [];
+
+ const updateTotals = () => {
+ const subtotal = items.reduce((acc, item) => acc + item.total, 0);
+ const tax = subtotal * 0.10;
+ const total = subtotal + tax;
+
+ subtotalEl.textContent = `$${subtotal.toFixed(2)}`;
+ taxEl.textContent = `$${tax.toFixed(2)}`;
+ totalEl.textContent = `$${total.toFixed(2)}`;
+
+ if (items.length > 0) {
+ emptyState.style.display = 'none';
+ } else {
+ emptyState.style.display = 'block';
+ }
+ };
+
+ const renderItems = () => {
+ estimateItems.innerHTML = '';
+ items.forEach((item, index) => {
+ const tr = document.createElement('tr');
+ tr.innerHTML = `
+
${item.description} |
+ ${item.quantity} |
+ $${item.price.toFixed(2)} |
+ $${item.total.toFixed(2)} |
+
+
+ |
+ `;
+ estimateItems.appendChild(tr);
+ });
+ updateTotals();
+ };
+
+ itemForm.addEventListener('submit', (e) => {
+ e.preventDefault();
+ const description = document.getElementById('item-description').value;
+ const quantity = parseInt(document.getElementById('item-quantity').value);
+ const price = parseFloat(document.getElementById('item-price').value);
+
+ if (description && quantity > 0 && price > 0) {
+ const newItem = {
+ description,
+ quantity,
+ price,
+ total: quantity * price
+ };
+ items.push(newItem);
+ renderItems();
+ itemForm.reset();
+ }
+ });
+
+ estimateItems.addEventListener('click', (e) => {
+ if (e.target.classList.contains('remove-btn') || e.target.closest('.remove-btn')) {
+ const button = e.target.closest('.remove-btn');
+ const index = parseInt(button.dataset.index);
+ items.splice(index, 1);
+ renderItems();
+ }
+ });
+
+ printBtn.addEventListener('click', () => {
+ window.print();
+ });
+
+ updateTotals();
+});
\ No newline at end of file
diff --git a/index.php b/index.php
index 7205f3d..923d80b 100644
--- a/index.php
+++ b/index.php
@@ -1,150 +1,114 @@
-
-
+
-
-
- New Style
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+ Project BrassConnect Full-Stack Development PrompC
+
+
+
+
+
+
+
+
+
+
+
-
-
-
Analyzing your requirements and generating your website…
-
- Loading…
-
-
= ($_SERVER['HTTP_HOST'] ?? '') === 'appwizzy.com' ? 'AppWizzy' : 'Flatlogic' ?> AI is collecting your requirements and applying the first changes.
-
This page will update automatically as the plan is implemented.
-
Runtime: PHP = htmlspecialchars($phpVersion) ?> — UTC = htmlspecialchars($now) ?>
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
Line Items
+
+
+
+
+ | Description |
+ Quantity |
+ Unit Price |
+ Total |
+ Action |
+
+
+
+
+
+
+
+
+
+
Your estimate is currently empty.
+
+
+
+
+
+
+
+
+
Summary
+
+ Subtotal
+ $0.00
+
+
+ Tax (10%)
+ $0.00
+
+
+
+ Total
+ $0.00
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+