diff --git a/sundog-dog-food-calculator.js b/sundog-dog-food-calculator.js index c9ee05e..d9e04ba 100644 --- a/sundog-dog-food-calculator.js +++ b/sundog-dog-food-calculator.js @@ -400,14 +400,38 @@ } .dog-calculator-input-group { - flex-direction: column; - gap: 20px; + flex-direction: row; + gap: 12px; + align-items: flex-end; } .dog-calculator-input-group .dog-calculator-form-group { - margin-bottom: 20px; + margin-bottom: 0; } + /* First form group takes 55%, second takes 40% with some flex */ + .dog-calculator-input-group .dog-calculator-form-group:first-child { + flex: 0 0 55%; + } + + .dog-calculator-input-group .dog-calculator-form-group:last-child { + flex: 1 1 40%; + min-width: 100px; + } + + /* Make sure number inputs don't get too wide */ + .dog-calculator-input-group input[type="number"] { + max-width: 100%; + } + + /* Ensure dropdowns don't overflow their containers */ + .dog-calculator-input-group select { + max-width: 100%; + overflow: hidden; + text-overflow: ellipsis; + } + + .dog-calculator-result-item { flex-direction: column; align-items: flex-start; @@ -920,6 +944,637 @@ .dog-calculator-container.theme-system .dog-calculator-code-container code { color: #f5f3f7; } + } + + /* Multi-Food Source Styles */ + .dog-calculator-food-sources { + display: flex; + flex-direction: column; + gap: 16px; + } + + .dog-calculator-food-source-card { + background: #ffffff; + border: 1px solid #e8e3ed; + border-radius: 8px; + padding: 20px; + position: relative; + transition: all 0.2s ease; + } + + .dog-calculator-food-source-card:hover { + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); + } + + .dog-calculator-food-source-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 16px; + } + + .dog-calculator-food-source-title { + font-weight: 600; + color: #6f3f6d; + font-size: 1.1rem; + margin: 0; + } + + .dog-calculator-remove-food-btn { + background: #e87159; + color: white; + border: none; + border-radius: 50%; + width: 28px; + height: 28px; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + font-size: 16px; + font-weight: 600; + transition: all 0.2s ease; + line-height: 1; + } + + .dog-calculator-remove-food-btn:hover { + background: #d65a47; + transform: scale(1.1); + } + + .dog-calculator-percentage-group { + margin-top: 16px; + padding-top: 16px; + border-top: 1px solid #e8e3ed; + } + + .dog-calculator-percentage-label { + display: block; + margin-bottom: 8px; + font-weight: 500; + color: #6f3f6d; + font-size: 1rem; + } + + .dog-calculator-percentage-input-group { + display: flex; + align-items: center; + gap: 12px; + } + + .dog-calculator-percentage-slider { + flex: 1; + height: 6px; + border-radius: 3px; + background: #e8e3ed; + outline: none; + transition: all 0.2s ease; + -webkit-appearance: none; + appearance: none; + } + + .dog-calculator-percentage-slider::-webkit-slider-thumb { + -webkit-appearance: none; + appearance: none; + width: 20px; + height: 20px; + border-radius: 50%; + background: #f19a5f; + cursor: pointer; + border: 2px solid white; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + transition: all 0.2s ease; + } + + .dog-calculator-percentage-slider::-webkit-slider-thumb:hover { + background: #e87741; + transform: scale(1.1); + } + + .dog-calculator-percentage-slider::-moz-range-thumb { + width: 20px; + height: 20px; + border-radius: 50%; + background: #f19a5f; + cursor: pointer; + border: 2px solid white; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + transition: all 0.2s ease; + } + + .dog-calculator-percentage-input { + width: 70px; + padding: 8px 12px; + border: 1px solid #e8e3ed; + border-radius: 6px; + font-size: 0.9rem; + text-align: center; + background-color: #ffffff; + color: #6f3f6d; + } + + .dog-calculator-percentage-input:focus { + outline: none; + border-color: #f19a5f; + box-shadow: 0 0 0 3px rgba(241, 154, 95, 0.1); + } + + .dog-calculator-add-food-btn { + display: flex; + align-items: center; + justify-content: center; + gap: 8px; + width: 100%; + padding: 16px; + border: 2px dashed #e8e3ed; + border-radius: 8px; + background: transparent; + color: #635870; + font-size: 1rem; + font-weight: 500; + cursor: pointer; + transition: all 0.2s ease; + font-family: inherit; + margin-top: 16px; + } + + .dog-calculator-add-food-btn:hover { + border-color: #f19a5f; + color: #f19a5f; + background: rgba(241, 154, 95, 0.05); + } + + .dog-calculator-add-food-btn:disabled { + opacity: 0.5; + cursor: not-allowed; + border-color: #e8e3ed; + color: #635870; + background: transparent; + } + + .dog-calculator-add-food-btn:disabled:hover { + border-color: #e8e3ed; + color: #635870; + background: transparent; + } + + .dog-calculator-food-results { + background: linear-gradient(135deg, rgba(241, 154, 95, 0.08) 0%, rgba(241, 154, 95, 0.04) 100%); + border: 1px solid rgba(241, 154, 95, 0.2); + border-radius: 6px; + padding: 16px; + margin-top: 20px; + } + + .dog-calculator-food-result-item { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 8px; + font-size: 0.9rem; + } + + .dog-calculator-food-result-item:last-child { + margin-bottom: 0; + } + + .dog-calculator-food-result-label { + font-weight: 500; + color: #6f3f6d; + } + + .dog-calculator-food-result-value { + font-weight: 600; + color: #6f3f6d; + padding: 2px 8px; + background: rgba(241, 154, 95, 0.15); + border-radius: 3px; + font-size: 0.85rem; + } + + /* Dark theme support for food sources */ + .dog-calculator-container.theme-dark .dog-calculator-food-source-card { + background: #312b3b; + border-color: #433c4f; + } + + .dog-calculator-container.theme-dark .dog-calculator-food-source-title { + color: #f5f3f7; + } + + .dog-calculator-container.theme-dark .dog-calculator-percentage-label { + color: #f5f3f7; + } + + .dog-calculator-container.theme-dark .dog-calculator-percentage-slider { + background: #433c4f; + } + + .dog-calculator-container.theme-dark .dog-calculator-percentage-input { + background: #433c4f; + border-color: #524a5f; + color: #f5f3f7; + } + + .dog-calculator-container.theme-dark .dog-calculator-percentage-group { + border-color: #433c4f; + } + + .dog-calculator-container.theme-dark .dog-calculator-add-food-btn { + border-color: #433c4f; + color: #b8b0c2; + } + + .dog-calculator-container.theme-dark .dog-calculator-add-food-btn:hover { + border-color: #f19a5f; + color: #f19a5f; + background: rgba(241, 154, 95, 0.1); + } + + .dog-calculator-container.theme-dark .dog-calculator-food-results { + background: linear-gradient(135deg, rgba(241, 154, 95, 0.15) 0%, rgba(241, 154, 95, 0.08) 100%); + border-color: rgba(241, 154, 95, 0.3); + } + + .dog-calculator-container.theme-dark .dog-calculator-food-result-label { + color: #f5f3f7; + } + + .dog-calculator-container.theme-dark .dog-calculator-food-result-value { + color: #f5f3f7; + background: rgba(241, 154, 95, 0.2); + } + + /* System theme support for food sources */ + @media (prefers-color-scheme: dark) { + .dog-calculator-container.theme-system .dog-calculator-food-source-card { + background: #312b3b; + border-color: #433c4f; + } + + .dog-calculator-container.theme-system .dog-calculator-food-source-title { + color: #f5f3f7; + } + + .dog-calculator-container.theme-system .dog-calculator-percentage-label { + color: #f5f3f7; + } + + .dog-calculator-container.theme-system .dog-calculator-percentage-slider { + background: #433c4f; + } + + .dog-calculator-container.theme-system .dog-calculator-percentage-input { + background: #433c4f; + border-color: #524a5f; + color: #f5f3f7; + } + + .dog-calculator-container.theme-system .dog-calculator-percentage-group { + border-color: #433c4f; + } + + .dog-calculator-container.theme-system .dog-calculator-add-food-btn { + border-color: #433c4f; + color: #b8b0c2; + } + + .dog-calculator-container.theme-system .dog-calculator-add-food-btn:hover { + border-color: #f19a5f; + color: #f19a5f; + background: rgba(241, 154, 95, 0.1); + } + + .dog-calculator-container.theme-system .dog-calculator-food-results { + background: linear-gradient(135deg, rgba(241, 154, 95, 0.15) 0%, rgba(241, 154, 95, 0.08) 100%); + border-color: rgba(241, 154, 95, 0.3); + } + + .dog-calculator-container.theme-system .dog-calculator-food-result-label { + color: #f5f3f7; + } + + .dog-calculator-container.theme-system .dog-calculator-food-result-value { + color: #f5f3f7; + background: rgba(241, 154, 95, 0.2); + } + } + + /* Mobile responsive design for food sources */ + @media (max-width: 576px) { + .dog-calculator-food-source-card { + padding: 16px; + } + + .dog-calculator-food-source-header { + flex-direction: column; + align-items: flex-start; + gap: 12px; + } + + .dog-calculator-remove-food-btn { + align-self: flex-end; + margin-top: -8px; + } + + .dog-calculator-percentage-input-group { + flex-direction: column; + gap: 8px; + align-items: stretch; + } + + .dog-calculator-percentage-input { + width: 100%; + } + + .dog-calculator-add-food-btn { + padding: 12px; + font-size: 0.9rem; + } + + .dog-calculator-food-result-item { + flex-direction: column; + align-items: flex-start; + gap: 4px; + } + + .dog-calculator-food-result-value { + align-self: stretch; + text-align: center; + } + } + + /* Lock Icon Styles */ + .dog-calculator-lock-icon { + display: inline-block; + width: 16px; + height: 16px; + margin-left: 8px; + cursor: pointer; + font-size: 14px; + line-height: 1; + vertical-align: middle; + transition: all 0.2s ease; + user-select: none; + opacity: 0.6; + } + + .dog-calculator-lock-icon:hover { + opacity: 1; + transform: scale(1.1); + } + + .dog-calculator-lock-icon.locked { + color: #f19a5f; + opacity: 1; + font-weight: bold; + } + + .dog-calculator-lock-icon.unlocked { + color: #635870; + } + + .dog-calculator-lock-icon.disabled { + opacity: 0.3; + cursor: not-allowed; + } + + .dog-calculator-lock-icon.disabled:hover { + opacity: 0.3; + transform: none; + } + + /* Dark theme support for lock icons */ + .dog-calculator-container.theme-dark .dog-calculator-lock-icon.unlocked { + color: #b8b0c2; + } + + .dog-calculator-container.theme-dark .dog-calculator-lock-icon.locked { + color: #f19a5f; + } + + /* System theme support for lock icons */ + @media (prefers-color-scheme: dark) { + .dog-calculator-container.theme-system .dog-calculator-lock-icon.unlocked { + color: #b8b0c2; + } + + .dog-calculator-container.theme-system .dog-calculator-lock-icon.locked { + color: #f19a5f; + } + } + + /* Disabled slider and input styles */ + .dog-calculator-percentage-slider:disabled { + opacity: 0.5; + cursor: not-allowed; + background: #f0f0f0; + pointer-events: none; + } + + .dog-calculator-percentage-slider:disabled::-webkit-slider-thumb { + background: #ccc; + cursor: not-allowed; + } + + .dog-calculator-percentage-slider:disabled::-webkit-slider-thumb:hover { + background: #ccc; + transform: none; + } + + .dog-calculator-percentage-slider:disabled::-moz-range-thumb { + background: #ccc; + cursor: not-allowed; + } + + .dog-calculator-percentage-input:disabled { + opacity: 0.5; + cursor: not-allowed; + background-color: #f8f8f8; + border-color: #ddd; + pointer-events: none; + } + + /* Dark theme disabled styles */ + .dog-calculator-container.theme-dark .dog-calculator-percentage-slider:disabled { + background: #2a2530; + } + + .dog-calculator-container.theme-dark .dog-calculator-percentage-input:disabled { + background-color: #2a2530; + border-color: #3a3442; + color: #8a8a8a; + } + + /* System theme disabled styles */ + @media (prefers-color-scheme: dark) { + .dog-calculator-container.theme-system .dog-calculator-percentage-slider:disabled { + background: #2a2530; + } + + .dog-calculator-container.theme-system .dog-calculator-percentage-input:disabled { + background-color: #2a2530; + border-color: #3a3442; + color: #8a8a8a; + } + } + + /* Food Amount Breakdown Styling */ + .dog-calculator-food-amounts-section { + margin-top: 1.5rem; + padding: 1rem; + background: var(--bg-secondary); + border-radius: 8px; + border: 1px solid var(--border-color); + } + + .dog-calculator-section-title { + margin: 0 0 1rem 0; + font-size: 1rem; + font-weight: 600; + color: var(--text-primary); + } + + .dog-calculator-food-amounts-list { + display: flex; + flex-direction: column; + gap: 0.75rem; + margin-bottom: 1rem; + } + + .dog-calculator-food-amount-item { + display: flex; + justify-content: space-between; + align-items: center; + padding: 0.75rem; + background: var(--bg-primary); + border-radius: 6px; + border: 1px solid var(--border-color); + } + + .dog-calculator-food-amount-label { + font-weight: 500; + color: var(--text-primary); + display: flex; + align-items: center; + gap: 0.5rem; + } + + .dog-calculator-food-percentage { + background: var(--primary-color); + color: white; + padding: 0.2rem 0.5rem; + border-radius: 12px; + font-size: 0.8rem; + font-weight: 500; + } + + .dog-calculator-lock-indicator { + font-size: 0.8rem; + opacity: 0.7; + } + + .dog-calculator-food-amount-value { + font-weight: 600; + color: var(--text-primary); + font-size: 1rem; + } + + .dog-calculator-total-row { + display: flex; + justify-content: space-between; + align-items: center; + padding: 1rem; + background: var(--primary-color); + color: white; + border-radius: 6px; + font-weight: 600; + margin-top: 0.5rem; + } + + .dog-calculator-total-label { + font-size: 1rem; + } + + .dog-calculator-total-value { + font-size: 1.1rem; + font-weight: 700; + } + + .dog-calculator-full-width { + flex: 1; + } + + /* Editable Food Source Name Styling */ + .dog-calculator-food-source-name-input { + background: transparent; + border: 2px solid transparent; + color: var(--text-primary); + font-size: 1.1rem; + font-weight: 600; + font-family: inherit; + padding: 0.5rem 0; + border-radius: 4px; + width: 100%; + outline: none; + transition: all 0.2s ease; + cursor: text; + } + + .dog-calculator-food-source-name-input:hover { + border-color: var(--border-color); + background: var(--bg-secondary); + padding: 0.5rem; + } + + .dog-calculator-food-source-name-input:focus { + border-color: var(--primary-color); + background: var(--bg-primary); + box-shadow: 0 0 0 3px rgba(241, 154, 95, 0.1); + padding: 0.5rem; + } + + .dog-calculator-food-source-name-input::placeholder { + color: var(--text-secondary); + opacity: 0.7; + } + + /* Dark theme adjustments */ + .dog-calculator-container.theme-dark .dog-calculator-food-source-name-input:hover { + background: #2a2530; + } + + .dog-calculator-container.theme-dark .dog-calculator-food-source-name-input:focus { + background: #1e1a24; + } + + /* System theme adjustments */ + @media (prefers-color-scheme: dark) { + .dog-calculator-container.theme-system .dog-calculator-food-source-name-input:hover { + background: #2a2530; + } + + .dog-calculator-container.theme-system .dog-calculator-food-source-name-input:focus { + background: #1e1a24; + } + } + + /* Responsive adjustments */ + @media (max-width: 576px) { + .dog-calculator-food-amount-item { + flex-direction: column; + gap: 0.5rem; + text-align: center; + } + + .dog-calculator-food-amount-label { + justify-content: center; + } + + .dog-calculator-food-source-name-input { + font-size: 1rem; + } + }`; function injectStyles() { @@ -950,6 +1605,8 @@ this.currentMER = 0; this.isImperial = false; + this.foodSources = []; + this.maxFoodSources = 5; this.init(); } @@ -1011,43 +1668,41 @@