:root { --lonc-ink: #1f2740; --lonc-muted: #667085; --lonc-primary: #1f4b99; --lonc-primary-dark: #163b7c; --lonc-accent: #ebf3ff; --lonc-surface: #ffffff; --lonc-background: #f4f7fb; --lonc-border: rgba(31, 39, 64, 0.08); --bs-primary: #1f4b99; --bs-primary-rgb: 31, 75, 153; --bs-body-color: #1f2740; --bs-body-bg: #f4f7fb; --bs-border-color: rgba(31, 39, 64, 0.08); --bs-font-sans-serif: "Avenir Next", "Segoe UI", sans-serif; } body { color: var(--lonc-ink); background: radial-gradient(circle at top left, rgba(90, 169, 255, 0.18), transparent 22%), linear-gradient(180deg, #f8fbff 0%, var(--lonc-background) 42%, #eef2f8 100%); } .app-shell { position: relative; } .brand-mark { display: inline-grid; place-items: center; width: 2rem; height: 2rem; border-radius: 0.75rem; background: linear-gradient(135deg, var(--lonc-primary), #5da9ff); color: #fff; font-weight: 700; } .eyebrow { letter-spacing: 0.14em; text-transform: uppercase; font-size: 0.75rem; font-weight: 700; color: var(--lonc-primary); } .hero-card { background: linear-gradient(145deg, rgba(255, 255, 255, 0.96), rgba(235, 243, 255, 0.92)), linear-gradient(135deg, rgba(93, 169, 255, 0.18), rgba(31, 75, 153, 0.08)); border: 1px solid rgba(255, 255, 255, 0.9); border-radius: 2rem; box-shadow: 0 24px 48px rgba(24, 42, 79, 0.08); } .glass-panel { border-radius: 1.5rem; background: rgba(255, 255, 255, 0.72); border: 1px solid rgba(255, 255, 255, 0.95); backdrop-filter: blur(8px); } .quick-card, .kitchen-card { display: flex; flex-direction: column; gap: 0.5rem; width: 100%; min-height: 100%; padding: 1.25rem; border-radius: 1.5rem; border: 1px solid var(--lonc-border); background: rgba(255, 255, 255, 0.88); color: inherit; text-decoration: none; transition: transform 160ms ease, box-shadow 160ms ease, border-color 160ms ease; } .quick-card:hover, .kitchen-card:hover, .clickable-row:hover { transform: translateY(-2px); box-shadow: 0 20px 40px rgba(24, 42, 79, 0.08); border-color: rgba(31, 75, 153, 0.2); } .quick-card-label { font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.12em; color: var(--lonc-primary); } .preview-frame, .empty-preview { min-height: 24rem; border-radius: 1.5rem; border: 1px dashed rgba(31, 75, 153, 0.22); background: linear-gradient(135deg, rgba(235, 243, 255, 0.88), rgba(255, 255, 255, 0.88)), repeating-linear-gradient( 45deg, transparent, transparent 12px, rgba(31, 75, 153, 0.04) 12px, rgba(31, 75, 153, 0.04) 24px ); } .preview-frame { display: grid; place-items: center; padding: 1rem; } .empty-preview { display: grid; place-items: center; text-align: center; color: var(--lonc-muted); padding: 2rem; } .status-chip { text-transform: capitalize; } .detail-grid dt, .detail-grid dd { padding-top: 0.5rem; padding-bottom: 0.5rem; margin-bottom: 0; border-bottom: 1px solid var(--lonc-border); } .toast-stack { position: fixed; right: 1rem; bottom: 1rem; z-index: 1090; width: min(24rem, calc(100vw - 2rem)); } .clear-field-button { position: absolute; top: 50%; right: 0.75rem; transform: translateY(-50%); z-index: 5; text-decoration: none; font-size: 1.4rem; line-height: 1; padding: 0; background: transparent; } .search-field-with-clear .search-clear-button { top: calc(50% + 1rem); } .text-field-with-clear .inline-clear-button { top: calc(50% + 1rem); } .text-field-with-clear .textarea-clear-button { top: 2.5rem; transform: none; } .location-field-with-clear .location-clear-button { top: 50%; } .location-picker { z-index: 4; } .quantity-unit-picker { z-index: 4; border-radius: 0.9rem; border: 1px solid var(--lonc-border); background: rgba(255, 255, 255, 0.96); } .expiration-days-picker { padding: 0.75rem; min-width: 18rem; width: max-content; max-width: min(22rem, calc(100vw - 2rem)); } .expiration-days-grid { display: grid; grid-template-columns: repeat(4, minmax(3.25rem, 1fr)); gap: 0.5rem; } .expiration-days-option { padding: 0.55rem 0.4rem; border-radius: 0.7rem; min-height: 2.75rem; white-space: nowrap; line-height: 1.1; } .expiration-days-option.active { color: #fff; background: var(--lonc-primary); border-color: var(--lonc-primary); } @media (max-width: 575.98px) { .expiration-days-picker { min-width: 0; width: min(100vw - 2rem, 18rem); } .expiration-days-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } } .location-level-badge { display: inline-flex; align-items: center; justify-content: center; min-width: 2rem; padding: 0.15rem 0.45rem; border-radius: 999px; background: rgba(31, 75, 153, 0.1); color: var(--lonc-primary); font-size: 0.7rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; } .grouped-field-with-clear { position: relative; } .grouped-field-footer { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; } .legend-card { height: 100%; padding: 1rem; border-radius: 1rem; border: 1px solid var(--lonc-border); } .legend-expired, .expiration-expired { background: rgba(220, 53, 69, 0.1); } .legend-use-first, .expiration-use-first { background: rgba(253, 126, 20, 0.12); } .legend-upcoming, .expiration-upcoming { background: rgba(255, 193, 7, 0.14); } .legend-within-date, .expiration-within-date { background: rgba(25, 135, 84, 0.08); } .legend-none, .expiration-none { background: rgba(108, 117, 125, 0.08); } .expiration-badge-expired { background: #dc3545; color: #fff; } .expiration-badge-use-first { background: #fd7e14; color: #fff; } .expiration-badge-upcoming { background: #ffc107; color: #2f2a12; } .expiration-badge-within-date { background: #198754; color: #fff; } .expiration-badge-none { background: #6c757d; color: #fff; } .stock-review-table tbody tr td { vertical-align: top; transition: background-color 160ms ease; } .stock-review-table tbody tr.expiration-expired td { background: rgba(220, 53, 69, 0.08); } .stock-review-table tbody tr.expiration-use-first td { background: rgba(253, 126, 20, 0.1); } .stock-review-table tbody tr.expiration-upcoming td { background: rgba(255, 193, 7, 0.12); } .stock-review-table tbody tr.expiration-within-date td { background: rgba(25, 135, 84, 0.07); } .stock-review-table tbody tr.expiration-none td { background: rgba(108, 117, 125, 0.06); } .stock-review-table tbody tr td:first-child { border-left: 4px solid transparent; } .stock-review-table tbody tr.expiration-expired td:first-child { border-left-color: #dc3545; } .stock-review-table tbody tr.expiration-use-first td:first-child { border-left-color: #fd7e14; } .stock-review-table tbody tr.expiration-upcoming td:first-child { border-left-color: #ffc107; } .stock-review-table tbody tr.expiration-within-date td:first-child { border-left-color: #198754; } .stock-review-table tbody tr.expiration-none td:first-child { border-left-color: #6c757d; } .stock-review-card { border-left: 6px solid transparent; } .stock-review-card.expiration-expired { border-left-color: #dc3545; } .stock-review-card.expiration-use-first { border-left-color: #fd7e14; } .stock-review-card.expiration-upcoming { border-left-color: #ffc107; } .stock-review-card.expiration-within-date { border-left-color: #198754; } .stock-review-card.expiration-none { border-left-color: #6c757d; } .quick-edit-stack { min-width: 13rem; } .quick-select { min-width: 8rem; } .quick-number { max-width: 6rem; } .stock-guide-summary { list-style: none; cursor: pointer; } .stock-guide-summary::-webkit-details-marker { display: none; } .stock-filter-details summary { list-style: none; } .stock-filter-details summary::-webkit-details-marker { display: none; } .stock-filter-toolbar { position: relative; min-height: 3rem; } .stock-filter-panel { width: 100%; padding: 1rem; border-radius: 1rem; border: 1px solid var(--lonc-border); background: rgba(255, 255, 255, 0.75); } .stock-filter-clear { position: absolute; top: 0; right: 0; min-width: 5.5rem; } .clickable-row { cursor: pointer; } @media (max-width: 991.98px) { .navbar { backdrop-filter: blur(10px); background: rgba(255, 255, 255, 0.92) !important; } .hero-card, .quick-card, .kitchen-card, .preview-frame, .empty-preview { border-radius: 1.25rem; } }