/* Container */ .glist-body { font-family: var(--font-family-base); padding: var(--spacing-md); background: var(--color-bg-body); } .glist-container { max-width: var(--container-max-width); margin: auto; background: var(--color-bg-surface); padding: var(--spacing-md); border-radius: var(--border-radius-lg); box-shadow: var(--shadow-card); } /* Title */ .glist-title { text-align: center; font-size: var(--font-size-2xl); margin-bottom: var(--spacing-sm); } .glist-section-title { text-align: center; font-size: var(--font-size-xl); margin-top: var(--spacing-xl); margin-bottom: var(--spacing-sm); color: var(--color-gray-700); border-top: var(--border-width-medium) solid var(--color-border-light); padding-top: var(--spacing-md); } /* Classification Groups */ .glist-classification-group { margin-bottom: var(--spacing-xl); } .glist-classification-header { font-size: var(--font-size-lg); font-weight: var(--font-weight-semibold); color: var(--color-primary); margin: var(--spacing-md) 0 var(--spacing-sm) 0; padding: var(--spacing-sm) var(--spacing-md); background: var(--color-primary-light); border-left: var(--border-width-thick) solid var(--color-primary); border-radius: var(--border-radius-sm); } /* Inputs */ .glist-input { font-size: 1em; padding: 0.5em; margin: 0.3em 0; width: 100%; box-sizing: border-box; } /* Buttons */ .glist-btn { font-size: var(--font-size-base); padding: var(--button-padding-y); width: 100%; margin-top: var(--spacing-sm); cursor: pointer; border: none; background: var(--color-primary); color: var(--color-text-inverse); border-radius: var(--button-border-radius); font-weight: var(--button-font-weight); transition: var(--transition-base); } .glist-btn:hover { background: var(--color-primary-dark); } .glist-show-more-btn { font-size: var(--font-size-sm); padding: var(--spacing-sm) var(--spacing-lg); cursor: pointer; border: var(--border-width-thin) solid var(--color-primary); background: var(--color-bg-surface); color: var(--color-primary); border-radius: var(--button-border-radius); transition: var(--transition-base); font-weight: var(--button-font-weight); } .glist-show-more-btn:hover { background: var(--color-primary); color: var(--color-text-inverse); } /* Suggestion dropdown */ .glist-suggest-box { background: #fff; border: 1px solid #ccc; max-height: 150px; overflow-y: auto; position: absolute; z-index: 999; border-radius: 8px; box-shadow: 0 0 10px rgba(0,0,0,0.08); padding: 1em; width: calc(100% - 8em); max-width: 440px; margin: 0 auto; } .glist-suggest-item { padding: 0.5em; padding-inline: 2em; cursor: pointer; } .glist-suggest-item:hover { background: #eee; } /* Grocery list items */ .glist-ul { list-style: none; padding: 0; margin-top: 1em; } .glist-li { background: #fff; border: 1px solid #e0e0e0; border-radius: 8px; margin-bottom: 0.8em; cursor: pointer; transition: box-shadow 0.2s, transform 0.2s; overflow: hidden; } .glist-li:hover { box-shadow: 0 2px 8px rgba(0,0,0,0.1); transform: translateY(-2px); } .glist-item-layout { display: flex; gap: 1em; padding: 0em; align-items: center; } .glist-item-image { width: 50px; height: 50px; min-width: 50px; background: #f5f5f5; border: 2px solid #e0e0e0; border-radius: 8px; display: flex; align-items: center; justify-content: center; font-size: 2em; color: #ccc; overflow: hidden; position: relative; } .glist-item-image.has-image { border-color: #007bff; background: #fff; } .glist-item-image img { width: 100%; height: 100%; object-fit: cover; } .glist-item-image.has-image:hover { opacity: 0.8; box-shadow: 0 0 8px rgba(0, 123, 255, 0.3); } .glist-item-content { display: flex; flex-direction: column; gap: 0.4em; flex: 1; min-width: 0; } .glist-item-header { display: flex; align-items: baseline; gap: 0.5em; flex-wrap: wrap; } .glist-item-name { font-weight: 800; font-size: 0.8em; color: #333; } .glist-item-quantity { position: absolute; top: 0; right: 0; background: rgba(0, 123, 255, 0.9); color: white; font-weight: 700; font-size: 0.3em; padding: 0.2em 0.4em; border-radius: 0 6px 0 4px; min-width: 20%; text-align: center; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); } .glist-item-users { font-size: 0.7em; color: #888; font-style: italic; } /* Sorting dropdown */ .glist-sort { width: 100%; margin: 0.3em 0; padding: 0.5em; font-size: 1em; border-radius: 4px; } /* Image upload */ .glist-image-upload { margin: 0.5em 0; } .glist-image-label { display: block; padding: 0.6em; background: #f0f0f0; border: 2px dashed #ccc; border-radius: 4px; text-align: center; cursor: pointer; transition: all 0.2s; } .glist-image-label:hover { background: #e8e8e8; border-color: #007bff; } .glist-image-preview { position: relative; margin-top: 0.5em; display: inline-block; } .glist-image-preview img { max-width: 150px; max-height: 150px; border-radius: 8px; border: 2px solid #ddd; } .glist-remove-image { position: absolute; top: -8px; right: -8px; width: 28px; height: 28px; border-radius: 50%; background: #ff4444; color: white; border: 2px solid white; font-size: 1.2rem; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; } .glist-remove-image:hover { background: #cc0000; } /* Floating Action Button (FAB) */ .glist-fab { position: fixed; bottom: 20px; right: 20px; background: #28a745; color: white; border: none; border-radius: 50%; width: 62px; height: 62px; font-size: 2em; line-height: 0; display: flex; align-items: center; justify-content: center; box-shadow: 0 3px 10px rgba(0,0,0,0.2); cursor: pointer; } .glist-fab:hover { background: #218838; } /* Mobile tweaks */ @media (max-width: 480px) { .glist-container { padding: 1em 0.8em; } .glist-fab { bottom: 16px; right: 16px; } }