From f197efe2eb44c321ee51fd355025cf18148cfaec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Gruszczy=C5=84ski?= Date: Wed, 1 Apr 2026 07:55:56 +0200 Subject: [PATCH] big changes in css --- shopping_app/static/css/split/02-util.css | 46 - shopping_app/static/css/split/03-btn.css | 84 - shopping_app/static/css/split/05-ui.css | 82 - shopping_app/static/css/split/06-progress.css | 56 - shopping_app/static/css/split/07-table.css | 52 - shopping_app/static/css/split/08-nav.css | 34 - shopping_app/static/css/split/09-list.css | 49 - shopping_app/static/css/split/10-toast.css | 92 - shopping_app/static/css/split/11-modal.css | 39 - .../static/css/split/13-compact-a.css | 1545 ----- .../static/css/split/14-compact-b.css | 32 - shopping_app/static/css/split/15-share.css | 926 --- shopping_app/static/css/split/16-row.css | 661 -- shopping_app/static/css/split/17-control.css | 492 -- shopping_app/static/css/split/18-mobile.css | 268 - shopping_app/static/css/split/19-preview.css | 67 - shopping_app/static/css/split/20-receipt.css | 111 - shopping_app/static/css/split/21-fix.css | 346 - shopping_app/static/css/split/buttons.css | 195 + .../css/split/{12-drop.css => components.css} | 785 ++- .../css/split/{04-form.css => forms.css} | 121 +- shopping_app/static/css/split/layout.css | 2286 +++++++ shopping_app/static/css/split/pages.css | 725 ++ shopping_app/static/css/split/responsive.css | 895 +++ shopping_app/static/css/split/split_all.zip | Bin 0 -> 30568 bytes .../css/split/{01-base.css => theme.css} | 46 +- shopping_app/static/css/style.css | 6041 ----------------- shopping_app/static/css/style.zip | Bin 0 -> 22019 bytes shopping_app/templates/base.html | 29 +- 29 files changed, 4759 insertions(+), 11346 deletions(-) delete mode 100644 shopping_app/static/css/split/02-util.css delete mode 100644 shopping_app/static/css/split/03-btn.css delete mode 100644 shopping_app/static/css/split/05-ui.css delete mode 100644 shopping_app/static/css/split/06-progress.css delete mode 100644 shopping_app/static/css/split/07-table.css delete mode 100644 shopping_app/static/css/split/08-nav.css delete mode 100644 shopping_app/static/css/split/09-list.css delete mode 100644 shopping_app/static/css/split/10-toast.css delete mode 100644 shopping_app/static/css/split/11-modal.css delete mode 100644 shopping_app/static/css/split/13-compact-a.css delete mode 100644 shopping_app/static/css/split/14-compact-b.css delete mode 100644 shopping_app/static/css/split/15-share.css delete mode 100644 shopping_app/static/css/split/16-row.css delete mode 100644 shopping_app/static/css/split/17-control.css delete mode 100644 shopping_app/static/css/split/18-mobile.css delete mode 100644 shopping_app/static/css/split/19-preview.css delete mode 100644 shopping_app/static/css/split/20-receipt.css delete mode 100644 shopping_app/static/css/split/21-fix.css create mode 100644 shopping_app/static/css/split/buttons.css rename shopping_app/static/css/split/{12-drop.css => components.css} (58%) rename shopping_app/static/css/split/{04-form.css => forms.css} (85%) create mode 100644 shopping_app/static/css/split/layout.css create mode 100644 shopping_app/static/css/split/pages.css create mode 100644 shopping_app/static/css/split/responsive.css create mode 100644 shopping_app/static/css/split/split_all.zip rename shopping_app/static/css/split/{01-base.css => theme.css} (62%) delete mode 100644 shopping_app/static/css/style.css create mode 100644 shopping_app/static/css/style.zip diff --git a/shopping_app/static/css/split/02-util.css b/shopping_app/static/css/split/02-util.css deleted file mode 100644 index 795368f..0000000 --- a/shopping_app/static/css/split/02-util.css +++ /dev/null @@ -1,46 +0,0 @@ -/* ========================================================= - Utilities & Sizes -========================================================= */ - -.large-checkbox { - width: 1.5em; - height: 1.5em; -} - -.clickable-item { - cursor: pointer; -} - -.progress-thin { - height: 12px; -} - -.item-not-checked { - background-color: var(--dark-500) !important; - color: #fff !important; -} - -#empty-placeholder { - font-style: italic; - pointer-events: none; -} - -.fade-out { - opacity: 0; - transition: opacity 0.5s ease; -} - -@media (pointer: fine) { - .only-mobile { - display: none !important; - } -} - -/* Bootstrap bg overrides via variables */ -.bg-success { - background-color: var(--success) !important; -} - -.bg-warning { - background-color: var(--warning) !important; -} diff --git a/shopping_app/static/css/split/03-btn.css b/shopping_app/static/css/split/03-btn.css deleted file mode 100644 index 20a879d..0000000 --- a/shopping_app/static/css/split/03-btn.css +++ /dev/null @@ -1,84 +0,0 @@ -/* ========================================================= - Buttons -========================================================= */ -/* Primary */ -.btn-primary { - background-color: var(--primary) !important; - border-color: var(--primary-border) !important; -} - -.btn-primary:hover, -.btn-primary:focus, -.btn-primary:active { - background-color: #13315f !important; - border-color: #10284f !important; -} - -/* Success */ -.btn-success { - background-color: var(--success) !important; - border-color: var(--success-border) !important; - color: #fff !important; -} - -.btn-success:hover, -.btn-success:focus, -.btn-success:active { - background-color: #155627 !important; - border-color: #124521 !important; - color: #fff !important; -} - -/* Warning */ -.btn-warning { - background-color: var(--warning) !important; - border-color: var(--warning-border) !important; - color: var(--warning-text) !important; -} - -.btn-warning:hover, -.btn-warning:focus, -.btn-warning:active { - background-color: #5c4c17 !important; - border-color: #3e3610 !important; - color: var(--warning-text) !important; -} - -/* Outline */ -.btn-outline-success { - color: var(--success) !important; - border-color: var(--success) !important; -} - -.btn-outline-success:hover, -.btn-outline-success:focus, -.btn-outline-success:active { - background-color: var(--success) !important; - border-color: var(--success-border) !important; - color: #fff !important; -} - -.btn-outline-warning { - color: #d9c97a !important; - border-color: var(--warning) !important; -} - -.btn-outline-warning:hover, -.btn-outline-warning:focus, -.btn-outline-warning:active { - background-color: var(--warning) !important; - border-color: var(--warning-border) !important; - color: var(--warning-text) !important; -} - -/* File input button */ -input[type="file"]::file-selector-button { - background-color: #1b4a29; - color: #f0f0f0; - border: none; - padding: .5em 1em; - border-radius: 4px; - font-weight: bold; - cursor: pointer; - transition: background .2s; -} diff --git a/shopping_app/static/css/split/05-ui.css b/shopping_app/static/css/split/05-ui.css deleted file mode 100644 index 0b6edb4..0000000 --- a/shopping_app/static/css/split/05-ui.css +++ /dev/null @@ -1,82 +0,0 @@ -/* ========================================================= - Alerts, Badges, Background helpers -========================================================= */ -/* Alerts */ -.alert-success { - background-color: #225d36 !important; - color: var(--success-text) !important; - border-color: #174428 !important; -} - -.alert-danger { - background-color: #7a1f23 !important; - color: var(--danger-text) !important; - border-color: #531417 !important; -} - -.alert-info { - background-color: var(--primary) !important; - color: var(--primary-text) !important; - border-color: var(--primary-border) !important; -} - -.alert-warning { - background-color: var(--warning) !important; - color: var(--warning-text) !important; - border-color: var(--warning-border) !important; -} - -.alert-light { - background-color: #3a3f44 !important; - color: var(--text-strong) !important; - border-color: var(--dark-480) !important; -} - -/* Badges */ -.badge.bg-success, -.badge.text-bg-success { - background-color: #225d36 !important; - color: var(--success-text) !important; -} - -.badge.bg-danger, -.badge.text-bg-danger { - background-color: #7a1f23 !important; - color: var(--danger-text) !important; -} - -.badge.bg-info, -.badge.text-bg-info { - background-color: #1d3a4d !important; - color: #eaf6ff !important; -} - -.badge.bg-warning, -.badge.text-bg-warning { - background-color: var(--warning) !important; - color: var(--warning-text) !important; -} - -.badge.bg-secondary, -.badge.text-bg-secondary { - background-color: var(--dark-400) !important; - color: #e2e3e5 !important; -} - -.badge.bg-primary, -.badge.text-bg-primary { - background-color: var(--primary) !important; - color: var(--primary-text) !important; -} - -.badge.bg-light, -.badge.text-bg-light { - background-color: var(--dark-350) !important; - color: #f1f3f5 !important; -} - -.badge.bg-dark, -.badge.text-bg-dark { - background-color: var(--dark-900) !important; - color: var(--text-strong) !important; -} diff --git a/shopping_app/static/css/split/06-progress.css b/shopping_app/static/css/split/06-progress.css deleted file mode 100644 index be55332..0000000 --- a/shopping_app/static/css/split/06-progress.css +++ /dev/null @@ -1,56 +0,0 @@ -/* ========================================================= - Progress -========================================================= */ -.progress-dark { - background-color: var(--dark-700) !important; - border-radius: 20px !important; - overflow: hidden; -} - -.progress { - background-color: #2a2d31 !important; - border-radius: 20px !important; -} - -.progress-bar { - border-radius: 0 !important; - transition: width .4s ease, background-color .4s ease; - background-color: var(--progress-default) !important; -} - -.progress-bar:first-child { - border-top-left-radius: 20px !important; - border-bottom-left-radius: 20px !important; -} - -.progress-bar:last-child { - border-top-right-radius: 20px !important; - border-bottom-right-radius: 20px !important; -} - -.progress-bar.bg-success { - background-color: var(--success) !important; -} - -.progress-bar.bg-danger { - background-color: var(--danger) !important; -} - -.progress-bar.bg-warning { - background-color: var(--warning) !important; - color: #fff !important; -} - -.progress-bar.bg-info { - background-color: #16425a !important; -} - -/* Label (parent must be position-relative) */ -.progress-label { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - pointer-events: none; - white-space: nowrap; -} diff --git a/shopping_app/static/css/split/07-table.css b/shopping_app/static/css/split/07-table.css deleted file mode 100644 index 12a48f9..0000000 --- a/shopping_app/static/css/split/07-table.css +++ /dev/null @@ -1,52 +0,0 @@ -/* ========================================================= - Cards & Tables -========================================================= */ -.card { - background-color: var(--dark-500) !important; - border: 1px solid var(--dark-450) !important; - color: var(--text) !important; -} - -.card-header, -.card-footer { - background-color: var(--dark-650) !important; - border-color: var(--dark-450) !important; - color: #f1f3f5 !important; -} - -.card .table { - border-radius: 0 !important; - overflow: hidden; - margin-bottom: 0; -} - -.table-responsive { - overflow-x: auto; - -webkit-overflow-scrolling: touch; -} - -.table-responsive table { - min-width: 1000px; -} - -.table-dark.table-striped tbody tr:nth-of-type(odd) { - background-color: rgba(255, 255, 255, .025); -} - -.table-dark tbody tr:hover { - background-color: rgba(255, 255, 255, .04); -} - -.table-dark thead th { - background-color: var(--dark-800); - color: var(--text-dim); - font-weight: 500; - border-bottom: 1px solid var(--dark-450); -} - -.table-dark td, -.table-dark th { - padding: .6rem .75rem; - vertical-align: middle; - border-top: 1px solid var(--dark-450); -} diff --git a/shopping_app/static/css/split/08-nav.css b/shopping_app/static/css/split/08-nav.css deleted file mode 100644 index 6904e23..0000000 --- a/shopping_app/static/css/split/08-nav.css +++ /dev/null @@ -1,34 +0,0 @@ -/* ========================================================= - Navs & Pagination -========================================================= */ -.nav-tabs .nav-link.active, -.nav-tabs .nav-item.show .nav-link { - background-color: var(--dark-500) !important; - color: var(--text-strong) !important; - border-color: var(--dark-450) var(--dark-450) var(--dark-500) !important; -} - -.page-link { - color: #e0e0e0 !important; - background-color: var(--dark-750) !important; - border: 1px solid var(--dark-450) !important; -} - -.page-link:hover, -.page-link:focus { - color: #fff !important; - background-color: var(--dark-400) !important; - border-color: var(--dark-300) !important; -} - -.page-item.active .page-link { - color: #fff !important; - background-color: var(--primary) !important; - border-color: var(--primary-border) !important; -} - -.page-item.disabled .page-link { - color: var(--muted) !important; - background-color: var(--dark-550) !important; - border-color: var(--dark-450) !important; -} diff --git a/shopping_app/static/css/split/09-list.css b/shopping_app/static/css/split/09-list.css deleted file mode 100644 index 1a24578..0000000 --- a/shopping_app/static/css/split/09-list.css +++ /dev/null @@ -1,49 +0,0 @@ -/* ========================================================= - Lists & Misc UI -========================================================= */ -.list-group-item { - display: flex; - align-items: center; - justify-content: space-between; -} - -/* Zachowaj ostre krawędzie tylko dla list flush (np. w panelach edycji) */ -.list-group-flush > .list-group-item:first-child, -.list-group-flush > .list-group-item:last-child { - border-radius: 0 !important; -} - -#items li.hide-purchased { - display: none !important; -} - -#mass-add-list li { - transition: background .2s; -} - -#mass-add-list li.active { - background: #198754 !important; - color: #fff !important; - border: 1px solid #000 !important; -} - -.quantity-input { - width: 60px; - background: var(--dark-400); - color: #fff; - border: 1px solid var(--dark-300); - border-radius: 4px; - text-align: center; -} - -.add-btn { - margin-left: 10px; -} - -.quantity-controls { - min-width: 120px; - display: flex; - align-items: center; - justify-content: flex-end; - gap: 4px; -} diff --git a/shopping_app/static/css/split/10-toast.css b/shopping_app/static/css/split/10-toast.css deleted file mode 100644 index 63149cb..0000000 --- a/shopping_app/static/css/split/10-toast.css +++ /dev/null @@ -1,92 +0,0 @@ -/* ========================================================= - Toasts & Info Bar -========================================================= */ -.toast { - animation: fadeInUp .5s ease; -} - -@keyframes fadeInUp { - from { - opacity: 0; - transform: translateY(20px); - } - - to { - opacity: 1; - transform: translateY(0); - } -} - -/* Base toast when not using text-bg-* */ -.toast:not([class*="text-bg-"]) { - background-color: var(--dark-500) !important; - color: #f1f1f1 !important; - border: 1px solid var(--dark-450) !important; - animation: fadeInUp .5s ease; -} - -.toast .toast-body { - color: inherit !important; -} - -.toast .btn-close { - filter: invert(1) grayscale(100%) brightness(200%); -} - -/* Typed toasts (override Bootstrap text-bg-*) */ -.toast.text-bg-primary { - background-color: var(--info) !important; - color: var(--info-text) !important; - border-color: var(--info-border) !important; -} - -.toast.text-bg-info { - background-color: var(--info) !important; - color: var(--info-text) !important; - border-color: var(--info-border) !important; -} - -.toast.text-bg-success { - background-color: var(--success) !important; - color: var(--success-text) !important; - border-color: var(--success-border) !important; -} - -.toast.text-bg-warning { - background-color: var(--warning) !important; - color: var(--warning-text) !important; - border-color: var(--warning-border) !important; -} - -.toast.text-bg-danger { - background-color: var(--danger) !important; - color: var(--danger-text) !important; - border-color: var(--danger-border) !important; -} - -.toast-body { - color: #fff !important; - font-weight: 500 !important; -} - -.info-bar-fixed { - width: 100%; - color: var(--text-strong); - background-color: var(--dark-700); - border-radius: 12px 12px 0 0; - text-align: center; - padding: 10px 10px; - font-size: .95rem; - box-sizing: border-box; - margin-top: 2rem; - box-shadow: 0 -1px 4px rgba(0, 0, 0, .25); -} - -@media (max-width: 768px) { - .info-bar-fixed { - position: static; - font-size: .85rem; - padding: 8px 4px; - border-radius: 0; - } -} diff --git a/shopping_app/static/css/split/11-modal.css b/shopping_app/static/css/split/11-modal.css deleted file mode 100644 index f01c209..0000000 --- a/shopping_app/static/css/split/11-modal.css +++ /dev/null @@ -1,39 +0,0 @@ -/* ========================================================= - Modals (incl. fullscreen chart modal) -========================================================= */ -.modal-content { - background-color: var(--dark-470) !important; - color: #f1f1f1 !important; - border: 1px solid var(--dark-450) !important; -} - -.modal-header, -.modal-footer { - background-color: var(--dark-650) !important; - border-color: var(--dark-450) !important; -} - -/* Fullscreen chart modal */ -#chartFullscreenModal .modal-dialog { - max-width: 100vw; - width: 100vw; - margin: 0; -} - -#chartFullscreenModal .modal-content { - height: 100vh; - border-radius: 0; -} - -#chartFullscreenModal .modal-body { - display: flex; - flex: 1 1 auto; - padding: 0; - overflow: hidden; -} - -#chartFullscreenCanvas { - display: block; - width: 100%; - height: 100%; -} diff --git a/shopping_app/static/css/split/13-compact-a.css b/shopping_app/static/css/split/13-compact-a.css deleted file mode 100644 index 02d741e..0000000 --- a/shopping_app/static/css/split/13-compact-a.css +++ /dev/null @@ -1,1545 +0,0 @@ -/* ========================================================= - Compact minimalist pass -========================================================= */ -:root { - --app-shadow: 0 8px 24px rgba(0, 0, 0, 0.18); - --app-radius: 14px; -} - -body.app-body { - font-size: 0.96rem; - line-height: 1.4; -} - -.app-header { - padding: 0.35rem 0 0; -} - -.app-navbar .container-xxl { - min-height: 54px; - border-radius: 18px; - box-shadow: 0 8px 22px rgba(0,0,0,0.16); -} - -.app-brand { - gap: 0.6rem; - font-size: 0.98rem; -} - -.app-brand__icon { - width: 2.1rem; - height: 2.1rem; - border-radius: 12px; - font-size: 1rem; -} - -.app-brand__title, -.app-brand__accent { - font-size: 0.98rem; -} - -.app-user-chip { - padding: 0.28rem 0.38rem 0.28rem 0.58rem; - gap: 0.4rem; -} - -.app-user-chip__label { - font-size: 0.68rem; - letter-spacing: 0.06em; -} - -.app-main { - padding: 0.65rem 0 1.4rem; -} - -.app-content-frame { - padding-top: 0.1rem; -} - -.app-footer { - margin-top: auto; - padding: 0.5rem 0 calc(0.85rem + env(safe-area-inset-bottom, 0px)); -} - -.app-footer__inner { - padding-top: 0.75rem; -} - -h1, h2, h3, h4, h5, h6 { - letter-spacing: -0.015em; - line-height: 1.15; -} - -h1, .h1 { font-size: clamp(1.45rem, 2vw, 1.9rem); } -h2, .h2 { font-size: clamp(1.2rem, 1.8vw, 1.5rem); } -h3, .h3 { font-size: clamp(1.02rem, 1.5vw, 1.2rem); } - -.card, -.modal-content, -.dropdown-menu, -.list-group-item, -.table, -.alert, -.pagination .page-link, -.nav-tabs, -.input-group-text, -.form-control, -.form-select, -.btn, -.progress, -.toast { - border-radius: 12px; -} - -.card, -.modal-content, -.table-responsive, -.alert, -.list-group-item, -.progress, -.toast { - box-shadow: 0 4px 14px rgba(0,0,0,0.12); - backdrop-filter: blur(8px); -} - -.card-header, -.card-footer, -.card-body, -.modal-header, -.modal-body, -.modal-footer { - padding: 0.75rem 0.85rem; -} - -.table > :not(caption) > * > * { - padding: 0.62rem 0.7rem; -} - -.table-responsive table { - min-width: 860px; -} - -.list-group { - gap: 0.5rem; -} - -.list-group-item { - padding: 0.72rem 0.8rem; -} - -.alert { - padding: 0.7rem 0.85rem; - margin-bottom: 0.8rem; -} - -.badge { - font-weight: 600; - padding: 0.38em 0.58em; -} - -.btn { - border-radius: 10px; - font-weight: 600; - padding: 0.52rem 0.8rem; - min-height: 40px; -} - -.btn-sm { - padding: 0.4rem 0.64rem; - min-height: 34px; - border-radius: 9px; -} - -.form-control, -.form-select, -.input-group-text { - min-height: 40px; - padding: 0.5rem 0.72rem; -} - -textarea.form-control { - min-height: 96px; -} - -.progress { - min-height: 0.8rem; -} - -.progress-label { - font-size: 0.72rem; - font-weight: 600; -} - -.nav-tabs { - gap: 0.35rem; - padding: 0.25rem; -} - -.nav-tabs .nav-link { - padding: 0.55rem 0.7rem; - border-radius: 10px; -} - -#items .list-group-item { - border-radius: 12px !important; - padding: 0.75rem 0.8rem; -} - -#items .btn-group { - gap: 0.25rem; -} - -#items .btn-group .btn { - border-radius: 9px !important; -} - -input[type="checkbox"].form-check-input { - width: 2.5rem; - height: 1.35rem; -} - -.large-checkbox { - width: 1.2rem; - height: 1.2rem; -} - -.toast { - padding: 0; -} - -.endpoint-main_page .card h2, -.endpoint-expenses .card h2, -.endpoint-edit_my_list .card h2, -.endpoint-login .card h2, -.endpoint-system_auth .card h2, -.endpoint-admin_panel .card h2, -[class*="endpoint-admin_"] .card h2 { - margin-bottom: 0.35rem; -} - -.endpoint-main_page .card p, -.endpoint-expenses .card p, -.endpoint-edit_my_list .card p, -.endpoint-login .card p, -.endpoint-system_auth .card p, -.endpoint-admin_panel .card p, -[class*="endpoint-admin_"] .card p { - margin-bottom: 0; -} - -@media (max-width: 991.98px) { - .app-navbar .container-xxl { - border-radius: 16px; - padding-top: 0.55rem; - padding-bottom: 0.55rem; - } -} - -@media (max-width: 767.98px) { - body.app-body { - font-size: 0.93rem; - } - - .app-header { - padding-top: 0.25rem; - } - - .app-main { - padding-top: 0.45rem; - } - - .app-navbar .container-xxl { - min-height: 50px; - border-radius: 14px; - } - - .app-brand { - gap: 0.45rem; - font-size: 0.92rem; - } - - .app-brand__icon { - width: 1.9rem; - height: 1.9rem; - border-radius: 10px; - } - - .app-user-chip { - padding: 0.22rem 0.32rem 0.22rem 0.5rem; - } - - .card-header, - .card-footer, - .card-body, - .modal-header, - .modal-body, - .modal-footer, - .list-group-item, - .table > :not(caption) > * > * { - padding-left: 0.68rem; - padding-right: 0.68rem; - } - - .list-group-item, - #items .list-group-item { - padding-top: 0.62rem; - padding-bottom: 0.62rem; - } - - .btn-group, - .d-flex.gap-2, - .d-flex.gap-3 { - gap: 0.35rem !important; - } - - .btn-group > .btn, - .btn.w-100, - .input-group > .btn, - .btn, - .form-control, - .form-select, - .input-group-text { - min-height: 38px; - } - - .input-group { - gap: 0.4rem; - } - - .table-responsive { - border-radius: 12px; - } - - .progress-label { - font-size: 0.66rem; - } - - .app-footer { - padding-bottom: calc(0.8rem + env(safe-area-inset-bottom, 0px)); - } -} - -/* === unified UI refresh: forms / tables / admin tools === */ -:root { - --ui-surface-1: rgba(10, 14, 24, 0.78); - --ui-surface-2: rgba(18, 25, 39, 0.92); - --ui-surface-3: rgba(33, 44, 67, 0.88); - --ui-border: rgba(255, 255, 255, 0.12); - --ui-border-strong: rgba(255, 255, 255, 0.18); - --ui-text-soft: rgba(255, 255, 255, 0.72); - --ui-success-soft: rgba(25, 135, 84, 0.18); - --ui-warning-soft: rgba(255, 193, 7, 0.16); -} - -.card, -.table-responsive, -.modal-content, -.dropdown-menu, -.toast, -.alert, -.list-group-item { - border: 1px solid var(--ui-border); -} - -.card.bg-dark, -.modal-content.bg-dark, -.dropdown-menu-dark, -.list-group-item.bg-dark, -.table-dark { - background: linear-gradient(180deg, var(--ui-surface-2), rgba(8, 12, 20, 0.96)) !important; -} - -.card.bg-secondary.bg-opacity-10, -.admin-shortcuts, -#bulkBar .card { - background: linear-gradient(180deg, rgba(22, 29, 45, 0.88), rgba(12, 18, 30, 0.88)) !important; -} - -.form-label, -label.form-label { - display: inline-flex; - align-items: center; - gap: 0.35rem; - margin-bottom: 0.45rem; - font-size: 0.92rem; - font-weight: 600; - color: rgba(255,255,255,0.84); -} - -.form-text, -.text-secondary, -.text-white-50 { - color: var(--ui-text-soft) !important; -} - -.form-control, -.form-select, -.input-group-text, -textarea.form-control, -.form-control-color { - background: rgba(255,255,255,0.04) !important; - border: 1px solid var(--ui-border-strong) !important; - color: #fff !important; - box-shadow: none; - transition: border-color .18s ease, box-shadow .18s ease, background-color .18s ease, transform .18s ease; -} - -.form-control::placeholder, -textarea.form-control::placeholder { - color: rgba(255,255,255,0.42); -} - -.form-control:focus, -.form-select:focus, -textarea.form-control:focus, -.form-check-input:focus, -.btn:focus, -.btn:focus-visible { - border-color: rgba(25, 135, 84, 0.6) !important; - box-shadow: 0 0 0 0.2rem rgba(25, 135, 84, 0.16) !important; -} - -.input-group > .form-control, -.input-group > .form-select, -.input-group > .btn, -.input-group > .input-group-text { - min-height: 42px; -} - -textarea.form-control { - line-height: 1.45; - resize: vertical; -} - -.form-check { - padding: 0.65rem 0.9rem 0.65rem 2.8rem; - background: rgba(255,255,255,0.04); - border: 1px solid var(--ui-border); - border-radius: 12px; -} - -.form-check.form-switch { - min-height: 42px; -} - -.form-check-input { - background-color: rgba(255,255,255,0.14); - border-color: rgba(255,255,255,0.22); -} - -.btn { - letter-spacing: 0.01em; - transition: transform .18s ease, box-shadow .18s ease, background-color .18s ease, border-color .18s ease; -} - -.btn:hover, -.btn:focus-visible { - transform: translateY(-1px); -} - -.btn-success, -.btn-outline-success, -.btn-outline-light:hover, -.btn-outline-light:focus-visible, -.btn-outline-secondary:hover, -.btn-outline-secondary:focus-visible { - box-shadow: 0 10px 24px rgba(0,0,0,0.16); -} - -.btn-outline-light, -.btn-outline-secondary, -.btn-outline-warning, -.btn-outline-danger, -.btn-outline-success { - background: rgba(255,255,255,0.03); -} - -.btn-outline-light:hover, -.btn-outline-light:focus-visible { - background: rgba(255,255,255,0.1); -} - -.btn-outline-secondary:hover, -.btn-outline-secondary:focus-visible { - background: rgba(108, 117, 125, 0.18); -} - -.btn-outline-warning:hover, -.btn-outline-warning:focus-visible { - background: var(--ui-warning-soft); -} - -.btn-outline-danger:hover, -.btn-outline-danger:focus-visible { - background: rgba(220, 53, 69, 0.16); -} - -.btn-outline-success:hover, -.btn-outline-success:focus-visible { - background: var(--ui-success-soft); -} - -.btn-group-compact, -.admin-shortcuts .d-flex, -.stack-form, -.page-actions { - gap: 0.4rem; -} - -.btn-group-compact .btn { - padding: 0.3rem 0.55rem; - font-size: 0.82rem; -} - -.btn-group-compact .btn-text { - font-size: 0.78rem; -} - -.table-toolbar { - display: flex; - justify-content: space-between; - align-items: center; - flex-wrap: wrap; - gap: 0.75rem; - margin-bottom: 0.85rem; -} - -.table-toolbar__search { - max-width: 420px; - width: 100%; -} - -.table-toolbar__meta { - min-width: 120px; - text-align: right; -} - -.table { - --bs-table-bg: transparent; - --bs-table-striped-bg: rgba(255,255,255,0.02); - --bs-table-hover-bg: transparent; - --bs-table-border-color: rgba(255,255,255,0.08); - margin-bottom: 0; -} - -.table > :not(caption) > * > * { - border-bottom-width: 1px; - vertical-align: middle; -} - -.table thead th { - position: sticky; - top: 0; - z-index: 1; - background: rgba(11, 17, 28, 0.98) !important; - text-transform: uppercase; - letter-spacing: 0.05em; - font-size: 0.74rem; - color: rgba(255,255,255,0.72); - border-bottom-color: rgba(255,255,255,0.14); -} - -.table tbody tr { - transition: background-color .15s ease, transform .15s ease; -} - -.table tbody tr:hover > * { - background: rgba(255,255,255,0.04) !important; -} - -.table td code, -.api-code-block code { - display: inline-block; - padding: 0.28rem 0.48rem; - border-radius: 8px; - background: rgba(255,255,255,0.08); - color: #d6f5e6; -} - -.api-code-block { - display: flex; - flex-wrap: wrap; - gap: 0.5rem; -} - -.pagination .page-link { - background: rgba(255,255,255,0.03); - border-color: var(--ui-border); - color: #fff; -} - -.pagination .page-item.active .page-link { - background: rgba(25, 135, 84, 0.95); - border-color: rgba(25, 135, 84, 0.95); -} - -.dropdown-item { - border-radius: 8px; -} - -.dropdown-item:hover, -.dropdown-item:focus { - background: rgba(255,255,255,0.08); -} - -form[data-unsaved-warning="true"].is-dirty { - position: relative; -} - -form[data-unsaved-warning="true"].is-dirty::after { - content: 'Niezapisane zmiany'; - position: sticky; - bottom: 0.75rem; - left: 100%; - display: inline-flex; - margin-top: 1rem; - padding: 0.38rem 0.68rem; - border-radius: 999px; - background: rgba(255, 193, 7, 0.18); - border: 1px solid rgba(255, 193, 7, 0.36); - color: #ffe08a; - font-size: 0.76rem; - font-weight: 700; -} - - -.ui-password-toggle.is-active { - background: rgba(255,255,255,0.1); -} - -.app-content-frame > h2 + .card, -.app-content-frame > .card:first-of-type { - margin-top: 0; -} - -@media (max-width: 767.98px) { - .table-toolbar { - align-items: stretch; - } - - .table-toolbar__meta { - text-align: left; - } - - .admin-shortcuts .btn { - flex: 1 1 calc(50% - 0.55rem); - } - - form[data-unsaved-warning="true"].is-dirty::after { - left: auto; - bottom: auto; - position: static; - margin-top: 0.75rem; - } -} - - -.admin-page-head { - display: flex; - justify-content: space-between; - align-items: flex-start; - gap: 0.85rem; - flex-wrap: wrap; -} - -[data-admin-nav-body] { - display: flex; -} - -@media (max-width: 767.98px) { - [data-admin-nav-body] { - display: none; - width: 100%; - } - - [data-admin-nav-body].is-open { - display: flex; - } - - .admin-page-head > * { - width: 100%; - } - - .admin-page-head .btn { - width: 100%; - } - - .table-responsive table.table, - .is-admin-area table.table { - min-width: 100%; - } - - .table-responsive table.table thead, - .is-admin-area table.table thead { - display: none; - } - - .table-responsive table.table, - .table-responsive table.table tbody, - .table-responsive table.table tr, - .table-responsive table.table td, - .is-admin-area table.table, - .is-admin-area table.table tbody, - .is-admin-area table.table tr, - .is-admin-area table.table td { - display: block; - width: 100%; - } - - .table-responsive table.table tbody, - .is-admin-area table.table tbody { - display: grid; - gap: 0.8rem; - } - - .table-responsive table.table tr, - .is-admin-area table.table tr { - border: 1px solid rgba(255,255,255,0.08); - border-radius: 16px; - padding: 0.35rem 0.55rem; - background: rgba(255,255,255,0.02); - box-shadow: 0 8px 24px rgba(0,0,0,0.16); - } - - .table-responsive table.table td, - .is-admin-area table.table td { - border: 0; - padding: 0.5rem 0.35rem; - } - - .table-responsive table.table td::before, - .is-admin-area table.table td::before { - content: attr(data-label); - display: block; - margin-bottom: 0.18rem; - font-size: 0.72rem; - text-transform: uppercase; - letter-spacing: 0.04em; - color: rgba(255,255,255,0.58); - } - - .table-responsive table.table td:last-child, - .is-admin-area table.table td:last-child { - padding-bottom: 0.2rem; - } - - .table-responsive table.table td .btn, - .table-responsive table.table td .input-group, - .table-responsive table.table td .form-select, - .table-responsive table.table td .form-control, - .is-admin-area table.table td .btn, - .is-admin-area table.table td .input-group, - .is-admin-area table.table td .form-select, - .is-admin-area table.table td .form-control { - width: 100%; - } - - .table-responsive table.table td .d-flex, - .table-responsive table.table td .btn-group, - .is-admin-area table.table td .d-flex, - .is-admin-area table.table td .btn-group { - flex-wrap: wrap; - } -} - - -.list-action-block .input-group .btn, -.list-action-block .btn, -.endpoint-shared_list .input-group .btn, -.endpoint-shared_list .list-share-page .btn { - min-height: 44px; -} - -.endpoint-shared_list .input-group, -.list-action-block .input-group { - align-items: stretch; -} - -@media (max-width: 767.98px) { - .endpoint-admin_panel .table-responsive table thead { - display: none; - } - .endpoint-admin_panel .table-responsive table, - .endpoint-admin_panel .table-responsive tbody, - .endpoint-admin_panel .table-responsive tr, - .endpoint-admin_panel .table-responsive td { - display: block; - width: 100%; - } - .endpoint-admin_panel .table-responsive tr { - border: 1px solid rgba(255,255,255,.08); - border-radius: 16px; - margin-bottom: 1rem; - padding: .75rem; - background: rgba(255,255,255,.02); - } - .endpoint-admin_panel .table-responsive td { - border: 0; - padding: .35rem 0; - } -} - - -/* responsive fixes 2026-03 */ -.app-navbar .container-xxl {flex-wrap: nowrap; align-items: center;} -.app-navbar__actions {display:flex; flex-wrap:wrap; gap:.5rem; justify-content:flex-end;} -.app-navbar__actions .btn {white-space: nowrap;} -.table-responsive {overflow-x: clip;} -.table-responsive table {width:100%; min-width:0 !important;} -@media (max-width: 991.98px) { - .app-navbar .container-xxl {display:grid; grid-template-columns:auto 1fr auto; gap:.5rem; align-items:center;} - .app-navbar__meta {display:none;} - .app-brand {min-width:0;} - .app-brand__title,.app-brand__accent {font-size:1rem;} - .app-navbar__actions {max-width:100%; gap:.35rem;} - .app-navbar__actions .btn {padding:.35rem .55rem; font-size:.78rem;} -} -@media (max-width: 430px) { - .app-navbar .container-xxl {grid-template-columns:minmax(0,1fr) auto; } - .app-brand {overflow:hidden;} - .app-brand > span:last-child {overflow:hidden; text-overflow:ellipsis; white-space:nowrap;} - .app-navbar__actions {grid-column:1 / -1; justify-content:stretch;} - .app-navbar__actions .btn {flex:1 1 calc(50% - .35rem); text-align:center;} -} -@media (max-width: 767.98px) { - .app-content-frame .table-responsive table.table, - .app-content-frame table.table:not(.keep-horizontal) {display:block; width:100%;} - .app-content-frame .table-responsive table.table thead, - .app-content-frame table.table:not(.keep-horizontal) thead {display:none;} - .app-content-frame .table-responsive table.table tbody, - .app-content-frame .table-responsive table.table tr, - .app-content-frame .table-responsive table.table td, - .app-content-frame table.table:not(.keep-horizontal) tbody, - .app-content-frame table.table:not(.keep-horizontal) tr, - .app-content-frame table.table:not(.keep-horizontal) td {display:block; width:100%;} - .app-content-frame .table-responsive table.table tr, - .app-content-frame table.table:not(.keep-horizontal) tr {border:1px solid var(--dark-300); border-radius:1rem; margin-bottom:.85rem; padding:.35rem .25rem; background:var(--dark-700);} - .app-content-frame .table-responsive table.table td, - .app-content-frame table.table:not(.keep-horizontal) td {border:none; padding:.5rem .75rem; text-align:left !important;} - .app-content-frame .table-responsive table.table td::before, - .app-content-frame table.table:not(.keep-horizontal) td::before {content:attr(data-label); display:block; font-size:.72rem; color:#9ba3aa; margin-bottom:.2rem; text-transform:uppercase;} - .app-content-frame .table-responsive {overflow:visible;} -} - -/* fix: admin tables, api tokens, share page, navbar */ -.admin-table-responsive { - overflow-x: auto !important; - -webkit-overflow-scrolling: touch; -} - - -.admin-table-responsive--wide table { - min-width: 1180px; -} - -.admin-table-responsive--full table { - width: 100% !important; - min-width: 100% !important; - table-layout: auto; -} - -.endpoint-edit_categories .admin-table-responsive--full table th, -.endpoint-edit_categories .admin-table-responsive--full table td, -.endpoint-api_tokens .admin-table-responsive--full table th, -.endpoint-api_tokens .admin-table-responsive--full table td { - white-space: normal; - vertical-align: middle; -} - -.endpoint-edit_categories .admin-table-responsive--full table th:last-child, -.endpoint-edit_categories .admin-table-responsive--full table td:last-child { - width: 30%; -} - -.is-admin-area .table-responsive td, -.is-admin-area .table-responsive th { - white-space: normal; -} - -.api-chip { - display: inline-block; - max-width: 22rem; - padding: .28rem .55rem; - border-radius: .75rem; - background: rgba(255,255,255,.08); - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - vertical-align: middle; -} - -.api-chip--wrap { - white-space: normal; - overflow-wrap: anywhere; - word-break: break-word; -} - -.form-check-spaced { - display: flex; - align-items: flex-start; - gap: .7rem; - padding-left: 0; - margin-bottom: .65rem; -} - -.form-check-spaced .form-check-input { - position: static; - margin: .2rem 0 0; - flex: 0 0 auto; -} - -.form-check-spaced .form-check-label { - margin: 0; - line-height: 1.35; -} - -.list-item-actions { - gap: .4rem; - flex-wrap: wrap; - justify-content: flex-end; -} - -.list-item-actions .btn { - border-radius: .8rem !important; - min-width: 2.6rem; -} - -.share-submit-btn { - min-width: 8rem; - font-weight: 600; -} - -.endpoint-list_share .input-group, -.endpoint-shared_list .input-group { - align-items: stretch; -} - -.endpoint-list_share .input-group > .form-control, -.endpoint-list_share .input-group > .btn, -.endpoint-shared_list .input-group > .form-control, -.endpoint-shared_list .input-group > .btn { - min-height: 46px; -} - -.endpoint-list_share .input-group > .btn, -.endpoint-shared_list .input-group > .btn { - border-top-left-radius: 0 !important; - border-bottom-left-radius: 0 !important; -} - -@media (max-width: 767.98px) { - .table-responsive { - overflow-x: auto !important; - } - - .is-admin-area .table-responsive table.table.keep-horizontal, - .endpoint-api_tokens .table-responsive table.table, - .endpoint-admin_panel .table-responsive table.table, - .endpoint-lists_access .table-responsive table.table, - .endpoint-user_management .table-responsive table.table, - .endpoint-edit_categories .table-responsive table.table { - display: table; - width: max-content; - min-width: 980px !important; - } - - .endpoint-api_tokens .admin-table-responsive--full table.table, - .endpoint-edit_categories .admin-table-responsive--full table.table { - width: 100%; - min-width: 980px !important; - } - - .is-admin-area .table-responsive table.table.keep-horizontal thead, - .endpoint-api_tokens .table-responsive table.table thead, - .endpoint-admin_panel .table-responsive table.table thead, - .endpoint-lists_access .table-responsive table.table thead, - .endpoint-user_management .table-responsive table.table thead { - display: table-header-group; - } - - .is-admin-area .table-responsive table.table.keep-horizontal tbody, - .endpoint-api_tokens .table-responsive table.table tbody, - .endpoint-admin_panel .table-responsive table.table tbody, - .endpoint-lists_access .table-responsive table.table tbody, - .endpoint-user_management .table-responsive table.table tbody { - display: table-row-group; - } - - .is-admin-area .table-responsive table.table.keep-horizontal tr, - .endpoint-api_tokens .table-responsive table.table tr, - .endpoint-admin_panel .table-responsive table.table tr, - .endpoint-lists_access .table-responsive table.table tr, - .endpoint-user_management .table-responsive table.table tr { - display: table-row; - border: 0; - padding: 0; - background: transparent; - box-shadow: none; - } - - .is-admin-area .table-responsive table.table.keep-horizontal td, - .endpoint-api_tokens .table-responsive table.table td, - .endpoint-admin_panel .table-responsive table.table td, - .endpoint-lists_access .table-responsive table.table td, - .endpoint-user_management .table-responsive table.table td { - display: table-cell; - width: auto; - border-top: 1px solid var(--dark-450); - padding: .65rem .75rem; - } - - .endpoint-api_tokens .table-responsive table.table td::before, - .endpoint-admin_panel .table-responsive table.table td::before, - .endpoint-lists_access .table-responsive table.table td::before, - .endpoint-user_management .table-responsive table.table td::before { - display: none; - content: none; - } -} - -@media (max-width: 575.98px) { - .app-navbar .container-xxl { - display: grid; - grid-template-columns: minmax(0, 1fr) auto; - align-items: center; - } - - .app-navbar__meta { - display: none; - } - - .app-brand { - min-width: 0; - overflow: hidden; - } - - .app-brand > span:last-child { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - - .app-navbar__actions { - grid-column: 1 / -1; - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: .45rem; - width: 100%; - } - - .app-navbar__actions .btn { - width: 100%; - padding: .45rem .5rem; - font-size: .78rem; - } - - .share-submit-btn { - min-width: 6.75rem; - } - - .list-item-actions { - width: 100%; - justify-content: flex-start; - margin-top: .5rem; - } -} - - -/* admin/settings consistency fixes */ -.form-switch-compact .form-check-input { - width: 2.35rem; - height: 1.2rem; - margin-top: .1rem; -} -.form-switch-compact .form-check-label { - padding-top: .02rem; -} -.form-check-spaced { - gap: .45rem; -} -.access-editor .input-group > .form-control, -.access-editor .input-group > .btn { - min-height: 40px; -} -.endpoint-admin_edit_categories .table-responsive, -.endpoint-admin_lists_access .table-responsive, -.endpoint-admin_settings .table-responsive, -.endpoint-list_products .table-responsive { - overflow-x: auto !important; -} -.endpoint-admin_edit_categories .table-responsive table.table.keep-horizontal, -.endpoint-admin_lists_access .table-responsive table.table.keep-horizontal, -.endpoint-list_products .table-responsive table.table.keep-horizontal { - min-width: 1000px !important; -} -.endpoint-admin_edit_categories .app-content-frame, -.endpoint-admin_lists_access .app-content-frame, -.endpoint-admin_settings .app-content-frame, -.endpoint-list_products .app-content-frame { - overflow: visible; -} -@media (max-width: 767.98px) { - .form-switch-compact .form-check-input { width: 2rem; height: 1.05rem; } -} - - -/* v4.1 admin/table/share fixes */ -.admin-table-responsive table { - width: 100%; - min-width: 100%; -} -.admin-table-responsive--wide table, -.table-responsive .keep-horizontal { - width: max-content; - min-width: 100%; -} -.endpoint-admin_panel .admin-table-responsive--wide table { - width: 100%; - min-width: 100%; -} -.endpoint-admin_panel .admin-panel-table th:last-child, -.endpoint-admin_panel .admin-panel-table td:last-child { - width: 1%; - white-space: nowrap; -} -.endpoint-admin_lists_access .admin-table-responsive--wide table { - min-width: 1120px; -} -.endpoint-admin_lists_access .access-editor .tokens { - min-height: 2rem; -} -.endpoint-admin_lists_access .access-editor .token, -.endpoint-admin_edit_my_list .access-editor .token { - max-width: 100%; -} -.endpoint-admin_lists_access .access-editor .token span, -.endpoint-admin_edit_my_list .access-editor .token span { - pointer-events: none; -} -.endpoint-admin_lists_access .mono { - white-space: nowrap; -} -.form-check-spaced { - gap: .35rem; -} -.form-check-spaced .form-check-input, -input[type="checkbox"].form-check-input, -.table-select-checkbox { - width: .95rem !important; - height: .95rem !important; - min-width: .95rem !important; - min-height: .95rem !important; - margin-top: .18rem; -} -.form-switch-compact .form-check-input { - width: 1.8rem !important; - height: .95rem !important; -} -.large-checkbox { - transform: none; - transform-origin: center; -} - -.shopping-item-main > .large-checkbox { - flex: 0 0 1.5em; - align-self: center; -} -.list-item-actions { - display: flex; - align-items: center; - gap: .45rem; - flex-wrap: wrap; -} -.list-item-actions .btn { - min-width: 2.25rem; - padding: .42rem .62rem; -} -.endpoint-list_share .list-group-item, -.endpoint-shared_list .list-group-item { - gap: .75rem; -} -.endpoint-list_share .list-item-actions, -.endpoint-shared_list .list-item-actions { - margin-left: auto; -} -.endpoint-list_share .input-group, -.endpoint-shared_list .input-group { - flex-wrap: nowrap; -} -.endpoint-list_share .input-group > .form-control, -.endpoint-shared_list .input-group > .form-control { - min-width: 0; -} -.endpoint-list_share .share-submit-btn, -.endpoint-shared_list .share-submit-btn { - min-width: 7.25rem; - border-radius: .9rem !important; -} -@media (max-width: 991.98px) { - .endpoint-admin_panel .admin-panel-table { - min-width: 1000px; - } -} -@media (max-width: 767.98px) { - .endpoint-admin_panel .admin-table-responsive--wide table, - .endpoint-admin_lists_access .admin-table-responsive--wide table, - .endpoint-api_tokens .admin-table-responsive--wide table { - width: max-content; - min-width: 980px !important; - } - .endpoint-list_share .input-group, - .endpoint-shared_list .input-group { - flex-wrap: wrap; - } - .endpoint-list_share .share-submit-btn, - .endpoint-shared_list .share-submit-btn { - width: 100%; - } -} -@media (max-width: 430px) { - .app-brand__icon { - width: 2rem; - height: 2rem; - font-size: 1rem; - } - .app-brand__title, .app-brand__accent { - font-size: 1rem; - } - .app-navbar__actions { - grid-template-columns: repeat(2, minmax(0, 1fr)); - } - .app-navbar__actions .btn { - padding: .38rem .45rem; - font-size: .74rem; - } -} - -.endpoint-admin_api_tokens .admin-table-responsive--wide table { width: 100%; min-width: 100%; } -@media (max-width: 767.98px) { .endpoint-admin_api_tokens .admin-table-responsive--wide table { width:max-content; min-width: 980px !important; } } -.table-responsive { overflow-x: auto; } - - -/* v6 tweaks */ -.create-list-switch, -.hide-purchased-switch { - display: inline-flex; - align-items: center; - gap: .5rem; - padding: .45rem .8rem .45rem 2.35rem; - min-height: 0; - width: auto; - background: rgba(255,255,255,0.04); - border: 1px solid var(--ui-border); - border-radius: 12px; -} -.create-list-switch .form-check-input, -.hide-purchased-switch .form-check-input { - width: 2rem !important; - height: 1rem !important; - margin-top: 0; -} -.create-list-switch .form-check-label, -.hide-purchased-switch .form-check-label { - margin-left: .15rem; -} -.endpoint-admin_lists_access .card > .card-body > .table-responsive, -.endpoint-admin_api_tokens .card > .card-body > .table-responsive { - width: 100%; -} -.endpoint-admin_lists_access .table.keep-horizontal, -.endpoint-admin_api_tokens .table.keep-horizontal { - min-width: 100%; -} - - -/* v7.1 share/main fixes */ -.create-list-checkbox { - align-items: center; - gap: .55rem; -} -.create-list-checkbox .form-check-input { - margin-top: 0; -} -.endpoint-list_share #items .list-group-item, -.endpoint-shared_list #items .list-group-item { - display: flex; - justify-content: space-between; - align-items: center; - gap: .75rem; -} -.endpoint-list_share #items .list-group-item > .d-flex.flex-grow-1, -.endpoint-shared_list #items .list-group-item > .d-flex.flex-grow-1 { - min-width: 0; - flex: 1 1 auto; -} -.endpoint-list_share .list-item-actions, -.endpoint-shared_list .list-item-actions { - flex: 0 0 auto; - margin-left: auto; - justify-content: flex-end; -} -.endpoint-list_share .list-item-actions .btn, -.endpoint-shared_list .list-item-actions .btn { - min-width: 2.5rem; -} -.endpoint-list_share .hide-purchased-switch, -.endpoint-shared_list .hide-purchased-switch { - align-items: center; -} -.endpoint-list_share .hide-purchased-switch .form-check-input, -.endpoint-shared_list .hide-purchased-switch .form-check-input { - margin-top: 0; -} -@media (max-width: 767.98px) { - .endpoint-list_share #items .list-group-item, - .endpoint-shared_list #items .list-group-item { - align-items: flex-start; - } - .endpoint-list_share .list-item-actions, - .endpoint-shared_list .list-item-actions { - width: 100%; - margin-left: 0; - justify-content: flex-start; - } -} - - -/* v9.1 switch and share consistency fixes */ -.create-list-input-group > .form-control { - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; -} -.create-list-input-group > #tempToggle { - min-width: 9.75rem; - font-weight: 600; - white-space: nowrap; -} -.hide-purchased-switch.form-check { - display: inline-flex; - align-items: center; - gap: .7rem; - padding: .55rem .95rem; - padding-left: .95rem; - border-radius: 14px; - background: rgba(255,255,255,.04); - border: 1px solid var(--ui-border); -} -.hide-purchased-switch .form-check-input { - flex: 0 0 auto; - float: none; - width: 2.9em !important; - height: 1.5em !important; - margin: 0 !important; - cursor: pointer; -} -.hide-purchased-switch .form-check-label { - margin: 0 !important; - white-space: nowrap; - cursor: pointer; -} - -.endpoint-list_share .list-item-actions, -.endpoint-shared_list .list-item-actions { - gap: .5rem; -} - -.endpoint-list_share .list-item-actions .btn, -.endpoint-shared_list .list-item-actions .btn { - min-width: 2.75rem; - min-height: 2.5rem; - padding: .5rem .72rem; -} - -.endpoint-list_share .app-navbar__actions .btn, -.endpoint-shared_list .app-navbar__actions .btn { - border-radius: .9rem !important; -} - -/* unified bootstrap-like switches */ -.switch-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); - gap: .8rem; -} - -.form-check.form-switch.app-switch { - display: inline-flex; - align-items: center; - gap: .75rem; - min-height: auto; - margin: 0; - padding: .72rem .95rem; - padding-left: .95rem; - background: rgba(255,255,255,.04); - border: 1px solid var(--ui-border); - border-radius: 14px; -} - -.form-check.form-switch.app-switch .form-check-input { - float: none; - flex: 0 0 auto; - width: 2.9em !important; - height: 1.55em !important; - margin: 0 !important; - cursor: pointer; - background-color: var(--dark-400) !important; - border-color: var(--dark-300) !important; -} - -.form-check.form-switch.app-switch .form-check-input:checked { - background-color: var(--primary) !important; - border-color: var(--primary-border) !important; -} - -.form-check.form-switch.app-switch .form-check-input:focus { - box-shadow: 0 0 0 .18rem rgba(24, 64, 118, .22) !important; -} - -.form-check.form-switch.app-switch .form-check-label { - margin: 0 !important; - line-height: 1.35; - cursor: pointer; -} - -.form-check.form-switch.app-switch.form-switch-compact { - width: 100%; - justify-content: flex-start; -} - -.form-check.form-switch.app-switch.form-switch-compact .form-check-input { - width: 2.9em !important; - height: 1.55em !important; -} - -.hide-purchased-switch.form-check.app-switch { - width: auto; -} - -.endpoint-edit_my_list .switch-grid .app-switch, -.endpoint-admin_edit_list .switch-grid .app-switch { - width: 100%; -} - -/* consolidation pass 2026-03-30: merged safe duplicates and overlapping hotfixes */ -/* final UX polish 2026-03-14 */ -:root { - --nav-btn-height: 2.8rem; -} - -.app-navbar .container-xxl { - display: flex; - align-items: center; - justify-content: space-between; - gap: .8rem; - row-gap: .55rem; - flex-wrap: nowrap; -} - -.app-navbar__actions { - display: flex; - align-items: stretch; - justify-content: flex-end; - gap: .5rem; - flex-wrap: nowrap; - min-width: 0; -} - -.app-navbar__actions .btn, -.app-nav-action { - display: inline-flex; - align-items: center; - justify-content: center; - min-width: 0; - min-height: var(--nav-btn-height); - padding: .6rem .95rem; - white-space: nowrap; - line-height: 1; -} - -.app-navbar__actions .btn > span, -.app-nav-action > span { - display: inline-flex; - align-items: center; -} - -.form-check.form-switch.app-switch { - min-height: 3.2rem; - padding: .78rem 1rem; - border-radius: 16px; -} - -.form-check.form-switch.app-switch .form-check-input { - width: 3.15em !important; - height: 1.7em !important; - background-position: left center; -} - -.form-check.form-switch.app-switch .form-check-label { - display: inline-flex; - align-items: center; - min-height: 1.7rem; - font-weight: 500; -} - -.hide-purchased-switch.form-check.app-switch { - width: auto; - max-width: 100%; -} - -.endpoint-edit_my_list .switch-grid { - grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); -} - -.endpoint-edit_my_list .switch-grid .app-switch, -.endpoint-admin_edit_list .switch-grid .app-switch { - width: 100%; - min-height: 3.35rem; -} - -/* boxed checks in api token form */ -.endpoint-admin_api_tokens .stack-form .form-check-spaced, -.endpoint-api_tokens .stack-form .form-check-spaced { - align-items: center; - gap: .85rem; - margin: 0 0 .72rem; - padding: .75rem .9rem; - border: 1px solid var(--ui-border); - border-radius: 14px; - background: rgba(255,255,255,.04); -} - -.endpoint-admin_api_tokens .stack-form .form-check-spaced .form-check-input, -.endpoint-api_tokens .stack-form .form-check-spaced .form-check-input { - margin: 0; -} - -.endpoint-admin_api_tokens .stack-form .form-check-spaced .form-check-label, -.endpoint-api_tokens .stack-form .form-check-spaced .form-check-label { - flex: 1 1 auto; -} - -/* admin tables full width on desktop, scroll only on smaller screens */ -.endpoint-admin_panel .table-responsive, -.endpoint-admin_lists_access .table-responsive { - overflow-x: auto; -} - -.endpoint-admin_panel .table-responsive > table.table, -.endpoint-admin_lists_access .table-responsive > table.table { - width: 100% !important; - min-width: 100% !important; - table-layout: auto; -} - -.endpoint-admin_lists_access td:nth-child(6) { - min-width: 19rem; -} - -.endpoint-admin_lists_access td:nth-child(6) > .d-flex, -.endpoint-admin_lists_access td:nth-child(6) > .text-warning { - width: 100%; -} - -.endpoint-admin_lists_access td:nth-child(6) > .text-warning { - display: block; -} diff --git a/shopping_app/static/css/split/14-compact-b.css b/shopping_app/static/css/split/14-compact-b.css deleted file mode 100644 index c1b5f3d..0000000 --- a/shopping_app/static/css/split/14-compact-b.css +++ /dev/null @@ -1,32 +0,0 @@ -/* ========================================================= - COMPACT: przyciski akcji na listach - - Desktop: standard Bootstrap - - <=576px: kompakt -========================================================= */ - -/* <=420px: tylko emoji */ -@media (max-width: 420px) { - .btn-group-compact .btn-text { - display: none !important; - } - - .btn-group-compact .btn { - padding: 0.22rem 0.45rem; - min-width: auto; - font-size: 0.9rem; - line-height: 1.1; - } -} - -/* 421–576px: lekko ciaśniej, ale tekst zostaje */ -@media (min-width: 421px) and (max-width: 576px) { - .btn-group-compact .btn { - padding: 0.24rem 0.45rem; - font-size: 0.82rem; - line-height: 1.1; - } - - .btn-group-compact .btn-text { - font-size: 0.75rem; - } -} diff --git a/shopping_app/static/css/split/15-share.css b/shopping_app/static/css/split/15-share.css deleted file mode 100644 index a0ce63b..0000000 --- a/shopping_app/static/css/split/15-share.css +++ /dev/null @@ -1,926 +0,0 @@ -/* ========================================================= - Share page toolbar and shared-list header actions -========================================================= */ -.share-page-toolbar { - display: flex; - align-items: center; - justify-content: flex-end; - gap: .75rem; - width: 100%; -} - -.share-page-toolbar__spacer { - flex: 1 1 auto; -} - -.share-page-toolbar .form-check { - margin-bottom: 0; -} - -.endpoint-list_share .app-navbar__actions, -.endpoint-shared_list .app-navbar__actions { - align-items: stretch; -} - -.endpoint-list_share .app-navbar__actions .btn, -.endpoint-shared_list .app-navbar__actions .btn { - min-height: var(--nav-btn-height); -} - -@media (max-width: 991.98px) { - .app-navbar .container-xxl { - display: grid; - grid-template-columns: minmax(0, 1fr) auto; - align-items: center; - gap: .6rem; - } - - .app-navbar__meta { - display: none; - } - - .app-brand { - min-width: 0; - overflow: hidden; - } - - .app-brand > span:last-child { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - - .app-navbar__actions { - grid-column: 1 / -1; - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: .45rem; - width: 100%; - } - - .app-navbar__actions .btn, - .app-nav-action { - width: 100%; - padding: .55rem .6rem; - } - - .endpoint-admin_panel .table-responsive > table.table, - .endpoint-admin_lists_access .table-responsive > table.table { - width: max-content !important; - min-width: 980px !important; - } -} - -@media (max-width: 767.98px) { - .share-page-toolbar { - justify-content: stretch; - } - - .share-page-toolbar__spacer { - display: none; - } - - .hide-purchased-switch { - padding-left: 2.95rem; - } - - .hide-purchased-switch.form-check.app-switch { - width: 100%; - } - - .switch-grid, - .endpoint-edit_my_list .switch-grid { - grid-template-columns: 1fr; - } -} - - -/* final polish v2 */ -:root { - --nav-btn-height: 2.35rem; -} - -.app-navbar__actions { - gap: .4rem; -} - -.app-navbar__actions .btn, -.app-nav-action { - min-height: var(--nav-btn-height); - padding: .42rem .78rem; - font-size: .92rem; - border-radius: .9rem !important; -} - -.form-check.form-switch.app-switch { - min-height: 2.95rem; - padding: .65rem .9rem; -} - -.form-check.form-switch.app-switch .form-check-input { - width: 2.75em !important; - height: 1.45em !important; - transition: background-position .18s ease-in-out, background-color .18s ease-in-out, border-color .18s ease-in-out, box-shadow .18s ease-in-out !important; -} - -.form-check.form-switch.app-switch .form-check-label { - min-height: 1.45rem; -} - -.endpoint-admin_templates .table-responsive { - overflow-x: auto; -} - -.endpoint-admin_templates .table-responsive > table.table { - width: 100% !important; - min-width: 100% !important; - table-layout: auto; -} - -@media (max-width: 991.98px) { - .app-navbar__actions .btn, - .app-nav-action { - font-size: .86rem; - padding: .48rem .6rem; - } - - .endpoint-admin_templates .table-responsive > table.table { - width: max-content !important; - min-width: 900px !important; - } -} - - -/* responsive mobile category badges + smaller animated switches */ -.mobile-list-heading { - width: 100%; - min-width: 0; - max-width: 100%; - justify-content: flex-start; -} - -.mobile-list-heading__title { - min-width: 0; -} - -.mobile-category-badges { - display: inline-flex; - align-items: center; - gap: .3rem; - min-width: 0; - max-width: 100%; -} - -.mobile-category-badge { - display: inline-flex; - align-items: center; - justify-content: center; - font-size: .68rem; - line-height: 1; - padding: .26rem .52rem; - opacity: .95; -} - -.mobile-category-badge__dot { - display: none; - width: .55rem; - height: .55rem; - border-radius: 999px; - background: currentColor; -} - -.mobile-category-badges.is-compact .mobile-category-badge { - width: .9rem; - min-width: .9rem; - height: .9rem; - padding: 0; - border-radius: 999px; -} - -.mobile-category-badges.is-compact .mobile-category-badge__text { - display: none; -} - -.mobile-category-badges.is-compact .mobile-category-badge__dot { - display: block; -} - -.form-check.form-switch.app-switch { - min-height: 2.75rem; - padding: .58rem .82rem; -} - -.form-check.form-switch.app-switch .form-check-input, -.hide-purchased-switch .form-check-input { - width: 2.45em !important; - height: 1.3em !important; - background-position: left center !important; - transition: background-position .18s ease-in-out, background-color .18s ease-in-out, border-color .18s ease-in-out, box-shadow .18s ease-in-out !important; -} - -.form-check.form-switch.app-switch .form-check-input:checked, -.hide-purchased-switch .form-check-input:checked { - background-position: right center !important; -} - -.form-check.form-switch.app-switch .form-check-label { - min-height: 1.3rem; -} - -.hide-purchased-switch.form-check.app-switch { - padding: .5rem .82rem; -} - -@media (max-width: 576px) { - .mobile-list-heading { - display: inline-flex; - max-width: 100%; - } - - .mobile-list-heading__title { - max-width: 100%; - } -} - - -.endpoint-main_page .list-group-item > .main-list-row { - display: flex; - align-items: center; - justify-content: space-between; - gap: 0.75rem; - width: 100%; - flex-wrap: nowrap; -} - -.endpoint-main_page .list-main-meta { - min-width: 0; - flex: 1 1 auto; -} - -.endpoint-main_page .list-main-title { - display: flex; - align-items: center; - align-content: center; - flex-wrap: wrap; - gap: 0.15rem; - min-width: 0; - line-height: 1; -} - -.endpoint-main_page .list-main-actions { - flex: 0 0 auto; - align-self: center; -} - -@media (max-width: 575.98px) { - .endpoint-main_page .list-group-item > .main-list-row { - flex-direction: column; - align-items: stretch; - } - - .endpoint-main_page .list-main-actions { - width: 100%; - } -} - -/* mobile UX fixes 2026-03-14 */ -.list-main-title__link { - min-width: 0; - display: inline-flex; - align-items: center; - align-content: center; - flex-wrap: wrap; - gap: .15rem; - line-height: 1; -} - -.shopping-item-row { - gap: .75rem; -} - -.shopping-item-main { - min-width: 0; - flex: 1 1 auto; - flex-wrap: wrap; -} - -.shopping-item-main span[id^="name-"] { - min-width: 0; -} - -.shopping-item-actions { - flex: 0 0 auto; - margin-left: auto; - align-self: flex-start; -} - -.shopping-compact-input-group { - flex-wrap: nowrap !important; - align-items: stretch; -} - -.shopping-qty-input { - flex: 0 0 4.5rem; - max-width: 4.5rem; -} - -.shopping-compact-submit { - flex: 0 0 auto; - width: auto; - white-space: nowrap; -} - - -@media (max-width: 991.98px) { - .app-navbar__actions { - grid-template-columns: repeat(auto-fit, minmax(8.25rem, max-content)); - justify-content: end; - } - - .app-navbar__actions .btn, - .app-nav-action { - width: auto; - min-width: 8.25rem; - justify-self: end; - } -} - -@media (max-width: 575.98px) { - .endpoint-main_page .list-group-item > .main-list-row { - flex-direction: row; - align-items: center; - } - - .endpoint-main_page .list-main-actions { - width: auto; - margin-left: auto; - } - - .endpoint-main_page .list-main-actions .btn { - padding: .38rem .52rem; - min-width: 2.35rem; - } - - .endpoint-main_page .list-main-title { - display: flex; - flex-wrap: wrap; - gap: .15rem; - } - - .endpoint-main_page .list-main-meta { - flex: 1 1 auto; - min-width: 0; - } - - .endpoint-main_page .list-main-title__link { - min-width: 0; - max-width: 100%; - } - - .shopping-item-row { - align-items: flex-start !important; - } - - .shopping-item-actions { - width: auto; - margin-top: 0; - margin-left: auto; - justify-content: flex-end; - } - - .shopping-item-actions .btn { - min-width: 2.35rem; - padding: .38rem .52rem; - } - - .shopping-compact-input-group { - display: flex; - } - - .shopping-compact-input-group > .form-control { - min-width: 0; - } - - .shopping-qty-input { - flex-basis: 4rem; - max-width: 4rem; - } - - .shopping-compact-submit { - min-width: auto; - padding-left: .8rem; - padding-right: .8rem; - } - - .ui-password-group > .ui-password-toggle { - min-width: 2.75rem; - padding-left: .7rem; - padding-right: .7rem; - } -} - - -/* UX refactor 2026-03-14 b */ -.app-navbar-toggler { - border-color: rgba(255,255,255,.28); - padding: .3rem .55rem; -} - -.app-navbar-toggler:focus { - box-shadow: 0 0 0 .2rem rgba(255,255,255,.1); -} - -.app-navbar-toggler .navbar-toggler-icon { - filter: invert(1) grayscale(1); -} - -#createListTempToggle, -.create-list-temp-toggle { - border-top-left-radius: 0 !important; - border-bottom-left-radius: 0 !important; -} - -.create-list-input-group > .form-control { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.create-list-input-group > .create-list-temp-toggle { - background: transparent; - white-space: nowrap; -} - -.list-toolbar { - width: 100%; -} - -.list-toolbar--share { - justify-content: flex-end; -} - -.hide-purchased-switch--minimal { - border: 0; - background: transparent; - padding: 0; - margin-left: auto; -} - -.shopping-item-row { - padding: .8rem .95rem; -} - -.shopping-item-main { - display: flex; - align-items: center; - gap: .75rem; - width: 100%; -} - -.shopping-item-content { - flex: 1 1 auto; - min-width: 0; -} - -.shopping-item-head { - display: flex; - align-items: flex-start; - justify-content: space-between; - gap: .75rem; -} - -.shopping-item-text { - min-width: 0; - display: flex; - align-items: center; - gap: .35rem; - flex-wrap: wrap; -} - -.shopping-item-name { - min-width: 0; - overflow-wrap: break-word; - word-break: normal; -} - -.shopping-item-text .info-line { - flex-basis: 100%; - margin-top: .1rem; - overflow-wrap: break-word; - word-break: normal; -} - -.shopping-item-actions { - display: inline-flex; - flex-wrap: nowrap; - gap: .35rem; -} - -.shopping-product-input-group > .shopping-product-name-input, -.shopping-expense-input-group > .shopping-expense-amount-input { - flex: 1 1 auto; -} - -.shopping-product-input-group > .shopping-qty-input { - flex: 0 0 4.5rem; - max-width: 4.5rem; - text-align: center; -} - -.shopping-expense-input-group > .shopping-compact-submit, -.shopping-product-input-group > .shopping-compact-submit { - flex: 0 0 auto; -} - -.endpoint-list .shopping-product-input-group > .shopping-compact-submit, -.endpoint-list_share .shopping-product-input-group > .shopping-compact-submit, -.endpoint-shared_list .shopping-product-input-group > .shopping-compact-submit, -.endpoint-list .shopping-expense-input-group > .shopping-compact-submit, -.endpoint-list_share .shopping-expense-input-group > .shopping-compact-submit, -.endpoint-shared_list .shopping-expense-input-group > .shopping-compact-submit { - border-top-left-radius: 0 !important; - border-bottom-left-radius: 0 !important; - border-top-right-radius: .9rem !important; - border-bottom-right-radius: .9rem !important; - margin-left: 0; -} - -.endpoint-list .shopping-product-input-group, -.endpoint-list_share .shopping-product-input-group, -.endpoint-shared_list .shopping-product-input-group, -.endpoint-list .shopping-expense-input-group, -.endpoint-list_share .shopping-expense-input-group, -.endpoint-shared_list .shopping-expense-input-group { - flex-wrap: nowrap; -} - -@media (max-width: 991.98px) { - .navbar-collapse .app-navbar__actions { - padding-top: .6rem; - justify-content: flex-end; - } -} - -@media (max-width: 575.98px) { - .app-navbar__actions { - width: 100%; - justify-content: flex-end; - } - - .app-navbar__actions .btn, - .app-nav-action { - min-width: 0; - width: auto; - } - - .shopping-item-main { - gap: .55rem; - } - - .shopping-item-head { - gap: .45rem; - } - - .shopping-item-actions { - margin-left: auto; - align-self: flex-start; - } - - .shopping-item-actions .btn { - min-width: 2.2rem; - padding: .34rem .48rem; - } - - .shopping-product-input-group > .shopping-product-name-input, - .shopping-expense-input-group > .shopping-expense-amount-input { - flex: 0 0 60%; - min-width: 0; - } - - .shopping-product-input-group > .shopping-qty-input { - flex: 0 0 15%; - max-width: 15%; - min-width: 0; - } - - .shopping-product-input-group > .shopping-compact-submit { - flex: 0 0 25%; - width: 25%; - min-width: 0; - padding-left: .55rem; - padding-right: .55rem; - font-size: .95rem; - } - - .shopping-expense-input-group > .shopping-compact-submit { - padding-left: .7rem; - padding-right: .7rem; - } - - .list-toolbar { - align-items: flex-start !important; - } - - .list-toolbar__sort { - flex: 0 0 auto; - } - - .hide-purchased-switch--minimal { - font-size: .95rem; - } -} - - -/* UX tweak 2026-03-14 c: hamburger with full labels */ -@media (max-width: 991.98px) { - .navbar-collapse .app-navbar__actions { - width: 100%; - display: flex; - flex-direction: column; - align-items: stretch; - gap: .5rem; - } - - .navbar-collapse .app-navbar__actions .btn, - .navbar-collapse .app-nav-action { - width: 100%; - min-width: 0; - justify-content: flex-start; - text-align: left; - padding-left: .9rem; - padding-right: .9rem; - } - - .navbar-collapse .app-navbar__actions .btn > span, - .navbar-collapse .app-nav-action > span { - display: inline !important; - } -} - - -/* form input/button unification fix 2026-03-15 */ -.endpoint-list .shopping-product-input-group, -.endpoint-list_share .shopping-product-input-group, -.endpoint-shared_list .shopping-product-input-group, -.endpoint-list .shopping-expense-input-group, -.endpoint-list_share .shopping-expense-input-group, -.endpoint-shared_list .shopping-expense-input-group { - display: flex; - flex-wrap: nowrap !important; - align-items: stretch; - gap: 0 !important; -} - -.endpoint-list .shopping-product-input-group > .form-control, -.endpoint-list_share .shopping-product-input-group > .form-control, -.endpoint-shared_list .shopping-product-input-group > .form-control, -.endpoint-list .shopping-expense-input-group > .form-control, -.endpoint-list_share .shopping-expense-input-group > .form-control, -.endpoint-shared_list .shopping-expense-input-group > .form-control, -.endpoint-list .shopping-product-input-group > .btn, -.endpoint-list_share .shopping-product-input-group > .btn, -.endpoint-shared_list .shopping-product-input-group > .btn, -.endpoint-list .shopping-expense-input-group > .btn, -.endpoint-list_share .shopping-expense-input-group > .btn, -.endpoint-shared_list .shopping-expense-input-group > .btn { - position: relative; - min-height: 46px; - box-shadow: none; -} - -.endpoint-list .shopping-product-input-group > .shopping-product-name-input, -.endpoint-list_share .shopping-product-input-group > .shopping-product-name-input, -.endpoint-shared_list .shopping-product-input-group > .shopping-product-name-input, -.endpoint-list .shopping-expense-input-group > .shopping-expense-amount-input, -.endpoint-list_share .shopping-expense-input-group > .shopping-expense-amount-input, -.endpoint-shared_list .shopping-expense-input-group > .shopping-expense-amount-input { - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; -} - -.endpoint-list .shopping-product-input-group > .shopping-qty-input, -.endpoint-list_share .shopping-product-input-group > .shopping-qty-input, -.endpoint-shared_list .shopping-product-input-group > .shopping-qty-input { - border-radius: 0 !important; - border-left-width: 0 !important; -} - -.endpoint-list .shopping-product-input-group > .shopping-compact-submit, -.endpoint-list_share .shopping-product-input-group > .shopping-compact-submit, -.endpoint-shared_list .shopping-product-input-group > .shopping-compact-submit, -.endpoint-list .shopping-expense-input-group > .shopping-compact-submit, -.endpoint-list_share .shopping-expense-input-group > .shopping-compact-submit, -.endpoint-shared_list .shopping-expense-input-group > .shopping-compact-submit { - display: inline-flex; - align-items: center; - justify-content: center; - gap: .35rem; - margin-left: 0 !important; - border-top-left-radius: 0 !important; - border-bottom-left-radius: 0 !important; - border-top-right-radius: .9rem !important; - border-bottom-right-radius: .9rem !important; - border-left-width: 0 !important; -} - -.endpoint-list .shopping-product-input-group > .shopping-compact-submit, -.endpoint-list .shopping-expense-input-group > .shopping-compact-submit, -.endpoint-list_share .shopping-product-input-group > .shopping-compact-submit, -.endpoint-list_share .shopping-expense-input-group > .shopping-compact-submit, -.endpoint-shared_list .shopping-product-input-group > .shopping-compact-submit, -.endpoint-shared_list .shopping-expense-input-group > .shopping-compact-submit, -.endpoint-list .share-submit-btn, -.endpoint-list_share .share-submit-btn, -.endpoint-shared_list .share-submit-btn { - min-width: 7.25rem; -} - -.shopping-btn-icon { - line-height: 1; -} - -.shopping-btn-label { - line-height: 1; -} - -@media (max-width: 767.98px) { - .endpoint-list .shopping-product-input-group, - .endpoint-list_share .shopping-product-input-group, - .endpoint-shared_list .shopping-product-input-group, - .endpoint-list .shopping-expense-input-group, - .endpoint-list_share .shopping-expense-input-group, - .endpoint-shared_list .shopping-expense-input-group { - width: 100%; - } - - .endpoint-list .shopping-product-input-group > .shopping-product-name-input, - .endpoint-list_share .shopping-product-input-group > .shopping-product-name-input, - .endpoint-shared_list .shopping-product-input-group > .shopping-product-name-input { - flex: 0 0 60% !important; - max-width: 60% !important; - min-width: 0; - } - - .endpoint-list .shopping-product-input-group > .shopping-qty-input, - .endpoint-list_share .shopping-product-input-group > .shopping-qty-input, - .endpoint-shared_list .shopping-product-input-group > .shopping-qty-input { - flex: 0 0 15% !important; - max-width: 15% !important; - min-width: 0; - padding-left: .35rem; - padding-right: .35rem; - } - - .endpoint-list .shopping-product-input-group > .shopping-compact-submit, - .endpoint-list_share .shopping-product-input-group > .shopping-compact-submit, - .endpoint-shared_list .shopping-product-input-group > .shopping-compact-submit { - flex: 0 0 25% !important; - width: 25% !important; - min-width: 0 !important; - padding-left: .4rem; - padding-right: .4rem; - } - - .endpoint-list .shopping-expense-input-group > .shopping-expense-amount-input, - .endpoint-list_share .shopping-expense-input-group > .shopping-expense-amount-input, - .endpoint-shared_list .shopping-expense-input-group > .shopping-expense-amount-input { - flex: 1 1 auto !important; - min-width: 0; - } - - .endpoint-list .shopping-expense-input-group > .shopping-compact-submit, - .endpoint-list_share .shopping-expense-input-group > .shopping-compact-submit, - .endpoint-shared_list .shopping-expense-input-group > .shopping-compact-submit { - flex: 0 0 5rem !important; - width: 5rem !important; - min-width: 5rem !important; - padding-left: .35rem; - padding-right: .35rem; - } - - .endpoint-list .shopping-product-input-group > .shopping-compact-submit .shopping-btn-label, - .endpoint-list_share .shopping-product-input-group > .shopping-compact-submit .shopping-btn-label, - .endpoint-shared_list .shopping-product-input-group > .shopping-compact-submit .shopping-btn-label, - .endpoint-list .shopping-expense-input-group > .shopping-compact-submit .shopping-btn-label, - .endpoint-list_share .shopping-expense-input-group > .shopping-compact-submit .shopping-btn-label, - .endpoint-shared_list .shopping-expense-input-group > .shopping-compact-submit .shopping-btn-label { - display: none; - } - - .endpoint-list .shopping-product-input-group > .shopping-compact-submit .shopping-btn-icon, - .endpoint-list_share .shopping-product-input-group > .shopping-compact-submit .shopping-btn-icon, - .endpoint-shared_list .shopping-product-input-group > .shopping-compact-submit .shopping-btn-icon, - .endpoint-list .shopping-expense-input-group > .shopping-compact-submit .shopping-btn-icon, - .endpoint-list_share .shopping-expense-input-group > .shopping-compact-submit .shopping-btn-icon, - .endpoint-shared_list .shopping-expense-input-group > .shopping-compact-submit .shopping-btn-icon { - margin: 0; - font-size: 1rem; - } -} - - -/* endpoint fix for /list route */ -.endpoint-view_list .shopping-product-input-group, -.endpoint-view_list .shopping-expense-input-group { - display: flex; - flex-wrap: nowrap !important; - align-items: stretch; - gap: 0 !important; - width: 100%; -} - -.endpoint-view_list .shopping-product-input-group > .form-control, -.endpoint-view_list .shopping-expense-input-group > .form-control, -.endpoint-view_list .shopping-product-input-group > .btn, -.endpoint-view_list .shopping-expense-input-group > .btn { - position: relative; - min-height: 46px; - box-shadow: none; -} - -.endpoint-view_list .shopping-product-input-group > .shopping-product-name-input, -.endpoint-view_list .shopping-expense-input-group > .shopping-expense-amount-input { - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; -} - -.endpoint-view_list .shopping-product-input-group > .shopping-qty-input { - border-radius: 0 !important; - border-left-width: 0 !important; -} - -.endpoint-view_list .shopping-product-input-group > .shopping-compact-submit, -.endpoint-view_list .shopping-expense-input-group > .shopping-compact-submit, -.endpoint-view_list .share-submit-btn { - display: inline-flex; - align-items: center; - justify-content: center; - gap: .35rem; - margin-left: 0 !important; - min-width: 7.25rem; - border-top-left-radius: 0 !important; - border-bottom-left-radius: 0 !important; - border-top-right-radius: .9rem !important; - border-bottom-right-radius: .9rem !important; - border-left-width: 0 !important; -} - -@media (max-width: 767.98px) { - .endpoint-view_list .shopping-product-input-group > .shopping-product-name-input { - flex: 0 0 60% !important; - max-width: 60% !important; - min-width: 0; - } - - .endpoint-view_list .shopping-product-input-group > .shopping-qty-input { - flex: 0 0 15% !important; - max-width: 15% !important; - min-width: 0; - padding-left: .35rem; - padding-right: .35rem; - } - - .endpoint-view_list .shopping-product-input-group > .shopping-compact-submit { - flex: 0 0 25% !important; - width: 25% !important; - min-width: 0 !important; - padding-left: .4rem; - padding-right: .4rem; - } - - .endpoint-view_list .shopping-expense-input-group > .shopping-expense-amount-input { - flex: 1 1 auto !important; - min-width: 0; - } - - .endpoint-view_list .shopping-expense-input-group > .shopping-compact-submit { - flex: 0 0 5rem !important; - width: 5rem !important; - min-width: 5rem !important; - padding-left: .35rem; - padding-right: .35rem; - } - - .endpoint-view_list .shopping-product-input-group > .shopping-compact-submit .shopping-btn-label, - .endpoint-view_list .shopping-expense-input-group > .shopping-compact-submit .shopping-btn-label { - display: none; - } - - .endpoint-view_list .shopping-product-input-group > .shopping-compact-submit .shopping-btn-icon, - .endpoint-view_list .shopping-expense-input-group > .shopping-compact-submit .shopping-btn-icon { - margin: 0; - font-size: 1rem; - } -} - -/* --- JS render + progress bar consistency patch --- */ -#progress-bar-purchased { - background: linear-gradient(135deg, rgba(39,208,125,0.96), rgba(22,150,91,0.98)) !important; -} - -#progress-bar-not-purchased { - background: linear-gradient(135deg, rgba(246,196,83,0.96), rgba(224,164,26,0.98)) !important; -} - -#progress-bar-remaining { - background: rgba(255,255,255,0.08) !important; -} diff --git a/shopping_app/static/css/split/16-row.css b/shopping_app/static/css/split/16-row.css deleted file mode 100644 index 510a9c5..0000000 --- a/shopping_app/static/css/split/16-row.css +++ /dev/null @@ -1,661 +0,0 @@ -/* ========================================================= - Shopping item rows: shared base alignment + mobile fixes -========================================================= */ -/* v10.2 item row consistency and mobile share fixes */ -.shopping-item-text { - line-height: 1.35; -} - -.shopping-item-text .info-line { - display: inline; - flex-basis: auto; - margin-top: 0; - white-space: normal; -} - -.shopping-item-text .info-line > span { - display: inline; -} - -.shopping-item-text .item-added-by-meta { - color: currentColor; - opacity: .72; - font-size: .92em; -} - -.shopping-item-text .item-added-by-meta b { - font-weight: 600; -} - -.shopping-item-name, -.shopping-item-text .info-line { - overflow-wrap: break-word; - word-break: normal; -} - -.shopping-item-actions { - flex: 0 0 auto; -} - -@media (max-width: 575.98px) { - .shopping-item-head { - flex-wrap: wrap; - align-items: flex-start; - } - - .shopping-item-text { - flex: 1 1 100%; - min-width: 0; - } - - .shopping-item-actions { - width: 100%; - margin-left: 0; - justify-content: flex-end; - } -} - - -/* v10.3 alignment fixes for list/share */ -.hide-purchased-switch--right { - display: inline-flex !important; - align-items: center; - justify-content: flex-end; - gap: .6rem; - width: auto; - margin-left: auto; - padding: 0 !important; - border: 0 !important; - background: transparent !important; - box-shadow: none !important; -} - -.hide-purchased-switch--right::before, -.hide-purchased-switch--right::after { - display: none !important; -} - -.hide-purchased-switch--right .form-check-input { - order: 1; - margin: 0; - float: none; - flex: 0 0 auto; -} - -.hide-purchased-switch--right .form-check-label { - order: 0; - margin: 0 !important; - white-space: nowrap; -} - -.list-action-row { - display: flex; - flex-wrap: nowrap; - align-items: stretch; - gap: .65rem; -} - -.list-action-row__form { - display: flex; - flex: 1 1 50%; -} - -.list-action-row__btn { - width: 100%; -} - -.list-action-row > .list-action-row__btn { - flex: 1 1 50%; -} - -.shopping-item-head { - flex-wrap: nowrap; - align-items: center; -} - -.shopping-item-text { - flex: 1 1 auto; - min-width: 0; -} - -.shopping-item-text .info-line { - flex-basis: auto; -} - -.shopping-item-actions { - align-items: center; - justify-content: flex-end; - flex: 0 0 auto; - white-space: nowrap; -} - -.shopping-item-actions .btn { - flex: 0 0 auto; -} - -@media (max-width: 575.98px) { - .shopping-item-main { - align-items: center; - } - - .shopping-item-head { - flex-wrap: nowrap; - align-items: center; - gap: .4rem; - } - - .shopping-item-text { - flex: 1 1 auto; - min-width: 0; - gap: .25rem; - } - - .shopping-item-actions { - width: auto; - margin-left: auto; - gap: .25rem; - } - - .shopping-item-actions .btn { - min-width: 2rem; - padding: .3rem .42rem; - } - - .hide-purchased-switch--right { - width: auto; - max-width: 100%; - } - - .list-action-row { - gap: .5rem; - } - - .list-action-row > .list-action-row__btn, - .list-action-row__form { - flex: 1 1 50%; - min-width: 0; - } - - .list-action-row__btn { - padding-left: .55rem; - padding-right: .55rem; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - } -} - - -/* layout polish 2026-03-15: toolbar, sorting and item alignment */ -.list-header-toolbar { - width: 100%; -} - -.list-header-toolbar > h2 { - flex: 1 1 auto; - min-width: 0; -} - -.list-header-toolbar .list-toolbar { - flex: 0 0 auto; - width: auto; - margin-left: auto; -} - -.list-toolbar__sort.btn { - display: inline-flex; - align-items: center; - justify-content: center; - white-space: nowrap; - border-width: 1px !important; -} - -.drag-handle { - display: none !important; - cursor: grab; -} - -body.sorting-active .drag-handle { - display: inline-flex !important; -} - -body.sorting-active .shopping-item-row { - cursor: grab; -} - -body.sorting-active .shopping-item-row:active, -body.sorting-active .drag-handle:active { - cursor: grabbing; -} - -body.sorting-active .shopping-item-row .large-checkbox { - pointer-events: none; -} - -.endpoint-list_share .shopping-item-name, -.endpoint-list_share .shopping-item-text .info-line, -.endpoint-shared_list .shopping-item-name, -.endpoint-shared_list .shopping-item-text .info-line { - overflow-wrap: break-word; - word-break: normal; -} - -.endpoint-list_share input[type="checkbox"].large-checkbox::before, -.endpoint-shared_list input[type="checkbox"].large-checkbox::before, -.endpoint-view_list input[type="checkbox"].large-checkbox::before { - font-size: 1.7em; -} - -@media (max-width: 575.98px) { - .endpoint-view_list .list-toolbar { - display: grid !important; - grid-template-columns: minmax(0, 1fr) auto; - align-items: center !important; - gap: .4rem !important; - flex-wrap: nowrap !important; - } - - .endpoint-view_list .list-toolbar__sort.btn { - min-width: 0; - padding: .35rem .55rem; - font-size: .82rem; - } - - .endpoint-view_list .hide-purchased-switch--right { - min-width: 0; - gap: .25rem; - font-size: .82rem; - } - - .endpoint-view_list .hide-purchased-switch--right .form-check-label { - margin-left: .25rem !important; - white-space: nowrap; - } - - .endpoint-view_list .hide-purchased-switch--right .form-check-input { - transform: scale(.92); - transform-origin: center; - } - - .list-header-toolbar { - align-items: flex-start !important; - } - - .list-header-toolbar .list-toolbar { - width: 100%; - justify-content: flex-end !important; - } -} - -/* hotfix 2026-03-15 v3: /share item layout parity with /list */ -/* hotfix 2026-03-15: /share item layout parity with /list */ -.endpoint-list_share .shopping-item-row, -.endpoint-shared_list .shopping-item-row { - overflow: hidden; - padding: .8rem .95rem; -} - -.endpoint-list_share .shopping-item-main, -.endpoint-shared_list .shopping-item-main, -.endpoint-view_list .shopping-item-main, -.endpoint-list .shopping-item-main { - display: flex; - align-items: center; - gap: .75rem; - width: 100%; -} - -.endpoint-list_share .shopping-item-content, -.endpoint-shared_list .shopping-item-content, -.endpoint-view_list .shopping-item-content, -.endpoint-list .shopping-item-content { - flex: 1 1 auto; - min-width: 0; - width: auto; -} - -.endpoint-list_share .shopping-item-head, -.endpoint-shared_list .shopping-item-head, -.endpoint-view_list .shopping-item-head, -.endpoint-list .shopping-item-head { - display: flex; - align-items: center; - justify-content: space-between; - gap: .75rem; -} - -.endpoint-list_share .shopping-item-text, -.endpoint-shared_list .shopping-item-text, -.endpoint-view_list .shopping-item-text, -.endpoint-list .shopping-item-text { - flex: 1 1 auto; - min-width: 0; - display: flex; - align-items: center; - align-content: center; - gap: .35rem; - flex-wrap: wrap; -} - -.endpoint-list_share .shopping-item-name, -.endpoint-shared_list .shopping-item-name, -.endpoint-view_list .shopping-item-name, -.endpoint-list .shopping-item-name { - display: inline; - min-width: 0; - max-width: 100%; - white-space: normal; - overflow-wrap: break-word; - word-break: normal; -} - -.endpoint-list_share .shopping-item-text .badge, -.endpoint-shared_list .shopping-item-text .badge, -.endpoint-view_list .shopping-item-text .badge, -.endpoint-list .shopping-item-text .badge, -.endpoint-list_share .shopping-item-text .info-line, -.endpoint-shared_list .shopping-item-text .info-line, -.endpoint-view_list .shopping-item-text .info-line, -.endpoint-list .shopping-item-text .info-line { - align-self: center; -} - -.endpoint-list_share .shopping-item-text .info-line, -.endpoint-shared_list .shopping-item-text .info-line, -.endpoint-view_list .shopping-item-text .info-line, -.endpoint-list .shopping-item-text .info-line { - display: block; - flex: 0 0 100%; - width: 100%; - margin-top: .1rem; - white-space: normal; - overflow-wrap: break-word; - word-break: normal; -} - -.endpoint-list_share .shopping-item-actions, -.endpoint-shared_list .shopping-item-actions, -.endpoint-view_list .shopping-item-actions, -.endpoint-list .shopping-item-actions { - display: inline-flex; - flex: 0 0 auto; - flex-wrap: nowrap; - align-items: center; - align-self: center; - justify-content: flex-end; - gap: .35rem; - margin-left: 0; - white-space: nowrap; -} - -.endpoint-list_share .shopping-item-actions .btn, -.endpoint-shared_list .shopping-item-actions .btn { - display: inline-flex; - align-items: center; - justify-content: center; - min-width: 2.25rem; - padding: .34rem .48rem; -} - -.endpoint-list_share .shopping-item-main > .large-checkbox, -.endpoint-shared_list .shopping-item-main > .large-checkbox, -.endpoint-view_list .shopping-item-main > .large-checkbox { - flex: 0 0 auto; - align-self: center; -} - -@media (max-width: 575.98px) { - .endpoint-list_share .shopping-item-main, - .endpoint-shared_list .shopping-item-main, - .endpoint-view_list .shopping-item-main, - .endpoint-list .shopping-item-main { - gap: .55rem; - } - - .endpoint-list_share .shopping-item-head, - .endpoint-shared_list .shopping-item-head, - .endpoint-view_list .shopping-item-head, - .endpoint-list .shopping-item-head { - display: flex; - align-items: center; - justify-content: space-between; - gap: .45rem; - } - - .endpoint-list_share .shopping-item-text, - .endpoint-shared_list .shopping-item-text, - .endpoint-view_list .shopping-item-text, - .endpoint-list .shopping-item-text { - flex: 1 1 auto; - min-width: 0; - gap: .25rem; - } - - .endpoint-list_share .shopping-item-actions, - .endpoint-shared_list .shopping-item-actions, - .endpoint-view_list .shopping-item-actions, - .endpoint-list .shopping-item-actions { - align-self: start; - width: auto; - margin-left: auto; - gap: .25rem; - } - - .endpoint-list_share .shopping-item-actions .btn, - .endpoint-shared_list .shopping-item-actions .btn { - min-width: 2rem; - padding: .3rem .42rem; - } -} - -.endpoint-list_share input[type="checkbox"].large-checkbox::before, -.endpoint-shared_list input[type="checkbox"].large-checkbox::before { - font-size: 1.75em; -} - -/* mobile menu simplification 2026-03-15 */ -.app-mobile-menu { - display: flex; - align-items: center; -} - -.app-mobile-menu__toggle { - display: inline-flex; - align-items: center; - justify-content: center; - width: 3rem; - height: 3rem; - border-radius: 14px; - background: rgba(255,255,255,0.04); -} - -.app-mobile-menu__panel { - min-width: 14rem; - padding: .4rem; - border-radius: 16px; - background: linear-gradient(180deg, rgba(14,22,35,0.98), rgba(9,15,26,0.98)) !important; - border: 1px solid rgba(255,255,255,0.1); - box-shadow: 0 18px 36px rgba(0,0,0,0.28); -} - -.app-mobile-menu__item { - display: flex; - align-items: center; - gap: .55rem; - min-height: 2.6rem; - padding: .55rem .75rem; - color: #fff; - border-radius: 12px; -} - -.app-mobile-menu__item:hover, -.app-mobile-menu__item:focus { - background: rgba(255,255,255,0.08); - color: #fff; -} - -@media (min-width: 992px) { - .app-mobile-menu { - display: none !important; - } -} - - -/* v5.1 create-list temp toggle mobile/Desktop fix */ -.create-list-input-group { - display: flex; - flex-wrap: nowrap !important; - align-items: stretch; - gap: 0 !important; -} - -.create-list-input-group > .form-control { - flex: 1 1 auto !important; - width: 1% !important; - min-width: 0 !important; - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; -} - -.create-list-input-group > .create-list-temp-toggle, -.create-list-input-group > #tempToggle { - flex: 0 0 auto !important; - width: auto !important; - min-width: 10rem; - margin-left: -1px; - border-top-left-radius: 0 !important; - border-bottom-left-radius: 0 !important; - border-top-right-radius: 14px !important; - border-bottom-right-radius: 14px !important; - background: rgba(255,255,255,0.03) !important; - border-color: var(--app-border) !important; - color: var(--app-text) !important; - transition: background-color .18s ease, border-color .18s ease, color .18s ease, box-shadow .18s ease; -} - -.create-list-input-group > .create-list-temp-toggle.is-active, -.create-list-input-group > #tempToggle.is-active { - background: rgba(41, 209, 125, 0.16) !important; - border-color: rgba(41, 209, 125, 0.72) !important; - color: #9bf0c1 !important; - box-shadow: inset 0 0 0 1px rgba(41, 209, 125, 0.15); -} - -.create-list-input-group > .create-list-temp-toggle:hover, -.create-list-input-group > #tempToggle:hover, -.create-list-input-group > .create-list-temp-toggle:focus, -.create-list-input-group > #tempToggle:focus { - background: rgba(255,255,255,0.06) !important; - color: var(--app-text) !important; -} - -.create-list-input-group > .create-list-temp-toggle.is-active:hover, -.create-list-input-group > #tempToggle.is-active:hover, -.create-list-input-group > .create-list-temp-toggle.is-active:focus, -.create-list-input-group > #tempToggle.is-active:focus { - background: rgba(41, 209, 125, 0.2) !important; - color: #b7f7d2 !important; -} - -@media (max-width: 767.98px) { - .create-list-input-group { - gap: 0 !important; - } - - .create-list-input-group > .form-control { - padding-left: .9rem; - padding-right: .75rem; - } - - .create-list-input-group > .create-list-temp-toggle, - .create-list-input-group > #tempToggle { - min-width: 8.75rem; - padding-left: .85rem; - padding-right: .85rem; - font-size: .92rem; - letter-spacing: 0; - } -} - - -.endpoint-list_share .shopping-item-actions, -.endpoint-shared_list .shopping-item-actions, -.endpoint-view_list .shopping-item-actions, -.endpoint-list .shopping-item-actions { - gap: .35rem !important; - min-height: 2.35rem !important; -} - -.endpoint-list_share .shopping-action-btn, -.endpoint-shared_list .shopping-action-btn, -.endpoint-view_list .shopping-action-btn, -.endpoint-list .shopping-action-btn { - width: 2.35rem !important; - height: 2.35rem !important; - min-width: 2.35rem !important; - min-height: 2.35rem !important; - padding: 0 !important; - border-radius: .7rem !important; - font-size: 1rem !important; - line-height: 1 !important; -} - -.endpoint-list_share .shopping-action-btn--wide, -.endpoint-shared_list .shopping-action-btn--wide, -.endpoint-view_list .shopping-action-btn--wide, -.endpoint-list .shopping-action-btn--wide { - width: auto !important; - min-width: 5.9rem !important; - padding: 0 .8rem !important; -} -.endpoint-list_share .shopping-action-btn--countdown, -.endpoint-shared_list .shopping-action-btn--countdown, -.endpoint-view_list .shopping-action-btn--countdown, -.endpoint-list .shopping-action-btn--countdown { - width: auto !important; - min-width: 3.2rem !important; - padding: 0 .65rem !important; -} - - -.endpoint-list_share .shopping-action-btn > *, -.endpoint-shared_list .shopping-action-btn > *, -.endpoint-view_list .shopping-action-btn > *, -.endpoint-list .shopping-action-btn > * { - line-height: 1 !important; -} - -@media (max-width: 575.98px) { - .endpoint-list_share .shopping-action-btn, - .endpoint-shared_list .shopping-action-btn, - .endpoint-view_list .shopping-action-btn, - .endpoint-list .shopping-action-btn { - width: 2.15rem !important; - height: 2.15rem !important; - min-width: 2.15rem !important; - min-height: 2.15rem !important; - border-radius: .65rem !important; - } - - .endpoint-list_share .shopping-action-btn--wide, - .endpoint-shared_list .shopping-action-btn--wide, - .endpoint-view_list .shopping-action-btn--wide, - .endpoint-list .shopping-action-btn--wide { - min-width: 5.4rem !important; - padding: 0 .72rem !important; - } -} - -@media (max-width: 575.98px) { - .endpoint-list_share .shopping-action-btn--countdown, - .endpoint-shared_list .shopping-action-btn--countdown, - .endpoint-view_list .shopping-action-btn--countdown, - .endpoint-list .shopping-action-btn--countdown { - min-width: 3rem !important; - padding: 0 .55rem !important; - } -} - -body:not(.sorting-active) .drag-handle { - display: none !important; -} diff --git a/shopping_app/static/css/split/17-control.css b/shopping_app/static/css/split/17-control.css deleted file mode 100644 index 4bfeeab..0000000 --- a/shopping_app/static/css/split/17-control.css +++ /dev/null @@ -1,492 +0,0 @@ -/* ========================================================= - Consistent form controls + password toggle -========================================================= */ -:root { - --ui-control-height: 42px; - --ui-control-radius: 14px; - --ui-control-focus-ring: 0 0 0 .25rem rgba(24, 64, 118, .18); -} - -.ui-consistent-input { - min-height: var(--ui-control-height) !important; - border-radius: var(--ui-control-radius) !important; -} - -.ui-password-group { - display: flex !important; - flex-wrap: nowrap !important; - align-items: stretch !important; - width: 100% !important; - gap: 0 !important; - overflow: hidden !important; - border: 1px solid var(--ui-border-strong) !important; - border-radius: var(--ui-control-radius) !important; - background: rgba(255,255,255,0.04) !important; - background-image: none !important; - box-shadow: none !important; -} - -.ui-password-group:focus-within { - border-color: rgba(25, 135, 84, 0.6) !important; - box-shadow: 0 0 0 0.2rem rgba(25, 135, 84, 0.16) !important; -} - -.ui-password-group > .form-control { - flex: 1 1 auto !important; - width: 1% !important; - min-width: 0 !important; - min-height: var(--ui-control-height) !important; - border: 0 !important; - border-radius: 0 !important; - box-shadow: none !important; - background: transparent !important; - background-color: transparent !important; - background-image: none !important; - background-clip: padding-box !important; -} - -.ui-password-group > .form-control:focus { - box-shadow: none !important; - background: transparent !important; - background-color: transparent !important; -} - -.ui-password-group > .ui-password-toggle { - appearance: none !important; - -webkit-appearance: none !important; - display: inline-flex !important; - align-items: center !important; - justify-content: center !important; - flex: 0 0 46px !important; - width: 46px !important; - min-width: 46px !important; - min-height: var(--ui-control-height) !important; - padding: 0 !important; - margin: 0 !important; - cursor: pointer !important; - background: transparent !important; - background-color: transparent !important; - background-image: none !important; - color: rgba(255,255,255,0.72) !important; - border: 0 !important; - border-left: 1px solid rgba(255, 255, 255, 0.10) !important; - border-radius: 0 !important; - box-shadow: none !important; - line-height: 1 !important; -} - -.ui-password-group > .ui-password-toggle:hover, -.ui-password-group > .ui-password-toggle:focus, -.ui-password-group > .ui-password-toggle:focus-visible { - background: rgba(255,255,255,0.03) !important; - background-color: rgba(255,255,255,0.03) !important; - color: #fff !important; - border-left-color: rgba(255,255,255,0.16) !important; - box-shadow: none !important; - outline: none !important; -} - -.ui-password-group > .ui-password-toggle.is-active { - background: rgba(255,255,255,0.05) !important; - background-color: rgba(255,255,255,0.05) !important; - color: #fff !important; -} - -.ui-password-group > .ui-password-toggle > * { - pointer-events: none !important; -} - -.endpoint-login form .form-control:not(.form-control-sm), -.endpoint-system_auth form .form-control:not(.form-control-sm), -.endpoint-edit_my_list form .form-control:not(.form-control-sm):not(.form-control-plaintext), -.endpoint-edit_list form .form-control:not(.form-control-sm):not(.form-control-plaintext), -.endpoint-user_management form .form-control:not(.form-control-sm), -.endpoint-user_management .modal .form-control:not(.form-control-sm), -.endpoint-edit_my_list form .form-select, -.endpoint-edit_list form .form-select, -.endpoint-user_management form .form-select, -.endpoint-user_management .modal .form-select { - min-height: var(--ui-control-height) !important; -} - -.endpoint-login form .form-control.ui-consistent-input, -.endpoint-system_auth form .form-control.ui-consistent-input, -.endpoint-edit_my_list form .ui-consistent-input, -.endpoint-edit_list form .ui-consistent-input, -.endpoint-user_management form .ui-consistent-input, -.endpoint-user_management .modal .ui-consistent-input { - border-radius: var(--ui-control-radius) !important; -} - -/* - Password fields use only the generic ui-password-group rules above. - Keep endpoint-specific overrides out of login/system_auth/admin screens, - otherwise future changes start fighting through selector specificity. -*/ -.ui-password-group > .form-control.ui-consistent-input { - border-radius: 0 !important; -} - -.endpoint-edit_my_list .access-editor .access-input, -.endpoint-edit_list .input-group.input-group-sm .form-control { - min-height: var(--ui-control-height) !important; -} - -@media (max-width: 575.98px) { - .ui-password-group > .ui-password-toggle { - flex-basis: 44px !important; - width: 44px !important; - min-width: 44px !important; - } -} - -/* wyróżnienie pola dodawania produktu */ -.endpoint-list .shopping-entry-card, -.endpoint-list_share .shopping-entry-card, -.endpoint-shared_list .shopping-entry-card, -.endpoint-view_list .shopping-entry-card { - background: linear-gradient(180deg, rgba(25, 135, 84, 0.16), rgba(13, 17, 23, 0.92)); - border: 1px solid rgba(25, 135, 84, 0.42); - border-radius: 1rem; - padding: .9rem; - box-shadow: 0 .5rem 1.2rem rgba(0, 0, 0, 0.18); -} - -.endpoint-list .shopping-entry-card__label, -.endpoint-list_share .shopping-entry-card__label, -.endpoint-shared_list .shopping-entry-card__label, -.endpoint-view_list .shopping-entry-card__label { - display: inline-flex; - align-items: center; - gap: .4rem; - margin-bottom: .2rem; - font-size: .95rem; - font-weight: 700; - color: #d1f7df; -} - -.endpoint-list .shopping-entry-card__hint, -.endpoint-list_share .shopping-entry-card__hint, -.endpoint-shared_list .shopping-entry-card__hint, -.endpoint-view_list .shopping-entry-card__hint { - margin-bottom: .75rem; - color: rgba(255, 255, 255, 0.72); - font-size: .82rem; - line-height: 1.35; -} - -.endpoint-list .shopping-entry-card .shopping-product-input-group, -.endpoint-list_share .shopping-entry-card .shopping-product-input-group, -.endpoint-shared_list .shopping-entry-card .shopping-product-input-group, -.endpoint-view_list .shopping-entry-card .shopping-product-input-group { - margin-bottom: 0 !important; -} - -.endpoint-list .shopping-entry-card .shopping-product-input-group > .form-control, -.endpoint-list_share .shopping-entry-card .shopping-product-input-group > .form-control, -.endpoint-shared_list .shopping-entry-card .shopping-product-input-group > .form-control, -.endpoint-view_list .shopping-entry-card .shopping-product-input-group > .form-control { - border-color: rgba(25, 135, 84, 0.55) !important; - background: rgba(17, 24, 39, 0.95) !important; -} - -.endpoint-list .shopping-entry-card .shopping-product-input-group > .form-control::placeholder, -.endpoint-list_share .shopping-entry-card .shopping-product-input-group > .form-control::placeholder, -.endpoint-shared_list .shopping-entry-card .shopping-product-input-group > .form-control::placeholder, -.endpoint-view_list .shopping-entry-card .shopping-product-input-group > .form-control::placeholder { - color: rgba(255, 255, 255, 0.62); -} - -.endpoint-list .shopping-entry-card .shopping-product-input-group > .shopping-product-name-input:focus, -.endpoint-list_share .shopping-entry-card .shopping-product-input-group > .shopping-product-name-input:focus, -.endpoint-shared_list .shopping-entry-card .shopping-product-input-group > .shopping-product-name-input:focus, -.endpoint-view_list .shopping-entry-card .shopping-product-input-group > .shopping-product-name-input:focus { - box-shadow: inset 0 0 0 1px rgba(25, 135, 84, 0.25), 0 0 0 .2rem rgba(25, 135, 84, 0.18); -} - -@media (max-width: 767.98px) { - .endpoint-list .shopping-entry-card, - .endpoint-list_share .shopping-entry-card, - .endpoint-shared_list .shopping-entry-card, - .endpoint-view_list .shopping-entry-card { - padding: .8rem; - border-radius: .95rem; - } - - .endpoint-list .shopping-entry-card__label, - .endpoint-list_share .shopping-entry-card__label, - .endpoint-shared_list .shopping-entry-card__label, - .endpoint-view_list .shopping-entry-card__label { - font-size: .92rem; - } - - .endpoint-list .shopping-entry-card__hint, - .endpoint-list_share .shopping-entry-card__hint, - .endpoint-shared_list .shopping-entry-card__hint, - .endpoint-view_list .shopping-entry-card__hint { - font-size: .78rem; - margin-bottom: .65rem; - } -} - -/* ========== /expenses mobile fixes: separate range pickers + better wrapping ========== */ -.endpoint-expenses .expenses-range-toolbar { - width: 100%; -} - -.endpoint-expenses .expenses-range-group { - flex-wrap: wrap; - justify-content: center; - width: 100%; -} - -.endpoint-expenses .expenses-range-group > .btn { - white-space: nowrap; -} - -.endpoint-expenses .expenses-date-range { - align-items: stretch; -} - -@media (max-width: 767.98px) { - .endpoint-expenses .expenses-range-toolbar { - justify-content: stretch !important; - overflow: visible; - padding-bottom: 0; - } - - .endpoint-expenses .expenses-range-group { - display: grid !important; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: 0.55rem; - width: 100%; - min-width: 0; - } - - .endpoint-expenses .expenses-table-toolbar .expenses-range-group { - grid-template-columns: repeat(3, minmax(0, 1fr)); - } - - .endpoint-expenses .expenses-range-group > .btn { - flex: initial !important; - width: 100%; - min-width: 0; - padding-inline: 0.55rem; - font-size: 0.95rem; - } - - .endpoint-expenses .expenses-date-range { - display: grid !important; - grid-template-columns: 52px minmax(0, 1fr); - gap: 0.55rem; - width: 100%; - max-width: 100% !important; - flex-wrap: wrap !important; - } - - .endpoint-expenses .expenses-date-range > .input-group-text, - .endpoint-expenses .expenses-date-range > .form-control, - .endpoint-expenses .expenses-date-range > .btn { - width: 100% !important; - min-width: 0 !important; - flex: initial !important; - border-radius: 0.85rem !important; - } - - .endpoint-expenses .expenses-date-range > .btn { - grid-column: 1 / -1; - } -} - - -/* /share expense entry card aligned with product card */ -.endpoint-list .shopping-entry-card--expense, -.endpoint-list_share .shopping-entry-card--expense, -.endpoint-shared_list .shopping-entry-card--expense, -.endpoint-view_list .shopping-entry-card--expense { - background: linear-gradient(180deg, rgba(13, 110, 253, 0.16), rgba(13, 17, 23, 0.92)); - border-color: rgba(13, 110, 253, 0.42); -} - -.endpoint-list .shopping-entry-card--expense .shopping-entry-card__label, -.endpoint-list_share .shopping-entry-card--expense .shopping-entry-card__label, -.endpoint-shared_list .shopping-entry-card--expense .shopping-entry-card__label, -.endpoint-view_list .shopping-entry-card--expense .shopping-entry-card__label { - color: #d7e9ff; -} - -.endpoint-list .shopping-entry-card--expense .shopping-expense-input-group, -.endpoint-list_share .shopping-entry-card--expense .shopping-expense-input-group, -.endpoint-shared_list .shopping-entry-card--expense .shopping-expense-input-group, -.endpoint-view_list .shopping-entry-card--expense .shopping-expense-input-group { - margin-bottom: 0 !important; -} - -.endpoint-list .shopping-entry-card--expense .shopping-expense-input-group > .form-control, -.endpoint-list_share .shopping-entry-card--expense .shopping-expense-input-group > .form-control, -.endpoint-shared_list .shopping-entry-card--expense .shopping-expense-input-group > .form-control, -.endpoint-view_list .shopping-entry-card--expense .shopping-expense-input-group > .form-control { - border-color: rgba(13, 110, 253, 0.55) !important; - background: rgba(17, 24, 39, 0.95) !important; -} - -.endpoint-list .shopping-entry-card--expense .shopping-expense-input-group > .form-control::placeholder, -.endpoint-list_share .shopping-entry-card--expense .shopping-expense-input-group > .form-control::placeholder, -.endpoint-shared_list .shopping-entry-card--expense .shopping-expense-input-group > .form-control::placeholder, -.endpoint-view_list .shopping-entry-card--expense .shopping-expense-input-group > .form-control::placeholder { - color: rgba(255, 255, 255, 0.62); -} - -.endpoint-list .shopping-entry-card--expense .shopping-expense-input-group > .shopping-expense-amount-input:focus, -.endpoint-list_share .shopping-entry-card--expense .shopping-expense-input-group > .shopping-expense-amount-input:focus, -.endpoint-shared_list .shopping-entry-card--expense .shopping-expense-input-group > .shopping-expense-amount-input:focus, -.endpoint-view_list .shopping-entry-card--expense .shopping-expense-input-group > .shopping-expense-amount-input:focus { - box-shadow: inset 0 0 0 1px rgba(13, 110, 253, 0.25), 0 0 0 .2rem rgba(13, 110, 253, 0.18); -} - -.endpoint-list .share-submit-btn--expense, -.endpoint-list_share .share-submit-btn--expense, -.endpoint-shared_list .share-submit-btn--expense, -.endpoint-view_list .share-submit-btn--expense { - color: #8ec5ff; - border-color: rgba(13, 110, 253, 0.72) !important; - background: rgba(13, 110, 253, 0.12); -} - -.endpoint-list .share-submit-btn--expense:hover, -.endpoint-list_share .share-submit-btn--expense:hover, -.endpoint-shared_list .share-submit-btn--expense:hover, -.endpoint-view_list .share-submit-btn--expense:hover, -.endpoint-list .share-submit-btn--expense:focus, -.endpoint-list_share .share-submit-btn--expense:focus, -.endpoint-shared_list .share-submit-btn--expense:focus, -.endpoint-view_list .share-submit-btn--expense:focus { - color: #fff; - border-color: rgba(13, 110, 253, 0.9) !important; - background: rgba(13, 110, 253, 0.22); - box-shadow: 0 0 0 .2rem rgba(13, 110, 253, 0.16); -} - -/* UX polish 2026-03-19: list quick actions card */ -.list-quick-actions { - display: grid; - gap: .9rem; - padding: 1rem; - border: 1px solid rgba(255,255,255,.08); - border-radius: 1rem; - background: linear-gradient(180deg, rgba(255,255,255,.04), rgba(255,255,255,.02)); - box-shadow: 0 .5rem 1.25rem rgba(0,0,0,.14); -} - -.list-quick-actions__header { - display: flex; - align-items: flex-start; - justify-content: space-between; - gap: .75rem; -} - -.list-quick-actions__eyebrow { - font-size: .72rem; - letter-spacing: .08em; - text-transform: uppercase; - color: rgba(255,255,255,.58); - margin-bottom: .15rem; -} - -.list-quick-actions__title { - font-size: 1rem; - font-weight: 700; - color: #fff; - line-height: 1.2; -} - -.list-quick-actions__hint { - font-size: .82rem; - color: rgba(255,255,255,.62); - text-align: right; - max-width: 18rem; -} - -.list-quick-actions__grid { - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: .75rem; -} - -.list-quick-actions__form { - display: block; -} - -.list-quick-actions__action.btn { - width: 100%; - min-height: 78px; - display: flex; - align-items: flex-start; - gap: .75rem; - padding: .9rem 1rem; - border-radius: .95rem; - text-align: left; - white-space: normal; -} - -.list-quick-actions__action--primary.btn { - border-color: rgba(255,255,255,.2); - background: rgba(255,255,255,.03); -} - -.list-quick-actions__action--secondary.btn { - border-color: rgba(13,110,253,.5); - background: rgba(13,110,253,.08); -} - -.list-quick-actions__icon { - flex: 0 0 auto; - font-size: 1.05rem; - line-height: 1; - margin-top: .1rem; -} - -.list-quick-actions__content { - display: grid; - gap: .2rem; - min-width: 0; -} - -.list-quick-actions__label { - font-size: .95rem; - font-weight: 600; - color: #fff; - line-height: 1.25; -} - -.list-quick-actions__desc { - font-size: .81rem; - color: rgba(255,255,255,.66); - line-height: 1.35; -} - -@media (max-width: 767.98px) { - .list-quick-actions { - padding: .9rem; - gap: .75rem; - } - - .list-quick-actions__header { - flex-direction: column; - gap: .35rem; - } - - .list-quick-actions__hint { - max-width: none; - text-align: left; - } - - .list-quick-actions__grid { - grid-template-columns: 1fr; - } - - .list-quick-actions__action.btn { - min-height: 72px; - padding: .85rem .9rem; - } -} diff --git a/shopping_app/static/css/split/18-mobile.css b/shopping_app/static/css/split/18-mobile.css deleted file mode 100644 index f099452..0000000 --- a/shopping_app/static/css/split/18-mobile.css +++ /dev/null @@ -1,268 +0,0 @@ -/* ========================================================= - Mobile navbar and user chip -========================================================= */ -.app-navbar__meta--mobile { - display: none; -} - -.app-user-chip--mobile { - max-width: min(46vw, 15rem); - min-width: 0; - padding-left: .6rem; - padding-right: .4rem; -} - -.app-user-chip--mobile .badge { - max-width: 100%; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -@media (max-width: 991.98px) { - .app-navbar .container-xxl { - grid-template-columns: minmax(0, 1fr) auto auto; - } - - .app-navbar__meta--mobile { - display: flex !important; - width: auto; - justify-content: flex-end; - justify-self: end; - grid-column: 2; - min-width: 0; - max-width: min(42vw, 12rem); - } - - .app-user-chip--mobile { - display: inline-flex; - } - - .app-mobile-menu { - grid-column: 3; - justify-self: end; - } -} - -@media (max-width: 575.98px) { - .app-brand__icon { - width: 2.25rem; - height: 2.25rem; - } - - .app-user-chip--mobile { - gap: .35rem; - padding: .34rem .38rem .34rem .5rem; - } - - .app-user-chip--mobile .app-user-chip__label { - font-size: .62rem; - letter-spacing: .05em; - } - - .app-user-chip--mobile .badge { - font-size: .72rem; - max-width: 5.9rem; - } -} - -@media (max-width: 430px) { - .app-navbar .container-xxl { - grid-template-columns: minmax(0, 1fr) auto auto; - gap: .45rem; - } - - .app-user-chip--mobile { - max-width: min(38vw, 8.5rem); - } - - .app-user-chip--mobile .app-user-chip__label { - display: none; - } -} - -/* --- Main page list progress consistency --- */ -.endpoint-main_page .list-group-item { - display: flex; - flex-direction: column; - align-items: stretch; - justify-content: flex-start; -} - -.endpoint-main_page .main-list-progress-wrap { - display: block; - width: 100%; - flex: 0 0 100%; - margin-top: 0.8rem !important; -} - -.endpoint-main_page .list-group-item > .main-list-row + .main-list-progress-wrap { - align-self: stretch; -} - -.endpoint-main_page .main-list-progress { - width: 100%; - height: 16px; - margin-top: 0 !important; - border: 1px solid rgba(255, 255, 255, 0.08); - background: - linear-gradient(180deg, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.02)), - var(--dark-700) !important; - box-shadow: - inset 0 1px 0 rgba(255, 255, 255, 0.05), - 0 4px 10px rgba(0, 0, 0, 0.18); -} - -.endpoint-main_page .main-list-progress .progress-bar.bg-success { - background: linear-gradient(135deg, rgba(40, 199, 111, 0.98), rgba(22, 163, 74, 0.98)) !important; -} - -.endpoint-main_page .main-list-progress .progress-bar.bg-warning { - background: linear-gradient(135deg, rgba(245, 189, 65, 0.98), rgba(217, 119, 6, 0.98)) !important; -} - -.endpoint-main_page .main-list-progress .progress-bar.bg-transparent { - background: rgba(255, 255, 255, 0.08) !important; -} - -.endpoint-main_page .main-list-progress__label { - max-width: calc(100% - 0.85rem); - padding: 0 0.45rem; - overflow: hidden; - text-overflow: ellipsis; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.45); - letter-spacing: 0.01em; -} - -@media (max-width: 575.98px) { - .endpoint-main_page .main-list-progress { - height: 15px; - } - - .endpoint-main_page .main-list-progress__label { - font-size: 0.64rem; - } -} - -.endpoint-main_page #mainStatsCollapse.collapsing, -.endpoint-main_page #mainStatsCollapse.show { - overflow: visible; -} - -.endpoint-main_page .main-summary-card { - height: 100%; - padding: 1rem 1rem 1.05rem; - border-radius: 1rem; - border: 1px solid rgba(255, 255, 255, 0.08); - background: linear-gradient(180deg, rgba(255,255,255,0.04), rgba(255,255,255,0.02)), rgba(9, 16, 28, 0.88); - box-shadow: 0 12px 28px rgba(0, 0, 0, 0.2); -} - -.endpoint-main_page .main-summary-card__eyebrow { - font-size: 0.72rem; - text-transform: uppercase; - letter-spacing: 0.08em; - color: rgba(255, 255, 255, 0.65); - margin-bottom: 0.2rem; -} - -.endpoint-main_page .main-summary-card__title { - font-size: 1.05rem; -} - -.endpoint-main_page .main-summary-stats { - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: 0.7rem; -} - -.endpoint-main_page .main-summary-stat { - padding: 0.65rem 0.75rem; - border-radius: 0.85rem; - background: rgba(255, 255, 255, 0.04); - border: 1px solid rgba(255, 255, 255, 0.06); -} - -.endpoint-main_page .main-summary-stat__label { - display: block; - font-size: 0.73rem; - color: rgba(255, 255, 255, 0.66); - margin-bottom: 0.15rem; -} - - -@media (max-width: 575.98px) { - .endpoint-main_page .main-summary-card { - padding: 0.9rem; - } - - .endpoint-main_page .main-summary-stats { - grid-template-columns: 1fr; - } -} - -@media (max-width: 575.98px) { - .endpoint-list_share .shopping-item-head, - .endpoint-shared_list .shopping-item-head { - display: grid; - grid-template-columns: minmax(0, 1fr) auto; - align-items: start; - column-gap: .45rem; - } - - .endpoint-list_share .shopping-item-actions, - .endpoint-shared_list .shopping-item-actions { - align-self: start; - margin-left: 0; - justify-self: end; - } -} - -@media (max-width: 575.98px) { - .endpoint-list_share .shopping-item-main, - .endpoint-shared_list .shopping-item-main { - align-items: center; - } - - .endpoint-list_share .shopping-item-text, - .endpoint-shared_list .shopping-item-text, - .endpoint-list_share .shopping-item-main > .large-checkbox, - .endpoint-shared_list .shopping-item-main > .large-checkbox, - .endpoint-list_share .shopping-item-actions, - .endpoint-shared_list .shopping-item-actions { - align-self: center; - } - - .endpoint-list_share .shopping-item-actions, - .endpoint-shared_list .shopping-item-actions { - margin-left: auto; - justify-self: auto; - } -} - -.endpoint-list #items, -.endpoint-view_list #items, -.endpoint-list_share #items, -.endpoint-shared_list #items { - display: flex; - flex-direction: column; -} - -.endpoint-list #items > .list-group-item, -.endpoint-view_list #items > .list-group-item, -.endpoint-list_share #items > .list-group-item, -.endpoint-shared_list #items > .list-group-item { - margin: 0 !important; - border-width: 1px !important; - box-shadow: 0 4px 14px rgba(0,0,0,0.12) !important; - background-clip: padding-box; -} - -.endpoint-list #items > .list-group-item + .list-group-item, -.endpoint-view_list #items > .list-group-item + .list-group-item, -.endpoint-list_share #items > .list-group-item + .list-group-item, -.endpoint-shared_list #items > .list-group-item + .list-group-item { - margin-top: 0 !important; - border-top-width: 1px !important; -} diff --git a/shopping_app/static/css/split/19-preview.css b/shopping_app/static/css/split/19-preview.css deleted file mode 100644 index f271e65..0000000 --- a/shopping_app/static/css/split/19-preview.css +++ /dev/null @@ -1,67 +0,0 @@ -/* ========================================================= - Preview product list -========================================================= */ - -.preview-product-list { - display: flex; - flex-direction: column; - gap: 1rem; -} - -.preview-product-summary { - padding: 0 0 0.85rem; - margin-bottom: 0.1rem; - border-bottom: 1px solid rgba(255,255,255,0.08); -} - -.preview-product-section { - display: flex; - flex-direction: column; - gap: 0.65rem; -} - -.preview-product-section-title { - margin: 0; - font-size: 1.05rem; - font-weight: 700; -} - -.preview-modal-items { - display: flex; - flex-direction: column; - gap: 0.75rem; -} - -#productPreviewModal .preview-modal-list-item { - display: flex; - align-items: center; - justify-content: space-between; - gap: 0.75rem; - width: 100%; - min-width: 0; - padding: 0.9rem 1rem; - margin: 0 !important; - border-radius: 16px !important; - border: 1px solid rgba(255,255,255,0.08) !important; - background: linear-gradient(180deg, rgba(11,22,40,0.92) 0%, rgba(8,16,30,0.92) 100%) !important; - box-shadow: inset 0 1px 0 rgba(255,255,255,0.03); -} - -#productPreviewModal .preview-modal-list-item:first-child, -#productPreviewModal .preview-modal-list-item:last-child, -#productPreviewModal .list-group-flush > .list-group-item:first-child, -#productPreviewModal .list-group-flush > .list-group-item:last-child { - border-radius: 16px !important; -} - -#productPreviewModal .preview-modal-list-item__name { - min-width: 0; - overflow-wrap: anywhere; - flex: 1 1 auto; -} - -#productPreviewModal .preview-modal-list-item .badge { - flex-shrink: 0; - min-width: 2.5rem; - border-radius: 10px; -} diff --git a/shopping_app/static/css/split/20-receipt.css b/shopping_app/static/css/split/20-receipt.css deleted file mode 100644 index 549c4ab..0000000 --- a/shopping_app/static/css/split/20-receipt.css +++ /dev/null @@ -1,111 +0,0 @@ -/* ========================================================= - Receipt disclosure (share view) -========================================================= */ -.receipt-disclosure { - width: 100%; - cursor: pointer; - border: 1px solid rgba(255, 255, 255, 0.08); - border-radius: 20px; - background: linear-gradient(135deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0.02)); - box-shadow: 0 12px 32px rgba(0, 0, 0, 0.18); - transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease; -} - -.receipt-disclosure:hover, -.receipt-disclosure:focus-visible { - transform: translateY(-1px); - border-color: rgba(255, 255, 255, 0.18); - box-shadow: 0 16px 36px rgba(0, 0, 0, 0.24); - outline: none; -} - -.receipt-disclosure.is-open { - border-color: rgba(24, 64, 118, 0.9); - background: linear-gradient(135deg, rgba(24, 64, 118, 0.22), rgba(255, 255, 255, 0.03)); -} - -.receipt-disclosure__content { - display: flex; - align-items: center; - gap: 14px; - padding: 16px 18px; -} - -.receipt-disclosure__icon { - display: grid; - place-items: center; - width: 48px; - height: 48px; - border-radius: 14px; - background: rgba(255, 255, 255, 0.06); - font-size: 1.25rem; - flex-shrink: 0; -} - -.receipt-disclosure__text { - min-width: 0; - flex: 1; -} - -.receipt-disclosure__eyebrow { - font-size: 0.72rem; - letter-spacing: 0.08em; - text-transform: uppercase; - color: rgba(255, 255, 255, 0.52); - margin-bottom: 2px; -} - -.receipt-disclosure__title { - font-size: 1rem; - font-weight: 600; - color: var(--text-strong); -} - -.receipt-disclosure__meta { - display: flex; - align-items: center; - gap: 12px; - margin-left: auto; - flex-shrink: 0; -} - -.receipt-disclosure__count { - min-width: 34px; - padding: 6px 10px; - border-radius: 999px; - background: rgba(255, 255, 255, 0.08); - color: var(--text-strong); - font-size: 0.875rem; - text-align: center; -} - -.receipt-disclosure__chevron { - font-size: 1.15rem; - color: rgba(255, 255, 255, 0.7); - transition: transform 0.2s ease; -} - -.receipt-disclosure.is-open .receipt-disclosure__chevron { - transform: rotate(180deg); -} - -@media (max-width: 575.98px) { - .receipt-disclosure__content { - padding: 14px; - gap: 12px; - } - - .receipt-disclosure__icon { - width: 42px; - height: 42px; - border-radius: 12px; - } - - .receipt-disclosure__meta { - gap: 10px; - } - - .receipt-disclosure__title { - font-size: 0.95rem; - } -} diff --git a/shopping_app/static/css/split/21-fix.css b/shopping_app/static/css/split/21-fix.css deleted file mode 100644 index 8d8374e..0000000 --- a/shopping_app/static/css/split/21-fix.css +++ /dev/null @@ -1,346 +0,0 @@ -/* ========================================================= - form-control normalization -========================================================= */ -.endpoint-edit_my_list .stack-form > .mb-3 > .ui-consistent-input, -.endpoint-edit_my_list .stack-form > .mb-4 > .ui-consistent-input, -.endpoint-edit_my_list .stack-form .row .ui-consistent-input, -.endpoint-edit_list form > .mb-3 > .ui-consistent-input, -.endpoint-edit_list form > .mb-4 > .ui-consistent-input, -.endpoint-edit_list form .row .ui-consistent-input, -.endpoint-user_management .row > [class*="col-"] > .ui-consistent-input, -.endpoint-user_management .modal .ui-consistent-input { - border-radius: var(--ui-control-radius) !important; -} - -.endpoint-edit_my_list .ts-wrapper.single .ts-control, -.endpoint-edit_list .ts-wrapper.single .ts-control, -.endpoint-edit_my_list .ts-wrapper.multi .ts-control, -.endpoint-edit_list .ts-wrapper.multi .ts-control { - min-height: var(--ui-control-height) !important; - border-radius: var(--ui-control-radius) !important; -} - -/* Share hub */ -.share-hub { - border: 1px solid rgba(79, 142, 255, 0.18); - background: linear-gradient(180deg, rgba(11, 24, 43, 0.98), rgba(8, 17, 31, 0.96)) !important; -} - -.share-hub .card-body { - padding: 1rem; -} - -.share-hub__top { - display: flex; - align-items: flex-start; - justify-content: space-between; - gap: 0.9rem; - margin-bottom: 0.85rem; -} - -.share-hub__eyebrow, -.share-sheet__eyebrow { - font-size: 0.72rem; - letter-spacing: 0.08em; - text-transform: uppercase; - color: rgba(186, 210, 240, 0.62); - margin-bottom: 0.35rem; -} - -.share-hub__title { - font-size: 1.1rem; - font-weight: 700; -} - -.share-hub__status, -.share-sheet__section-head { - display: flex; - flex-wrap: wrap; - gap: 0.45rem; - align-items: center; -} - -.share-state-badge { - display: inline-flex; - align-items: center; - gap: 0.3rem; - min-height: 32px; - padding: 0.45rem 0.72rem; - font-size: 0.76rem; - font-weight: 600; - border: 1px solid rgba(255, 255, 255, 0.08); -} - -.share-state-badge--public { - background: rgba(41, 209, 125, 0.16); - color: #dfffea; -} - -.share-state-badge--private { - background: rgba(255, 255, 255, 0.06); - color: #edf5ff; -} - -.share-state-badge--link { - background: rgba(79, 142, 255, 0.14); - color: #d7e7ff; -} - -.share-state-badge--people { - background: rgba(255, 255, 255, 0.08); - color: #edf5ff; -} - -.share-hub__note { - color: rgba(210, 224, 244, 0.74); - font-size: 0.92rem; - line-height: 1.45; -} - -.share-hub__linkbox { - border: 1px solid rgba(255, 255, 255, 0.08); - background: rgba(255, 255, 255, 0.035); - border-radius: 16px; - padding: 0.85rem 0.95rem; -} - -.share-hub__linklabel { - font-size: 0.72rem; - text-transform: uppercase; - letter-spacing: 0.07em; - color: rgba(186, 210, 240, 0.58); - margin-bottom: 0.3rem; -} - -.share-hub__linkvalue { - color: #f4f8ff; - font-size: 0.95rem; - line-height: 1.45; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.share-hub__actions { - display: grid; - grid-template-columns: 1fr; - gap: 0.65rem; -} - -.share-hub__primary, -.share-hub__secondary, -.share-hub__manage, -.share-sheet__toggle, -.share-sheet__sticky-actions .btn, -.share-sheet__linkstack .btn, - - -.share-hub__manage { - white-space: nowrap; -} - -.share-sheet { - height: auto !important; - max-height: min(90vh, 760px); - border-top-left-radius: 24px; - border-top-right-radius: 24px; - border: 1px solid rgba(255, 255, 255, 0.06); - background: linear-gradient(180deg, rgba(8, 18, 33, 0.995), rgba(6, 13, 24, 0.99)) !important; - box-shadow: 0 -24px 60px rgba(0, 0, 0, 0.42); -} - -.share-sheet__header { - align-items: flex-start; - padding: 0.85rem 1rem 0.6rem; -} - -.share-sheet__body { - padding: 0 1rem calc(1rem + env(safe-area-inset-bottom)); - overflow-y: auto; -} - -.share-sheet__grabber { - width: 52px; - height: 5px; - border-radius: 999px; - margin: 0 auto 0.8rem; - background: rgba(255, 255, 255, 0.22); -} - -.share-sheet__section { - border: 1px solid rgba(255, 255, 255, 0.07); - background: rgba(255, 255, 255, 0.035); - border-radius: 18px; - padding: 0.95rem; - margin-bottom: 0.9rem; -} - -.share-sheet__section-head { - justify-content: space-between; - margin-bottom: 0.7rem; - font-weight: 600; -} - -.share-sheet__linkstack, -.share-access-panel__input { - display: grid; - grid-template-columns: 1fr; - gap: 0.65rem; -} - -.share-access-panel .tokens { - min-height: 2rem; -} - -.share-access-panel .token { - background: rgba(255, 255, 255, 0.03); -} - -.share-sheet__sticky-actions { - position: sticky; - bottom: 0; - padding-top: 0.3rem; - background: linear-gradient(180deg, rgba(6, 13, 24, 0), rgba(6, 13, 24, 0.96) 28%); -} - -@media (min-width: 576px) { - .share-hub .card-body, - .share-sheet__header, - .share-sheet__body { - padding-left: 1.2rem; - padding-right: 1.2rem; - } - - .share-sheet__linkstack, - .share-access-panel__input { - grid-template-columns: 1fr auto; - align-items: center; - } -} - -@media (min-width: 768px) { - .share-hub .card-body { - padding: 1.15rem 1.2rem; - } - - .share-hub__actions { - grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); - } - - .share-sheet { - max-width: 760px; - margin: 0 auto; - left: 0; - right: 0; - } -} - - -/* v5.2 create-list unity + receipt collapse fix */ -.endpoint-main_page .create-list-input-group { - display: flex; - flex-wrap: nowrap !important; - align-items: stretch; - overflow: hidden; - border-radius: 16px; - border: 1px solid rgba(255, 255, 255, 0.12); - background: rgba(7, 17, 31, 0.9); - box-shadow: 0 10px 28px rgba(0, 0, 0, 0.18); -} - -.endpoint-main_page .create-list-input-group > .create-list-title-input, -.endpoint-main_page .create-list-input-group > .form-control { - border: 0 !important; - border-right: 1px solid rgba(255, 255, 255, 0.08) !important; - border-radius: 0 !important; - background: transparent !important; - box-shadow: none !important; -} - -.endpoint-main_page .create-list-input-group > .create-list-title-input:focus, -.endpoint-main_page .create-list-input-group > .form-control:focus { - background: rgba(255, 255, 255, 0.02) !important; - box-shadow: none !important; -} - -.endpoint-main_page .create-list-input-group > .create-list-temp-toggle, -.endpoint-main_page .create-list-input-group > #tempToggle { - min-width: 9.5rem; - border: 0 !important; - border-radius: 0 !important; - background: rgba(255, 255, 255, 0.04) !important; - box-shadow: none !important; -} - -.endpoint-main_page .create-list-input-group > .create-list-temp-toggle.is-active, -.endpoint-main_page .create-list-input-group > #tempToggle.is-active { - background: rgba(41, 209, 125, 0.18) !important; -} - -.endpoint-main_page .create-list-temp-toggle__label { - display: inline-flex; - align-items: center; - justify-content: center; - min-height: 100%; -} - -.endpoint-main_page .create-list-input-group:focus-within { - border-color: rgba(41, 209, 125, 0.55); - box-shadow: 0 0 0 0.18rem rgba(41, 209, 125, 0.12), 0 10px 28px rgba(0, 0, 0, 0.18); -} - -.receipt-disclosure { - display: block; - padding: 0; - text-align: left; -} - -.receipt-disclosure, -.receipt-disclosure:hover, -.receipt-disclosure:focus, -.receipt-disclosure:active { - width: 100%; - appearance: none; - -webkit-appearance: none; -} - -.receipt-disclosure:focus-visible { - outline: none; -} - -.receipt-section--restoring { - transition: none !important; -} - -@media (max-width: 767.98px) { - .endpoint-main_page .create-list-input-group { - border-radius: 14px; - } - - .endpoint-main_page .create-list-input-group > .create-list-temp-toggle, - .endpoint-main_page .create-list-input-group > #tempToggle { - min-width: 8.25rem; - padding-left: .8rem; - padding-right: .8rem; - font-size: .9rem; - } -} - -@media (max-width: 575.98px) { - .endpoint-main_page .create-list-input-group > .create-list-title-input, - .endpoint-main_page .create-list-input-group > .form-control { - padding-left: .85rem; - padding-right: .7rem; - font-size: .95rem; - } - - .endpoint-main_page .create-list-input-group > .create-list-temp-toggle, - .endpoint-main_page .create-list-input-group > #tempToggle { - min-width: 7.6rem; - font-size: .84rem; - } - - .receipt-disclosure { - border-radius: 16px; - } -} diff --git a/shopping_app/static/css/split/buttons.css b/shopping_app/static/css/split/buttons.css new file mode 100644 index 0000000..07d1593 --- /dev/null +++ b/shopping_app/static/css/split/buttons.css @@ -0,0 +1,195 @@ +.btn { + min-height: 40px; + padding: 0.52rem 0.8rem; + border-radius: 10px; + font-weight: 600; + letter-spacing: 0.01em; + box-shadow: none; + transition: transform .18s ease, box-shadow .18s ease, background-color .18s ease, border-color .18s ease; +} + +.btn-sm { + min-height: 34px; + padding: 0.4rem 0.64rem; + border-radius: 9px; +} + +.btn:focus, +.btn:focus-visible { + border-color: rgba(25, 135, 84, 0.6) !important; + box-shadow: 0 0 0 0.2rem rgba(25, 135, 84, 0.16) !important; +} + +.btn:hover, +.btn:focus-visible { + transform: translateY(-1px); +} + +.btn-primary { + background-color: var(--primary) !important; + border-color: var(--primary-border) !important; +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active { + background-color: #13315f !important; + border-color: #10284f !important; +} + +.btn-success { + background: linear-gradient(135deg, #29d17d, #1ea860) !important; + border-color: rgba(41, 209, 125, 0.9) !important; + color: #fff !important; + box-shadow: 0 10px 24px rgba(0,0,0,0.16); +} + +.btn-success:hover, +.btn-success:focus, +.btn-success:active { + color: #fff !important; +} + +.btn-warning { + background-color: var(--warning) !important; + border-color: var(--warning-border) !important; + color: var(--warning-text) !important; +} + +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active { + background-color: #5c4c17 !important; + border-color: #3e3610 !important; + color: var(--warning-text) !important; +} + +.btn-outline-light, +.btn-outline-secondary, +.btn-outline-warning, +.btn-outline-danger, +.btn-outline-primary, +.btn-outline-success, +.btn-outline-info { + background: rgba(255,255,255,0.03); +} + +.btn-outline-light { + color: #f8f9fa !important; + border-color: #f8f9fa !important; +} + +.btn-outline-light:hover, +.btn-outline-light:focus, +.btn-outline-light:focus-visible { + background-color: rgba(255,255,255,0.1) !important; + color: #fff !important; + border-color: #6c757d !important; + box-shadow: 0 10px 24px rgba(0,0,0,0.16); +} + +.btn-outline-light:active, +.btn-outline-light.active, +.show > .btn-outline-light.dropdown-toggle { + background-color: #5a6268 !important; + color: #fff !important; + border-color: #545b62 !important; +} + +.btn-outline-secondary:hover, +.btn-outline-secondary:focus, +.btn-outline-secondary:focus-visible { + background: rgba(108, 117, 125, 0.18) !important; + box-shadow: 0 10px 24px rgba(0,0,0,0.16); +} + +.btn-outline-success { + color: var(--success) !important; + border-color: var(--success) !important; +} + +.btn-outline-success:hover, +.btn-outline-success:focus, +.btn-outline-success:active, +.btn-outline-success:focus-visible { + background: var(--ui-success-soft) !important; + border-color: var(--success-border) !important; + color: #fff !important; + box-shadow: 0 10px 24px rgba(0,0,0,0.16); +} + +.btn-outline-warning { + color: #d9c97a !important; + border-color: var(--warning) !important; +} + +.btn-outline-warning:hover, +.btn-outline-warning:focus, +.btn-outline-warning:active, +.btn-outline-warning:focus-visible { + background: var(--ui-warning-soft) !important; + border-color: var(--warning-border) !important; + color: var(--warning-text) !important; +} + +.btn-outline-danger:hover, +.btn-outline-danger:focus, +.btn-outline-danger:focus-visible { + background: rgba(220, 53, 69, 0.16) !important; +} + +.btn-outline-info { + color: var(--info) !important; + border-color: var(--info) !important; +} + +.btn-outline-info:hover, +.btn-outline-info:focus, +.btn-outline-info:focus-visible { + background-color: #1d4d8c !important; + border-color: #1d4d8c !important; + color: var(--info-text) !important; +} + +.btn-outline-info:active, +.btn-outline-info.active, +.show > .btn-outline-info.dropdown-toggle { + background-color: var(--info) !important; + border-color: var(--info-border) !important; + color: var(--info-text) !important; +} + +#items .btn-group { + gap: 0.4rem; +} + +#items .btn-group .btn { + border-radius: 12px !important; +} + +.btn-group-compact, +.admin-shortcuts .d-flex, +.stack-form, +.page-actions { + gap: 0.4rem; +} + +.btn-group-compact .btn { + padding: 0.3rem 0.55rem; + font-size: 0.82rem; +} + +.btn-group-compact .btn-text { + font-size: 0.78rem; +} + +input[type="file"]::file-selector-button { + background-color: #1b4a29; + color: #f0f0f0; + border: none; + padding: .5em 1em; + border-radius: 4px; + font-weight: bold; + cursor: pointer; + transition: background .2s; +} diff --git a/shopping_app/static/css/split/12-drop.css b/shopping_app/static/css/split/components.css similarity index 58% rename from shopping_app/static/css/split/12-drop.css rename to shopping_app/static/css/split/components.css index 605cb80..d4fca88 100644 --- a/shopping_app/static/css/split/12-drop.css +++ b/shopping_app/static/css/split/components.css @@ -1,6 +1,543 @@ -/* ========================================================= - Dropdown (TS already above) — active -========================================================= */ +.alert-success { + background-color: #225d36 !important; + color: var(--success-text) !important; + border-color: #174428 !important; +} + +.alert-danger { + background-color: #7a1f23 !important; + color: var(--danger-text) !important; + border-color: #531417 !important; +} + +.alert-info { + background-color: var(--primary) !important; + color: var(--primary-text) !important; + border-color: var(--primary-border) !important; +} + +.alert-warning { + background-color: var(--warning) !important; + color: var(--warning-text) !important; + border-color: var(--warning-border) !important; +} + +.alert-light { + background-color: #3a3f44 !important; + color: var(--text-strong) !important; + border-color: var(--dark-480) !important; +} + +.badge.bg-success, +.badge.text-bg-success { + background-color: #225d36 !important; + color: var(--success-text) !important; +} + +.badge.bg-danger, +.badge.text-bg-danger { + background-color: #7a1f23 !important; + color: var(--danger-text) !important; +} + +.badge.bg-info, +.badge.text-bg-info { + background-color: #1d3a4d !important; + color: #eaf6ff !important; +} + +.badge.bg-warning, +.badge.text-bg-warning { + background-color: var(--warning) !important; + color: var(--warning-text) !important; +} + +.badge.bg-secondary, +.badge.text-bg-secondary { + background-color: var(--dark-400) !important; + color: #e2e3e5 !important; +} + +.badge.bg-primary, +.badge.text-bg-primary { + background-color: var(--primary) !important; + color: var(--primary-text) !important; +} + +.badge.bg-light, +.badge.text-bg-light { + background-color: var(--dark-350) !important; + color: #f1f3f5 !important; +} + +.badge.bg-dark, +.badge.text-bg-dark { + background-color: var(--dark-900) !important; + color: var(--text-strong) !important; +} + +.progress-dark { + background-color: var(--dark-700) !important; + border-radius: 20px !important; + overflow: hidden; +} + +.progress { + background-color: #2a2d31 !important; + border-radius: 20px !important; +} + +.progress-bar { + border-radius: 0 !important; + transition: width .4s ease, background-color .4s ease; + background-color: var(--progress-default) !important; +} + +.progress-bar:first-child { + border-top-left-radius: 20px !important; + border-bottom-left-radius: 20px !important; +} + +.progress-bar:last-child { + border-top-right-radius: 20px !important; + border-bottom-right-radius: 20px !important; +} + +.progress-bar.bg-success { + background-color: var(--success) !important; +} + +.progress-bar.bg-danger { + background-color: var(--danger) !important; +} + +.progress-bar.bg-warning { + background-color: var(--warning) !important; + color: #fff !important; +} + +.progress-bar.bg-info { + background-color: #16425a !important; +} + +.progress-label { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + pointer-events: none; + white-space: nowrap; +} + +.card { + background-color: var(--dark-500) !important; + border: 1px solid var(--dark-450) !important; + color: var(--text) !important; +} + +.card-header, +.card-footer { + background-color: var(--dark-650) !important; + border-color: var(--dark-450) !important; + color: #f1f3f5 !important; +} + +.card .table { + border-radius: 0 !important; + overflow: hidden; + margin-bottom: 0; +} + +.table-responsive { + overflow-x: auto; + -webkit-overflow-scrolling: touch; +} + +.table-responsive table { + min-width: 1000px; +} + +.table-dark.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(255, 255, 255, .025); +} + +.table-dark tbody tr:hover { + background-color: rgba(255, 255, 255, .04); +} + +.table-dark thead th { + background-color: var(--dark-800); + color: var(--text-dim); + font-weight: 500; + border-bottom: 1px solid var(--dark-450); +} + +.table-dark td, +.table-dark th { + padding: .6rem .75rem; + vertical-align: middle; + border-top: 1px solid var(--dark-450); +} + +.nav-tabs .nav-link.active, +.nav-tabs .nav-item.show .nav-link { + background-color: var(--dark-500) !important; + color: var(--text-strong) !important; + border-color: var(--dark-450) var(--dark-450) var(--dark-500) !important; +} + +.page-link { + color: #e0e0e0 !important; + background-color: var(--dark-750) !important; + border: 1px solid var(--dark-450) !important; +} + +.page-link:hover, +.page-link:focus { + color: #fff !important; + background-color: var(--dark-400) !important; + border-color: var(--dark-300) !important; +} + +.page-item.active .page-link { + color: #fff !important; + background-color: var(--primary) !important; + border-color: var(--primary-border) !important; +} + +.page-item.disabled .page-link { + color: var(--muted) !important; + background-color: var(--dark-550) !important; + border-color: var(--dark-450) !important; +} + +:root { + --nav-btn-height: 2.35rem; +} + +.app-navbar { + background: transparent; +} + +.app-navbar .container-xxl { + display: flex; + align-items: center; + justify-content: space-between; + gap: .8rem; + row-gap: .55rem; + flex-wrap: nowrap; + border: 1px solid var(--app-border); + background: rgba(6, 15, 27, 0.74); + backdrop-filter: blur(16px); + border-radius: 999px; + min-height: 68px; + box-shadow: var(--app-shadow); +} + +.app-brand { + display: inline-flex; + align-items: center; + gap: .85rem; + min-width: 0; + font-weight: 800; + color: var(--app-text) !important; +} + +.app-brand__icon { + display: inline-grid; + place-items: center; + width: 2.6rem; + height: 2.6rem; + border-radius: 16px; + background: linear-gradient(135deg, rgba(39,208,125,0.22), rgba(74,144,226,0.18)); + box-shadow: inset 0 0 0 1px rgba(255,255,255,0.08); +} + +.app-brand__title { + color: #fff; +} + +.app-brand__accent { + color: #7ce4a8; + margin-left: .3rem; +} + +.app-navbar__meta { + display: flex; + align-items: center; + gap: .5rem; + flex-wrap: wrap; +} + +.app-navbar__actions { + display: flex; + align-items: stretch; + justify-content: flex-end; + gap: .4rem; + flex-wrap: nowrap; + min-width: 0; +} + +.app-navbar__actions .btn, +.app-nav-action { + display: inline-flex; + align-items: center; + justify-content: center; + min-width: 0; + min-height: var(--nav-btn-height); + padding: .42rem .78rem; + font-size: .92rem; + line-height: 1; + white-space: nowrap; + border-radius: .9rem !important; +} + +.app-navbar__actions .btn > span, +.app-nav-action > span { + display: inline-flex; + align-items: center; +} + +.app-user-chip { + display: inline-flex; + align-items: center; + gap: .5rem; + padding: .4rem .45rem .4rem .75rem; + border-radius: 999px; + background: rgba(255,255,255,0.05); + border: 1px solid rgba(255,255,255,0.08); +} + +.app-user-chip__label { + font-size: .75rem; + color: var(--app-text-muted); + text-transform: uppercase; + letter-spacing: .08em; +} + +.app-navbar-toggler { + border-color: rgba(255,255,255,.28); + padding: .3rem .55rem; +} + +.app-navbar-toggler:focus { + box-shadow: 0 0 0 .2rem rgba(255,255,255,.1); +} + +.app-navbar-toggler .navbar-toggler-icon { + filter: invert(1) grayscale(1); +} + +.app-mobile-menu { + display: flex; + align-items: center; +} + +.app-mobile-menu__toggle { + display: inline-flex; + align-items: center; + justify-content: center; + width: 3rem; + height: 3rem; + border-radius: 14px; + background: rgba(255,255,255,0.04); +} + +.app-mobile-menu__panel { + min-width: 14rem; + padding: .4rem; + border-radius: 16px; + background: linear-gradient(180deg, rgba(14,22,35,0.98), rgba(9,15,26,0.98)) !important; + border: 1px solid rgba(255,255,255,0.1); + box-shadow: 0 18px 36px rgba(0,0,0,0.28); +} + +.app-mobile-menu__item { + display: flex; + align-items: center; + gap: .55rem; + min-height: 2.6rem; + padding: .55rem .75rem; + color: #fff; + border-radius: 12px; +} + +.app-mobile-menu__item:hover, +.app-mobile-menu__item:focus { + background: rgba(255,255,255,0.08); + color: #fff; +} + +.list-group-item { + display: flex; + align-items: center; + justify-content: space-between; +} + +.list-group-flush > .list-group-item:first-child, +.list-group-flush > .list-group-item:last-child { + border-radius: 0 !important; +} + +#items li.hide-purchased { + display: none !important; +} + +#mass-add-list li { + transition: background .2s; +} + +#mass-add-list li.active { + background: #198754 !important; + color: #fff !important; + border: 1px solid #000 !important; +} + +.quantity-input { + width: 60px; + background: var(--dark-400); + color: #fff; + border: 1px solid var(--dark-300); + border-radius: 4px; + text-align: center; +} + +.add-btn { + margin-left: 10px; +} + +.quantity-controls { + min-width: 120px; + display: flex; + align-items: center; + justify-content: flex-end; + gap: 4px; +} + +.toast { + animation: fadeInUp .5s ease; +} + +@keyframes fadeInUp { + from { + opacity: 0; + transform: translateY(20px); + } + + to { + opacity: 1; + transform: translateY(0); + } +} + +.toast:not([class*="text-bg-"]) { + background-color: var(--dark-500) !important; + color: #f1f1f1 !important; + border: 1px solid var(--dark-450) !important; + animation: fadeInUp .5s ease; +} + +.toast .toast-body { + color: inherit !important; +} + +.toast .btn-close { + filter: invert(1) grayscale(100%) brightness(200%); +} + +.toast.text-bg-primary { + background-color: var(--info) !important; + color: var(--info-text) !important; + border-color: var(--info-border) !important; +} + +.toast.text-bg-info { + background-color: var(--info) !important; + color: var(--info-text) !important; + border-color: var(--info-border) !important; +} + +.toast.text-bg-success { + background-color: var(--success) !important; + color: var(--success-text) !important; + border-color: var(--success-border) !important; +} + +.toast.text-bg-warning { + background-color: var(--warning) !important; + color: var(--warning-text) !important; + border-color: var(--warning-border) !important; +} + +.toast.text-bg-danger { + background-color: var(--danger) !important; + color: var(--danger-text) !important; + border-color: var(--danger-border) !important; +} + +.toast-body { + color: #fff !important; + font-weight: 500 !important; +} + +.info-bar-fixed { + width: 100%; + color: var(--text-strong); + background-color: var(--dark-700); + border-radius: 12px 12px 0 0; + text-align: center; + padding: 10px 10px; + font-size: .95rem; + box-sizing: border-box; + margin-top: 2rem; + box-shadow: 0 -1px 4px rgba(0, 0, 0, .25); +} + +@media (max-width: 768px) { + .info-bar-fixed { + position: static; + font-size: .85rem; + padding: 8px 4px; + border-radius: 0; + } +} + +.modal-content { + background-color: var(--dark-470) !important; + color: #f1f1f1 !important; + border: 1px solid var(--dark-450) !important; +} + +.modal-header, +.modal-footer { + background-color: var(--dark-650) !important; + border-color: var(--dark-450) !important; +} + +#chartFullscreenModal .modal-dialog { + max-width: 100vw; + width: 100vw; + margin: 0; +} + +#chartFullscreenModal .modal-content { + height: 100vh; + border-radius: 0; +} + +#chartFullscreenModal .modal-body { + display: flex; + flex: 1 1 auto; + padding: 0; + overflow: hidden; +} + +#chartFullscreenCanvas { + display: block; + width: 100%; + height: 100%; +} + .ts-dropdown .active { background-color: var(--dark-300) !important; } @@ -19,52 +556,6 @@ --bs-bg-opacity: 1 !important; } -.btn-outline-light { - color: #f8f9fa !important; - border-color: #f8f9fa !important; - background-color: transparent !important; - /* brak białego tła domyślnie */ -} - -.btn-outline-light:hover, -.btn-outline-light:focus { - background-color: #6c757d !important; - /* szare, jak wcześniej */ - color: #fff !important; - border-color: #6c757d !important; -} - -.btn-outline-light:active, -.btn-outline-light.active, -.show>.btn-outline-light.dropdown-toggle { - background-color: #5a6268 !important; - /* ciemniejsze szare na active */ - color: #fff !important; - border-color: #545b62 !important; -} - -.btn-outline-info { - color: var(--info) !important; - border-color: var(--info) !important; - background-color: transparent !important; -} - -.btn-outline-info:hover, -.btn-outline-info:focus { - background-color: #1d4d8c !important; - border-color: #1d4d8c !important; - color: var(--info-text) !important; -} - -.btn-outline-info:active, -.btn-outline-info.active, -.show>.btn-outline-info.dropdown-toggle { - background-color: var(--info) !important; - border-color: var(--info-border) !important; - color: var(--info-text) !important; -} - -/* Tekstowe kolory */ .text-success { color: var(--success) !important; } @@ -81,7 +572,6 @@ color: var(--danger) !important; } - .settings-category-card { background: rgba(255,255,255,.03); border: 1px solid rgba(255,255,255,.09); @@ -142,13 +632,13 @@ margin-left: .5rem; } -@media (min-width: 992px) { +@media (min-width: 992px){ .settings-category-name { font-size: 1.08rem; } } -@media (max-width: 767.98px) { +@media (max-width: 767.98px){ .settings-category-card { padding: .9rem; } @@ -173,7 +663,6 @@ } } -/* ========== Kolorowe wskaźniki pod pickerem ========== */ .color-indicators .indicator { display: grid; grid-template-columns: auto 1fr auto; @@ -188,7 +677,6 @@ box-shadow: inset 0 0 0 1px rgba(0,0,0,.25); } -/* ========== Swatch + zapisy heksowe ========== */ .swatch { width: 16px; height: 16px; @@ -203,59 +691,17 @@ letter-spacing: .2px; } -/* ========== OCR textarea ========== */ .settings-ocr-textarea { font: inherit; line-height: 1.45; } -/* ========== Odznaka poziomu czułości ========== */ .sens-badge { font-weight: 600; } -.sens-low { background: rgba(108,117,125,.25); color: #ced4da; } /* szary */ -.sens-mid { background: rgba(13,110,253,.25); color: #9ec5fe; } /* niebieski */ -.sens-high { background: rgba(220,53,69,.25); color: #f1aeb5; } /* czerwony */ - -/* ========================================================= - COMPACT: przyciski akcji na listach - - Desktop: standard Bootstrap - - <=576px: kompakt -========================================================= */ - -/* <=420px: tylko emoji */ -@media (max-width: 420px) { - .btn-group-compact .btn-text { - display: none !important; - } - - .btn-group-compact .btn { - padding: 0.22rem 0.45rem; - min-width: auto; - font-size: 0.9rem; - line-height: 1.1; - } -} - -/* 421–576px: lekko ciaśniej, ale tekst zostaje */ -@media (min-width: 421px) and (max-width: 576px) { - .btn-group-compact .btn { - padding: 0.24rem 0.45rem; - font-size: 0.82rem; - line-height: 1.1; - } - - .btn-group-compact .btn-text { - font-size: 0.75rem; - } -} - - -/* ================================================ - RESPONSIVE NAVBAR - ================================================ */ - -/* Wąskie ekrany (np. iPhone 11) */ -@media (max-width: 420px) { +.sens-low { background: rgba(108,117,125,.25); color: #ced4da; } +.sens-mid { background: rgba(13,110,253,.25); color: #9ec5fe; } +.sens-high { background: rgba(220,53,69,.25); color: #f1aeb5; } +@media (max-width: 420px){ .navbar .container-fluid { gap: 4px; } @@ -293,9 +739,7 @@ } } - -/* Małe ekrany (np. 421-576px) */ -@media (min-width: 421px) and (max-width: 576px) { +@media (min-width: 421px) and (max-width: 576px){ .navbar .container-fluid { gap: 8px; } @@ -325,12 +769,12 @@ } } -@media (max-width: 420px) { +@media (max-width: 420px){ .user-label-desktop { display: none !important; } .user-label-mobile { display: inline !important; } } -@media (min-width: 421px) { +@media (min-width: 421px){ .user-label-desktop { display: inline !important; } .user-label-mobile { display: none !important; } } @@ -359,14 +803,11 @@ content: none !important; } - -/* Hover efekt */ .category-dot:hover { transform: scale(1.3) !important; box-shadow: 0 2px 6px rgba(0,0,0,0.4) !important; } - .list-title { white-space: nowrap !important; overflow: hidden !important; @@ -375,14 +816,12 @@ display: inline-block !important; } -/* Bardzo małe ekrany */ -@media (max-width: 420px) { +@media (max-width: 420px){ .list-title { max-width: 60% !important; } } -/* ===== 2026 app refresh ===== */ :root { --app-bg: #07111f; --app-bg-soft: #0d1b2d; @@ -427,8 +866,7 @@ body.app-body { overflow-x: hidden; } - -@supports (padding: env(safe-area-inset-top)) { +@supports (padding: env(safe-area-inset-top)){ html, body { min-height: calc(100% + env(safe-area-inset-top, 0px) + env(safe-area-inset-bottom, 0px)); } @@ -447,65 +885,6 @@ body.app-body { backdrop-filter: blur(12px); } -.app-navbar { - background: transparent; -} - -.app-navbar .container-xxl { - border: 1px solid var(--app-border); - background: rgba(6, 15, 27, 0.74); - backdrop-filter: blur(16px); - border-radius: 999px; - min-height: 68px; - box-shadow: var(--app-shadow); -} - -.app-brand { - display: inline-flex; - align-items: center; - gap: 0.85rem; - font-weight: 800; - color: var(--app-text) !important; -} - -.app-brand__icon { - display: inline-grid; - place-items: center; - width: 2.6rem; - height: 2.6rem; - border-radius: 16px; - background: linear-gradient(135deg, rgba(39,208,125,0.22), rgba(74,144,226,0.18)); - box-shadow: inset 0 0 0 1px rgba(255,255,255,0.08); -} - -.app-brand__title { color: #ffffff; } -.app-brand__accent { color: #7ce4a8; margin-left: 0.3rem; } - -.app-navbar__actions, -.app-navbar__meta { - display: flex; - align-items: center; - gap: 0.5rem; - flex-wrap: wrap; -} - -.app-user-chip { - display: inline-flex; - align-items: center; - gap: 0.5rem; - padding: 0.4rem 0.45rem 0.4rem 0.75rem; - border-radius: 999px; - background: rgba(255,255,255,0.05); - border: 1px solid rgba(255,255,255,0.08); -} - -.app-user-chip__label { - font-size: 0.75rem; - color: var(--app-text-muted); - text-transform: uppercase; - letter-spacing: 0.08em; -} - .app-main { flex: 1 0 auto; padding: 1rem 0 2.5rem; @@ -632,37 +1011,6 @@ h1, h2, h3, h4, h5, h6 { color: #1c1b17 !important; } -.btn { - border-radius: 14px; - font-weight: 600; - padding: 0.7rem 1rem; - box-shadow: none; -} - -.btn-sm { - padding: 0.55rem 0.85rem; - border-radius: 12px; -} - -.btn-success, -.btn-outline-success:hover { - background: linear-gradient(135deg, #29d17d, #1ea860); - border-color: rgba(41,209,125,0.9); -} - -.btn-outline-light, -.btn-outline-secondary, -.btn-outline-warning, -.btn-outline-primary, -.btn-outline-success { - background: rgba(255,255,255,0.02); -} - -.btn:hover, -.btn:focus { - transform: translateY(-1px); -} - .form-control, .form-select, .input-group-text { @@ -730,20 +1078,6 @@ h1, h2, h3, h4, h5, h6 { padding: 1rem 1rem; } -#items .btn-group { - gap: 0.4rem; -} - -#items .btn-group .btn { - border-radius: 12px !important; -} - -.large-checkbox { - width: 1.35rem; - height: 1.35rem; - accent-color: #29d17d; -} - #share-card .badge, #total-expense1, #total-expense2, @@ -789,26 +1123,13 @@ hr { border-color: rgba(255,255,255,0.08); } -@media (max-width: 991.98px) { +@media (max-width: 991.98px){ .app-header { padding-top: 0.55rem; } - - .app-navbar .container-xxl { - border-radius: 26px; - padding-top: 0.8rem; - padding-bottom: 0.8rem; - align-items: flex-start; - } - - .app-navbar__actions, - .app-navbar__meta { - width: 100%; - justify-content: flex-start; - } } -@media (max-width: 767.98px) { +@media (max-width: 767.98px){ .app-main { padding-top: 0.7rem; } diff --git a/shopping_app/static/css/split/04-form.css b/shopping_app/static/css/split/forms.css similarity index 85% rename from shopping_app/static/css/split/04-form.css rename to shopping_app/static/css/split/forms.css index b2dcc56..0af09d9 100644 --- a/shopping_app/static/css/split/04-form.css +++ b/shopping_app/static/css/split/forms.css @@ -1,6 +1,3 @@ -/* ========================================================= - Forms -========================================================= */ .form-select, .form-control, textarea.form-control { @@ -25,7 +22,6 @@ textarea.form-control:disabled { cursor: not-allowed; } -/* Switch */ .form-switch .form-check-input { background-color: var(--dark-400) !important; border-color: var(--dark-300) !important; @@ -36,69 +32,12 @@ textarea.form-control:disabled { border-color: var(--primary-border) !important; } -/* Placeholders */ .form-control::placeholder, .bg-dark .form-control::placeholder { color: #aaa !important; opacity: 1 !important; } -/* Paired corners (utility) */ -#tempToggle { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.create-list-input-group > input.form-control { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -/* XXL custom checkbox */ -input[type="checkbox"].large-checkbox { - appearance: none; - -webkit-appearance: none; - -moz-appearance: none; - width: 1.5em; - height: 1.5em; - margin: 0; - padding: 0; - outline: none; - background: none; - cursor: pointer; - position: relative; - vertical-align: middle; -} - -input[type="checkbox"].large-checkbox::before { - content: '✗'; - color: #dc3545; - font-size: 1.6em; - font-weight: 700; - position: absolute; - inset: 0; - display: flex; - align-items: center; - justify-content: center; - line-height: 1; - transition: color .2s; -} - -input[type="checkbox"].large-checkbox:checked::before { - content: '✓'; - color: #fff; -} - -input[type="checkbox"].large-checkbox:disabled::before { - opacity: .5; - cursor: not-allowed; -} - -input[type="checkbox"].large-checkbox:disabled { - cursor: not-allowed; -} - -/* Tom-Select / TS */ .tom-dark .ts-control { background-color: var(--dark-700) !important; color: #fff !important; @@ -137,3 +76,63 @@ td select.tom-dark { max-width: 100%; box-sizing: border-box; } + +.large-checkbox, +input[type="checkbox"].large-checkbox { + width: 1.2rem; + height: 1.2rem; +} + +.large-checkbox { + accent-color: #29d17d; + transform: none; + transform-origin: center; +} + +input[type="checkbox"].large-checkbox { + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; + margin: 0; + padding: 0; + outline: none; + background: none; + cursor: pointer; + position: relative; + vertical-align: middle; +} + +input[type="checkbox"].large-checkbox::before { + content: '✗'; + color: #dc3545; + font-size: 1.6em; + font-weight: 700; + position: absolute; + inset: 0; + display: flex; + align-items: center; + justify-content: center; + line-height: 1; + transition: color .2s; +} + +input[type="checkbox"].large-checkbox:checked::before { + content: '✓'; + color: #fff; +} + +input[type="checkbox"].large-checkbox:disabled::before { + opacity: .5; + cursor: not-allowed; +} + +input[type="checkbox"].large-checkbox:disabled { + cursor: not-allowed; +} + +#createListTempToggle, +.create-list-temp-toggle, +#tempToggle { + border-top-left-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} diff --git a/shopping_app/static/css/split/layout.css b/shopping_app/static/css/split/layout.css new file mode 100644 index 0000000..02a4c72 --- /dev/null +++ b/shopping_app/static/css/split/layout.css @@ -0,0 +1,2286 @@ +:root { + --app-shadow: 0 8px 24px rgba(0, 0, 0, 0.18); + --app-radius: 14px; +} + +body.app-body { + font-size: 0.96rem; + line-height: 1.4; +} + +.app-header { + padding: 0.35rem 0 0; +} + +.app-navbar .container-xxl { + min-height: 54px; + border-radius: 18px; + box-shadow: 0 8px 22px rgba(0,0,0,0.16); +} + +.app-brand { + gap: 0.6rem; + font-size: 0.98rem; +} + +.app-brand__icon { + width: 2.1rem; + height: 2.1rem; + border-radius: 12px; + font-size: 1rem; +} + +.app-brand__title, +.app-brand__accent { + font-size: 0.98rem; +} + +.app-user-chip { + padding: 0.28rem 0.38rem 0.28rem 0.58rem; + gap: 0.4rem; +} + +.app-user-chip__label { + font-size: 0.68rem; + letter-spacing: 0.06em; +} + +.app-main { + padding: 0.65rem 0 1.4rem; +} + +.app-content-frame { + padding-top: 0.1rem; +} + +.app-footer { + margin-top: auto; + padding: 0.5rem 0 calc(0.85rem + env(safe-area-inset-bottom, 0px)); +} + +.app-footer__inner { + padding-top: 0.75rem; +} + +h1, h2, h3, h4, h5, h6 { + letter-spacing: -0.015em; + line-height: 1.15; +} + +h1, .h1 { font-size: clamp(1.45rem, 2vw, 1.9rem); } +h2, .h2 { font-size: clamp(1.2rem, 1.8vw, 1.5rem); } +h3, .h3 { font-size: clamp(1.02rem, 1.5vw, 1.2rem); } + +.card, +.modal-content, +.dropdown-menu, +.list-group-item, +.table, +.alert, +.pagination .page-link, +.nav-tabs, +.input-group-text, +.form-control, +.form-select, +.btn, +.progress, +.toast { + border-radius: 12px; +} + +.card, +.modal-content, +.table-responsive, +.alert, +.list-group-item, +.progress, +.toast { + box-shadow: 0 4px 14px rgba(0,0,0,0.12); + backdrop-filter: blur(8px); +} + +.card-header, +.card-footer, +.card-body, +.modal-header, +.modal-body, +.modal-footer { + padding: 0.75rem 0.85rem; +} + +.table > :not(caption) > * > * { + padding: 0.62rem 0.7rem; +} + +.table-responsive table { + min-width: 860px; +} + +.list-group { + gap: 0.5rem; +} + +.list-group-item { + padding: 0.72rem 0.8rem; +} + +.alert { + padding: 0.7rem 0.85rem; + margin-bottom: 0.8rem; +} + +.badge { + font-weight: 600; + padding: 0.38em 0.58em; +} + +.form-control, +.form-select, +.input-group-text { + min-height: 40px; + padding: 0.5rem 0.72rem; +} + +textarea.form-control { + min-height: 96px; +} + +.progress { + min-height: 0.8rem; +} + +.progress-label { + font-size: 0.72rem; + font-weight: 600; +} + +.nav-tabs { + gap: 0.35rem; + padding: 0.25rem; +} + +.nav-tabs .nav-link { + padding: 0.55rem 0.7rem; + border-radius: 10px; +} + +#items .list-group-item { + border-radius: 12px !important; + padding: 0.75rem 0.8rem; +} + +.toast { + padding: 0; +} + +.endpoint-main_page .card h2, +.endpoint-expenses .card h2, +.endpoint-edit_my_list .card h2, +.endpoint-login .card h2, +.endpoint-system_auth .card h2, +.endpoint-admin_panel .card h2, +[class*="endpoint-admin_"] .card h2 { + margin-bottom: 0.35rem; +} + +.endpoint-main_page .card p, +.endpoint-expenses .card p, +.endpoint-edit_my_list .card p, +.endpoint-login .card p, +.endpoint-system_auth .card p, +.endpoint-admin_panel .card p, +[class*="endpoint-admin_"] .card p { + margin-bottom: 0; +} + +@media (max-width: 991.98px){ + .app-navbar .container-xxl { + border-radius: 16px; + padding-top: 0.55rem; + padding-bottom: 0.55rem; + } +} + +@media (max-width: 767.98px){ + body.app-body { + font-size: 0.93rem; + } + + .app-header { + padding-top: 0.25rem; + } + + .app-main { + padding-top: 0.45rem; + } + + .app-navbar .container-xxl { + min-height: 50px; + border-radius: 14px; + } + + .app-brand { + gap: 0.45rem; + font-size: 0.92rem; + } + + .app-brand__icon { + width: 1.9rem; + height: 1.9rem; + border-radius: 10px; + } + + .app-user-chip { + padding: 0.22rem 0.32rem 0.22rem 0.5rem; + } + + .card-header, + .card-footer, + .card-body, + .modal-header, + .modal-body, + .modal-footer, + .list-group-item, + .table > :not(caption) > * > * { + padding-left: 0.68rem; + padding-right: 0.68rem; + } + + .list-group-item, + #items .list-group-item { + padding-top: 0.62rem; + padding-bottom: 0.62rem; + } + + .btn-group, + .d-flex.gap-2, + .d-flex.gap-3 { + gap: 0.35rem !important; + } + + .btn-group > .btn, + .btn.w-100, + .input-group > .btn, + .btn, + .form-control, + .form-select, + .input-group-text { + min-height: 38px; + } + + .input-group { + gap: 0.4rem; + } + + .table-responsive { + border-radius: 12px; + } + + .progress-label { + font-size: 0.66rem; + } + + .app-footer { + padding-bottom: calc(0.8rem + env(safe-area-inset-bottom, 0px)); + } +} + +:root { + --ui-surface-1: rgba(10, 14, 24, 0.78); + --ui-surface-2: rgba(18, 25, 39, 0.92); + --ui-surface-3: rgba(33, 44, 67, 0.88); + --ui-border: rgba(255, 255, 255, 0.12); + --ui-border-strong: rgba(255, 255, 255, 0.18); + --ui-text-soft: rgba(255, 255, 255, 0.72); + --ui-success-soft: rgba(25, 135, 84, 0.18); + --ui-warning-soft: rgba(255, 193, 7, 0.16); +} + +.card, +.table-responsive, +.modal-content, +.dropdown-menu, +.toast, +.alert, +.list-group-item { + border: 1px solid var(--ui-border); +} + +.card.bg-dark, +.modal-content.bg-dark, +.dropdown-menu-dark, +.list-group-item.bg-dark, +.table-dark { + background: linear-gradient(180deg, var(--ui-surface-2), rgba(8, 12, 20, 0.96)) !important; +} + +.card.bg-secondary.bg-opacity-10, +.admin-shortcuts, +#bulkBar .card { + background: linear-gradient(180deg, rgba(22, 29, 45, 0.88), rgba(12, 18, 30, 0.88)) !important; +} + +.form-label, +label.form-label { + display: inline-flex; + align-items: center; + gap: 0.35rem; + margin-bottom: 0.45rem; + font-size: 0.92rem; + font-weight: 600; + color: rgba(255,255,255,0.84); +} + +.form-text, +.text-secondary, +.text-white-50 { + color: var(--ui-text-soft) !important; +} + +.form-control, +.form-select, +.input-group-text, +textarea.form-control, +.form-control-color { + background: rgba(255,255,255,0.04) !important; + border: 1px solid var(--ui-border-strong) !important; + color: #fff !important; + box-shadow: none; + transition: border-color .18s ease, box-shadow .18s ease, background-color .18s ease, transform .18s ease; +} + +.form-control::placeholder, +textarea.form-control::placeholder { + color: rgba(255,255,255,0.42); +} + +.form-control:focus, +.form-select:focus, +textarea.form-control:focus, +.form-check-input:focus, +.btn:focus, +.btn:focus-visible { + border-color: rgba(25, 135, 84, 0.6) !important; + box-shadow: 0 0 0 0.2rem rgba(25, 135, 84, 0.16) !important; +} + +.input-group > .form-control, +.input-group > .form-select, +.input-group > .btn, +.input-group > .input-group-text { + min-height: 42px; +} + +textarea.form-control { + line-height: 1.45; + resize: vertical; +} + +.form-check { + padding: 0.65rem 0.9rem 0.65rem 2.8rem; + background: rgba(255,255,255,0.04); + border: 1px solid var(--ui-border); + border-radius: 12px; +} + +.form-check.form-switch { + min-height: 42px; +} + +.form-check-input { + background-color: rgba(255,255,255,0.14); + border-color: rgba(255,255,255,0.22); +} + +.table-toolbar { + display: flex; + justify-content: space-between; + align-items: center; + flex-wrap: wrap; + gap: 0.75rem; + margin-bottom: 0.85rem; +} + +.table-toolbar__search { + max-width: 420px; + width: 100%; +} + +.table-toolbar__meta { + min-width: 120px; + text-align: right; +} + +.table { + --bs-table-bg: transparent; + --bs-table-striped-bg: rgba(255,255,255,0.02); + --bs-table-hover-bg: transparent; + --bs-table-border-color: rgba(255,255,255,0.08); + margin-bottom: 0; +} + +.table > :not(caption) > * > * { + border-bottom-width: 1px; + vertical-align: middle; +} + +.table thead th { + position: sticky; + top: 0; + z-index: 1; + background: rgba(11, 17, 28, 0.98) !important; + text-transform: uppercase; + letter-spacing: 0.05em; + font-size: 0.74rem; + color: rgba(255,255,255,0.72); + border-bottom-color: rgba(255,255,255,0.14); +} + +.table tbody tr { + transition: background-color .15s ease, transform .15s ease; +} + +.table tbody tr:hover > * { + background: rgba(255,255,255,0.04) !important; +} + +.table td code, +.api-code-block code { + display: inline-block; + padding: 0.28rem 0.48rem; + border-radius: 8px; + background: rgba(255,255,255,0.08); + color: #d6f5e6; +} + +.api-code-block { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; +} + +.pagination .page-link { + background: rgba(255,255,255,0.03); + border-color: var(--ui-border); + color: #fff; +} + +.pagination .page-item.active .page-link { + background: rgba(25, 135, 84, 0.95); + border-color: rgba(25, 135, 84, 0.95); +} + +.dropdown-item { + border-radius: 8px; +} + +.dropdown-item:hover, +.dropdown-item:focus { + background: rgba(255,255,255,0.08); +} + +form[data-unsaved-warning="true"].is-dirty { + position: relative; +} + +form[data-unsaved-warning="true"].is-dirty::after { + content: "Niezapisane zmiany"; + position: sticky; + bottom: 0.75rem; + left: 100%; + display: inline-flex; + margin-top: 1rem; + padding: 0.38rem 0.68rem; + border-radius: 999px; + background: rgba(255, 193, 7, 0.18); + border: 1px solid rgba(255, 193, 7, 0.36); + color: #ffe08a; + font-size: 0.76rem; + font-weight: 700; +} + +.ui-password-toggle.is-active { + background: rgba(255,255,255,0.1); +} + +.app-content-frame > h2 + .card, +.app-content-frame > .card:first-of-type { + margin-top: 0; +} + +@media (max-width: 767.98px){ + .table-toolbar { + align-items: stretch; + } + + .table-toolbar__meta { + text-align: left; + } + + .admin-shortcuts .btn { + flex: 1 1 calc(50% - 0.55rem); + } + + form[data-unsaved-warning="true"].is-dirty::after { + left: auto; + bottom: auto; + position: static; + margin-top: 0.75rem; + } +} + +.admin-page-head { + display: flex; + justify-content: space-between; + align-items: flex-start; + gap: 0.85rem; + flex-wrap: wrap; +} + +[data-admin-nav-body] { + display: flex; +} + +@media (max-width: 767.98px){ + [data-admin-nav-body] { + display: none; + width: 100%; + } + + [data-admin-nav-body].is-open { + display: flex; + } + + .admin-page-head > * { + width: 100%; + } + + .admin-page-head .btn { + width: 100%; + } + + .table-responsive table.table, + .is-admin-area table.table { + min-width: 100%; + } + + .table-responsive table.table thead, + .is-admin-area table.table thead { + display: none; + } + + .table-responsive table.table, + .table-responsive table.table tbody, + .table-responsive table.table tr, + .table-responsive table.table td, + .is-admin-area table.table, + .is-admin-area table.table tbody, + .is-admin-area table.table tr, + .is-admin-area table.table td { + display: block; + width: 100%; + } + + .table-responsive table.table tbody, + .is-admin-area table.table tbody { + display: grid; + gap: 0.8rem; + } + + .table-responsive table.table tr, + .is-admin-area table.table tr { + border: 1px solid rgba(255,255,255,0.08); + border-radius: 16px; + padding: 0.35rem 0.55rem; + background: rgba(255,255,255,0.02); + box-shadow: 0 8px 24px rgba(0,0,0,0.16); + } + + .table-responsive table.table td, + .is-admin-area table.table td { + border: 0; + padding: 0.5rem 0.35rem; + } + + .table-responsive table.table td::before, + .is-admin-area table.table td::before { + content: attr(data-label); + display: block; + margin-bottom: 0.18rem; + font-size: 0.72rem; + text-transform: uppercase; + letter-spacing: 0.04em; + color: rgba(255,255,255,0.58); + } + + .table-responsive table.table td:last-child, + .is-admin-area table.table td:last-child { + padding-bottom: 0.2rem; + } + + .table-responsive table.table td .btn, + .table-responsive table.table td .input-group, + .table-responsive table.table td .form-select, + .table-responsive table.table td .form-control, + .is-admin-area table.table td .btn, + .is-admin-area table.table td .input-group, + .is-admin-area table.table td .form-select, + .is-admin-area table.table td .form-control { + width: 100%; + } + + .table-responsive table.table td .d-flex, + .table-responsive table.table td .btn-group, + .is-admin-area table.table td .d-flex, + .is-admin-area table.table td .btn-group { + flex-wrap: wrap; + } +} + +.list-action-block .input-group .btn, +.list-action-block .btn, +.endpoint-shared_list .input-group .btn, +.endpoint-shared_list .list-share-page .btn { + min-height: 44px; +} + +.endpoint-shared_list .input-group, +.list-action-block .input-group { + align-items: stretch; +} + +@media (max-width: 767.98px){ + .endpoint-admin_panel .table-responsive table thead { + display: none; + } + .endpoint-admin_panel .table-responsive table, + .endpoint-admin_panel .table-responsive tbody, + .endpoint-admin_panel .table-responsive tr, + .endpoint-admin_panel .table-responsive td { + display: block; + width: 100%; + } + .endpoint-admin_panel .table-responsive tr { + border: 1px solid rgba(255,255,255,.08); + border-radius: 16px; + margin-bottom: 1rem; + padding: .75rem; + background: rgba(255,255,255,.02); + } + .endpoint-admin_panel .table-responsive td { + border: 0; + padding: .35rem 0; + } +} + +.table-responsive {overflow-x: clip;} +.table-responsive table {width:100%; min-width:0 !important;} +@media (max-width: 767.98px){ + .app-content-frame .table-responsive table.table, + .app-content-frame table.table:not(.keep-horizontal) {display:block; width:100%;} + .app-content-frame .table-responsive table.table thead, + .app-content-frame table.table:not(.keep-horizontal) thead {display:none;} + .app-content-frame .table-responsive table.table tbody, + .app-content-frame .table-responsive table.table tr, + .app-content-frame .table-responsive table.table td, + .app-content-frame table.table:not(.keep-horizontal) tbody, + .app-content-frame table.table:not(.keep-horizontal) tr, + .app-content-frame table.table:not(.keep-horizontal) td {display:block; width:100%;} + .app-content-frame .table-responsive table.table tr, + .app-content-frame table.table:not(.keep-horizontal) tr {border:1px solid var(--dark-300); border-radius:1rem; margin-bottom:.85rem; padding:.35rem .25rem; background:var(--dark-700);} + .app-content-frame .table-responsive table.table td, + .app-content-frame table.table:not(.keep-horizontal) td {border:none; padding:.5rem .75rem; text-align:left !important;} + .app-content-frame .table-responsive table.table td::before, + .app-content-frame table.table:not(.keep-horizontal) td::before {content:attr(data-label); display:block; font-size:.72rem; color:#9ba3aa; margin-bottom:.2rem; text-transform:uppercase;} + .app-content-frame .table-responsive {overflow:visible;} +} + +.admin-table-responsive { + overflow-x: auto !important; + -webkit-overflow-scrolling: touch; +} + +.admin-table-responsive--wide table { + min-width: 1180px; +} + +.admin-table-responsive--full table { + width: 100% !important; + min-width: 100% !important; + table-layout: auto; +} + +.endpoint-edit_categories .admin-table-responsive--full table th, +.endpoint-edit_categories .admin-table-responsive--full table td, +.endpoint-api_tokens .admin-table-responsive--full table th, +.endpoint-api_tokens .admin-table-responsive--full table td { + white-space: normal; + vertical-align: middle; +} + +.endpoint-edit_categories .admin-table-responsive--full table th:last-child, +.endpoint-edit_categories .admin-table-responsive--full table td:last-child { + width: 30%; +} + +.is-admin-area .table-responsive td, +.is-admin-area .table-responsive th { + white-space: normal; +} + +.api-chip { + display: inline-block; + max-width: 22rem; + padding: .28rem .55rem; + border-radius: .75rem; + background: rgba(255,255,255,.08); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + vertical-align: middle; +} + +.api-chip--wrap { + white-space: normal; + overflow-wrap: anywhere; + word-break: break-word; +} + +.form-check-spaced { + display: flex; + align-items: flex-start; + gap: .7rem; + padding-left: 0; + margin-bottom: .65rem; +} + +.form-check-spaced .form-check-input { + position: static; + margin: .2rem 0 0; + flex: 0 0 auto; +} + +.form-check-spaced .form-check-label { + margin: 0; + line-height: 1.35; +} + +.list-item-actions { + gap: .4rem; + flex-wrap: wrap; + justify-content: flex-end; +} + +.list-item-actions .btn { + border-radius: .8rem !important; + min-width: 2.6rem; +} + +.share-submit-btn { + min-width: 8rem; + font-weight: 600; +} + +.endpoint-list_share .input-group, +.endpoint-shared_list .input-group { + align-items: stretch; +} + +.endpoint-list_share .input-group > .form-control, +.endpoint-list_share .input-group > .btn, +.endpoint-shared_list .input-group > .form-control, +.endpoint-shared_list .input-group > .btn { + min-height: 46px; +} + +.endpoint-list_share .input-group > .btn, +.endpoint-shared_list .input-group > .btn { + border-top-left-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} + +@media (max-width: 767.98px){ + .table-responsive { + overflow-x: auto !important; + } + + .is-admin-area .table-responsive table.table.keep-horizontal, + .endpoint-api_tokens .table-responsive table.table, + .endpoint-admin_panel .table-responsive table.table, + .endpoint-lists_access .table-responsive table.table, + .endpoint-user_management .table-responsive table.table, + .endpoint-edit_categories .table-responsive table.table { + display: table; + width: max-content; + min-width: 980px !important; + } + + .endpoint-api_tokens .admin-table-responsive--full table.table, + .endpoint-edit_categories .admin-table-responsive--full table.table { + width: 100%; + min-width: 980px !important; + } + + .is-admin-area .table-responsive table.table.keep-horizontal thead, + .endpoint-api_tokens .table-responsive table.table thead, + .endpoint-admin_panel .table-responsive table.table thead, + .endpoint-lists_access .table-responsive table.table thead, + .endpoint-user_management .table-responsive table.table thead { + display: table-header-group; + } + + .is-admin-area .table-responsive table.table.keep-horizontal tbody, + .endpoint-api_tokens .table-responsive table.table tbody, + .endpoint-admin_panel .table-responsive table.table tbody, + .endpoint-lists_access .table-responsive table.table tbody, + .endpoint-user_management .table-responsive table.table tbody { + display: table-row-group; + } + + .is-admin-area .table-responsive table.table.keep-horizontal tr, + .endpoint-api_tokens .table-responsive table.table tr, + .endpoint-admin_panel .table-responsive table.table tr, + .endpoint-lists_access .table-responsive table.table tr, + .endpoint-user_management .table-responsive table.table tr { + display: table-row; + border: 0; + padding: 0; + background: transparent; + box-shadow: none; + } + + .is-admin-area .table-responsive table.table.keep-horizontal td, + .endpoint-api_tokens .table-responsive table.table td, + .endpoint-admin_panel .table-responsive table.table td, + .endpoint-lists_access .table-responsive table.table td, + .endpoint-user_management .table-responsive table.table td { + display: table-cell; + width: auto; + border-top: 1px solid var(--dark-450); + padding: .65rem .75rem; + } + + .endpoint-api_tokens .table-responsive table.table td::before, + .endpoint-admin_panel .table-responsive table.table td::before, + .endpoint-lists_access .table-responsive table.table td::before, + .endpoint-user_management .table-responsive table.table td::before { + display: none; + content: none; + } +} + +@media (max-width: 575.98px){ + .share-submit-btn { + min-width: 6.75rem; + } + + .list-item-actions { + width: 100%; + justify-content: flex-start; + margin-top: .5rem; + } +} + +.form-switch-compact .form-check-input { + width: 2.35rem; + height: 1.2rem; + margin-top: .1rem; +} +.form-switch-compact .form-check-label { + padding-top: .02rem; +} +.form-check-spaced { + gap: .45rem; +} +.access-editor .input-group > .form-control, +.access-editor .input-group > .btn { + min-height: 40px; +} +.endpoint-admin_edit_categories .table-responsive, +.endpoint-admin_lists_access .table-responsive, +.endpoint-admin_settings .table-responsive, +.endpoint-list_products .table-responsive { + overflow-x: auto !important; +} +.endpoint-admin_edit_categories .table-responsive table.table.keep-horizontal, +.endpoint-admin_lists_access .table-responsive table.table.keep-horizontal, +.endpoint-list_products .table-responsive table.table.keep-horizontal { + min-width: 1000px !important; +} +.endpoint-admin_edit_categories .app-content-frame, +.endpoint-admin_lists_access .app-content-frame, +.endpoint-admin_settings .app-content-frame, +.endpoint-list_products .app-content-frame { + overflow: visible; +} +@media (max-width: 767.98px){ + .form-switch-compact .form-check-input { width: 2rem; height: 1.05rem; } +} + +.admin-table-responsive table { + width: 100%; + min-width: 100%; +} +.admin-table-responsive--wide table, +.table-responsive .keep-horizontal { + width: max-content; + min-width: 100%; +} +.endpoint-admin_panel .admin-table-responsive--wide table { + width: 100%; + min-width: 100%; +} +.endpoint-admin_panel .admin-panel-table th:last-child, +.endpoint-admin_panel .admin-panel-table td:last-child { + width: 1%; + white-space: nowrap; +} +.endpoint-admin_lists_access .admin-table-responsive--wide table { + min-width: 1120px; +} +.endpoint-admin_lists_access .access-editor .tokens { + min-height: 2rem; +} +.endpoint-admin_lists_access .access-editor .token, +.endpoint-admin_edit_my_list .access-editor .token { + max-width: 100%; +} +.endpoint-admin_lists_access .access-editor .token span, +.endpoint-admin_edit_my_list .access-editor .token span { + pointer-events: none; +} +.endpoint-admin_lists_access .mono { + white-space: nowrap; +} +.form-check-spaced { + gap: .35rem; +} +.form-check-spaced .form-check-input, +input[type="checkbox"].form-check-input, +.table-select-checkbox { + width: .95rem !important; + height: .95rem !important; + min-width: .95rem !important; + min-height: .95rem !important; + margin-top: .18rem; +} +.form-switch-compact .form-check-input { + width: 1.8rem !important; + height: .95rem !important; +} + +.shopping-item-main > .large-checkbox { + flex: 0 0 1.5em; + align-self: center; +} +.list-item-actions { + display: flex; + align-items: center; + gap: .45rem; + flex-wrap: wrap; +} +.list-item-actions .btn { + min-width: 2.25rem; + padding: .42rem .62rem; +} +.endpoint-list_share .list-group-item, +.endpoint-shared_list .list-group-item { + gap: .75rem; +} +.endpoint-list_share .list-item-actions, +.endpoint-shared_list .list-item-actions { + margin-left: auto; +} +.endpoint-list_share .input-group, +.endpoint-shared_list .input-group { + flex-wrap: nowrap; +} +.endpoint-list_share .input-group > .form-control, +.endpoint-shared_list .input-group > .form-control { + min-width: 0; +} +.endpoint-list_share .share-submit-btn, +.endpoint-shared_list .share-submit-btn { + min-width: 7.25rem; + border-radius: .9rem !important; +} +@media (max-width: 991.98px){ + .endpoint-admin_panel .admin-panel-table { + min-width: 1000px; + } +} +@media (max-width: 767.98px){ + .endpoint-admin_panel .admin-table-responsive--wide table, + .endpoint-admin_lists_access .admin-table-responsive--wide table, + .endpoint-api_tokens .admin-table-responsive--wide table { + width: max-content; + min-width: 980px !important; + } + .endpoint-list_share .input-group, + .endpoint-shared_list .input-group { + flex-wrap: wrap; + } + .endpoint-list_share .share-submit-btn, + .endpoint-shared_list .share-submit-btn { + width: 100%; + } +} + +.endpoint-admin_api_tokens .admin-table-responsive--wide table { width: 100%; min-width: 100%; } +@media (max-width: 767.98px){ .endpoint-admin_api_tokens .admin-table-responsive--wide table { width:max-content; min-width: 980px !important; } } +.table-responsive { overflow-x: auto; } + +.create-list-switch, +.hide-purchased-switch { + display: inline-flex; + align-items: center; + gap: .5rem; + padding: .45rem .8rem .45rem 2.35rem; + min-height: 0; + width: auto; + background: rgba(255,255,255,0.04); + border: 1px solid var(--ui-border); + border-radius: 12px; +} +.create-list-switch .form-check-input, +.hide-purchased-switch .form-check-input { + width: 2rem !important; + height: 1rem !important; + margin-top: 0; +} +.create-list-switch .form-check-label, +.hide-purchased-switch .form-check-label { + margin-left: .15rem; +} +.endpoint-admin_lists_access .card > .card-body > .table-responsive, +.endpoint-admin_api_tokens .card > .card-body > .table-responsive { + width: 100%; +} +.endpoint-admin_lists_access .table.keep-horizontal, +.endpoint-admin_api_tokens .table.keep-horizontal { + min-width: 100%; +} + +.create-list-checkbox { + align-items: center; + gap: .55rem; +} +.create-list-checkbox .form-check-input { + margin-top: 0; +} +.endpoint-list_share #items .list-group-item, +.endpoint-shared_list #items .list-group-item { + display: flex; + justify-content: space-between; + align-items: center; + gap: .75rem; +} +.endpoint-list_share #items .list-group-item > .d-flex.flex-grow-1, +.endpoint-shared_list #items .list-group-item > .d-flex.flex-grow-1 { + min-width: 0; + flex: 1 1 auto; +} +.endpoint-list_share .list-item-actions, +.endpoint-shared_list .list-item-actions { + flex: 0 0 auto; + margin-left: auto; + justify-content: flex-end; +} +.endpoint-list_share .list-item-actions .btn, +.endpoint-shared_list .list-item-actions .btn { + min-width: 2.5rem; +} + +.endpoint-list_share .list-item-actions, +.endpoint-shared_list .list-item-actions { + gap: .5rem; +} + +.endpoint-list_share .list-item-actions .btn, +.endpoint-shared_list .list-item-actions .btn { + min-width: 2.75rem; + min-height: 2.5rem; + padding: .5rem .72rem; +} + +.endpoint-list_share .app-navbar__actions .btn, +.endpoint-shared_list .app-navbar__actions .btn { + border-radius: .9rem !important; +} + +.switch-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); + gap: .8rem; +} + +.endpoint-edit_my_list .switch-grid .app-switch, +.endpoint-admin_edit_list .switch-grid .app-switch { + width: 100%; +} + +.endpoint-edit_my_list .switch-grid { + grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); +} + +.endpoint-edit_my_list .switch-grid .app-switch, +.endpoint-admin_edit_list .switch-grid .app-switch { + width: 100%; + min-height: 3.35rem; +} + +.endpoint-admin_api_tokens .stack-form .form-check-spaced, +.endpoint-api_tokens .stack-form .form-check-spaced { + align-items: center; + gap: .85rem; + margin: 0 0 .72rem; + padding: .75rem .9rem; + border: 1px solid var(--ui-border); + border-radius: 14px; + background: rgba(255,255,255,.04); +} + +.endpoint-admin_api_tokens .stack-form .form-check-spaced .form-check-input, +.endpoint-api_tokens .stack-form .form-check-spaced .form-check-input { + margin: 0; +} + +.endpoint-admin_api_tokens .stack-form .form-check-spaced .form-check-label, +.endpoint-api_tokens .stack-form .form-check-spaced .form-check-label { + flex: 1 1 auto; +} + +.endpoint-admin_panel .table-responsive, +.endpoint-admin_lists_access .table-responsive { + overflow-x: auto; +} + +.endpoint-admin_panel .table-responsive > table.table, +.endpoint-admin_lists_access .table-responsive > table.table { + width: 100% !important; + min-width: 100% !important; + table-layout: auto; +} + +.endpoint-admin_lists_access td:nth-child(6) { + min-width: 19rem; +} + +.endpoint-admin_lists_access td:nth-child(6) > .d-flex, +.endpoint-admin_lists_access td:nth-child(6) > .text-warning { + width: 100%; +} + +.endpoint-admin_lists_access td:nth-child(6) > .text-warning { + display: block; +} + +.share-page-toolbar { + display: flex; + align-items: center; + justify-content: flex-end; + gap: .75rem; + width: 100%; +} + +.share-page-toolbar__spacer { + flex: 1 1 auto; +} + +.share-page-toolbar .form-check { + margin-bottom: 0; +} + +.endpoint-list_share .app-navbar__actions, +.endpoint-shared_list .app-navbar__actions { + align-items: stretch; +} + +.endpoint-list_share .app-navbar__actions .btn, +.endpoint-shared_list .app-navbar__actions .btn { + min-height: var(--nav-btn-height); +} + +.endpoint-admin_templates .table-responsive { + overflow-x: auto; +} + +.endpoint-admin_templates .table-responsive > table.table { + width: 100% !important; + min-width: 100% !important; + table-layout: auto; +} + +.mobile-list-heading { + width: 100%; + min-width: 0; + max-width: 100%; + justify-content: flex-start; +} + +.mobile-list-heading__title { + min-width: 0; +} + +.mobile-category-badges { + display: inline-flex; + align-items: center; + gap: .3rem; + min-width: 0; + max-width: 100%; +} + +.mobile-category-badge { + display: inline-flex; + align-items: center; + justify-content: center; + font-size: .68rem; + line-height: 1; + padding: .26rem .52rem; + opacity: .95; +} + +.mobile-category-badge__dot { + display: none; + width: .55rem; + height: .55rem; + border-radius: 999px; + background: currentColor; +} + +.mobile-category-badges.is-compact .mobile-category-badge { + width: .9rem; + min-width: .9rem; + height: .9rem; + padding: 0; + border-radius: 999px; +} + +.mobile-category-badges.is-compact .mobile-category-badge__text { + display: none; +} + +.mobile-category-badges.is-compact .mobile-category-badge__dot { + display: block; +} + +.endpoint-main_page .list-group-item > .main-list-row { + display: flex; + align-items: center; + justify-content: space-between; + gap: 0.75rem; + width: 100%; + flex-wrap: nowrap; +} + +.endpoint-main_page .list-main-meta { + min-width: 0; + flex: 1 1 auto; +} + +.endpoint-main_page .list-main-title { + display: flex; + align-items: center; + align-content: center; + flex-wrap: wrap; + gap: 0.15rem; + min-width: 0; + line-height: 1; +} + +.endpoint-main_page .list-main-actions { + flex: 0 0 auto; + align-self: center; +} + +.list-main-title__link { + min-width: 0; + display: inline-flex; + align-items: center; + align-content: center; + flex-wrap: wrap; + gap: .15rem; + line-height: 1; +} + +.shopping-item-row { + gap: .75rem; +} + +.shopping-item-main { + min-width: 0; + flex: 1 1 auto; + flex-wrap: wrap; +} + +.shopping-item-main span[id^="name-"] { + min-width: 0; +} + +.shopping-item-actions { + flex: 0 0 auto; + margin-left: auto; + align-self: flex-start; +} + +.shopping-compact-input-group { + flex-wrap: nowrap !important; + align-items: stretch; +} + +.shopping-qty-input { + flex: 0 0 4.5rem; + max-width: 4.5rem; +} + +.shopping-compact-submit { + flex: 0 0 auto; + width: auto; + white-space: nowrap; +} + +.list-toolbar { + width: 100%; +} + +.list-toolbar--share { + justify-content: flex-end; +} + +.shopping-item-row { + padding: .8rem .95rem; +} + +.shopping-item-main { + display: flex; + align-items: center; + gap: .75rem; + width: 100%; +} + +.shopping-item-content { + flex: 1 1 auto; + min-width: 0; +} + +.shopping-item-head { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: .75rem; +} + +.shopping-item-text { + min-width: 0; + display: flex; + align-items: center; + gap: .35rem; + flex-wrap: wrap; +} + +.shopping-item-name { + min-width: 0; + overflow-wrap: break-word; + word-break: normal; +} + +.shopping-item-text .info-line { + flex-basis: 100%; + margin-top: .1rem; + overflow-wrap: break-word; + word-break: normal; +} + +.shopping-item-actions { + display: inline-flex; + flex-wrap: nowrap; + gap: .35rem; +} + +.shopping-product-input-group > .shopping-product-name-input, +.shopping-expense-input-group > .shopping-expense-amount-input { + flex: 1 1 auto; +} + +.shopping-product-input-group > .shopping-qty-input { + flex: 0 0 4.5rem; + max-width: 4.5rem; + text-align: center; +} + +.shopping-expense-input-group > .shopping-compact-submit, +.shopping-product-input-group > .shopping-compact-submit { + flex: 0 0 auto; +} + +.endpoint-list .shopping-product-input-group > .shopping-compact-submit, +.endpoint-list_share .shopping-product-input-group > .shopping-compact-submit, +.endpoint-shared_list .shopping-product-input-group > .shopping-compact-submit, +.endpoint-list .shopping-expense-input-group > .shopping-compact-submit, +.endpoint-list_share .shopping-expense-input-group > .shopping-compact-submit, +.endpoint-shared_list .shopping-expense-input-group > .shopping-compact-submit { + border-top-left-radius: 0 !important; + border-bottom-left-radius: 0 !important; + border-top-right-radius: .9rem !important; + border-bottom-right-radius: .9rem !important; + margin-left: 0; +} + +.endpoint-list .shopping-product-input-group, +.endpoint-list_share .shopping-product-input-group, +.endpoint-shared_list .shopping-product-input-group, +.endpoint-list .shopping-expense-input-group, +.endpoint-list_share .shopping-expense-input-group, +.endpoint-shared_list .shopping-expense-input-group { + flex-wrap: nowrap; +} + +.endpoint-list .shopping-product-input-group, +.endpoint-list_share .shopping-product-input-group, +.endpoint-shared_list .shopping-product-input-group, +.endpoint-list .shopping-expense-input-group, +.endpoint-list_share .shopping-expense-input-group, +.endpoint-shared_list .shopping-expense-input-group { + display: flex; + flex-wrap: nowrap !important; + align-items: stretch; + gap: 0 !important; +} + +.endpoint-list .shopping-product-input-group > .form-control, +.endpoint-list_share .shopping-product-input-group > .form-control, +.endpoint-shared_list .shopping-product-input-group > .form-control, +.endpoint-list .shopping-expense-input-group > .form-control, +.endpoint-list_share .shopping-expense-input-group > .form-control, +.endpoint-shared_list .shopping-expense-input-group > .form-control, +.endpoint-list .shopping-product-input-group > .btn, +.endpoint-list_share .shopping-product-input-group > .btn, +.endpoint-shared_list .shopping-product-input-group > .btn, +.endpoint-list .shopping-expense-input-group > .btn, +.endpoint-list_share .shopping-expense-input-group > .btn, +.endpoint-shared_list .shopping-expense-input-group > .btn { + position: relative; + min-height: 46px; + box-shadow: none; +} + +.endpoint-list .shopping-product-input-group > .shopping-product-name-input, +.endpoint-list_share .shopping-product-input-group > .shopping-product-name-input, +.endpoint-shared_list .shopping-product-input-group > .shopping-product-name-input, +.endpoint-list .shopping-expense-input-group > .shopping-expense-amount-input, +.endpoint-list_share .shopping-expense-input-group > .shopping-expense-amount-input, +.endpoint-shared_list .shopping-expense-input-group > .shopping-expense-amount-input { + border-top-right-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +.endpoint-list .shopping-product-input-group > .shopping-qty-input, +.endpoint-list_share .shopping-product-input-group > .shopping-qty-input, +.endpoint-shared_list .shopping-product-input-group > .shopping-qty-input { + border-radius: 0 !important; + border-left-width: 0 !important; +} + +.endpoint-list .shopping-product-input-group > .shopping-compact-submit, +.endpoint-list_share .shopping-product-input-group > .shopping-compact-submit, +.endpoint-shared_list .shopping-product-input-group > .shopping-compact-submit, +.endpoint-list .shopping-expense-input-group > .shopping-compact-submit, +.endpoint-list_share .shopping-expense-input-group > .shopping-compact-submit, +.endpoint-shared_list .shopping-expense-input-group > .shopping-compact-submit { + display: inline-flex; + align-items: center; + justify-content: center; + gap: .35rem; + margin-left: 0 !important; + border-top-left-radius: 0 !important; + border-bottom-left-radius: 0 !important; + border-top-right-radius: .9rem !important; + border-bottom-right-radius: .9rem !important; + border-left-width: 0 !important; +} + +.endpoint-list .shopping-product-input-group > .shopping-compact-submit, +.endpoint-list .shopping-expense-input-group > .shopping-compact-submit, +.endpoint-list_share .shopping-product-input-group > .shopping-compact-submit, +.endpoint-list_share .shopping-expense-input-group > .shopping-compact-submit, +.endpoint-shared_list .shopping-product-input-group > .shopping-compact-submit, +.endpoint-shared_list .shopping-expense-input-group > .shopping-compact-submit, +.endpoint-list .share-submit-btn, +.endpoint-list_share .share-submit-btn, +.endpoint-shared_list .share-submit-btn { + min-width: 7.25rem; +} + +.shopping-btn-icon { + line-height: 1; +} + +.shopping-btn-label { + line-height: 1; +} + +.endpoint-view_list .shopping-product-input-group, +.endpoint-view_list .shopping-expense-input-group { + display: flex; + flex-wrap: nowrap !important; + align-items: stretch; + gap: 0 !important; + width: 100%; +} + +.endpoint-view_list .shopping-product-input-group > .form-control, +.endpoint-view_list .shopping-expense-input-group > .form-control, +.endpoint-view_list .shopping-product-input-group > .btn, +.endpoint-view_list .shopping-expense-input-group > .btn { + position: relative; + min-height: 46px; + box-shadow: none; +} + +.endpoint-view_list .shopping-product-input-group > .shopping-product-name-input, +.endpoint-view_list .shopping-expense-input-group > .shopping-expense-amount-input { + border-top-right-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +.endpoint-view_list .shopping-product-input-group > .shopping-qty-input { + border-radius: 0 !important; + border-left-width: 0 !important; +} + +.endpoint-view_list .shopping-product-input-group > .shopping-compact-submit, +.endpoint-view_list .shopping-expense-input-group > .shopping-compact-submit, +.endpoint-view_list .share-submit-btn { + display: inline-flex; + align-items: center; + justify-content: center; + gap: .35rem; + margin-left: 0 !important; + min-width: 7.25rem; + border-top-left-radius: 0 !important; + border-bottom-left-radius: 0 !important; + border-top-right-radius: .9rem !important; + border-bottom-right-radius: .9rem !important; + border-left-width: 0 !important; +} + +#progress-bar-purchased { + background: linear-gradient(135deg, rgba(39,208,125,0.96), rgba(22,150,91,0.98)) !important; +} + +#progress-bar-not-purchased { + background: linear-gradient(135deg, rgba(246,196,83,0.96), rgba(224,164,26,0.98)) !important; +} + +#progress-bar-remaining { + background: rgba(255,255,255,0.08) !important; +} + +.shopping-item-text { + line-height: 1.35; +} + +.shopping-item-text .info-line { + display: inline; + flex-basis: auto; + margin-top: 0; + white-space: normal; +} + +.shopping-item-text .info-line > span { + display: inline; +} + +.shopping-item-text .item-added-by-meta { + color: currentColor; + opacity: .72; + font-size: .92em; +} + +.shopping-item-text .item-added-by-meta b { + font-weight: 600; +} + +.shopping-item-name, +.shopping-item-text .info-line { + overflow-wrap: break-word; + word-break: normal; +} + +.shopping-item-actions { + flex: 0 0 auto; +} + +.hide-purchased-switch--right { + display: inline-flex !important; + align-items: center; + justify-content: flex-end; + gap: .6rem; + width: auto; + margin-left: auto; + padding: 0 !important; + border: 0 !important; + background: transparent !important; + box-shadow: none !important; +} + +.hide-purchased-switch--right::before, +.hide-purchased-switch--right::after { + display: none !important; +} + +.hide-purchased-switch--right .form-check-input { + order: 1; + margin: 0; + float: none; + flex: 0 0 auto; +} + +.hide-purchased-switch--right .form-check-label { + order: 0; + margin: 0 !important; + white-space: nowrap; +} + +.list-action-row { + display: flex; + flex-wrap: nowrap; + align-items: stretch; + gap: .65rem; +} + +.list-action-row__form { + display: flex; + flex: 1 1 50%; +} + +.list-action-row__btn { + width: 100%; +} + +.list-action-row > .list-action-row__btn { + flex: 1 1 50%; +} + +.shopping-item-head { + flex-wrap: nowrap; + align-items: center; +} + +.shopping-item-text { + flex: 1 1 auto; + min-width: 0; +} + +.shopping-item-text .info-line { + flex-basis: auto; +} + +.shopping-item-actions { + align-items: center; + justify-content: flex-end; + flex: 0 0 auto; + white-space: nowrap; +} + +.shopping-item-actions .btn { + flex: 0 0 auto; +} + +.list-header-toolbar { + width: 100%; +} + +.list-header-toolbar > h2 { + flex: 1 1 auto; + min-width: 0; +} + +.list-header-toolbar .list-toolbar { + flex: 0 0 auto; + width: auto; + margin-left: auto; +} + +.list-toolbar__sort.btn { + display: inline-flex; + align-items: center; + justify-content: center; + white-space: nowrap; + border-width: 1px !important; +} + +.drag-handle { + display: none !important; + cursor: grab; +} + +body.sorting-active .drag-handle { + display: inline-flex !important; +} + +body.sorting-active .shopping-item-row { + cursor: grab; +} + +body.sorting-active .shopping-item-row:active, +body.sorting-active .drag-handle:active { + cursor: grabbing; +} + +body.sorting-active .shopping-item-row .large-checkbox { + pointer-events: none; +} + +.endpoint-list_share .shopping-item-name, +.endpoint-list_share .shopping-item-text .info-line, +.endpoint-shared_list .shopping-item-name, +.endpoint-shared_list .shopping-item-text .info-line { + overflow-wrap: break-word; + word-break: normal; +} + +.endpoint-list_share input[type="checkbox"].large-checkbox::before, +.endpoint-shared_list input[type="checkbox"].large-checkbox::before, +.endpoint-view_list input[type="checkbox"].large-checkbox::before { + font-size: 1.7em; +} + +.endpoint-list_share .shopping-item-row, +.endpoint-shared_list .shopping-item-row { + overflow: hidden; + padding: .8rem .95rem; +} + +.endpoint-list_share .shopping-item-main, +.endpoint-shared_list .shopping-item-main, +.endpoint-view_list .shopping-item-main, +.endpoint-list .shopping-item-main { + display: flex; + align-items: center; + gap: .75rem; + width: 100%; +} + +.endpoint-list_share .shopping-item-content, +.endpoint-shared_list .shopping-item-content, +.endpoint-view_list .shopping-item-content, +.endpoint-list .shopping-item-content { + flex: 1 1 auto; + min-width: 0; + width: auto; +} + +.endpoint-list_share .shopping-item-head, +.endpoint-shared_list .shopping-item-head, +.endpoint-view_list .shopping-item-head, +.endpoint-list .shopping-item-head { + display: flex; + align-items: center; + justify-content: space-between; + gap: .75rem; +} + +.endpoint-list_share .shopping-item-text, +.endpoint-shared_list .shopping-item-text, +.endpoint-view_list .shopping-item-text, +.endpoint-list .shopping-item-text { + flex: 1 1 auto; + min-width: 0; + display: flex; + align-items: center; + align-content: center; + gap: .35rem; + flex-wrap: wrap; +} + +.endpoint-list_share .shopping-item-name, +.endpoint-shared_list .shopping-item-name, +.endpoint-view_list .shopping-item-name, +.endpoint-list .shopping-item-name { + display: inline; + min-width: 0; + max-width: 100%; + white-space: normal; + overflow-wrap: break-word; + word-break: normal; +} + +.endpoint-list_share .shopping-item-text .badge, +.endpoint-shared_list .shopping-item-text .badge, +.endpoint-view_list .shopping-item-text .badge, +.endpoint-list .shopping-item-text .badge, +.endpoint-list_share .shopping-item-text .info-line, +.endpoint-shared_list .shopping-item-text .info-line, +.endpoint-view_list .shopping-item-text .info-line, +.endpoint-list .shopping-item-text .info-line { + align-self: center; +} + +.endpoint-list_share .shopping-item-text .info-line, +.endpoint-shared_list .shopping-item-text .info-line, +.endpoint-view_list .shopping-item-text .info-line, +.endpoint-list .shopping-item-text .info-line { + display: block; + flex: 0 0 100%; + width: 100%; + margin-top: .1rem; + white-space: normal; + overflow-wrap: break-word; + word-break: normal; +} + +.endpoint-list_share .shopping-item-actions, +.endpoint-shared_list .shopping-item-actions, +.endpoint-view_list .shopping-item-actions, +.endpoint-list .shopping-item-actions { + display: inline-flex; + flex: 0 0 auto; + flex-wrap: nowrap; + align-items: center; + align-self: center; + justify-content: flex-end; + gap: .35rem; + margin-left: 0; + white-space: nowrap; +} + +.endpoint-list_share .shopping-item-actions .btn, +.endpoint-shared_list .shopping-item-actions .btn { + display: inline-flex; + align-items: center; + justify-content: center; + min-width: 2.25rem; + padding: .34rem .48rem; +} + +.endpoint-list_share .shopping-item-main > .large-checkbox, +.endpoint-shared_list .shopping-item-main > .large-checkbox, +.endpoint-view_list .shopping-item-main > .large-checkbox { + flex: 0 0 auto; + align-self: center; +} + +.endpoint-list_share input[type="checkbox"].large-checkbox::before, +.endpoint-shared_list input[type="checkbox"].large-checkbox::before { + font-size: 1.75em; +} + +.endpoint-list_share .shopping-item-actions, +.endpoint-shared_list .shopping-item-actions, +.endpoint-view_list .shopping-item-actions, +.endpoint-list .shopping-item-actions { + gap: .35rem !important; + min-height: 2.35rem !important; +} + +.endpoint-list_share .shopping-action-btn, +.endpoint-shared_list .shopping-action-btn, +.endpoint-view_list .shopping-action-btn, +.endpoint-list .shopping-action-btn { + width: 2.35rem !important; + height: 2.35rem !important; + min-width: 2.35rem !important; + min-height: 2.35rem !important; + padding: 0 !important; + border-radius: .7rem !important; + font-size: 1rem !important; + line-height: 1 !important; +} + +.endpoint-list_share .shopping-action-btn--wide, +.endpoint-shared_list .shopping-action-btn--wide, +.endpoint-view_list .shopping-action-btn--wide, +.endpoint-list .shopping-action-btn--wide { + width: auto !important; + min-width: 5.9rem !important; + padding: 0 .8rem !important; +} +.endpoint-list_share .shopping-action-btn--countdown, +.endpoint-shared_list .shopping-action-btn--countdown, +.endpoint-view_list .shopping-action-btn--countdown, +.endpoint-list .shopping-action-btn--countdown { + width: auto !important; + min-width: 3.2rem !important; + padding: 0 .65rem !important; +} + +.endpoint-list_share .shopping-action-btn > *, +.endpoint-shared_list .shopping-action-btn > *, +.endpoint-view_list .shopping-action-btn > *, +.endpoint-list .shopping-action-btn > * { + line-height: 1 !important; +} + +body:not(.sorting-active) .drag-handle { + display: none !important; +} + +:root { + --ui-control-height: 42px; + --ui-control-radius: 14px; + --ui-control-focus-ring: 0 0 0 .25rem rgba(24, 64, 118, .18); +} + +.ui-consistent-input { + min-height: var(--ui-control-height) !important; + border-radius: var(--ui-control-radius) !important; +} + +.ui-password-group { + display: flex !important; + flex-wrap: nowrap !important; + align-items: stretch !important; + width: 100% !important; + gap: 0 !important; + overflow: hidden !important; + border: 1px solid var(--ui-border-strong) !important; + border-radius: var(--ui-control-radius) !important; + background: rgba(255,255,255,0.04) !important; + background-image: none !important; + box-shadow: none !important; +} + +.ui-password-group:focus-within { + border-color: rgba(25, 135, 84, 0.6) !important; + box-shadow: 0 0 0 0.2rem rgba(25, 135, 84, 0.16) !important; +} + +.ui-password-group > .form-control { + flex: 1 1 auto !important; + width: 1% !important; + min-width: 0 !important; + min-height: var(--ui-control-height) !important; + border: 0 !important; + border-radius: 0 !important; + box-shadow: none !important; + background: transparent !important; + background-color: transparent !important; + background-image: none !important; + background-clip: padding-box !important; +} + +.ui-password-group > .form-control:focus, +.ui-password-group > .form-control.ui-consistent-input { + box-shadow: none !important; + background: transparent !important; + background-color: transparent !important; + border-radius: 0 !important; +} + +.ui-password-group > .ui-password-toggle { + appearance: none !important; + -webkit-appearance: none !important; + display: inline-flex !important; + align-items: center !important; + justify-content: center !important; + flex: 0 0 46px !important; + width: 46px !important; + min-width: 46px !important; + min-height: var(--ui-control-height) !important; + padding: 0 !important; + margin: 0 !important; + cursor: pointer !important; + background: transparent !important; + background-color: transparent !important; + background-image: none !important; + color: rgba(255,255,255,0.72) !important; + border: 0 !important; + border-left: 1px solid rgba(255, 255, 255, 0.10) !important; + border-radius: 0 !important; + box-shadow: none !important; + line-height: 1 !important; +} + +.ui-password-group > .ui-password-toggle:hover, +.ui-password-group > .ui-password-toggle:focus, +.ui-password-group > .ui-password-toggle:focus-visible { + background: rgba(255,255,255,0.03) !important; + background-color: rgba(255,255,255,0.03) !important; + color: #fff !important; + border-left-color: rgba(255,255,255,0.16) !important; + box-shadow: none !important; + outline: none !important; +} + +.ui-password-group > .ui-password-toggle.is-active { + background: rgba(255,255,255,0.05) !important; + background-color: rgba(255,255,255,0.05) !important; + color: #fff !important; +} + +.ui-password-group > .ui-password-toggle > * { + pointer-events: none !important; +} + +.endpoint-login form .form-control:not(.form-control-sm), +.endpoint-system_auth form .form-control:not(.form-control-sm), +.endpoint-edit_my_list form .form-control:not(.form-control-sm):not(.form-control-plaintext), +.endpoint-edit_list form .form-control:not(.form-control-sm):not(.form-control-plaintext), +.endpoint-user_management form .form-control:not(.form-control-sm), +.endpoint-user_management .modal .form-control:not(.form-control-sm), +.endpoint-edit_my_list form .form-select, +.endpoint-edit_list form .form-select, +.endpoint-user_management form .form-select, +.endpoint-user_management .modal .form-select { + min-height: var(--ui-control-height) !important; +} + +.endpoint-login form .form-control.ui-consistent-input, +.endpoint-system_auth form .form-control.ui-consistent-input, +.endpoint-edit_my_list form .ui-consistent-input, +.endpoint-edit_list form .ui-consistent-input, +.endpoint-user_management form .ui-consistent-input, +.endpoint-user_management .modal .ui-consistent-input { + border-radius: var(--ui-control-radius) !important; +} + +.endpoint-edit_my_list .access-editor .access-input, +.endpoint-edit_list .input-group.input-group-sm .form-control { + min-height: var(--ui-control-height) !important; +} + +.endpoint-list .shopping-entry-card, +.endpoint-list_share .shopping-entry-card, +.endpoint-shared_list .shopping-entry-card, +.endpoint-view_list .shopping-entry-card { + background: linear-gradient(180deg, rgba(25, 135, 84, 0.16), rgba(13, 17, 23, 0.92)); + border: 1px solid rgba(25, 135, 84, 0.42); + border-radius: 1rem; + padding: .9rem; + box-shadow: 0 .5rem 1.2rem rgba(0, 0, 0, 0.18); +} + +.endpoint-list .shopping-entry-card__label, +.endpoint-list_share .shopping-entry-card__label, +.endpoint-shared_list .shopping-entry-card__label, +.endpoint-view_list .shopping-entry-card__label { + display: inline-flex; + align-items: center; + gap: .4rem; + margin-bottom: .2rem; + font-size: .95rem; + font-weight: 700; + color: #d1f7df; +} + +.endpoint-list .shopping-entry-card__hint, +.endpoint-list_share .shopping-entry-card__hint, +.endpoint-shared_list .shopping-entry-card__hint, +.endpoint-view_list .shopping-entry-card__hint { + margin-bottom: .75rem; + color: rgba(255, 255, 255, 0.72); + font-size: .82rem; + line-height: 1.35; +} + +.endpoint-list .shopping-entry-card .shopping-product-input-group, +.endpoint-list_share .shopping-entry-card .shopping-product-input-group, +.endpoint-shared_list .shopping-entry-card .shopping-product-input-group, +.endpoint-view_list .shopping-entry-card .shopping-product-input-group { + margin-bottom: 0 !important; +} + +.endpoint-list .shopping-entry-card .shopping-product-input-group > .form-control, +.endpoint-list_share .shopping-entry-card .shopping-product-input-group > .form-control, +.endpoint-shared_list .shopping-entry-card .shopping-product-input-group > .form-control, +.endpoint-view_list .shopping-entry-card .shopping-product-input-group > .form-control { + border-color: rgba(25, 135, 84, 0.55) !important; + background: rgba(17, 24, 39, 0.95) !important; +} + +.endpoint-list .shopping-entry-card .shopping-product-input-group > .form-control::placeholder, +.endpoint-list_share .shopping-entry-card .shopping-product-input-group > .form-control::placeholder, +.endpoint-shared_list .shopping-entry-card .shopping-product-input-group > .form-control::placeholder, +.endpoint-view_list .shopping-entry-card .shopping-product-input-group > .form-control::placeholder { + color: rgba(255, 255, 255, 0.62); +} + +.endpoint-list .shopping-entry-card .shopping-product-input-group > .shopping-product-name-input:focus, +.endpoint-list_share .shopping-entry-card .shopping-product-input-group > .shopping-product-name-input:focus, +.endpoint-shared_list .shopping-entry-card .shopping-product-input-group > .shopping-product-name-input:focus, +.endpoint-view_list .shopping-entry-card .shopping-product-input-group > .shopping-product-name-input:focus { + box-shadow: inset 0 0 0 1px rgba(25, 135, 84, 0.25), 0 0 0 .2rem rgba(25, 135, 84, 0.18); +} + +.endpoint-expenses .expenses-range-toolbar { + width: 100%; +} + +.endpoint-expenses .expenses-range-group { + flex-wrap: wrap; + justify-content: center; + width: 100%; +} + +.endpoint-expenses .expenses-range-group > .btn { + white-space: nowrap; +} + +.endpoint-expenses .expenses-date-range { + align-items: stretch; +} + +.endpoint-list .shopping-entry-card--expense, +.endpoint-list_share .shopping-entry-card--expense, +.endpoint-shared_list .shopping-entry-card--expense, +.endpoint-view_list .shopping-entry-card--expense { + background: linear-gradient(180deg, rgba(13, 110, 253, 0.16), rgba(13, 17, 23, 0.92)); + border-color: rgba(13, 110, 253, 0.42); +} + +.endpoint-list .shopping-entry-card--expense .shopping-entry-card__label, +.endpoint-list_share .shopping-entry-card--expense .shopping-entry-card__label, +.endpoint-shared_list .shopping-entry-card--expense .shopping-entry-card__label, +.endpoint-view_list .shopping-entry-card--expense .shopping-entry-card__label { + color: #d7e9ff; +} + +.endpoint-list .shopping-entry-card--expense .shopping-expense-input-group, +.endpoint-list_share .shopping-entry-card--expense .shopping-expense-input-group, +.endpoint-shared_list .shopping-entry-card--expense .shopping-expense-input-group, +.endpoint-view_list .shopping-entry-card--expense .shopping-expense-input-group { + margin-bottom: 0 !important; +} + +.endpoint-list .shopping-entry-card--expense .shopping-expense-input-group > .form-control, +.endpoint-list_share .shopping-entry-card--expense .shopping-expense-input-group > .form-control, +.endpoint-shared_list .shopping-entry-card--expense .shopping-expense-input-group > .form-control, +.endpoint-view_list .shopping-entry-card--expense .shopping-expense-input-group > .form-control { + border-color: rgba(13, 110, 253, 0.55) !important; + background: rgba(17, 24, 39, 0.95) !important; +} + +.endpoint-list .shopping-entry-card--expense .shopping-expense-input-group > .form-control::placeholder, +.endpoint-list_share .shopping-entry-card--expense .shopping-expense-input-group > .form-control::placeholder, +.endpoint-shared_list .shopping-entry-card--expense .shopping-expense-input-group > .form-control::placeholder, +.endpoint-view_list .shopping-entry-card--expense .shopping-expense-input-group > .form-control::placeholder { + color: rgba(255, 255, 255, 0.62); +} + +.endpoint-list .shopping-entry-card--expense .shopping-expense-input-group > .shopping-expense-amount-input:focus, +.endpoint-list_share .shopping-entry-card--expense .shopping-expense-input-group > .shopping-expense-amount-input:focus, +.endpoint-shared_list .shopping-entry-card--expense .shopping-expense-input-group > .shopping-expense-amount-input:focus, +.endpoint-view_list .shopping-entry-card--expense .shopping-expense-input-group > .shopping-expense-amount-input:focus { + box-shadow: inset 0 0 0 1px rgba(13, 110, 253, 0.25), 0 0 0 .2rem rgba(13, 110, 253, 0.18); +} + +.endpoint-list .share-submit-btn--expense, +.endpoint-list_share .share-submit-btn--expense, +.endpoint-shared_list .share-submit-btn--expense, +.endpoint-view_list .share-submit-btn--expense { + color: #8ec5ff; + border-color: rgba(13, 110, 253, 0.72) !important; + background: rgba(13, 110, 253, 0.12); +} + +.endpoint-list .share-submit-btn--expense:hover, +.endpoint-list_share .share-submit-btn--expense:hover, +.endpoint-shared_list .share-submit-btn--expense:hover, +.endpoint-view_list .share-submit-btn--expense:hover, +.endpoint-list .share-submit-btn--expense:focus, +.endpoint-list_share .share-submit-btn--expense:focus, +.endpoint-shared_list .share-submit-btn--expense:focus, +.endpoint-view_list .share-submit-btn--expense:focus { + color: #fff; + border-color: rgba(13, 110, 253, 0.9) !important; + background: rgba(13, 110, 253, 0.22); + box-shadow: 0 0 0 .2rem rgba(13, 110, 253, 0.16); +} + +.list-quick-actions { + display: grid; + gap: .9rem; + padding: 1rem; + border: 1px solid rgba(255,255,255,.08); + border-radius: 1rem; + background: linear-gradient(180deg, rgba(255,255,255,.04), rgba(255,255,255,.02)); + box-shadow: 0 .5rem 1.25rem rgba(0,0,0,.14); +} + +.list-quick-actions__header { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: .75rem; +} + +.list-quick-actions__eyebrow { + font-size: .72rem; + letter-spacing: .08em; + text-transform: uppercase; + color: rgba(255,255,255,.58); + margin-bottom: .15rem; +} + +.list-quick-actions__title { + font-size: 1rem; + font-weight: 700; + color: #fff; + line-height: 1.2; +} + +.list-quick-actions__hint { + font-size: .82rem; + color: rgba(255,255,255,.62); + text-align: right; + max-width: 18rem; +} + +.list-quick-actions__grid { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: .75rem; +} + +.list-quick-actions__form { + display: block; +} + +.list-quick-actions__action.btn { + width: 100%; + min-height: 78px; + display: flex; + align-items: flex-start; + gap: .75rem; + padding: .9rem 1rem; + border-radius: .95rem; + text-align: left; + white-space: normal; +} + +.list-quick-actions__action--primary.btn { + border-color: rgba(255,255,255,.2); + background: rgba(255,255,255,.03); +} + +.list-quick-actions__action--secondary.btn { + border-color: rgba(13,110,253,.5); + background: rgba(13,110,253,.08); +} + +.list-quick-actions__icon { + flex: 0 0 auto; + font-size: 1.05rem; + line-height: 1; + margin-top: .1rem; +} + +.list-quick-actions__content { + display: grid; + gap: .2rem; + min-width: 0; +} + +.list-quick-actions__label { + font-size: .95rem; + font-weight: 600; + color: #fff; + line-height: 1.25; +} + +.list-quick-actions__desc { + font-size: .81rem; + color: rgba(255,255,255,.66); + line-height: 1.35; +} diff --git a/shopping_app/static/css/split/pages.css b/shopping_app/static/css/split/pages.css new file mode 100644 index 0000000..adb07d4 --- /dev/null +++ b/shopping_app/static/css/split/pages.css @@ -0,0 +1,725 @@ +.preview-product-list { + display: flex; + flex-direction: column; + gap: 1rem; +} + +.preview-product-summary { + padding: 0 0 0.85rem; + margin-bottom: 0.1rem; + border-bottom: 1px solid rgba(255,255,255,0.08); +} + +.preview-product-section { + display: flex; + flex-direction: column; + gap: 0.65rem; +} + +.preview-product-section-title { + margin: 0; + font-size: 1.05rem; + font-weight: 700; +} + +.preview-modal-items { + display: flex; + flex-direction: column; + gap: 0.75rem; +} + +#productPreviewModal .preview-modal-list-item { + display: flex; + align-items: center; + justify-content: space-between; + gap: 0.75rem; + width: 100%; + min-width: 0; + padding: 0.9rem 1rem; + margin: 0 !important; + border-radius: 16px !important; + border: 1px solid rgba(255,255,255,0.08) !important; + background: linear-gradient(180deg, rgba(11,22,40,0.92) 0%, rgba(8,16,30,0.92) 100%) !important; + box-shadow: inset 0 1px 0 rgba(255,255,255,0.03); +} + +#productPreviewModal .preview-modal-list-item:first-child, +#productPreviewModal .preview-modal-list-item:last-child, +#productPreviewModal .list-group-flush > .list-group-item:first-child, +#productPreviewModal .list-group-flush > .list-group-item:last-child { + border-radius: 16px !important; +} + +#productPreviewModal .preview-modal-list-item__name { + min-width: 0; + overflow-wrap: anywhere; + flex: 1 1 auto; +} + +#productPreviewModal .preview-modal-list-item .badge { + flex-shrink: 0; + min-width: 2.5rem; + border-radius: 10px; +} + +.receipt-disclosure { + width: 100%; + cursor: pointer; + border: 1px solid rgba(255, 255, 255, 0.08); + border-radius: 20px; + background: linear-gradient(135deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0.02)); + box-shadow: 0 12px 32px rgba(0, 0, 0, 0.18); + transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease; +} + +.receipt-disclosure:hover, +.receipt-disclosure:focus-visible { + transform: translateY(-1px); + border-color: rgba(255, 255, 255, 0.18); + box-shadow: 0 16px 36px rgba(0, 0, 0, 0.24); + outline: none; +} + +.receipt-disclosure.is-open { + border-color: rgba(24, 64, 118, 0.9); + background: linear-gradient(135deg, rgba(24, 64, 118, 0.22), rgba(255, 255, 255, 0.03)); +} + +.receipt-disclosure__content { + display: flex; + align-items: center; + gap: 14px; + padding: 16px 18px; +} + +.receipt-disclosure__icon { + display: grid; + place-items: center; + width: 48px; + height: 48px; + border-radius: 14px; + background: rgba(255, 255, 255, 0.06); + font-size: 1.25rem; + flex-shrink: 0; +} + +.receipt-disclosure__text { + min-width: 0; + flex: 1; +} + +.receipt-disclosure__eyebrow { + font-size: 0.72rem; + letter-spacing: 0.08em; + text-transform: uppercase; + color: rgba(255, 255, 255, 0.52); + margin-bottom: 2px; +} + +.receipt-disclosure__title { + font-size: 1rem; + font-weight: 600; + color: var(--text-strong); +} + +.receipt-disclosure__meta { + display: flex; + align-items: center; + gap: 12px; + margin-left: auto; + flex-shrink: 0; +} + +.receipt-disclosure__count { + min-width: 34px; + padding: 6px 10px; + border-radius: 999px; + background: rgba(255, 255, 255, 0.08); + color: var(--text-strong); + font-size: 0.875rem; + text-align: center; +} + +.receipt-disclosure__chevron { + font-size: 1.15rem; + color: rgba(255, 255, 255, 0.7); + transition: transform 0.2s ease; +} + +.receipt-disclosure.is-open .receipt-disclosure__chevron { + transform: rotate(180deg); +} + +@media (max-width: 575.98px) { + .receipt-disclosure__content { + padding: 14px; + gap: 12px; + } + + .receipt-disclosure__icon { + width: 42px; + height: 42px; + border-radius: 12px; + } + + .receipt-disclosure__meta { + gap: 10px; + } + + .receipt-disclosure__title { + font-size: 0.95rem; + } +} + +.endpoint-edit_my_list .stack-form > .mb-3 > .ui-consistent-input, +.endpoint-edit_my_list .stack-form > .mb-4 > .ui-consistent-input, +.endpoint-edit_my_list .stack-form .row .ui-consistent-input, +.endpoint-edit_list form > .mb-3 > .ui-consistent-input, +.endpoint-edit_list form > .mb-4 > .ui-consistent-input, +.endpoint-edit_list form .row .ui-consistent-input, +.endpoint-user_management .row > [class*="col-"] > .ui-consistent-input, +.endpoint-user_management .modal .ui-consistent-input { + border-radius: var(--ui-control-radius) !important; +} + +.endpoint-edit_my_list .ts-wrapper.single .ts-control, +.endpoint-edit_list .ts-wrapper.single .ts-control, +.endpoint-edit_my_list .ts-wrapper.multi .ts-control, +.endpoint-edit_list .ts-wrapper.multi .ts-control { + min-height: var(--ui-control-height) !important; + border-radius: var(--ui-control-radius) !important; +} + +.share-hub { + border: 1px solid rgba(79, 142, 255, 0.18); + background: linear-gradient(180deg, rgba(11, 24, 43, 0.98), rgba(8, 17, 31, 0.96)) !important; +} + +.share-hub .card-body { + padding: 1rem; +} + +.share-hub__top { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: 0.9rem; + margin-bottom: 0.85rem; +} + +.share-hub__eyebrow, +.share-sheet__eyebrow { + font-size: 0.72rem; + letter-spacing: 0.08em; + text-transform: uppercase; + color: rgba(186, 210, 240, 0.62); + margin-bottom: 0.35rem; +} + +.share-hub__title { + font-size: 1.1rem; + font-weight: 700; +} + +.share-hub__status, +.share-sheet__section-head { + display: flex; + flex-wrap: wrap; + gap: 0.45rem; + align-items: center; +} + +.share-state-badge { + display: inline-flex; + align-items: center; + gap: 0.3rem; + min-height: 32px; + padding: 0.45rem 0.72rem; + font-size: 0.76rem; + font-weight: 600; + border: 1px solid rgba(255, 255, 255, 0.08); +} + +.share-state-badge--public { + background: rgba(41, 209, 125, 0.16); + color: #dfffea; +} + +.share-state-badge--private { + background: rgba(255, 255, 255, 0.06); + color: #edf5ff; +} + +.share-state-badge--link { + background: rgba(79, 142, 255, 0.14); + color: #d7e7ff; +} + +.share-state-badge--people { + background: rgba(255, 255, 255, 0.08); + color: #edf5ff; +} + +.share-hub__note { + color: rgba(210, 224, 244, 0.74); + font-size: 0.92rem; + line-height: 1.45; +} + +.share-hub__linkbox { + border: 1px solid rgba(255, 255, 255, 0.08); + background: rgba(255, 255, 255, 0.035); + border-radius: 16px; + padding: 0.85rem 0.95rem; +} + +.share-hub__linklabel { + font-size: 0.72rem; + text-transform: uppercase; + letter-spacing: 0.07em; + color: rgba(186, 210, 240, 0.58); + margin-bottom: 0.3rem; +} + +.share-hub__linkvalue { + color: #f4f8ff; + font-size: 0.95rem; + line-height: 1.45; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.share-hub__actions { + display: grid; + grid-template-columns: 1fr; + gap: 0.65rem; +} + +.share-hub__primary, +.share-hub__secondary, +.share-hub__manage, +.share-sheet__toggle, +.share-sheet__sticky-actions .btn, +.share-sheet__linkstack .btn, + +.share-hub__manage { + white-space: nowrap; +} + +.share-sheet { + height: auto !important; + max-height: min(90vh, 760px); + border-top-left-radius: 24px; + border-top-right-radius: 24px; + border: 1px solid rgba(255, 255, 255, 0.06); + background: linear-gradient(180deg, rgba(8, 18, 33, 0.995), rgba(6, 13, 24, 0.99)) !important; + box-shadow: 0 -24px 60px rgba(0, 0, 0, 0.42); +} + +.share-sheet__header { + align-items: flex-start; + padding: 0.85rem 1rem 0.6rem; +} + +.share-sheet__body { + padding: 0 1rem calc(1rem + env(safe-area-inset-bottom)); + overflow-y: auto; +} + +.share-sheet__grabber { + width: 52px; + height: 5px; + border-radius: 999px; + margin: 0 auto 0.8rem; + background: rgba(255, 255, 255, 0.22); +} + +.share-sheet__section { + border: 1px solid rgba(255, 255, 255, 0.07); + background: rgba(255, 255, 255, 0.035); + border-radius: 18px; + padding: 0.95rem; + margin-bottom: 0.9rem; +} + +.share-sheet__section-head { + justify-content: space-between; + margin-bottom: 0.7rem; + font-weight: 600; +} + +.share-sheet__linkstack, +.share-access-panel__input { + display: grid; + grid-template-columns: 1fr; + gap: 0.65rem; +} + +.share-access-panel .tokens { + min-height: 2rem; +} + +.share-access-panel .token { + background: rgba(255, 255, 255, 0.03); +} + +.share-sheet__sticky-actions { + position: sticky; + bottom: 0; + padding-top: 0.3rem; + background: linear-gradient(180deg, rgba(6, 13, 24, 0), rgba(6, 13, 24, 0.96) 28%); +} + +@media (min-width: 576px) { + .share-hub .card-body, + .share-sheet__header, + .share-sheet__body { + padding-left: 1.2rem; + padding-right: 1.2rem; + } + + .share-sheet__linkstack, + .share-access-panel__input { + grid-template-columns: 1fr auto; + align-items: center; + } +} + +@media (min-width: 768px) { + .share-hub .card-body { + padding: 1.15rem 1.2rem; + } + + .share-hub__actions { + grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); + } + + .share-sheet { + max-width: 760px; + margin: 0 auto; + left: 0; + right: 0; + } +} + +.endpoint-main_page .create-list-input-group { + display: flex; + flex-wrap: nowrap !important; + align-items: stretch; + overflow: hidden; + border-radius: 16px; + border: 1px solid rgba(255, 255, 255, 0.12); + background: rgba(7, 17, 31, 0.9); + box-shadow: 0 10px 28px rgba(0, 0, 0, 0.18); +} + +.endpoint-main_page .create-list-input-group > .create-list-title-input, +.endpoint-main_page .create-list-input-group > .form-control { + border: 0 !important; + border-right: 1px solid rgba(255, 255, 255, 0.08) !important; + border-radius: 0 !important; + background: transparent !important; + box-shadow: none !important; +} + +.endpoint-main_page .create-list-input-group > .create-list-title-input:focus, +.endpoint-main_page .create-list-input-group > .form-control:focus { + background: rgba(255, 255, 255, 0.02) !important; + box-shadow: none !important; +} + +.endpoint-main_page .create-list-input-group > .create-list-temp-toggle, +.endpoint-main_page .create-list-input-group > #tempToggle { + min-width: 9.5rem; + border: 0 !important; + border-radius: 0 !important; + background: rgba(255, 255, 255, 0.04) !important; + box-shadow: none !important; +} + +.endpoint-main_page .create-list-input-group > .create-list-temp-toggle.is-active, +.endpoint-main_page .create-list-input-group > #tempToggle.is-active { + background: rgba(41, 209, 125, 0.18) !important; +} + +.endpoint-main_page .create-list-temp-toggle__label { + display: inline-flex; + align-items: center; + justify-content: center; + min-height: 100%; +} + +.endpoint-main_page .create-list-input-group:focus-within { + border-color: rgba(41, 209, 125, 0.55); + box-shadow: 0 0 0 0.18rem rgba(41, 209, 125, 0.12), 0 10px 28px rgba(0, 0, 0, 0.18); +} + +.receipt-disclosure { + display: block; + padding: 0; + text-align: left; +} + +.receipt-disclosure, +.receipt-disclosure:hover, +.receipt-disclosure:focus, +.receipt-disclosure:active { + width: 100%; + appearance: none; + -webkit-appearance: none; +} + +.receipt-disclosure:focus-visible { + outline: none; +} + +.receipt-section--restoring { + transition: none !important; +} + +@media (max-width: 767.98px) { + .endpoint-main_page .create-list-input-group { + border-radius: 14px; + } + + .endpoint-main_page .create-list-input-group > .create-list-temp-toggle, + .endpoint-main_page .create-list-input-group > #tempToggle { + min-width: 8.25rem; + padding-left: .8rem; + padding-right: .8rem; + font-size: .9rem; + } +} + +@media (max-width: 575.98px) { + .endpoint-main_page .create-list-input-group > .create-list-title-input, + .endpoint-main_page .create-list-input-group > .form-control { + padding-left: .85rem; + padding-right: .7rem; + font-size: .95rem; + } + + .endpoint-main_page .create-list-input-group > .create-list-temp-toggle, + .endpoint-main_page .create-list-input-group > #tempToggle { + min-width: 7.6rem; + font-size: .84rem; + } + + .receipt-disclosure { + border-radius: 16px; + } +} + +.form-check-spaced { + gap: .35rem; +} + +.form-check-spaced .form-check-input, +input[type="checkbox"].form-check-input, +.table-select-checkbox { + width: .95rem !important; + height: .95rem !important; + min-width: .95rem !important; + min-height: .95rem !important; + margin-top: .18rem; +} + +.form-switch-compact .form-check-input { + width: 1.8rem !important; + height: .95rem !important; +} + +.switch-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); + gap: .8rem; +} + +.form-check.form-switch.app-switch { + display: inline-flex; + align-items: center; + gap: .75rem; + min-height: 2.75rem; + margin: 0; + padding: .58rem .82rem; + background: rgba(255,255,255,.04); + border: 1px solid var(--ui-border); + border-radius: 16px; +} + +.form-check.form-switch.app-switch .form-check-input { + float: none; + flex: 0 0 auto; + width: 2.45em !important; + height: 1.3em !important; + margin: 0 !important; + cursor: pointer; + background-color: var(--dark-400) !important; + border-color: var(--dark-300) !important; + background-position: left center !important; + transition: background-position .18s ease-in-out, background-color .18s ease-in-out, border-color .18s ease-in-out, box-shadow .18s ease-in-out !important; +} + +.form-check.form-switch.app-switch .form-check-input:checked { + background-color: var(--primary) !important; + border-color: var(--primary-border) !important; + background-position: right center !important; +} + +.form-check.form-switch.app-switch .form-check-input:focus { + box-shadow: 0 0 0 .18rem rgba(24, 64, 118, .22) !important; +} + +.form-check.form-switch.app-switch .form-check-label { + display: inline-flex; + align-items: center; + min-height: 1.3rem; + margin: 0 !important; + line-height: 1.35; + cursor: pointer; +} + +.form-check.form-switch.app-switch.form-switch-compact { + width: 100%; + justify-content: flex-start; +} + +.form-check.form-switch.app-switch.form-switch-compact .form-check-input { + width: 2.45em !important; + height: 1.3em !important; +} + +.hide-purchased-switch.form-check, +.hide-purchased-switch.form-check.app-switch { + display: inline-flex; + align-items: center; + gap: .7rem; + width: auto; + max-width: 100%; + padding: .5rem .82rem; + border-radius: 14px; + background: rgba(255,255,255,.04); + border: 1px solid var(--ui-border); +} + +.hide-purchased-switch .form-check-input { + flex: 0 0 auto; + float: none; + width: 2.45em !important; + height: 1.3em !important; + margin: 0 !important; + cursor: pointer; + background-position: left center !important; + transition: background-position .18s ease-in-out, background-color .18s ease-in-out, border-color .18s ease-in-out, box-shadow .18s ease-in-out !important; +} + +.hide-purchased-switch .form-check-input:checked { + background-position: right center !important; +} + +.hide-purchased-switch .form-check-label { + margin: 0 !important; + white-space: nowrap; + cursor: pointer; +} + +.create-list-input-group { + display: flex; + flex-wrap: nowrap !important; + align-items: stretch; + gap: 0 !important; +} + +.create-list-input-group > .form-control { + flex: 1 1 auto !important; + width: 1% !important; + min-width: 0 !important; + border-top-right-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +.create-list-input-group > .create-list-temp-toggle, +.create-list-input-group > #tempToggle { + flex: 0 0 auto !important; + width: auto !important; + min-width: 10rem; + margin-left: -1px; + font-weight: 600; + white-space: nowrap; + border-top-left-radius: 0 !important; + border-bottom-left-radius: 0 !important; + border-top-right-radius: 14px !important; + border-bottom-right-radius: 14px !important; + background: rgba(255,255,255,0.03) !important; + border-color: var(--app-border) !important; + color: var(--app-text) !important; + transition: background-color .18s ease, border-color .18s ease, color .18s ease, box-shadow .18s ease; +} + +.create-list-input-group > .create-list-temp-toggle.is-active, +.create-list-input-group > #tempToggle.is-active { + background: rgba(41, 209, 125, 0.16) !important; + border-color: rgba(41, 209, 125, 0.72) !important; + color: #9bf0c1 !important; + box-shadow: inset 0 0 0 1px rgba(41, 209, 125, 0.15); +} + +.create-list-input-group > .create-list-temp-toggle:hover, +.create-list-input-group > #tempToggle:hover, +.create-list-input-group > .create-list-temp-toggle:focus, +.create-list-input-group > #tempToggle:focus { + background: rgba(255,255,255,0.06) !important; + color: var(--app-text) !important; +} + +.create-list-input-group > .create-list-temp-toggle.is-active:hover, +.create-list-input-group > #tempToggle.is-active:hover, +.create-list-input-group > .create-list-temp-toggle.is-active:focus, +.create-list-input-group > #tempToggle.is-active:focus { + background: rgba(41, 209, 125, 0.2) !important; + color: #b7f7d2 !important; +} + +.endpoint-edit_my_list .switch-grid { + grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); +} + +.endpoint-edit_my_list .switch-grid .app-switch, +.endpoint-admin_edit_list .switch-grid .app-switch { + width: 100%; + min-height: 3.35rem; +} + +@media (max-width: 767.98px) { + .hide-purchased-switch { + padding-left: 2.95rem; + } + + .hide-purchased-switch.form-check.app-switch { + width: 100%; + } + + .switch-grid, + .endpoint-edit_my_list .switch-grid { + grid-template-columns: 1fr; + } + + .create-list-input-group { + gap: 0 !important; + } + + .create-list-input-group > .form-control { + padding-left: .9rem; + padding-right: .75rem; + } + + .create-list-input-group > .create-list-temp-toggle, + .create-list-input-group > #tempToggle { + min-width: 8.75rem; + padding-left: .85rem; + padding-right: .85rem; + font-size: .92rem; + letter-spacing: 0; + } +} diff --git a/shopping_app/static/css/split/responsive.css b/shopping_app/static/css/split/responsive.css new file mode 100644 index 0000000..9c01677 --- /dev/null +++ b/shopping_app/static/css/split/responsive.css @@ -0,0 +1,895 @@ +.app-navbar__meta--mobile { + display: none; +} + +.app-user-chip--mobile { + max-width: min(46vw, 15rem); + min-width: 0; + padding-left: .6rem; + padding-right: .4rem; +} + +.app-user-chip--mobile .badge { + max-width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +@media (max-width: 991.98px) { + .app-header { + padding-top: .55rem; + } + + .app-navbar .container-xxl { + display: grid; + grid-template-columns: minmax(0, 1fr) auto auto; + align-items: center; + gap: .6rem; + border-radius: 26px; + padding-top: .8rem; + padding-bottom: .8rem; + } + + .app-navbar__meta { + display: none; + } + + .app-brand { + overflow: hidden; + } + + .app-brand > span:last-child { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + .app-brand__title, + .app-brand__accent { + font-size: 1rem; + } + + .app-navbar__meta--mobile { + display: flex !important; + width: auto; + justify-content: flex-end; + justify-self: end; + grid-column: 2; + min-width: 0; + max-width: min(42vw, 12rem); + } + + .app-user-chip--mobile { + display: inline-flex; + } + + .app-mobile-menu { + grid-column: 3; + justify-self: end; + } +} + +@media (max-width: 575.98px) { + .app-brand__icon { + width: 2.25rem; + height: 2.25rem; + } + + .app-user-chip--mobile { + gap: .35rem; + padding: .34rem .38rem .34rem .5rem; + } + + .app-user-chip--mobile .app-user-chip__label { + font-size: .62rem; + letter-spacing: .05em; + } + + .app-user-chip--mobile .badge { + font-size: .72rem; + max-width: 5.9rem; + } +} + +@media (max-width: 430px) { + .app-navbar .container-xxl { + grid-template-columns: minmax(0, 1fr) auto auto; + gap: .45rem; + } + + .app-user-chip--mobile { + max-width: min(38vw, 8.5rem); + } + + .app-user-chip--mobile .app-user-chip__label { + display: none; + } +} + +.endpoint-main_page .list-group-item { + display: flex; + flex-direction: column; + align-items: stretch; + justify-content: flex-start; +} + +.endpoint-main_page .main-list-progress-wrap { + display: block; + width: 100%; + flex: 0 0 100%; + margin-top: 0.8rem !important; +} + +.endpoint-main_page .list-group-item > .main-list-row + .main-list-progress-wrap { + align-self: stretch; +} + +.endpoint-main_page .main-list-progress { + width: 100%; + height: 16px; + margin-top: 0 !important; + border: 1px solid rgba(255, 255, 255, 0.08); + background: + linear-gradient(180deg, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.02)), + var(--dark-700) !important; + box-shadow: + inset 0 1px 0 rgba(255, 255, 255, 0.05), + 0 4px 10px rgba(0, 0, 0, 0.18); +} + +.endpoint-main_page .main-list-progress .progress-bar.bg-success { + background: linear-gradient(135deg, rgba(40, 199, 111, 0.98), rgba(22, 163, 74, 0.98)) !important; +} + +.endpoint-main_page .main-list-progress .progress-bar.bg-warning { + background: linear-gradient(135deg, rgba(245, 189, 65, 0.98), rgba(217, 119, 6, 0.98)) !important; +} + +.endpoint-main_page .main-list-progress .progress-bar.bg-transparent { + background: rgba(255, 255, 255, 0.08) !important; +} + +.endpoint-main_page .main-list-progress__label { + max-width: calc(100% - 0.85rem); + padding: 0 0.45rem; + overflow: hidden; + text-overflow: ellipsis; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.45); + letter-spacing: 0.01em; +} + +@media (max-width: 575.98px) { + .endpoint-main_page .main-list-progress { + height: 15px; + } + + .endpoint-main_page .main-list-progress__label { + font-size: 0.64rem; + } +} + +.endpoint-main_page #mainStatsCollapse.collapsing, +.endpoint-main_page #mainStatsCollapse.show { + overflow: visible; +} + +.endpoint-main_page .main-summary-card { + height: 100%; + padding: 1rem 1rem 1.05rem; + border-radius: 1rem; + border: 1px solid rgba(255, 255, 255, 0.08); + background: linear-gradient(180deg, rgba(255,255,255,0.04), rgba(255,255,255,0.02)), rgba(9, 16, 28, 0.88); + box-shadow: 0 12px 28px rgba(0, 0, 0, 0.2); +} + +.endpoint-main_page .main-summary-card__eyebrow { + font-size: 0.72rem; + text-transform: uppercase; + letter-spacing: 0.08em; + color: rgba(255, 255, 255, 0.65); + margin-bottom: 0.2rem; +} + +.endpoint-main_page .main-summary-card__title { + font-size: 1.05rem; +} + +.endpoint-main_page .main-summary-stats { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 0.7rem; +} + +.endpoint-main_page .main-summary-stat { + padding: 0.65rem 0.75rem; + border-radius: 0.85rem; + background: rgba(255, 255, 255, 0.04); + border: 1px solid rgba(255, 255, 255, 0.06); +} + +.endpoint-main_page .main-summary-stat__label { + display: block; + font-size: 0.73rem; + color: rgba(255, 255, 255, 0.66); + margin-bottom: 0.15rem; +} + +@media (max-width: 575.98px) { + .endpoint-main_page .main-summary-card { + padding: 0.9rem; + } + + .endpoint-main_page .main-summary-stats { + grid-template-columns: 1fr; + } +} + +@media (max-width: 575.98px) { + .endpoint-list_share .shopping-item-head, + .endpoint-shared_list .shopping-item-head { + display: grid; + grid-template-columns: minmax(0, 1fr) auto; + align-items: start; + column-gap: .45rem; + } + + .endpoint-list_share .shopping-item-actions, + .endpoint-shared_list .shopping-item-actions { + align-self: start; + margin-left: 0; + justify-self: end; + } +} + +@media (max-width: 575.98px) { + .endpoint-list_share .shopping-item-main, + .endpoint-shared_list .shopping-item-main { + align-items: center; + } + + .endpoint-list_share .shopping-item-text, + .endpoint-shared_list .shopping-item-text, + .endpoint-list_share .shopping-item-main > .large-checkbox, + .endpoint-shared_list .shopping-item-main > .large-checkbox, + .endpoint-list_share .shopping-item-actions, + .endpoint-shared_list .shopping-item-actions { + align-self: center; + } + + .endpoint-list_share .shopping-item-actions, + .endpoint-shared_list .shopping-item-actions { + margin-left: auto; + justify-self: auto; + } +} + +.endpoint-list #items, +.endpoint-view_list #items, +.endpoint-list_share #items, +.endpoint-shared_list #items { + display: flex; + flex-direction: column; +} + +.endpoint-list #items > .list-group-item, +.endpoint-view_list #items > .list-group-item, +.endpoint-list_share #items > .list-group-item, +.endpoint-shared_list #items > .list-group-item { + margin: 0 !important; + border-width: 1px !important; + box-shadow: 0 4px 14px rgba(0,0,0,0.12) !important; + background-clip: padding-box; +} + +.endpoint-list #items > .list-group-item + .list-group-item, +.endpoint-view_list #items > .list-group-item + .list-group-item, +.endpoint-list_share #items > .list-group-item + .list-group-item, +.endpoint-shared_list #items > .list-group-item + .list-group-item { + margin-top: 0 !important; + border-top-width: 1px !important; +} + +@media (max-width: 767.98px){ + .endpoint-list_share #items .list-group-item, + .endpoint-shared_list #items .list-group-item { + align-items: flex-start; + } + .endpoint-list_share .list-item-actions, + .endpoint-shared_list .list-item-actions { + width: 100%; + margin-left: 0; + justify-content: flex-start; + } +} + +@media (max-width: 767.98px){ + .share-page-toolbar { + justify-content: stretch; + } + + .share-page-toolbar__spacer { + display: none; + } + + .switch-grid, + .endpoint-edit_my_list .switch-grid { + grid-template-columns: 1fr; + } +} + +@media (max-width: 991.98px){ + .endpoint-admin_templates .table-responsive > table.table { + width: max-content !important; + min-width: 900px !important; + } +} + +@media (max-width: 576px){ + .mobile-list-heading { + display: inline-flex; + max-width: 100%; + } + + .mobile-list-heading__title { + max-width: 100%; + } +} + +@media (max-width: 575.98px){ + .endpoint-main_page .list-group-item > .main-list-row { + flex-direction: column; + align-items: stretch; + } + + .endpoint-main_page .list-main-actions { + width: 100%; + } +} + +@media (max-width: 575.98px){ + .endpoint-main_page .list-group-item > .main-list-row { + flex-direction: row; + align-items: center; + } + + .endpoint-main_page .list-main-actions { + width: auto; + margin-left: auto; + } + + .endpoint-main_page .list-main-actions .btn { + padding: .38rem .52rem; + min-width: 2.35rem; + } + + .endpoint-main_page .list-main-title { + display: flex; + flex-wrap: wrap; + gap: .15rem; + } + + .endpoint-main_page .list-main-meta { + flex: 1 1 auto; + min-width: 0; + } + + .endpoint-main_page .list-main-title__link { + min-width: 0; + max-width: 100%; + } + + .shopping-item-row { + align-items: flex-start !important; + } + + .shopping-item-actions { + width: auto; + margin-top: 0; + margin-left: auto; + justify-content: flex-end; + } + + .shopping-item-actions .btn { + min-width: 2.35rem; + padding: .38rem .52rem; + } + + .shopping-compact-input-group { + display: flex; + } + + .shopping-compact-input-group > .form-control { + min-width: 0; + } + + .shopping-qty-input { + flex-basis: 4rem; + max-width: 4rem; + } + + .shopping-compact-submit { + min-width: auto; + padding-left: .8rem; + padding-right: .8rem; + } + + .ui-password-group > .ui-password-toggle { + min-width: 2.75rem; + padding-left: .7rem; + padding-right: .7rem; + } +} + +@media (max-width: 575.98px){ + .shopping-item-main { + gap: .55rem; + } + + .shopping-item-head { + gap: .45rem; + } + + .shopping-item-actions { + margin-left: auto; + align-self: flex-start; + } + + .shopping-item-actions .btn { + min-width: 2.2rem; + padding: .34rem .48rem; + } + + .shopping-product-input-group > .shopping-product-name-input, + .shopping-expense-input-group > .shopping-expense-amount-input { + flex: 0 0 60%; + min-width: 0; + } + + .shopping-product-input-group > .shopping-qty-input { + flex: 0 0 15%; + max-width: 15%; + min-width: 0; + } + + .shopping-product-input-group > .shopping-compact-submit { + flex: 0 0 25%; + width: 25%; + min-width: 0; + padding-left: .55rem; + padding-right: .55rem; + font-size: .95rem; + } + + .shopping-expense-input-group > .shopping-compact-submit { + padding-left: .7rem; + padding-right: .7rem; + } + + .list-toolbar { + align-items: flex-start !important; + } + + .list-toolbar__sort { + flex: 0 0 auto; + } +} + +@media (max-width: 767.98px){ + .endpoint-list .shopping-product-input-group, + .endpoint-list_share .shopping-product-input-group, + .endpoint-shared_list .shopping-product-input-group, + .endpoint-list .shopping-expense-input-group, + .endpoint-list_share .shopping-expense-input-group, + .endpoint-shared_list .shopping-expense-input-group { + width: 100%; + } + + .endpoint-list .shopping-product-input-group > .shopping-product-name-input, + .endpoint-list_share .shopping-product-input-group > .shopping-product-name-input, + .endpoint-shared_list .shopping-product-input-group > .shopping-product-name-input { + flex: 0 0 60% !important; + max-width: 60% !important; + min-width: 0; + } + + .endpoint-list .shopping-product-input-group > .shopping-qty-input, + .endpoint-list_share .shopping-product-input-group > .shopping-qty-input, + .endpoint-shared_list .shopping-product-input-group > .shopping-qty-input { + flex: 0 0 15% !important; + max-width: 15% !important; + min-width: 0; + padding-left: .35rem; + padding-right: .35rem; + } + + .endpoint-list .shopping-product-input-group > .shopping-compact-submit, + .endpoint-list_share .shopping-product-input-group > .shopping-compact-submit, + .endpoint-shared_list .shopping-product-input-group > .shopping-compact-submit { + flex: 0 0 25% !important; + width: 25% !important; + min-width: 0 !important; + padding-left: .4rem; + padding-right: .4rem; + } + + .endpoint-list .shopping-expense-input-group > .shopping-expense-amount-input, + .endpoint-list_share .shopping-expense-input-group > .shopping-expense-amount-input, + .endpoint-shared_list .shopping-expense-input-group > .shopping-expense-amount-input { + flex: 1 1 auto !important; + min-width: 0; + } + + .endpoint-list .shopping-expense-input-group > .shopping-compact-submit, + .endpoint-list_share .shopping-expense-input-group > .shopping-compact-submit, + .endpoint-shared_list .shopping-expense-input-group > .shopping-compact-submit { + flex: 0 0 5rem !important; + width: 5rem !important; + min-width: 5rem !important; + padding-left: .35rem; + padding-right: .35rem; + } + + .endpoint-list .shopping-product-input-group > .shopping-compact-submit .shopping-btn-label, + .endpoint-list_share .shopping-product-input-group > .shopping-compact-submit .shopping-btn-label, + .endpoint-shared_list .shopping-product-input-group > .shopping-compact-submit .shopping-btn-label, + .endpoint-list .shopping-expense-input-group > .shopping-compact-submit .shopping-btn-label, + .endpoint-list_share .shopping-expense-input-group > .shopping-compact-submit .shopping-btn-label, + .endpoint-shared_list .shopping-expense-input-group > .shopping-compact-submit .shopping-btn-label { + display: none; + } + + .endpoint-list .shopping-product-input-group > .shopping-compact-submit .shopping-btn-icon, + .endpoint-list_share .shopping-product-input-group > .shopping-compact-submit .shopping-btn-icon, + .endpoint-shared_list .shopping-product-input-group > .shopping-compact-submit .shopping-btn-icon, + .endpoint-list .shopping-expense-input-group > .shopping-compact-submit .shopping-btn-icon, + .endpoint-list_share .shopping-expense-input-group > .shopping-compact-submit .shopping-btn-icon, + .endpoint-shared_list .shopping-expense-input-group > .shopping-compact-submit .shopping-btn-icon { + margin: 0; + font-size: 1rem; + } +} + +@media (max-width: 767.98px){ + .endpoint-view_list .shopping-product-input-group > .shopping-product-name-input { + flex: 0 0 60% !important; + max-width: 60% !important; + min-width: 0; + } + + .endpoint-view_list .shopping-product-input-group > .shopping-qty-input { + flex: 0 0 15% !important; + max-width: 15% !important; + min-width: 0; + padding-left: .35rem; + padding-right: .35rem; + } + + .endpoint-view_list .shopping-product-input-group > .shopping-compact-submit { + flex: 0 0 25% !important; + width: 25% !important; + min-width: 0 !important; + padding-left: .4rem; + padding-right: .4rem; + } + + .endpoint-view_list .shopping-expense-input-group > .shopping-expense-amount-input { + flex: 1 1 auto !important; + min-width: 0; + } + + .endpoint-view_list .shopping-expense-input-group > .shopping-compact-submit { + flex: 0 0 5rem !important; + width: 5rem !important; + min-width: 5rem !important; + padding-left: .35rem; + padding-right: .35rem; + } + + .endpoint-view_list .shopping-product-input-group > .shopping-compact-submit .shopping-btn-label, + .endpoint-view_list .shopping-expense-input-group > .shopping-compact-submit .shopping-btn-label { + display: none; + } + + .endpoint-view_list .shopping-product-input-group > .shopping-compact-submit .shopping-btn-icon, + .endpoint-view_list .shopping-expense-input-group > .shopping-compact-submit .shopping-btn-icon { + margin: 0; + font-size: 1rem; + } +} + +@media (max-width: 575.98px){ + .shopping-item-head { + flex-wrap: wrap; + align-items: flex-start; + } + + .shopping-item-text { + flex: 1 1 100%; + min-width: 0; + } + + .shopping-item-actions { + width: 100%; + margin-left: 0; + justify-content: flex-end; + } +} + +@media (max-width: 575.98px){ + .shopping-item-main { + align-items: center; + } + + .shopping-item-head { + flex-wrap: nowrap; + align-items: center; + gap: .4rem; + } + + .shopping-item-text { + flex: 1 1 auto; + min-width: 0; + gap: .25rem; + } + + .shopping-item-actions { + width: auto; + margin-left: auto; + gap: .25rem; + } + + .shopping-item-actions .btn { + min-width: 2rem; + padding: .3rem .42rem; + } + + .hide-purchased-switch--right { + width: auto; + max-width: 100%; + } + + .list-action-row { + gap: .5rem; + } + + .list-action-row > .list-action-row__btn, + .list-action-row__form { + flex: 1 1 50%; + min-width: 0; + } + + .list-action-row__btn { + padding-left: .55rem; + padding-right: .55rem; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } +} + +@media (max-width: 575.98px){ + .endpoint-view_list .list-toolbar { + display: grid !important; + grid-template-columns: minmax(0, 1fr) auto; + align-items: center !important; + gap: .4rem !important; + flex-wrap: nowrap !important; + } + + .endpoint-view_list .list-toolbar__sort.btn { + min-width: 0; + padding: .35rem .55rem; + font-size: .82rem; + } + + .endpoint-view_list .hide-purchased-switch--right { + min-width: 0; + gap: .25rem; + font-size: .82rem; + } + + .endpoint-view_list .hide-purchased-switch--right .form-check-label { + margin-left: .25rem !important; + white-space: nowrap; + } + + .endpoint-view_list .hide-purchased-switch--right .form-check-input { + transform: scale(.92); + transform-origin: center; + } + + .list-header-toolbar { + align-items: flex-start !important; + } + + .list-header-toolbar .list-toolbar { + width: 100%; + justify-content: flex-end !important; + } +} + +@media (max-width: 575.98px){ + .endpoint-list_share .shopping-item-main, + .endpoint-shared_list .shopping-item-main, + .endpoint-view_list .shopping-item-main, + .endpoint-list .shopping-item-main { + gap: .55rem; + } + + .endpoint-list_share .shopping-item-head, + .endpoint-shared_list .shopping-item-head, + .endpoint-view_list .shopping-item-head, + .endpoint-list .shopping-item-head { + display: flex; + align-items: center; + justify-content: space-between; + gap: .45rem; + } + + .endpoint-list_share .shopping-item-text, + .endpoint-shared_list .shopping-item-text, + .endpoint-view_list .shopping-item-text, + .endpoint-list .shopping-item-text { + flex: 1 1 auto; + min-width: 0; + gap: .25rem; + } + + .endpoint-list_share .shopping-item-actions, + .endpoint-shared_list .shopping-item-actions, + .endpoint-view_list .shopping-item-actions, + .endpoint-list .shopping-item-actions { + align-self: start; + width: auto; + margin-left: auto; + gap: .25rem; + } + + .endpoint-list_share .shopping-item-actions .btn, + .endpoint-shared_list .shopping-item-actions .btn { + min-width: 2rem; + padding: .3rem .42rem; + } +} + +@media (max-width: 575.98px){ + .endpoint-list_share .shopping-action-btn, + .endpoint-shared_list .shopping-action-btn, + .endpoint-view_list .shopping-action-btn, + .endpoint-list .shopping-action-btn { + width: 2.15rem !important; + height: 2.15rem !important; + min-width: 2.15rem !important; + min-height: 2.15rem !important; + border-radius: .65rem !important; + } + + .endpoint-list_share .shopping-action-btn--wide, + .endpoint-shared_list .shopping-action-btn--wide, + .endpoint-view_list .shopping-action-btn--wide, + .endpoint-list .shopping-action-btn--wide { + min-width: 5.4rem !important; + padding: 0 .72rem !important; + } +} + +@media (max-width: 575.98px){ + .endpoint-list_share .shopping-action-btn--countdown, + .endpoint-shared_list .shopping-action-btn--countdown, + .endpoint-view_list .shopping-action-btn--countdown, + .endpoint-list .shopping-action-btn--countdown { + min-width: 3rem !important; + padding: 0 .55rem !important; + } +} + +@media (max-width: 575.98px) { + .ui-password-group > .ui-password-toggle { + flex-basis: 44px !important; + width: 44px !important; + min-width: 44px !important; + } +} + +@media (max-width: 767.98px) { + .endpoint-list .shopping-entry-card, + .endpoint-list_share .shopping-entry-card, + .endpoint-shared_list .shopping-entry-card, + .endpoint-view_list .shopping-entry-card { + padding: .8rem; + border-radius: .95rem; + } + + .endpoint-list .shopping-entry-card__label, + .endpoint-list_share .shopping-entry-card__label, + .endpoint-shared_list .shopping-entry-card__label, + .endpoint-view_list .shopping-entry-card__label { + font-size: .92rem; + } + + .endpoint-list .shopping-entry-card__hint, + .endpoint-list_share .shopping-entry-card__hint, + .endpoint-shared_list .shopping-entry-card__hint, + .endpoint-view_list .shopping-entry-card__hint { + font-size: .78rem; + margin-bottom: .65rem; + } +} + +@media (max-width: 767.98px) { + .endpoint-expenses .expenses-range-toolbar { + justify-content: stretch !important; + overflow: visible; + padding-bottom: 0; + } + + .endpoint-expenses .expenses-range-group { + display: grid !important; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 0.55rem; + width: 100%; + min-width: 0; + } + + .endpoint-expenses .expenses-table-toolbar .expenses-range-group { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + + .endpoint-expenses .expenses-range-group > .btn { + flex: initial !important; + width: 100%; + min-width: 0; + padding-inline: 0.55rem; + font-size: 0.95rem; + } + + .endpoint-expenses .expenses-date-range { + display: grid !important; + grid-template-columns: 52px minmax(0, 1fr); + gap: 0.55rem; + width: 100%; + max-width: 100% !important; + flex-wrap: wrap !important; + } + + .endpoint-expenses .expenses-date-range > .input-group-text, + .endpoint-expenses .expenses-date-range > .form-control, + .endpoint-expenses .expenses-date-range > .btn { + width: 100% !important; + min-width: 0 !important; + flex: initial !important; + border-radius: 0.85rem !important; + } + + .endpoint-expenses .expenses-date-range > .btn { + grid-column: 1 / -1; + } +} + +@media (max-width: 767.98px) { + .list-quick-actions { + padding: .9rem; + gap: .75rem; + } + + .list-quick-actions__header { + flex-direction: column; + gap: .35rem; + } + + .list-quick-actions__hint { + max-width: none; + text-align: left; + } + + .list-quick-actions__grid { + grid-template-columns: 1fr; + } + + .list-quick-actions__action.btn { + min-height: 72px; + padding: .85rem .9rem; + } +} diff --git a/shopping_app/static/css/split/split_all.zip b/shopping_app/static/css/split/split_all.zip new file mode 100644 index 0000000000000000000000000000000000000000..695e775e293280a50d424aca18be843b02b7ecd6 GIT binary patch literal 30568 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
B0P9<7087r%GIo#H+(Q(S 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 literal 0 HcmV?d00001 diff --git a/shopping_app/static/css/split/01-base.css b/shopping_app/static/css/split/theme.css similarity index 62% rename from shopping_app/static/css/split/01-base.css rename to shopping_app/static/css/split/theme.css index 7035b26..8daab0f 100644 --- a/shopping_app/static/css/split/01-base.css +++ b/shopping_app/static/css/split/theme.css @@ -1,8 +1,4 @@ -/* ========================================================= - Variables (single source of truth) -========================================================= */ :root { - /* brand / info */ --primary: #184076; --primary-border: #153866; --primary-text: #e6f0ff; @@ -11,22 +7,18 @@ --info-border: var(--primary-border); --info-text: var(--primary-text); - /* success */ --success: #1c6930; --success-border: #165024; --success-text: #eaffea; - /* warning */ --warning: #665c1e; --warning-border: #4d4415; --warning-text: #fffbe5; - /* danger */ --danger: #6e1a1e; --danger-border: #531417; --danger-text: #ffeaea; - /* neutrals / dark */ --dark-900: #181a1b; --dark-800: #1c1f22; --dark-750: #1f2225; @@ -47,6 +39,42 @@ --text-dim: #e1e1e1; --muted: #6c757d; - /* defaults */ --progress-default: #3d7bd6; } + +.clickable-item { + cursor: pointer; +} + +.progress-thin { + height: 12px; +} + +.item-not-checked { + background-color: var(--dark-500) !important; + color: #fff !important; +} + +#empty-placeholder { + font-style: italic; + pointer-events: none; +} + +.fade-out { + opacity: 0; + transition: opacity 0.5s ease; +} + +@media (pointer: fine){ + .only-mobile { + display: none !important; + } +} + +.bg-success { + background-color: var(--success) !important; +} + +.bg-warning { + background-color: var(--warning) !important; +} diff --git a/shopping_app/static/css/style.css b/shopping_app/static/css/style.css deleted file mode 100644 index 3d649c2..0000000 --- a/shopping_app/static/css/style.css +++ /dev/null @@ -1,6041 +0,0 @@ -/* ========================================================= - Variables (single source of truth) -========================================================= */ -:root { - /* brand / info */ - --primary: #184076; - --primary-border: #153866; - --primary-text: #e6f0ff; - - --info: var(--primary); - --info-border: var(--primary-border); - --info-text: var(--primary-text); - - /* success */ - --success: #1c6930; - --success-border: #165024; - --success-text: #eaffea; - - /* warning */ - --warning: #665c1e; - --warning-border: #4d4415; - --warning-text: #fffbe5; - - /* danger */ - --danger: #6e1a1e; - --danger-border: #531417; - --danger-text: #ffeaea; - - /* neutrals / dark */ - --dark-900: #181a1b; - --dark-800: #1c1f22; - --dark-750: #1f2225; - --dark-700: #212529; - --dark-650: #23272a; - --dark-600: #2a2d31; - --dark-550: #2b2f33; - --dark-500: #2c2f33; - --dark-480: #2c3034; - --dark-470: #2a2d31; - --dark-450: #3a3f44; - --dark-400: #343a40; - --dark-350: #3d4248; - --dark-300: #495057; - - --text-strong: #f8f9fa; - --text: #e2e3e5; - --text-dim: #e1e1e1; - --muted: #6c757d; - - /* defaults */ - --progress-default: #3d7bd6; -} - -/* ========================================================= - Utilities & Sizes -========================================================= */ - -.large-checkbox { - width: 1.5em; - height: 1.5em; -} - -.clickable-item { - cursor: pointer; -} - -.progress-thin { - height: 12px; -} - -.item-not-checked { - background-color: var(--dark-500) !important; - color: #fff !important; -} - -#empty-placeholder { - font-style: italic; - pointer-events: none; -} - -.fade-out { - opacity: 0; - transition: opacity 0.5s ease; -} - -@media (pointer: fine) { - .only-mobile { - display: none !important; - } -} - -/* Bootstrap bg overrides via variables */ -.bg-success { - background-color: var(--success) !important; -} - -.bg-warning { - background-color: var(--warning) !important; -} - -/* ========================================================= - Buttons -========================================================= */ -/* Primary */ -.btn-primary { - background-color: var(--primary) !important; - border-color: var(--primary-border) !important; -} - -.btn-primary:hover, -.btn-primary:focus, -.btn-primary:active { - background-color: #13315f !important; - border-color: #10284f !important; -} - -/* Success */ -.btn-success { - background-color: var(--success) !important; - border-color: var(--success-border) !important; - color: #fff !important; -} - -.btn-success:hover, -.btn-success:focus, -.btn-success:active { - background-color: #155627 !important; - border-color: #124521 !important; - color: #fff !important; -} - -/* Warning */ -.btn-warning { - background-color: var(--warning) !important; - border-color: var(--warning-border) !important; - color: var(--warning-text) !important; -} - -.btn-warning:hover, -.btn-warning:focus, -.btn-warning:active { - background-color: #5c4c17 !important; - border-color: #3e3610 !important; - color: var(--warning-text) !important; -} - -/* Outline */ -.btn-outline-success { - color: var(--success) !important; - border-color: var(--success) !important; -} - -.btn-outline-success:hover, -.btn-outline-success:focus, -.btn-outline-success:active { - background-color: var(--success) !important; - border-color: var(--success-border) !important; - color: #fff !important; -} - -.btn-outline-warning { - color: #d9c97a !important; - border-color: var(--warning) !important; -} - -.btn-outline-warning:hover, -.btn-outline-warning:focus, -.btn-outline-warning:active { - background-color: var(--warning) !important; - border-color: var(--warning-border) !important; - color: var(--warning-text) !important; -} - -/* File input button */ -input[type="file"]::file-selector-button { - background-color: #1b4a29; - color: #f0f0f0; - border: none; - padding: .5em 1em; - border-radius: 4px; - font-weight: bold; - cursor: pointer; - transition: background .2s; -} - -/* ========================================================= - Forms -========================================================= */ -.form-select, -.form-control, -textarea.form-control { - background-color: var(--dark-700) !important; - color: var(--text-strong) !important; - border: 1px solid var(--dark-300) !important; -} - -.form-select:focus, -.form-control:focus, -textarea.form-control:focus { - background-color: var(--dark-800) !important; - border-color: var(--primary) !important; - color: #fff !important; - box-shadow: 0 0 0 .25rem rgba(24, 64, 118, .35) !important; -} - -.form-control:disabled, -textarea.form-control:disabled { - background-color: var(--dark-550) !important; - color: var(--muted) !important; - cursor: not-allowed; -} - -/* Switch */ -.form-switch .form-check-input { - background-color: var(--dark-400) !important; - border-color: var(--dark-300) !important; -} - -.form-switch .form-check-input:checked { - background-color: var(--primary) !important; - border-color: var(--primary-border) !important; -} - -/* Placeholders */ -.form-control::placeholder, -.bg-dark .form-control::placeholder { - color: #aaa !important; - opacity: 1 !important; -} - -/* Paired corners (utility) */ -#tempToggle { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.create-list-input-group > input.form-control { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -/* XXL custom checkbox */ -input[type="checkbox"].large-checkbox { - appearance: none; - -webkit-appearance: none; - -moz-appearance: none; - width: 1.5em; - height: 1.5em; - margin: 0; - padding: 0; - outline: none; - background: none; - cursor: pointer; - position: relative; - vertical-align: middle; -} - -input[type="checkbox"].large-checkbox::before { - content: '✗'; - color: #dc3545; - font-size: 1.6em; - font-weight: 700; - position: absolute; - inset: 0; - display: flex; - align-items: center; - justify-content: center; - line-height: 1; - transition: color .2s; -} - -input[type="checkbox"].large-checkbox:checked::before { - content: '✓'; - color: #fff; -} - -input[type="checkbox"].large-checkbox:disabled::before { - opacity: .5; - cursor: not-allowed; -} - -input[type="checkbox"].large-checkbox:disabled { - cursor: not-allowed; -} - -/* Tom-Select / TS */ -.tom-dark .ts-control { - background-color: var(--dark-700) !important; - color: #fff !important; - border: 1px solid var(--dark-300) !important; - border-radius: .375rem; - min-height: 38px; - padding: .25rem .5rem; - box-sizing: border-box; -} - -.tom-dark .ts-control .item { - background-color: var(--dark-400) !important; - color: #fff !important; - border-radius: .25rem; - padding: 2px 8px; - margin-right: 4px; -} - -.ts-dropdown { - background-color: var(--dark-700) !important; - color: #fff !important; - border: 1px solid var(--dark-300); - border-radius: .375rem; - z-index: 9999 !important; - max-height: 300px; - overflow-y: auto; -} - -.ts-dropdown .active { - background-color: var(--dark-300) !important; - color: #fff !important; -} - -td select.tom-dark { - width: 100%; - max-width: 100%; - box-sizing: border-box; -} - -/* ========================================================= - Alerts, Badges, Background helpers -========================================================= */ -/* Alerts */ -.alert-success { - background-color: #225d36 !important; - color: var(--success-text) !important; - border-color: #174428 !important; -} - -.alert-danger { - background-color: #7a1f23 !important; - color: var(--danger-text) !important; - border-color: #531417 !important; -} - -.alert-info { - background-color: var(--primary) !important; - color: var(--primary-text) !important; - border-color: var(--primary-border) !important; -} - -.alert-warning { - background-color: var(--warning) !important; - color: var(--warning-text) !important; - border-color: var(--warning-border) !important; -} - -.alert-light { - background-color: #3a3f44 !important; - color: var(--text-strong) !important; - border-color: var(--dark-480) !important; -} - -/* Badges */ -.badge.bg-success, -.badge.text-bg-success { - background-color: #225d36 !important; - color: var(--success-text) !important; -} - -.badge.bg-danger, -.badge.text-bg-danger { - background-color: #7a1f23 !important; - color: var(--danger-text) !important; -} - -.badge.bg-info, -.badge.text-bg-info { - background-color: #1d3a4d !important; - color: #eaf6ff !important; -} - -.badge.bg-warning, -.badge.text-bg-warning { - background-color: var(--warning) !important; - color: var(--warning-text) !important; -} - -.badge.bg-secondary, -.badge.text-bg-secondary { - background-color: var(--dark-400) !important; - color: #e2e3e5 !important; -} - -.badge.bg-primary, -.badge.text-bg-primary { - background-color: var(--primary) !important; - color: var(--primary-text) !important; -} - -.badge.bg-light, -.badge.text-bg-light { - background-color: var(--dark-350) !important; - color: #f1f3f5 !important; -} - -.badge.bg-dark, -.badge.text-bg-dark { - background-color: var(--dark-900) !important; - color: var(--text-strong) !important; -} - -/* ========================================================= - Progress -========================================================= */ -.progress-dark { - background-color: var(--dark-700) !important; - border-radius: 20px !important; - overflow: hidden; -} - -.progress { - background-color: #2a2d31 !important; - border-radius: 20px !important; -} - -.progress-bar { - border-radius: 0 !important; - transition: width .4s ease, background-color .4s ease; - background-color: var(--progress-default) !important; -} - -.progress-bar:first-child { - border-top-left-radius: 20px !important; - border-bottom-left-radius: 20px !important; -} - -.progress-bar:last-child { - border-top-right-radius: 20px !important; - border-bottom-right-radius: 20px !important; -} - -.progress-bar.bg-success { - background-color: var(--success) !important; -} - -.progress-bar.bg-danger { - background-color: var(--danger) !important; -} - -.progress-bar.bg-warning { - background-color: var(--warning) !important; - color: #fff !important; -} - -.progress-bar.bg-info { - background-color: #16425a !important; -} - -/* Label (parent must be position-relative) */ -.progress-label { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - pointer-events: none; - white-space: nowrap; -} - -/* ========================================================= - Cards & Tables -========================================================= */ -.card { - background-color: var(--dark-500) !important; - border: 1px solid var(--dark-450) !important; - color: var(--text) !important; -} - -.card-header, -.card-footer { - background-color: var(--dark-650) !important; - border-color: var(--dark-450) !important; - color: #f1f3f5 !important; -} - -.card .table { - border-radius: 0 !important; - overflow: hidden; - margin-bottom: 0; -} - -.table-responsive { - overflow-x: auto; - -webkit-overflow-scrolling: touch; -} - -.table-responsive table { - min-width: 1000px; -} - -.table-dark.table-striped tbody tr:nth-of-type(odd) { - background-color: rgba(255, 255, 255, .025); -} - -.table-dark tbody tr:hover { - background-color: rgba(255, 255, 255, .04); -} - -.table-dark thead th { - background-color: var(--dark-800); - color: var(--text-dim); - font-weight: 500; - border-bottom: 1px solid var(--dark-450); -} - -.table-dark td, -.table-dark th { - padding: .6rem .75rem; - vertical-align: middle; - border-top: 1px solid var(--dark-450); -} - -/* ========================================================= - Navs & Pagination -========================================================= */ -.nav-tabs .nav-link.active, -.nav-tabs .nav-item.show .nav-link { - background-color: var(--dark-500) !important; - color: var(--text-strong) !important; - border-color: var(--dark-450) var(--dark-450) var(--dark-500) !important; -} - -.page-link { - color: #e0e0e0 !important; - background-color: var(--dark-750) !important; - border: 1px solid var(--dark-450) !important; -} - -.page-link:hover, -.page-link:focus { - color: #fff !important; - background-color: var(--dark-400) !important; - border-color: var(--dark-300) !important; -} - -.page-item.active .page-link { - color: #fff !important; - background-color: var(--primary) !important; - border-color: var(--primary-border) !important; -} - -.page-item.disabled .page-link { - color: var(--muted) !important; - background-color: var(--dark-550) !important; - border-color: var(--dark-450) !important; -} - -/* ========================================================= - Lists & Misc UI -========================================================= */ -.list-group-item { - display: flex; - align-items: center; - justify-content: space-between; -} - -/* Zachowaj ostre krawędzie tylko dla list flush (np. w panelach edycji) */ -.list-group-flush > .list-group-item:first-child, -.list-group-flush > .list-group-item:last-child { - border-radius: 0 !important; -} - -#items li.hide-purchased { - display: none !important; -} - -#mass-add-list li { - transition: background .2s; -} - -#mass-add-list li.active { - background: #198754 !important; - color: #fff !important; - border: 1px solid #000 !important; -} - -.quantity-input { - width: 60px; - background: var(--dark-400); - color: #fff; - border: 1px solid var(--dark-300); - border-radius: 4px; - text-align: center; -} - -.add-btn { - margin-left: 10px; -} - -.quantity-controls { - min-width: 120px; - display: flex; - align-items: center; - justify-content: flex-end; - gap: 4px; -} - -/* ========================================================= - Toasts & Info Bar -========================================================= */ -.toast { - animation: fadeInUp .5s ease; -} - -@keyframes fadeInUp { - from { - opacity: 0; - transform: translateY(20px); - } - - to { - opacity: 1; - transform: translateY(0); - } -} - -/* Base toast when not using text-bg-* */ -.toast:not([class*="text-bg-"]) { - background-color: var(--dark-500) !important; - color: #f1f1f1 !important; - border: 1px solid var(--dark-450) !important; - animation: fadeInUp .5s ease; -} - -.toast .toast-body { - color: inherit !important; -} - -.toast .btn-close { - filter: invert(1) grayscale(100%) brightness(200%); -} - -/* Typed toasts (override Bootstrap text-bg-*) */ -.toast.text-bg-primary { - background-color: var(--info) !important; - color: var(--info-text) !important; - border-color: var(--info-border) !important; -} - -.toast.text-bg-info { - background-color: var(--info) !important; - color: var(--info-text) !important; - border-color: var(--info-border) !important; -} - -.toast.text-bg-success { - background-color: var(--success) !important; - color: var(--success-text) !important; - border-color: var(--success-border) !important; -} - -.toast.text-bg-warning { - background-color: var(--warning) !important; - color: var(--warning-text) !important; - border-color: var(--warning-border) !important; -} - -.toast.text-bg-danger { - background-color: var(--danger) !important; - color: var(--danger-text) !important; - border-color: var(--danger-border) !important; -} - -.toast-body { - color: #fff !important; - font-weight: 500 !important; -} - -.info-bar-fixed { - width: 100%; - color: var(--text-strong); - background-color: var(--dark-700); - border-radius: 12px 12px 0 0; - text-align: center; - padding: 10px 10px; - font-size: .95rem; - box-sizing: border-box; - margin-top: 2rem; - box-shadow: 0 -1px 4px rgba(0, 0, 0, .25); -} - -@media (max-width: 768px) { - .info-bar-fixed { - position: static; - font-size: .85rem; - padding: 8px 4px; - border-radius: 0; - } -} - -/* ========================================================= - Modals (incl. fullscreen chart modal) -========================================================= */ -.modal-content { - background-color: var(--dark-470) !important; - color: #f1f1f1 !important; - border: 1px solid var(--dark-450) !important; -} - -.modal-header, -.modal-footer { - background-color: var(--dark-650) !important; - border-color: var(--dark-450) !important; -} - -/* Fullscreen chart modal */ -#chartFullscreenModal .modal-dialog { - max-width: 100vw; - width: 100vw; - margin: 0; -} - -#chartFullscreenModal .modal-content { - height: 100vh; - border-radius: 0; -} - -#chartFullscreenModal .modal-body { - display: flex; - flex: 1 1 auto; - padding: 0; - overflow: hidden; -} - -#chartFullscreenCanvas { - display: block; - width: 100%; - height: 100%; -} - -/* ========================================================= - Dropdown (TS already above) — active -========================================================= */ -.ts-dropdown .active { - background-color: var(--dark-300) !important; -} - -.list-group-item.bg-success { - background-color: var(--success) !important; - border-color: var(--success-border) !important; - color: var(--success-text) !important; - --bs-bg-opacity: 1 !important; -} - -.list-group-item.bg-warning { - background-color: var(--warning) !important; - border-color: var(--warning-border) !important; - color: var(--warning-text) !important; - --bs-bg-opacity: 1 !important; -} - -.btn-outline-light { - color: #f8f9fa !important; - border-color: #f8f9fa !important; - background-color: transparent !important; - /* brak białego tła domyślnie */ -} - -.btn-outline-light:hover, -.btn-outline-light:focus { - background-color: #6c757d !important; - /* szare, jak wcześniej */ - color: #fff !important; - border-color: #6c757d !important; -} - -.btn-outline-light:active, -.btn-outline-light.active, -.show>.btn-outline-light.dropdown-toggle { - background-color: #5a6268 !important; - /* ciemniejsze szare na active */ - color: #fff !important; - border-color: #545b62 !important; -} - -.btn-outline-info { - color: var(--info) !important; - border-color: var(--info) !important; - background-color: transparent !important; -} - -.btn-outline-info:hover, -.btn-outline-info:focus { - background-color: #1d4d8c !important; - border-color: #1d4d8c !important; - color: var(--info-text) !important; -} - -.btn-outline-info:active, -.btn-outline-info.active, -.show>.btn-outline-info.dropdown-toggle { - background-color: var(--info) !important; - border-color: var(--info-border) !important; - color: var(--info-text) !important; -} - -/* Tekstowe kolory */ -.text-success { - color: var(--success) !important; -} - -.text-warning { - color: var(--warning) !important; -} - -.text-info { - color: var(--info) !important; -} - -.text-danger { - color: var(--danger) !important; -} - - -.settings-category-card { - background: rgba(255,255,255,.03); - border: 1px solid rgba(255,255,255,.09); - border-radius: 16px; - padding: 1rem; - height: 100%; -} - -.settings-category-header { - display: flex; - align-items: center; - justify-content: space-between; - gap: .75rem; -} - -.settings-category-name { - font-size: 1rem; - font-weight: 700; - line-height: 1.2; -} - -.settings-override-badge { - white-space: nowrap; -} - -.settings-color-controls { - display: flex; - align-items: stretch; - gap: .75rem; -} - -.settings-color-controls .category-color { - width: 72px; - min-width: 72px; - height: auto; - padding: .35rem; - border-radius: 14px !important; - border: 1px solid rgba(255,255,255,.14); - background: rgba(255,255,255,.04); -} - -.settings-color-actions { - display: flex; - flex: 1 1 auto; -} - -.settings-color-actions .btn { - flex: 1 1 0; - min-height: 44px; - border-radius: 14px !important; - display: inline-flex; - align-items: center; - justify-content: center; - text-align: center; -} - -.settings-color-actions .btn + .btn { - margin-left: .5rem; -} - -@media (min-width: 992px) { - .settings-category-name { - font-size: 1.08rem; - } -} - -@media (max-width: 767.98px) { - .settings-category-card { - padding: .9rem; - } - - .settings-color-controls { - flex-direction: column; - } - - .settings-color-controls .category-color { - width: 100%; - min-width: 0; - height: 48px; - } - - .settings-color-actions { - flex-direction: column; - } - - .settings-color-actions .btn + .btn { - margin-left: 0; - margin-top: .5rem; - } -} - -/* ========== Kolorowe wskaźniki pod pickerem ========== */ -.color-indicators .indicator { - display: grid; - grid-template-columns: auto 1fr auto; - align-items: center; - gap: .5rem; -} - -.color-indicators .bar { - height: 10px; - border-radius: 6px; - border: 1px solid rgba(255,255,255,.25); - box-shadow: inset 0 0 0 1px rgba(0,0,0,.25); -} - -/* ========== Swatch + zapisy heksowe ========== */ -.swatch { - width: 16px; - height: 16px; - border-radius: 50%; - display: inline-block; - border: 1px solid rgba(0,0,0,.15); -} - -.hex, -.hex-label { - font-variant-numeric: lining-nums; - letter-spacing: .2px; -} - -/* ========== OCR textarea ========== */ -.settings-ocr-textarea { - font: inherit; - line-height: 1.45; -} - -/* ========== Odznaka poziomu czułości ========== */ -.sens-badge { font-weight: 600; } -.sens-low { background: rgba(108,117,125,.25); color: #ced4da; } /* szary */ -.sens-mid { background: rgba(13,110,253,.25); color: #9ec5fe; } /* niebieski */ -.sens-high { background: rgba(220,53,69,.25); color: #f1aeb5; } /* czerwony */ - -/* ========================================================= - COMPACT: przyciski akcji na listach - - Desktop: standard Bootstrap - - <=576px: kompakt -========================================================= */ - -/* <=420px: tylko emoji */ -@media (max-width: 420px) { - .btn-group-compact .btn-text { - display: none !important; - } - - .btn-group-compact .btn { - padding: 0.22rem 0.45rem; - min-width: auto; - font-size: 0.9rem; - line-height: 1.1; - } -} - -/* 421–576px: lekko ciaśniej, ale tekst zostaje */ -@media (min-width: 421px) and (max-width: 576px) { - .btn-group-compact .btn { - padding: 0.24rem 0.45rem; - font-size: 0.82rem; - line-height: 1.1; - } - - .btn-group-compact .btn-text { - font-size: 0.75rem; - } -} - - -/* ================================================ - RESPONSIVE NAVBAR - ================================================ */ - -/* Wąskie ekrany (np. iPhone 11) */ -@media (max-width: 420px) { - - .navbar .container-fluid { - gap: 4px; - } - - .navbar-brand-compact { - font-size: 0.9rem !important; - margin-right: 0.25rem; - white-space: nowrap; - } - .navbar-brand-compact .navbar-brand-text { - font-size: 0.95em; - } - - .user-info-compact { - font-size: 0.72rem !important; - line-height: 0.9; - white-space: nowrap; - } - .user-info-compact .badge { - font-size: 0.68rem; - padding: 0.2rem 0.45rem; - } - - .nav-buttons-compact .nav-btn-text { - display: none !important; - } - .nav-buttons-compact { - gap: 0.35rem !important; - flex-wrap: nowrap; - } - .nav-buttons-compact .btn { - padding: 0.22rem 0.45rem; - min-width: auto; - line-height: 1.1; - } -} - - -/* Małe ekrany (np. 421-576px) */ -@media (min-width: 421px) and (max-width: 576px) { - .navbar .container-fluid { - gap: 8px; - } - - .navbar-brand-compact { - font-size: 1.25rem !important; - white-space: nowrap; - } - - .user-info-compact { - font-size: 0.8rem !important; - white-space: nowrap; - } - .user-info-compact .badge { - font-size: 0.75rem; - } - - .nav-buttons-compact { - flex-wrap: nowrap; - } - .nav-buttons-compact .btn { - font-size: 0.8rem; - padding: 0.25rem 0.45rem; - } - .nav-buttons-compact .nav-btn-text { - font-size: 0.75rem; - } -} - -@media (max-width: 420px) { - .user-label-desktop { display: none !important; } - .user-label-mobile { display: inline !important; } -} - -@media (min-width: 421px) { - .user-label-desktop { display: inline !important; } - .user-label-mobile { display: none !important; } -} - -.category-dot-pure { - width: 10px; - height: 10px; - display: inline-block; - flex: 0 0 auto; - border-radius: 50%; - border: 2px solid rgba(255, 255, 255, 0.8); - background-clip: padding-box; - vertical-align: middle; - margin-left: 0.35rem; - opacity: 1; - padding: 0; - line-height: 1; - font-size: 0; - text-indent: -9999px; - overflow: hidden; - box-shadow: 0 1px 3px rgba(0,0,0,0.4); -} - -.category-dot-pure::before, -.category-dot-pure::after { - content: none !important; -} - - -/* Hover efekt */ -.category-dot:hover { - transform: scale(1.3) !important; - box-shadow: 0 2px 6px rgba(0,0,0,0.4) !important; -} - - -.list-title { - white-space: nowrap !important; - overflow: hidden !important; - text-overflow: ellipsis !important; - max-width: 70% !important; - display: inline-block !important; -} - -/* Bardzo małe ekrany */ -@media (max-width: 420px) { - .list-title { - max-width: 60% !important; - } -} - -/* ===== 2026 app refresh ===== */ -:root { - --app-bg: #07111f; - --app-bg-soft: #0d1b2d; - --app-surface: rgba(11, 23, 39, 0.88); - --app-surface-strong: rgba(15, 28, 46, 0.98); - --app-surface-muted: rgba(255, 255, 255, 0.04); - --app-border: rgba(255, 255, 255, 0.1); - --app-border-strong: rgba(255, 255, 255, 0.16); - --app-text: #f3f8ff; - --app-text-muted: #9fb0c8; - --app-success: #27d07d; - --app-warning: #f6c453; - --app-danger: #ff6b7a; - --app-shadow: 0 18px 50px rgba(0, 0, 0, 0.28); - --app-radius: 22px; -} - -html, body { - min-height: 100%; - background-color: var(--app-bg); - background-image: - radial-gradient(circle at top left, rgba(39, 208, 125, 0.18), transparent 24%), - radial-gradient(circle at top right, rgba(74, 144, 226, 0.16), transparent 22%), - linear-gradient(180deg, #09111d 0%, #08121f 38%, #060d18 100%); - background-repeat: no-repeat; - color: var(--app-text); -} - -html { - color-scheme: dark; -} - -body.app-body { - position: relative; - min-height: 100vh; - min-height: 100dvh; - min-height: 100svh; - display: flex; - flex-direction: column; - margin: 0; - font-feature-settings: "ss01" on, "cv02" on; - overflow-x: hidden; -} - - -@supports (padding: env(safe-area-inset-top)) { - html, body { - min-height: calc(100% + env(safe-area-inset-top, 0px) + env(safe-area-inset-bottom, 0px)); - } -} - -.app-backdrop { - position: fixed; - inset: 0; - pointer-events: none; - background: linear-gradient(180deg, rgba(255,255,255,0.02), transparent 28%); -} - -.app-header { - z-index: 1035; - padding: calc(0.75rem + env(safe-area-inset-top, 0px)) 0 0; - backdrop-filter: blur(12px); -} - -.app-navbar { - background: transparent; -} - -.app-navbar .container-xxl { - border: 1px solid var(--app-border); - background: rgba(6, 15, 27, 0.74); - backdrop-filter: blur(16px); - border-radius: 999px; - min-height: 68px; - box-shadow: var(--app-shadow); -} - -.app-brand { - display: inline-flex; - align-items: center; - gap: 0.85rem; - font-weight: 800; - color: var(--app-text) !important; -} - -.app-brand__icon { - display: inline-grid; - place-items: center; - width: 2.6rem; - height: 2.6rem; - border-radius: 16px; - background: linear-gradient(135deg, rgba(39,208,125,0.22), rgba(74,144,226,0.18)); - box-shadow: inset 0 0 0 1px rgba(255,255,255,0.08); -} - -.app-brand__title { color: #ffffff; } -.app-brand__accent { color: #7ce4a8; margin-left: 0.3rem; } - -.app-navbar__actions, -.app-navbar__meta { - display: flex; - align-items: center; - gap: 0.5rem; - flex-wrap: wrap; -} - -.app-user-chip { - display: inline-flex; - align-items: center; - gap: 0.5rem; - padding: 0.4rem 0.45rem 0.4rem 0.75rem; - border-radius: 999px; - background: rgba(255,255,255,0.05); - border: 1px solid rgba(255,255,255,0.08); -} - -.app-user-chip__label { - font-size: 0.75rem; - color: var(--app-text-muted); - text-transform: uppercase; - letter-spacing: 0.08em; -} - -.app-main { - flex: 1 0 auto; - padding: 1rem 0 2.5rem; -} - -.app-content-frame { - padding: 0.25rem 0 0; -} - -.app-footer { - margin-top: auto; - padding: 1rem 0 calc(1.35rem + env(safe-area-inset-bottom, 0px)); -} - -.app-footer__inner { - border-top: 1px solid rgba(255,255,255,0.08); - padding-top: 1.25rem; -} - -h1, h2, h3, h4, h5, h6 { - color: #ffffff; - letter-spacing: -0.02em; -} - -.card, -.modal-content, -.dropdown-menu, -.list-group-item, -.table, -.alert, -.pagination .page-link, -.nav-tabs, -.input-group-text, -.form-control, -.form-select, -.btn, -.progress, -.toast { - border-radius: 18px; -} - -.card, -.modal-content, -.table-responsive, -.alert, -.list-group-item, -.pagination .page-link, -.nav-tabs, -.input-group-text, -.form-control, -.form-select, -.progress, -.toast, -.page-link, -.table, -.btn-group > .btn { - border-color: var(--app-border) !important; -} - -.card, -.modal-content, -.table-responsive, -.alert, -.list-group-item, -.progress, -.toast { - background: var(--app-surface) !important; - box-shadow: var(--app-shadow); - backdrop-filter: blur(10px); -} - -.card-body, -.modal-body, -.modal-header, -.modal-footer { - background: transparent; -} - -.bg-dark, -.table-dark, -.list-group-item.bg-dark, -.modal-content.bg-dark, -.card.bg-dark, -.card.bg-secondary, -.list-group-item.item-not-checked { - background: var(--app-surface) !important; - color: var(--app-text) !important; -} - -.card.bg-secondary.bg-opacity-10, -#share-card { - background: linear-gradient(180deg, rgba(16, 29, 49, 0.96), rgba(10, 20, 36, 0.94)) !important; -} - -.table-dark { - --bs-table-bg: transparent; - --bs-table-striped-bg: rgba(255,255,255,0.03); - --bs-table-hover-bg: rgba(255,255,255,0.05); - --bs-table-color: var(--app-text); - margin-bottom: 0; -} - -.table > :not(caption) > * > * { - padding: 0.9rem 1rem; - border-bottom-color: rgba(255,255,255,0.08); -} - -.list-group { - gap: 0.8rem; -} - -.list-group-item { - margin-bottom: 0; - padding: 1rem 1rem; - color: var(--app-text) !important; -} - -.list-group-item.bg-success { - background: linear-gradient(135deg, rgba(39,208,125,0.92), rgba(22,150,91,0.96)) !important; -} - -.list-group-item.bg-warning { - background: linear-gradient(135deg, rgba(246,196,83,0.96), rgba(224,164,26,0.96)) !important; - color: #1c1b17 !important; -} - -.btn { - border-radius: 14px; - font-weight: 600; - padding: 0.7rem 1rem; - box-shadow: none; -} - -.btn-sm { - padding: 0.55rem 0.85rem; - border-radius: 12px; -} - -.btn-success, -.btn-outline-success:hover { - background: linear-gradient(135deg, #29d17d, #1ea860); - border-color: rgba(41,209,125,0.9); -} - -.btn-outline-light, -.btn-outline-secondary, -.btn-outline-warning, -.btn-outline-primary, -.btn-outline-success { - background: rgba(255,255,255,0.02); -} - -.btn:hover, -.btn:focus { - transform: translateY(-1px); -} - -.form-control, -.form-select, -.input-group-text { - min-height: 48px; - background: rgba(5, 13, 23, 0.86) !important; - color: var(--app-text) !important; - box-shadow: none !important; -} - -.form-control::placeholder { color: rgba(210, 224, 244, 0.45); } -.form-control:focus, -.form-select:focus { - border-color: rgba(39,208,125,0.5) !important; - box-shadow: 0 0 0 0.2rem rgba(39,208,125,0.15) !important; -} - -.nav-tabs { - gap: 0.5rem; - border-bottom: none; - background: rgba(255,255,255,0.03); - padding: 0.4rem; -} - -.nav-tabs .nav-link { - border-radius: 14px; - color: var(--app-text-muted); - border: none; - padding: 0.8rem 1rem; -} - -.nav-tabs .nav-link.active { - background: rgba(39,208,125,0.12); - color: #fff; -} - -.progress { - overflow: hidden; - background: rgba(255,255,255,0.06); - min-height: 1rem; -} - -.badge { - border: 1px solid rgba(255,255,255,0.08); -} - -.pagination .page-link { - background: rgba(255,255,255,0.03); - color: var(--app-text); - margin: 0 0.15rem; -} - -.pagination .page-item.active .page-link { - background: rgba(39,208,125,0.18); - color: #fff; -} - -.modal-content { - overflow: hidden; -} - -.toast-container { z-index: 1200; } - -#items .list-group-item { - border-radius: 18px !important; - padding: 1rem 1rem; -} - -#items .btn-group { - gap: 0.4rem; -} - -#items .btn-group .btn { - border-radius: 12px !important; -} - -.large-checkbox { - width: 1.35rem; - height: 1.35rem; - accent-color: #29d17d; -} - -#share-card .badge, -#total-expense1, -#total-expense2, -#total-expense { - background: transparent; - color: #dfffea !important; -} - -#share-card, -.card, -.table-responsive, -.alert, -.modal-content, -#expenseChartWrapper, -#categoryChartWrapper { - border-radius: var(--app-radius) !important; -} - -.endpoint-login .app-content-frame, -.endpoint-system_auth .app-content-frame, -.endpoint-page_not_found .app-content-frame, -.endpoint-forbidden .app-content-frame { - max-width: 560px; - margin: 3rem auto 0; -} - -.endpoint-main_page .list-group-item, -.endpoint-expenses .card, -.endpoint-admin_panel .card, -.endpoint-view_list .card, -.endpoint-shared_list .card, -.endpoint-edit_my_list .card, -[class*="endpoint-admin_"] .card { - overflow: hidden; -} - -input[type="checkbox"].form-check-input { - width: 2.9rem; - height: 1.5rem; -} - -hr { - border-color: rgba(255,255,255,0.08); -} - -@media (max-width: 991.98px) { - .app-header { - padding-top: 0.55rem; - } - - .app-navbar .container-xxl { - border-radius: 26px; - padding-top: 0.8rem; - padding-bottom: 0.8rem; - align-items: flex-start; - } - - .app-navbar__actions, - .app-navbar__meta { - width: 100%; - justify-content: flex-start; - } -} - -@media (max-width: 767.98px) { - .app-main { - padding-top: 0.7rem; - } - - .card-body, - .list-group-item, - .modal-body, - .modal-header, - .modal-footer, - .table > :not(caption) > * > * { - padding-left: 0.85rem; - padding-right: 0.85rem; - } - - .btn-group, - .d-flex.gap-2, - .d-flex.gap-3 { - gap: 0.45rem !important; - } - - .btn-group > .btn, - .btn.w-100, - .input-group > .btn { - min-height: 46px; - } - - .input-group:not(.ui-password-group) { - flex-wrap: wrap; - gap: 0.55rem; - } - - .input-group:not(.ui-password-group) > .form-control, - .input-group:not(.ui-password-group) > .form-select, - .input-group:not(.ui-password-group) > .btn, - .input-group:not(.ui-password-group) > .input-group-text { - width: 100% !important; - flex: 1 1 100% !important; - border-radius: 14px !important; - max-width: 100% !important; - } - - #items .d-flex.align-items-center.gap-2.flex-grow-1 { - width: 100%; - align-items: flex-start !important; - } - - #items .btn-group { - width: 100%; - margin-top: 0.85rem; - } - - #items .btn-group .btn { - flex: 1 1 0; - } - - .table-responsive { - border-radius: 18px; - } - - .pagination { - flex-wrap: wrap; - gap: 0.25rem; - justify-content: center; - } -} - -/* ========================================================= - Compact minimalist pass -========================================================= */ -:root { - --app-shadow: 0 8px 24px rgba(0, 0, 0, 0.18); - --app-radius: 14px; -} - -body.app-body { - font-size: 0.96rem; - line-height: 1.4; -} - -.app-header { - padding: 0.35rem 0 0; -} - -.app-navbar .container-xxl { - min-height: 54px; - border-radius: 18px; - box-shadow: 0 8px 22px rgba(0,0,0,0.16); -} - -.app-brand { - gap: 0.6rem; - font-size: 0.98rem; -} - -.app-brand__icon { - width: 2.1rem; - height: 2.1rem; - border-radius: 12px; - font-size: 1rem; -} - -.app-brand__title, -.app-brand__accent { - font-size: 0.98rem; -} - -.app-user-chip { - padding: 0.28rem 0.38rem 0.28rem 0.58rem; - gap: 0.4rem; -} - -.app-user-chip__label { - font-size: 0.68rem; - letter-spacing: 0.06em; -} - -.app-main { - padding: 0.65rem 0 1.4rem; -} - -.app-content-frame { - padding-top: 0.1rem; -} - -.app-footer { - margin-top: auto; - padding: 0.5rem 0 calc(0.85rem + env(safe-area-inset-bottom, 0px)); -} - -.app-footer__inner { - padding-top: 0.75rem; -} - -h1, h2, h3, h4, h5, h6 { - letter-spacing: -0.015em; - line-height: 1.15; -} - -h1, .h1 { font-size: clamp(1.45rem, 2vw, 1.9rem); } -h2, .h2 { font-size: clamp(1.2rem, 1.8vw, 1.5rem); } -h3, .h3 { font-size: clamp(1.02rem, 1.5vw, 1.2rem); } - -.card, -.modal-content, -.dropdown-menu, -.list-group-item, -.table, -.alert, -.pagination .page-link, -.nav-tabs, -.input-group-text, -.form-control, -.form-select, -.btn, -.progress, -.toast { - border-radius: 12px; -} - -.card, -.modal-content, -.table-responsive, -.alert, -.list-group-item, -.progress, -.toast { - box-shadow: 0 4px 14px rgba(0,0,0,0.12); - backdrop-filter: blur(8px); -} - -.card-header, -.card-footer, -.card-body, -.modal-header, -.modal-body, -.modal-footer { - padding: 0.75rem 0.85rem; -} - -.table > :not(caption) > * > * { - padding: 0.62rem 0.7rem; -} - -.table-responsive table { - min-width: 860px; -} - -.list-group { - gap: 0.5rem; -} - -.list-group-item { - padding: 0.72rem 0.8rem; -} - -.alert { - padding: 0.7rem 0.85rem; - margin-bottom: 0.8rem; -} - -.badge { - font-weight: 600; - padding: 0.38em 0.58em; -} - -.btn { - border-radius: 10px; - font-weight: 600; - padding: 0.52rem 0.8rem; - min-height: 40px; -} - -.btn-sm { - padding: 0.4rem 0.64rem; - min-height: 34px; - border-radius: 9px; -} - -.form-control, -.form-select, -.input-group-text { - min-height: 40px; - padding: 0.5rem 0.72rem; -} - -textarea.form-control { - min-height: 96px; -} - -.progress { - min-height: 0.8rem; -} - -.progress-label { - font-size: 0.72rem; - font-weight: 600; -} - -.nav-tabs { - gap: 0.35rem; - padding: 0.25rem; -} - -.nav-tabs .nav-link { - padding: 0.55rem 0.7rem; - border-radius: 10px; -} - -#items .list-group-item { - border-radius: 12px !important; - padding: 0.75rem 0.8rem; -} - -#items .btn-group { - gap: 0.25rem; -} - -#items .btn-group .btn { - border-radius: 9px !important; -} - -input[type="checkbox"].form-check-input { - width: 2.5rem; - height: 1.35rem; -} - -.large-checkbox { - width: 1.2rem; - height: 1.2rem; -} - -.toast { - padding: 0; -} - -.endpoint-main_page .card h2, -.endpoint-expenses .card h2, -.endpoint-edit_my_list .card h2, -.endpoint-login .card h2, -.endpoint-system_auth .card h2, -.endpoint-admin_panel .card h2, -[class*="endpoint-admin_"] .card h2 { - margin-bottom: 0.35rem; -} - -.endpoint-main_page .card p, -.endpoint-expenses .card p, -.endpoint-edit_my_list .card p, -.endpoint-login .card p, -.endpoint-system_auth .card p, -.endpoint-admin_panel .card p, -[class*="endpoint-admin_"] .card p { - margin-bottom: 0; -} - -@media (max-width: 991.98px) { - .app-navbar .container-xxl { - border-radius: 16px; - padding-top: 0.55rem; - padding-bottom: 0.55rem; - } -} - -@media (max-width: 767.98px) { - body.app-body { - font-size: 0.93rem; - } - - .app-header { - padding-top: 0.25rem; - } - - .app-main { - padding-top: 0.45rem; - } - - .app-navbar .container-xxl { - min-height: 50px; - border-radius: 14px; - } - - .app-brand { - gap: 0.45rem; - font-size: 0.92rem; - } - - .app-brand__icon { - width: 1.9rem; - height: 1.9rem; - border-radius: 10px; - } - - .app-user-chip { - padding: 0.22rem 0.32rem 0.22rem 0.5rem; - } - - .card-header, - .card-footer, - .card-body, - .modal-header, - .modal-body, - .modal-footer, - .list-group-item, - .table > :not(caption) > * > * { - padding-left: 0.68rem; - padding-right: 0.68rem; - } - - .list-group-item, - #items .list-group-item { - padding-top: 0.62rem; - padding-bottom: 0.62rem; - } - - .btn-group, - .d-flex.gap-2, - .d-flex.gap-3 { - gap: 0.35rem !important; - } - - .btn-group > .btn, - .btn.w-100, - .input-group > .btn, - .btn, - .form-control, - .form-select, - .input-group-text { - min-height: 38px; - } - - .input-group { - gap: 0.4rem; - } - - .table-responsive { - border-radius: 12px; - } - - .progress-label { - font-size: 0.66rem; - } - - .app-footer { - padding-bottom: calc(0.8rem + env(safe-area-inset-bottom, 0px)); - } -} - -/* === unified UI refresh: forms / tables / admin tools === */ -:root { - --ui-surface-1: rgba(10, 14, 24, 0.78); - --ui-surface-2: rgba(18, 25, 39, 0.92); - --ui-surface-3: rgba(33, 44, 67, 0.88); - --ui-border: rgba(255, 255, 255, 0.12); - --ui-border-strong: rgba(255, 255, 255, 0.18); - --ui-text-soft: rgba(255, 255, 255, 0.72); - --ui-success-soft: rgba(25, 135, 84, 0.18); - --ui-warning-soft: rgba(255, 193, 7, 0.16); -} - -.card, -.table-responsive, -.modal-content, -.dropdown-menu, -.toast, -.alert, -.list-group-item { - border: 1px solid var(--ui-border); -} - -.card.bg-dark, -.modal-content.bg-dark, -.dropdown-menu-dark, -.list-group-item.bg-dark, -.table-dark { - background: linear-gradient(180deg, var(--ui-surface-2), rgba(8, 12, 20, 0.96)) !important; -} - -.card.bg-secondary.bg-opacity-10, -.admin-shortcuts, -#bulkBar .card { - background: linear-gradient(180deg, rgba(22, 29, 45, 0.88), rgba(12, 18, 30, 0.88)) !important; -} - -.form-label, -label.form-label { - display: inline-flex; - align-items: center; - gap: 0.35rem; - margin-bottom: 0.45rem; - font-size: 0.92rem; - font-weight: 600; - color: rgba(255,255,255,0.84); -} - -.form-text, -.text-secondary, -.text-white-50 { - color: var(--ui-text-soft) !important; -} - -.form-control, -.form-select, -.input-group-text, -textarea.form-control, -.form-control-color { - background: rgba(255,255,255,0.04) !important; - border: 1px solid var(--ui-border-strong) !important; - color: #fff !important; - box-shadow: none; - transition: border-color .18s ease, box-shadow .18s ease, background-color .18s ease, transform .18s ease; -} - -.form-control::placeholder, -textarea.form-control::placeholder { - color: rgba(255,255,255,0.42); -} - -.form-control:focus, -.form-select:focus, -textarea.form-control:focus, -.form-check-input:focus, -.btn:focus, -.btn:focus-visible { - border-color: rgba(25, 135, 84, 0.6) !important; - box-shadow: 0 0 0 0.2rem rgba(25, 135, 84, 0.16) !important; -} - -.input-group > .form-control, -.input-group > .form-select, -.input-group > .btn, -.input-group > .input-group-text { - min-height: 42px; -} - -textarea.form-control { - line-height: 1.45; - resize: vertical; -} - -.form-check { - padding: 0.65rem 0.9rem 0.65rem 2.8rem; - background: rgba(255,255,255,0.04); - border: 1px solid var(--ui-border); - border-radius: 12px; -} - -.form-check.form-switch { - min-height: 42px; -} - -.form-check-input { - background-color: rgba(255,255,255,0.14); - border-color: rgba(255,255,255,0.22); -} - -.btn { - letter-spacing: 0.01em; - transition: transform .18s ease, box-shadow .18s ease, background-color .18s ease, border-color .18s ease; -} - -.btn:hover, -.btn:focus-visible { - transform: translateY(-1px); -} - -.btn-success, -.btn-outline-success, -.btn-outline-light:hover, -.btn-outline-light:focus-visible, -.btn-outline-secondary:hover, -.btn-outline-secondary:focus-visible { - box-shadow: 0 10px 24px rgba(0,0,0,0.16); -} - -.btn-outline-light, -.btn-outline-secondary, -.btn-outline-warning, -.btn-outline-danger, -.btn-outline-success { - background: rgba(255,255,255,0.03); -} - -.btn-outline-light:hover, -.btn-outline-light:focus-visible { - background: rgba(255,255,255,0.1); -} - -.btn-outline-secondary:hover, -.btn-outline-secondary:focus-visible { - background: rgba(108, 117, 125, 0.18); -} - -.btn-outline-warning:hover, -.btn-outline-warning:focus-visible { - background: var(--ui-warning-soft); -} - -.btn-outline-danger:hover, -.btn-outline-danger:focus-visible { - background: rgba(220, 53, 69, 0.16); -} - -.btn-outline-success:hover, -.btn-outline-success:focus-visible { - background: var(--ui-success-soft); -} - -.btn-group-compact, -.admin-shortcuts .d-flex, -.stack-form, -.page-actions { - gap: 0.4rem; -} - -.btn-group-compact .btn { - padding: 0.3rem 0.55rem; - font-size: 0.82rem; -} - -.btn-group-compact .btn-text { - font-size: 0.78rem; -} - -.table-toolbar { - display: flex; - justify-content: space-between; - align-items: center; - flex-wrap: wrap; - gap: 0.75rem; - margin-bottom: 0.85rem; -} - -.table-toolbar__search { - max-width: 420px; - width: 100%; -} - -.table-toolbar__meta { - min-width: 120px; - text-align: right; -} - -.table { - --bs-table-bg: transparent; - --bs-table-striped-bg: rgba(255,255,255,0.02); - --bs-table-hover-bg: transparent; - --bs-table-border-color: rgba(255,255,255,0.08); - margin-bottom: 0; -} - -.table > :not(caption) > * > * { - border-bottom-width: 1px; - vertical-align: middle; -} - -.table thead th { - position: sticky; - top: 0; - z-index: 1; - background: rgba(11, 17, 28, 0.98) !important; - text-transform: uppercase; - letter-spacing: 0.05em; - font-size: 0.74rem; - color: rgba(255,255,255,0.72); - border-bottom-color: rgba(255,255,255,0.14); -} - -.table tbody tr { - transition: background-color .15s ease, transform .15s ease; -} - -.table tbody tr:hover > * { - background: rgba(255,255,255,0.04) !important; -} - -.table td code, -.api-code-block code { - display: inline-block; - padding: 0.28rem 0.48rem; - border-radius: 8px; - background: rgba(255,255,255,0.08); - color: #d6f5e6; -} - -.api-code-block { - display: flex; - flex-wrap: wrap; - gap: 0.5rem; -} - -.pagination .page-link { - background: rgba(255,255,255,0.03); - border-color: var(--ui-border); - color: #fff; -} - -.pagination .page-item.active .page-link { - background: rgba(25, 135, 84, 0.95); - border-color: rgba(25, 135, 84, 0.95); -} - -.dropdown-item { - border-radius: 8px; -} - -.dropdown-item:hover, -.dropdown-item:focus { - background: rgba(255,255,255,0.08); -} - -form[data-unsaved-warning="true"].is-dirty { - position: relative; -} - -form[data-unsaved-warning="true"].is-dirty::after { - content: 'Niezapisane zmiany'; - position: sticky; - bottom: 0.75rem; - left: 100%; - display: inline-flex; - margin-top: 1rem; - padding: 0.38rem 0.68rem; - border-radius: 999px; - background: rgba(255, 193, 7, 0.18); - border: 1px solid rgba(255, 193, 7, 0.36); - color: #ffe08a; - font-size: 0.76rem; - font-weight: 700; -} - - -.ui-password-toggle.is-active { - background: rgba(255,255,255,0.1); -} - -.app-content-frame > h2 + .card, -.app-content-frame > .card:first-of-type { - margin-top: 0; -} - -@media (max-width: 767.98px) { - .table-toolbar { - align-items: stretch; - } - - .table-toolbar__meta { - text-align: left; - } - - .admin-shortcuts .btn { - flex: 1 1 calc(50% - 0.55rem); - } - - form[data-unsaved-warning="true"].is-dirty::after { - left: auto; - bottom: auto; - position: static; - margin-top: 0.75rem; - } -} - - -.admin-page-head { - display: flex; - justify-content: space-between; - align-items: flex-start; - gap: 0.85rem; - flex-wrap: wrap; -} - -[data-admin-nav-body] { - display: flex; -} - -@media (max-width: 767.98px) { - [data-admin-nav-body] { - display: none; - width: 100%; - } - - [data-admin-nav-body].is-open { - display: flex; - } - - .admin-page-head > * { - width: 100%; - } - - .admin-page-head .btn { - width: 100%; - } - - .table-responsive table.table, - .is-admin-area table.table { - min-width: 100%; - } - - .table-responsive table.table thead, - .is-admin-area table.table thead { - display: none; - } - - .table-responsive table.table, - .table-responsive table.table tbody, - .table-responsive table.table tr, - .table-responsive table.table td, - .is-admin-area table.table, - .is-admin-area table.table tbody, - .is-admin-area table.table tr, - .is-admin-area table.table td { - display: block; - width: 100%; - } - - .table-responsive table.table tbody, - .is-admin-area table.table tbody { - display: grid; - gap: 0.8rem; - } - - .table-responsive table.table tr, - .is-admin-area table.table tr { - border: 1px solid rgba(255,255,255,0.08); - border-radius: 16px; - padding: 0.35rem 0.55rem; - background: rgba(255,255,255,0.02); - box-shadow: 0 8px 24px rgba(0,0,0,0.16); - } - - .table-responsive table.table td, - .is-admin-area table.table td { - border: 0; - padding: 0.5rem 0.35rem; - } - - .table-responsive table.table td::before, - .is-admin-area table.table td::before { - content: attr(data-label); - display: block; - margin-bottom: 0.18rem; - font-size: 0.72rem; - text-transform: uppercase; - letter-spacing: 0.04em; - color: rgba(255,255,255,0.58); - } - - .table-responsive table.table td:last-child, - .is-admin-area table.table td:last-child { - padding-bottom: 0.2rem; - } - - .table-responsive table.table td .btn, - .table-responsive table.table td .input-group, - .table-responsive table.table td .form-select, - .table-responsive table.table td .form-control, - .is-admin-area table.table td .btn, - .is-admin-area table.table td .input-group, - .is-admin-area table.table td .form-select, - .is-admin-area table.table td .form-control { - width: 100%; - } - - .table-responsive table.table td .d-flex, - .table-responsive table.table td .btn-group, - .is-admin-area table.table td .d-flex, - .is-admin-area table.table td .btn-group { - flex-wrap: wrap; - } -} - - -.list-action-block .input-group .btn, -.list-action-block .btn, -.endpoint-shared_list .input-group .btn, -.endpoint-shared_list .list-share-page .btn { - min-height: 44px; -} - -.endpoint-shared_list .input-group, -.list-action-block .input-group { - align-items: stretch; -} - -@media (max-width: 767.98px) { - .endpoint-admin_panel .table-responsive table thead { - display: none; - } - .endpoint-admin_panel .table-responsive table, - .endpoint-admin_panel .table-responsive tbody, - .endpoint-admin_panel .table-responsive tr, - .endpoint-admin_panel .table-responsive td { - display: block; - width: 100%; - } - .endpoint-admin_panel .table-responsive tr { - border: 1px solid rgba(255,255,255,.08); - border-radius: 16px; - margin-bottom: 1rem; - padding: .75rem; - background: rgba(255,255,255,.02); - } - .endpoint-admin_panel .table-responsive td { - border: 0; - padding: .35rem 0; - } -} - - -/* responsive fixes 2026-03 */ -.app-navbar .container-xxl {flex-wrap: nowrap; align-items: center;} -.app-navbar__actions {display:flex; flex-wrap:wrap; gap:.5rem; justify-content:flex-end;} -.app-navbar__actions .btn {white-space: nowrap;} -.table-responsive {overflow-x: clip;} -.table-responsive table {width:100%; min-width:0 !important;} -@media (max-width: 991.98px) { - .app-navbar .container-xxl {display:grid; grid-template-columns:auto 1fr auto; gap:.5rem; align-items:center;} - .app-navbar__meta {display:none;} - .app-brand {min-width:0;} - .app-brand__title,.app-brand__accent {font-size:1rem;} - .app-navbar__actions {max-width:100%; gap:.35rem;} - .app-navbar__actions .btn {padding:.35rem .55rem; font-size:.78rem;} -} -@media (max-width: 430px) { - .app-navbar .container-xxl {grid-template-columns:minmax(0,1fr) auto; } - .app-brand {overflow:hidden;} - .app-brand > span:last-child {overflow:hidden; text-overflow:ellipsis; white-space:nowrap;} - .app-navbar__actions {grid-column:1 / -1; justify-content:stretch;} - .app-navbar__actions .btn {flex:1 1 calc(50% - .35rem); text-align:center;} -} -@media (max-width: 767.98px) { - .app-content-frame .table-responsive table.table, - .app-content-frame table.table:not(.keep-horizontal) {display:block; width:100%;} - .app-content-frame .table-responsive table.table thead, - .app-content-frame table.table:not(.keep-horizontal) thead {display:none;} - .app-content-frame .table-responsive table.table tbody, - .app-content-frame .table-responsive table.table tr, - .app-content-frame .table-responsive table.table td, - .app-content-frame table.table:not(.keep-horizontal) tbody, - .app-content-frame table.table:not(.keep-horizontal) tr, - .app-content-frame table.table:not(.keep-horizontal) td {display:block; width:100%;} - .app-content-frame .table-responsive table.table tr, - .app-content-frame table.table:not(.keep-horizontal) tr {border:1px solid var(--dark-300); border-radius:1rem; margin-bottom:.85rem; padding:.35rem .25rem; background:var(--dark-700);} - .app-content-frame .table-responsive table.table td, - .app-content-frame table.table:not(.keep-horizontal) td {border:none; padding:.5rem .75rem; text-align:left !important;} - .app-content-frame .table-responsive table.table td::before, - .app-content-frame table.table:not(.keep-horizontal) td::before {content:attr(data-label); display:block; font-size:.72rem; color:#9ba3aa; margin-bottom:.2rem; text-transform:uppercase;} - .app-content-frame .table-responsive {overflow:visible;} -} - -/* fix: admin tables, api tokens, share page, navbar */ -.admin-table-responsive { - overflow-x: auto !important; - -webkit-overflow-scrolling: touch; -} - - -.admin-table-responsive--wide table { - min-width: 1180px; -} - -.admin-table-responsive--full table { - width: 100% !important; - min-width: 100% !important; - table-layout: auto; -} - -.endpoint-edit_categories .admin-table-responsive--full table th, -.endpoint-edit_categories .admin-table-responsive--full table td, -.endpoint-api_tokens .admin-table-responsive--full table th, -.endpoint-api_tokens .admin-table-responsive--full table td { - white-space: normal; - vertical-align: middle; -} - -.endpoint-edit_categories .admin-table-responsive--full table th:last-child, -.endpoint-edit_categories .admin-table-responsive--full table td:last-child { - width: 30%; -} - -.is-admin-area .table-responsive td, -.is-admin-area .table-responsive th { - white-space: normal; -} - -.api-chip { - display: inline-block; - max-width: 22rem; - padding: .28rem .55rem; - border-radius: .75rem; - background: rgba(255,255,255,.08); - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - vertical-align: middle; -} - -.api-chip--wrap { - white-space: normal; - overflow-wrap: anywhere; - word-break: break-word; -} - -.form-check-spaced { - display: flex; - align-items: flex-start; - gap: .7rem; - padding-left: 0; - margin-bottom: .65rem; -} - -.form-check-spaced .form-check-input { - position: static; - margin: .2rem 0 0; - flex: 0 0 auto; -} - -.form-check-spaced .form-check-label { - margin: 0; - line-height: 1.35; -} - -.list-item-actions { - gap: .4rem; - flex-wrap: wrap; - justify-content: flex-end; -} - -.list-item-actions .btn { - border-radius: .8rem !important; - min-width: 2.6rem; -} - -.share-submit-btn { - min-width: 8rem; - font-weight: 600; -} - -.endpoint-list_share .input-group, -.endpoint-shared_list .input-group { - align-items: stretch; -} - -.endpoint-list_share .input-group > .form-control, -.endpoint-list_share .input-group > .btn, -.endpoint-shared_list .input-group > .form-control, -.endpoint-shared_list .input-group > .btn { - min-height: 46px; -} - -.endpoint-list_share .input-group > .btn, -.endpoint-shared_list .input-group > .btn { - border-top-left-radius: 0 !important; - border-bottom-left-radius: 0 !important; -} - -@media (max-width: 767.98px) { - .table-responsive { - overflow-x: auto !important; - } - - .is-admin-area .table-responsive table.table.keep-horizontal, - .endpoint-api_tokens .table-responsive table.table, - .endpoint-admin_panel .table-responsive table.table, - .endpoint-lists_access .table-responsive table.table, - .endpoint-user_management .table-responsive table.table, - .endpoint-edit_categories .table-responsive table.table { - display: table; - width: max-content; - min-width: 980px !important; - } - - .endpoint-api_tokens .admin-table-responsive--full table.table, - .endpoint-edit_categories .admin-table-responsive--full table.table { - width: 100%; - min-width: 980px !important; - } - - .is-admin-area .table-responsive table.table.keep-horizontal thead, - .endpoint-api_tokens .table-responsive table.table thead, - .endpoint-admin_panel .table-responsive table.table thead, - .endpoint-lists_access .table-responsive table.table thead, - .endpoint-user_management .table-responsive table.table thead { - display: table-header-group; - } - - .is-admin-area .table-responsive table.table.keep-horizontal tbody, - .endpoint-api_tokens .table-responsive table.table tbody, - .endpoint-admin_panel .table-responsive table.table tbody, - .endpoint-lists_access .table-responsive table.table tbody, - .endpoint-user_management .table-responsive table.table tbody { - display: table-row-group; - } - - .is-admin-area .table-responsive table.table.keep-horizontal tr, - .endpoint-api_tokens .table-responsive table.table tr, - .endpoint-admin_panel .table-responsive table.table tr, - .endpoint-lists_access .table-responsive table.table tr, - .endpoint-user_management .table-responsive table.table tr { - display: table-row; - border: 0; - padding: 0; - background: transparent; - box-shadow: none; - } - - .is-admin-area .table-responsive table.table.keep-horizontal td, - .endpoint-api_tokens .table-responsive table.table td, - .endpoint-admin_panel .table-responsive table.table td, - .endpoint-lists_access .table-responsive table.table td, - .endpoint-user_management .table-responsive table.table td { - display: table-cell; - width: auto; - border-top: 1px solid var(--dark-450); - padding: .65rem .75rem; - } - - .endpoint-api_tokens .table-responsive table.table td::before, - .endpoint-admin_panel .table-responsive table.table td::before, - .endpoint-lists_access .table-responsive table.table td::before, - .endpoint-user_management .table-responsive table.table td::before { - display: none; - content: none; - } -} - -@media (max-width: 575.98px) { - .app-navbar .container-xxl { - display: grid; - grid-template-columns: minmax(0, 1fr) auto; - align-items: center; - } - - .app-navbar__meta { - display: none; - } - - .app-brand { - min-width: 0; - overflow: hidden; - } - - .app-brand > span:last-child { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - - .app-navbar__actions { - grid-column: 1 / -1; - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: .45rem; - width: 100%; - } - - .app-navbar__actions .btn { - width: 100%; - padding: .45rem .5rem; - font-size: .78rem; - } - - .share-submit-btn { - min-width: 6.75rem; - } - - .list-item-actions { - width: 100%; - justify-content: flex-start; - margin-top: .5rem; - } -} - - -/* admin/settings consistency fixes */ -.form-switch-compact .form-check-input { - width: 2.35rem; - height: 1.2rem; - margin-top: .1rem; -} -.form-switch-compact .form-check-label { - padding-top: .02rem; -} -.form-check-spaced { - gap: .45rem; -} -.access-editor .input-group > .form-control, -.access-editor .input-group > .btn { - min-height: 40px; -} -.endpoint-admin_edit_categories .table-responsive, -.endpoint-admin_lists_access .table-responsive, -.endpoint-admin_settings .table-responsive, -.endpoint-list_products .table-responsive { - overflow-x: auto !important; -} -.endpoint-admin_edit_categories .table-responsive table.table.keep-horizontal, -.endpoint-admin_lists_access .table-responsive table.table.keep-horizontal, -.endpoint-list_products .table-responsive table.table.keep-horizontal { - min-width: 1000px !important; -} -.endpoint-admin_edit_categories .app-content-frame, -.endpoint-admin_lists_access .app-content-frame, -.endpoint-admin_settings .app-content-frame, -.endpoint-list_products .app-content-frame { - overflow: visible; -} -@media (max-width: 767.98px) { - .form-switch-compact .form-check-input { width: 2rem; height: 1.05rem; } -} - - -/* v4.1 admin/table/share fixes */ -.admin-table-responsive table { - width: 100%; - min-width: 100%; -} -.admin-table-responsive--wide table, -.table-responsive .keep-horizontal { - width: max-content; - min-width: 100%; -} -.endpoint-admin_panel .admin-table-responsive--wide table { - width: 100%; - min-width: 100%; -} -.endpoint-admin_panel .admin-panel-table th:last-child, -.endpoint-admin_panel .admin-panel-table td:last-child { - width: 1%; - white-space: nowrap; -} -.endpoint-admin_lists_access .admin-table-responsive--wide table { - min-width: 1120px; -} -.endpoint-admin_lists_access .access-editor .tokens { - min-height: 2rem; -} -.endpoint-admin_lists_access .access-editor .token, -.endpoint-admin_edit_my_list .access-editor .token { - max-width: 100%; -} -.endpoint-admin_lists_access .access-editor .token span, -.endpoint-admin_edit_my_list .access-editor .token span { - pointer-events: none; -} -.endpoint-admin_lists_access .mono { - white-space: nowrap; -} -.form-check-spaced { - gap: .35rem; -} -.form-check-spaced .form-check-input, -input[type="checkbox"].form-check-input, -.table-select-checkbox { - width: .95rem !important; - height: .95rem !important; - min-width: .95rem !important; - min-height: .95rem !important; - margin-top: .18rem; -} -.form-switch-compact .form-check-input { - width: 1.8rem !important; - height: .95rem !important; -} -.large-checkbox { - transform: none; - transform-origin: center; -} - -.shopping-item-main > .large-checkbox { - flex: 0 0 1.5em; - align-self: center; -} -.list-item-actions { - display: flex; - align-items: center; - gap: .45rem; - flex-wrap: wrap; -} -.list-item-actions .btn { - min-width: 2.25rem; - padding: .42rem .62rem; -} -.endpoint-list_share .list-group-item, -.endpoint-shared_list .list-group-item { - gap: .75rem; -} -.endpoint-list_share .list-item-actions, -.endpoint-shared_list .list-item-actions { - margin-left: auto; -} -.endpoint-list_share .input-group, -.endpoint-shared_list .input-group { - flex-wrap: nowrap; -} -.endpoint-list_share .input-group > .form-control, -.endpoint-shared_list .input-group > .form-control { - min-width: 0; -} -.endpoint-list_share .share-submit-btn, -.endpoint-shared_list .share-submit-btn { - min-width: 7.25rem; - border-radius: .9rem !important; -} -@media (max-width: 991.98px) { - .endpoint-admin_panel .admin-panel-table { - min-width: 1000px; - } -} -@media (max-width: 767.98px) { - .endpoint-admin_panel .admin-table-responsive--wide table, - .endpoint-admin_lists_access .admin-table-responsive--wide table, - .endpoint-api_tokens .admin-table-responsive--wide table { - width: max-content; - min-width: 980px !important; - } - .endpoint-list_share .input-group, - .endpoint-shared_list .input-group { - flex-wrap: wrap; - } - .endpoint-list_share .share-submit-btn, - .endpoint-shared_list .share-submit-btn { - width: 100%; - } -} -@media (max-width: 430px) { - .app-brand__icon { - width: 2rem; - height: 2rem; - font-size: 1rem; - } - .app-brand__title, .app-brand__accent { - font-size: 1rem; - } - .app-navbar__actions { - grid-template-columns: repeat(2, minmax(0, 1fr)); - } - .app-navbar__actions .btn { - padding: .38rem .45rem; - font-size: .74rem; - } -} - -.endpoint-admin_api_tokens .admin-table-responsive--wide table { width: 100%; min-width: 100%; } -@media (max-width: 767.98px) { .endpoint-admin_api_tokens .admin-table-responsive--wide table { width:max-content; min-width: 980px !important; } } -.table-responsive { overflow-x: auto; } - - -/* v6 tweaks */ -.create-list-switch, -.hide-purchased-switch { - display: inline-flex; - align-items: center; - gap: .5rem; - padding: .45rem .8rem .45rem 2.35rem; - min-height: 0; - width: auto; - background: rgba(255,255,255,0.04); - border: 1px solid var(--ui-border); - border-radius: 12px; -} -.create-list-switch .form-check-input, -.hide-purchased-switch .form-check-input { - width: 2rem !important; - height: 1rem !important; - margin-top: 0; -} -.create-list-switch .form-check-label, -.hide-purchased-switch .form-check-label { - margin-left: .15rem; -} -.endpoint-admin_lists_access .card > .card-body > .table-responsive, -.endpoint-admin_api_tokens .card > .card-body > .table-responsive { - width: 100%; -} -.endpoint-admin_lists_access .table.keep-horizontal, -.endpoint-admin_api_tokens .table.keep-horizontal { - min-width: 100%; -} - - -/* v7.1 share/main fixes */ -.create-list-checkbox { - align-items: center; - gap: .55rem; -} -.create-list-checkbox .form-check-input { - margin-top: 0; -} -.endpoint-list_share #items .list-group-item, -.endpoint-shared_list #items .list-group-item { - display: flex; - justify-content: space-between; - align-items: center; - gap: .75rem; -} -.endpoint-list_share #items .list-group-item > .d-flex.flex-grow-1, -.endpoint-shared_list #items .list-group-item > .d-flex.flex-grow-1 { - min-width: 0; - flex: 1 1 auto; -} -.endpoint-list_share .list-item-actions, -.endpoint-shared_list .list-item-actions { - flex: 0 0 auto; - margin-left: auto; - justify-content: flex-end; -} -.endpoint-list_share .list-item-actions .btn, -.endpoint-shared_list .list-item-actions .btn { - min-width: 2.5rem; -} -.endpoint-list_share .hide-purchased-switch, -.endpoint-shared_list .hide-purchased-switch { - align-items: center; -} -.endpoint-list_share .hide-purchased-switch .form-check-input, -.endpoint-shared_list .hide-purchased-switch .form-check-input { - margin-top: 0; -} -@media (max-width: 767.98px) { - .endpoint-list_share #items .list-group-item, - .endpoint-shared_list #items .list-group-item { - align-items: flex-start; - } - .endpoint-list_share .list-item-actions, - .endpoint-shared_list .list-item-actions { - width: 100%; - margin-left: 0; - justify-content: flex-start; - } -} - - -/* v9.1 switch and share consistency fixes */ -.create-list-input-group > .form-control { - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; -} -.create-list-input-group > #tempToggle { - min-width: 9.75rem; - font-weight: 600; - white-space: nowrap; -} -.hide-purchased-switch.form-check { - display: inline-flex; - align-items: center; - gap: .7rem; - padding: .55rem .95rem; - padding-left: .95rem; - border-radius: 14px; - background: rgba(255,255,255,.04); - border: 1px solid var(--ui-border); -} -.hide-purchased-switch .form-check-input { - flex: 0 0 auto; - float: none; - width: 2.9em !important; - height: 1.5em !important; - margin: 0 !important; - cursor: pointer; -} -.hide-purchased-switch .form-check-label { - margin: 0 !important; - white-space: nowrap; - cursor: pointer; -} - -.endpoint-list_share .list-item-actions, -.endpoint-shared_list .list-item-actions { - gap: .5rem; -} - -.endpoint-list_share .list-item-actions .btn, -.endpoint-shared_list .list-item-actions .btn { - min-width: 2.75rem; - min-height: 2.5rem; - padding: .5rem .72rem; -} - -.endpoint-list_share .app-navbar__actions .btn, -.endpoint-shared_list .app-navbar__actions .btn { - border-radius: .9rem !important; -} - -/* unified bootstrap-like switches */ -.switch-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); - gap: .8rem; -} - -.form-check.form-switch.app-switch { - display: inline-flex; - align-items: center; - gap: .75rem; - min-height: auto; - margin: 0; - padding: .72rem .95rem; - padding-left: .95rem; - background: rgba(255,255,255,.04); - border: 1px solid var(--ui-border); - border-radius: 14px; -} - -.form-check.form-switch.app-switch .form-check-input { - float: none; - flex: 0 0 auto; - width: 2.9em !important; - height: 1.55em !important; - margin: 0 !important; - cursor: pointer; - background-color: var(--dark-400) !important; - border-color: var(--dark-300) !important; -} - -.form-check.form-switch.app-switch .form-check-input:checked { - background-color: var(--primary) !important; - border-color: var(--primary-border) !important; -} - -.form-check.form-switch.app-switch .form-check-input:focus { - box-shadow: 0 0 0 .18rem rgba(24, 64, 118, .22) !important; -} - -.form-check.form-switch.app-switch .form-check-label { - margin: 0 !important; - line-height: 1.35; - cursor: pointer; -} - -.form-check.form-switch.app-switch.form-switch-compact { - width: 100%; - justify-content: flex-start; -} - -.form-check.form-switch.app-switch.form-switch-compact .form-check-input { - width: 2.9em !important; - height: 1.55em !important; -} - -.hide-purchased-switch.form-check.app-switch { - width: auto; -} - -.endpoint-edit_my_list .switch-grid .app-switch, -.endpoint-admin_edit_list .switch-grid .app-switch { - width: 100%; -} - -/* consolidation pass 2026-03-30: merged safe duplicates and overlapping hotfixes */ -/* final UX polish 2026-03-14 */ -:root { - --nav-btn-height: 2.8rem; -} - -.app-navbar .container-xxl { - display: flex; - align-items: center; - justify-content: space-between; - gap: .8rem; - row-gap: .55rem; - flex-wrap: nowrap; -} - -.app-navbar__actions { - display: flex; - align-items: stretch; - justify-content: flex-end; - gap: .5rem; - flex-wrap: nowrap; - min-width: 0; -} - -.app-navbar__actions .btn, -.app-nav-action { - display: inline-flex; - align-items: center; - justify-content: center; - min-width: 0; - min-height: var(--nav-btn-height); - padding: .6rem .95rem; - white-space: nowrap; - line-height: 1; -} - -.app-navbar__actions .btn > span, -.app-nav-action > span { - display: inline-flex; - align-items: center; -} - -.form-check.form-switch.app-switch { - min-height: 3.2rem; - padding: .78rem 1rem; - border-radius: 16px; -} - -.form-check.form-switch.app-switch .form-check-input { - width: 3.15em !important; - height: 1.7em !important; - background-position: left center; -} - -.form-check.form-switch.app-switch .form-check-label { - display: inline-flex; - align-items: center; - min-height: 1.7rem; - font-weight: 500; -} - -.hide-purchased-switch.form-check.app-switch { - width: auto; - max-width: 100%; -} - -.endpoint-edit_my_list .switch-grid { - grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); -} - -.endpoint-edit_my_list .switch-grid .app-switch, -.endpoint-admin_edit_list .switch-grid .app-switch { - width: 100%; - min-height: 3.35rem; -} - -/* boxed checks in api token form */ -.endpoint-admin_api_tokens .stack-form .form-check-spaced, -.endpoint-api_tokens .stack-form .form-check-spaced { - align-items: center; - gap: .85rem; - margin: 0 0 .72rem; - padding: .75rem .9rem; - border: 1px solid var(--ui-border); - border-radius: 14px; - background: rgba(255,255,255,.04); -} - -.endpoint-admin_api_tokens .stack-form .form-check-spaced .form-check-input, -.endpoint-api_tokens .stack-form .form-check-spaced .form-check-input { - margin: 0; -} - -.endpoint-admin_api_tokens .stack-form .form-check-spaced .form-check-label, -.endpoint-api_tokens .stack-form .form-check-spaced .form-check-label { - flex: 1 1 auto; -} - -/* admin tables full width on desktop, scroll only on smaller screens */ -.endpoint-admin_panel .table-responsive, -.endpoint-admin_lists_access .table-responsive { - overflow-x: auto; -} - -.endpoint-admin_panel .table-responsive > table.table, -.endpoint-admin_lists_access .table-responsive > table.table { - width: 100% !important; - min-width: 100% !important; - table-layout: auto; -} - -.endpoint-admin_lists_access td:nth-child(6) { - min-width: 19rem; -} - -.endpoint-admin_lists_access td:nth-child(6) > .d-flex, -.endpoint-admin_lists_access td:nth-child(6) > .text-warning { - width: 100%; -} - -.endpoint-admin_lists_access td:nth-child(6) > .text-warning { - display: block; -} - -/* ========================================================= - Share page toolbar and shared-list header actions -========================================================= */ -.share-page-toolbar { - display: flex; - align-items: center; - justify-content: flex-end; - gap: .75rem; - width: 100%; -} - -.share-page-toolbar__spacer { - flex: 1 1 auto; -} - -.share-page-toolbar .form-check { - margin-bottom: 0; -} - -.endpoint-list_share .app-navbar__actions, -.endpoint-shared_list .app-navbar__actions { - align-items: stretch; -} - -.endpoint-list_share .app-navbar__actions .btn, -.endpoint-shared_list .app-navbar__actions .btn { - min-height: var(--nav-btn-height); -} - -@media (max-width: 991.98px) { - .app-navbar .container-xxl { - display: grid; - grid-template-columns: minmax(0, 1fr) auto; - align-items: center; - gap: .6rem; - } - - .app-navbar__meta { - display: none; - } - - .app-brand { - min-width: 0; - overflow: hidden; - } - - .app-brand > span:last-child { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - - .app-navbar__actions { - grid-column: 1 / -1; - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: .45rem; - width: 100%; - } - - .app-navbar__actions .btn, - .app-nav-action { - width: 100%; - padding: .55rem .6rem; - } - - .endpoint-admin_panel .table-responsive > table.table, - .endpoint-admin_lists_access .table-responsive > table.table { - width: max-content !important; - min-width: 980px !important; - } -} - -@media (max-width: 767.98px) { - .share-page-toolbar { - justify-content: stretch; - } - - .share-page-toolbar__spacer { - display: none; - } - - .hide-purchased-switch { - padding-left: 2.95rem; - } - - .hide-purchased-switch.form-check.app-switch { - width: 100%; - } - - .switch-grid, - .endpoint-edit_my_list .switch-grid { - grid-template-columns: 1fr; - } -} - - -/* final polish v2 */ -:root { - --nav-btn-height: 2.35rem; -} - -.app-navbar__actions { - gap: .4rem; -} - -.app-navbar__actions .btn, -.app-nav-action { - min-height: var(--nav-btn-height); - padding: .42rem .78rem; - font-size: .92rem; - border-radius: .9rem !important; -} - -.form-check.form-switch.app-switch { - min-height: 2.95rem; - padding: .65rem .9rem; -} - -.form-check.form-switch.app-switch .form-check-input { - width: 2.75em !important; - height: 1.45em !important; - transition: background-position .18s ease-in-out, background-color .18s ease-in-out, border-color .18s ease-in-out, box-shadow .18s ease-in-out !important; -} - -.form-check.form-switch.app-switch .form-check-label { - min-height: 1.45rem; -} - -.endpoint-admin_templates .table-responsive { - overflow-x: auto; -} - -.endpoint-admin_templates .table-responsive > table.table { - width: 100% !important; - min-width: 100% !important; - table-layout: auto; -} - -@media (max-width: 991.98px) { - .app-navbar__actions .btn, - .app-nav-action { - font-size: .86rem; - padding: .48rem .6rem; - } - - .endpoint-admin_templates .table-responsive > table.table { - width: max-content !important; - min-width: 900px !important; - } -} - - -/* responsive mobile category badges + smaller animated switches */ -.mobile-list-heading { - width: 100%; - min-width: 0; - max-width: 100%; - justify-content: flex-start; -} - -.mobile-list-heading__title { - min-width: 0; -} - -.mobile-category-badges { - display: inline-flex; - align-items: center; - gap: .3rem; - min-width: 0; - max-width: 100%; -} - -.mobile-category-badge { - display: inline-flex; - align-items: center; - justify-content: center; - font-size: .68rem; - line-height: 1; - padding: .26rem .52rem; - opacity: .95; -} - -.mobile-category-badge__dot { - display: none; - width: .55rem; - height: .55rem; - border-radius: 999px; - background: currentColor; -} - -.mobile-category-badges.is-compact .mobile-category-badge { - width: .9rem; - min-width: .9rem; - height: .9rem; - padding: 0; - border-radius: 999px; -} - -.mobile-category-badges.is-compact .mobile-category-badge__text { - display: none; -} - -.mobile-category-badges.is-compact .mobile-category-badge__dot { - display: block; -} - -.form-check.form-switch.app-switch { - min-height: 2.75rem; - padding: .58rem .82rem; -} - -.form-check.form-switch.app-switch .form-check-input, -.hide-purchased-switch .form-check-input { - width: 2.45em !important; - height: 1.3em !important; - background-position: left center !important; - transition: background-position .18s ease-in-out, background-color .18s ease-in-out, border-color .18s ease-in-out, box-shadow .18s ease-in-out !important; -} - -.form-check.form-switch.app-switch .form-check-input:checked, -.hide-purchased-switch .form-check-input:checked { - background-position: right center !important; -} - -.form-check.form-switch.app-switch .form-check-label { - min-height: 1.3rem; -} - -.hide-purchased-switch.form-check.app-switch { - padding: .5rem .82rem; -} - -@media (max-width: 576px) { - .mobile-list-heading { - display: inline-flex; - max-width: 100%; - } - - .mobile-list-heading__title { - max-width: 100%; - } -} - - -.endpoint-main_page .list-group-item > .main-list-row { - display: flex; - align-items: center; - justify-content: space-between; - gap: 0.75rem; - width: 100%; - flex-wrap: nowrap; -} - -.endpoint-main_page .list-main-meta { - min-width: 0; - flex: 1 1 auto; -} - -.endpoint-main_page .list-main-title { - display: flex; - align-items: center; - align-content: center; - flex-wrap: wrap; - gap: 0.15rem; - min-width: 0; - line-height: 1; -} - -.endpoint-main_page .list-main-actions { - flex: 0 0 auto; - align-self: center; -} - -@media (max-width: 575.98px) { - .endpoint-main_page .list-group-item > .main-list-row { - flex-direction: column; - align-items: stretch; - } - - .endpoint-main_page .list-main-actions { - width: 100%; - } -} - -/* mobile UX fixes 2026-03-14 */ -.list-main-title__link { - min-width: 0; - display: inline-flex; - align-items: center; - align-content: center; - flex-wrap: wrap; - gap: .15rem; - line-height: 1; -} - -.shopping-item-row { - gap: .75rem; -} - -.shopping-item-main { - min-width: 0; - flex: 1 1 auto; - flex-wrap: wrap; -} - -.shopping-item-main span[id^="name-"] { - min-width: 0; -} - -.shopping-item-actions { - flex: 0 0 auto; - margin-left: auto; - align-self: flex-start; -} - -.shopping-compact-input-group { - flex-wrap: nowrap !important; - align-items: stretch; -} - -.shopping-qty-input { - flex: 0 0 4.5rem; - max-width: 4.5rem; -} - -.shopping-compact-submit { - flex: 0 0 auto; - width: auto; - white-space: nowrap; -} - - -@media (max-width: 991.98px) { - .app-navbar__actions { - grid-template-columns: repeat(auto-fit, minmax(8.25rem, max-content)); - justify-content: end; - } - - .app-navbar__actions .btn, - .app-nav-action { - width: auto; - min-width: 8.25rem; - justify-self: end; - } -} - -@media (max-width: 575.98px) { - .endpoint-main_page .list-group-item > .main-list-row { - flex-direction: row; - align-items: center; - } - - .endpoint-main_page .list-main-actions { - width: auto; - margin-left: auto; - } - - .endpoint-main_page .list-main-actions .btn { - padding: .38rem .52rem; - min-width: 2.35rem; - } - - .endpoint-main_page .list-main-title { - display: flex; - flex-wrap: wrap; - gap: .15rem; - } - - .endpoint-main_page .list-main-meta { - flex: 1 1 auto; - min-width: 0; - } - - .endpoint-main_page .list-main-title__link { - min-width: 0; - max-width: 100%; - } - - .shopping-item-row { - align-items: flex-start !important; - } - - .shopping-item-actions { - width: auto; - margin-top: 0; - margin-left: auto; - justify-content: flex-end; - } - - .shopping-item-actions .btn { - min-width: 2.35rem; - padding: .38rem .52rem; - } - - .shopping-compact-input-group { - display: flex; - } - - .shopping-compact-input-group > .form-control { - min-width: 0; - } - - .shopping-qty-input { - flex-basis: 4rem; - max-width: 4rem; - } - - .shopping-compact-submit { - min-width: auto; - padding-left: .8rem; - padding-right: .8rem; - } - - .ui-password-group > .ui-password-toggle { - min-width: 2.75rem; - padding-left: .7rem; - padding-right: .7rem; - } -} - - -/* UX refactor 2026-03-14 b */ -.app-navbar-toggler { - border-color: rgba(255,255,255,.28); - padding: .3rem .55rem; -} - -.app-navbar-toggler:focus { - box-shadow: 0 0 0 .2rem rgba(255,255,255,.1); -} - -.app-navbar-toggler .navbar-toggler-icon { - filter: invert(1) grayscale(1); -} - -#createListTempToggle, -.create-list-temp-toggle { - border-top-left-radius: 0 !important; - border-bottom-left-radius: 0 !important; -} - -.create-list-input-group > .form-control { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.create-list-input-group > .create-list-temp-toggle { - background: transparent; - white-space: nowrap; -} - -.list-toolbar { - width: 100%; -} - -.list-toolbar--share { - justify-content: flex-end; -} - -.hide-purchased-switch--minimal { - border: 0; - background: transparent; - padding: 0; - margin-left: auto; -} - -.shopping-item-row { - padding: .8rem .95rem; -} - -.shopping-item-main { - display: flex; - align-items: center; - gap: .75rem; - width: 100%; -} - -.shopping-item-content { - flex: 1 1 auto; - min-width: 0; -} - -.shopping-item-head { - display: flex; - align-items: flex-start; - justify-content: space-between; - gap: .75rem; -} - -.shopping-item-text { - min-width: 0; - display: flex; - align-items: center; - gap: .35rem; - flex-wrap: wrap; -} - -.shopping-item-name { - min-width: 0; - overflow-wrap: break-word; - word-break: normal; -} - -.shopping-item-text .info-line { - flex-basis: 100%; - margin-top: .1rem; - overflow-wrap: break-word; - word-break: normal; -} - -.shopping-item-actions { - display: inline-flex; - flex-wrap: nowrap; - gap: .35rem; -} - -.shopping-product-input-group > .shopping-product-name-input, -.shopping-expense-input-group > .shopping-expense-amount-input { - flex: 1 1 auto; -} - -.shopping-product-input-group > .shopping-qty-input { - flex: 0 0 4.5rem; - max-width: 4.5rem; - text-align: center; -} - -.shopping-expense-input-group > .shopping-compact-submit, -.shopping-product-input-group > .shopping-compact-submit { - flex: 0 0 auto; -} - -.endpoint-list .shopping-product-input-group > .shopping-compact-submit, -.endpoint-list_share .shopping-product-input-group > .shopping-compact-submit, -.endpoint-shared_list .shopping-product-input-group > .shopping-compact-submit, -.endpoint-list .shopping-expense-input-group > .shopping-compact-submit, -.endpoint-list_share .shopping-expense-input-group > .shopping-compact-submit, -.endpoint-shared_list .shopping-expense-input-group > .shopping-compact-submit { - border-top-left-radius: 0 !important; - border-bottom-left-radius: 0 !important; - border-top-right-radius: .9rem !important; - border-bottom-right-radius: .9rem !important; - margin-left: 0; -} - -.endpoint-list .shopping-product-input-group, -.endpoint-list_share .shopping-product-input-group, -.endpoint-shared_list .shopping-product-input-group, -.endpoint-list .shopping-expense-input-group, -.endpoint-list_share .shopping-expense-input-group, -.endpoint-shared_list .shopping-expense-input-group { - flex-wrap: nowrap; -} - -@media (max-width: 991.98px) { - .navbar-collapse .app-navbar__actions { - padding-top: .6rem; - justify-content: flex-end; - } -} - -@media (max-width: 575.98px) { - .app-navbar__actions { - width: 100%; - justify-content: flex-end; - } - - .app-navbar__actions .btn, - .app-nav-action { - min-width: 0; - width: auto; - } - - .shopping-item-main { - gap: .55rem; - } - - .shopping-item-head { - gap: .45rem; - } - - .shopping-item-actions { - margin-left: auto; - align-self: flex-start; - } - - .shopping-item-actions .btn { - min-width: 2.2rem; - padding: .34rem .48rem; - } - - .shopping-product-input-group > .shopping-product-name-input, - .shopping-expense-input-group > .shopping-expense-amount-input { - flex: 0 0 60%; - min-width: 0; - } - - .shopping-product-input-group > .shopping-qty-input { - flex: 0 0 15%; - max-width: 15%; - min-width: 0; - } - - .shopping-product-input-group > .shopping-compact-submit { - flex: 0 0 25%; - width: 25%; - min-width: 0; - padding-left: .55rem; - padding-right: .55rem; - font-size: .95rem; - } - - .shopping-expense-input-group > .shopping-compact-submit { - padding-left: .7rem; - padding-right: .7rem; - } - - .list-toolbar { - align-items: flex-start !important; - } - - .list-toolbar__sort { - flex: 0 0 auto; - } - - .hide-purchased-switch--minimal { - font-size: .95rem; - } -} - - -/* UX tweak 2026-03-14 c: hamburger with full labels */ -@media (max-width: 991.98px) { - .navbar-collapse .app-navbar__actions { - width: 100%; - display: flex; - flex-direction: column; - align-items: stretch; - gap: .5rem; - } - - .navbar-collapse .app-navbar__actions .btn, - .navbar-collapse .app-nav-action { - width: 100%; - min-width: 0; - justify-content: flex-start; - text-align: left; - padding-left: .9rem; - padding-right: .9rem; - } - - .navbar-collapse .app-navbar__actions .btn > span, - .navbar-collapse .app-nav-action > span { - display: inline !important; - } -} - - -/* form input/button unification fix 2026-03-15 */ -.endpoint-list .shopping-product-input-group, -.endpoint-list_share .shopping-product-input-group, -.endpoint-shared_list .shopping-product-input-group, -.endpoint-list .shopping-expense-input-group, -.endpoint-list_share .shopping-expense-input-group, -.endpoint-shared_list .shopping-expense-input-group { - display: flex; - flex-wrap: nowrap !important; - align-items: stretch; - gap: 0 !important; -} - -.endpoint-list .shopping-product-input-group > .form-control, -.endpoint-list_share .shopping-product-input-group > .form-control, -.endpoint-shared_list .shopping-product-input-group > .form-control, -.endpoint-list .shopping-expense-input-group > .form-control, -.endpoint-list_share .shopping-expense-input-group > .form-control, -.endpoint-shared_list .shopping-expense-input-group > .form-control, -.endpoint-list .shopping-product-input-group > .btn, -.endpoint-list_share .shopping-product-input-group > .btn, -.endpoint-shared_list .shopping-product-input-group > .btn, -.endpoint-list .shopping-expense-input-group > .btn, -.endpoint-list_share .shopping-expense-input-group > .btn, -.endpoint-shared_list .shopping-expense-input-group > .btn { - position: relative; - min-height: 46px; - box-shadow: none; -} - -.endpoint-list .shopping-product-input-group > .shopping-product-name-input, -.endpoint-list_share .shopping-product-input-group > .shopping-product-name-input, -.endpoint-shared_list .shopping-product-input-group > .shopping-product-name-input, -.endpoint-list .shopping-expense-input-group > .shopping-expense-amount-input, -.endpoint-list_share .shopping-expense-input-group > .shopping-expense-amount-input, -.endpoint-shared_list .shopping-expense-input-group > .shopping-expense-amount-input { - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; -} - -.endpoint-list .shopping-product-input-group > .shopping-qty-input, -.endpoint-list_share .shopping-product-input-group > .shopping-qty-input, -.endpoint-shared_list .shopping-product-input-group > .shopping-qty-input { - border-radius: 0 !important; - border-left-width: 0 !important; -} - -.endpoint-list .shopping-product-input-group > .shopping-compact-submit, -.endpoint-list_share .shopping-product-input-group > .shopping-compact-submit, -.endpoint-shared_list .shopping-product-input-group > .shopping-compact-submit, -.endpoint-list .shopping-expense-input-group > .shopping-compact-submit, -.endpoint-list_share .shopping-expense-input-group > .shopping-compact-submit, -.endpoint-shared_list .shopping-expense-input-group > .shopping-compact-submit { - display: inline-flex; - align-items: center; - justify-content: center; - gap: .35rem; - margin-left: 0 !important; - border-top-left-radius: 0 !important; - border-bottom-left-radius: 0 !important; - border-top-right-radius: .9rem !important; - border-bottom-right-radius: .9rem !important; - border-left-width: 0 !important; -} - -.endpoint-list .shopping-product-input-group > .shopping-compact-submit, -.endpoint-list .shopping-expense-input-group > .shopping-compact-submit, -.endpoint-list_share .shopping-product-input-group > .shopping-compact-submit, -.endpoint-list_share .shopping-expense-input-group > .shopping-compact-submit, -.endpoint-shared_list .shopping-product-input-group > .shopping-compact-submit, -.endpoint-shared_list .shopping-expense-input-group > .shopping-compact-submit, -.endpoint-list .share-submit-btn, -.endpoint-list_share .share-submit-btn, -.endpoint-shared_list .share-submit-btn { - min-width: 7.25rem; -} - -.shopping-btn-icon { - line-height: 1; -} - -.shopping-btn-label { - line-height: 1; -} - -@media (max-width: 767.98px) { - .endpoint-list .shopping-product-input-group, - .endpoint-list_share .shopping-product-input-group, - .endpoint-shared_list .shopping-product-input-group, - .endpoint-list .shopping-expense-input-group, - .endpoint-list_share .shopping-expense-input-group, - .endpoint-shared_list .shopping-expense-input-group { - width: 100%; - } - - .endpoint-list .shopping-product-input-group > .shopping-product-name-input, - .endpoint-list_share .shopping-product-input-group > .shopping-product-name-input, - .endpoint-shared_list .shopping-product-input-group > .shopping-product-name-input { - flex: 0 0 60% !important; - max-width: 60% !important; - min-width: 0; - } - - .endpoint-list .shopping-product-input-group > .shopping-qty-input, - .endpoint-list_share .shopping-product-input-group > .shopping-qty-input, - .endpoint-shared_list .shopping-product-input-group > .shopping-qty-input { - flex: 0 0 15% !important; - max-width: 15% !important; - min-width: 0; - padding-left: .35rem; - padding-right: .35rem; - } - - .endpoint-list .shopping-product-input-group > .shopping-compact-submit, - .endpoint-list_share .shopping-product-input-group > .shopping-compact-submit, - .endpoint-shared_list .shopping-product-input-group > .shopping-compact-submit { - flex: 0 0 25% !important; - width: 25% !important; - min-width: 0 !important; - padding-left: .4rem; - padding-right: .4rem; - } - - .endpoint-list .shopping-expense-input-group > .shopping-expense-amount-input, - .endpoint-list_share .shopping-expense-input-group > .shopping-expense-amount-input, - .endpoint-shared_list .shopping-expense-input-group > .shopping-expense-amount-input { - flex: 1 1 auto !important; - min-width: 0; - } - - .endpoint-list .shopping-expense-input-group > .shopping-compact-submit, - .endpoint-list_share .shopping-expense-input-group > .shopping-compact-submit, - .endpoint-shared_list .shopping-expense-input-group > .shopping-compact-submit { - flex: 0 0 5rem !important; - width: 5rem !important; - min-width: 5rem !important; - padding-left: .35rem; - padding-right: .35rem; - } - - .endpoint-list .shopping-product-input-group > .shopping-compact-submit .shopping-btn-label, - .endpoint-list_share .shopping-product-input-group > .shopping-compact-submit .shopping-btn-label, - .endpoint-shared_list .shopping-product-input-group > .shopping-compact-submit .shopping-btn-label, - .endpoint-list .shopping-expense-input-group > .shopping-compact-submit .shopping-btn-label, - .endpoint-list_share .shopping-expense-input-group > .shopping-compact-submit .shopping-btn-label, - .endpoint-shared_list .shopping-expense-input-group > .shopping-compact-submit .shopping-btn-label { - display: none; - } - - .endpoint-list .shopping-product-input-group > .shopping-compact-submit .shopping-btn-icon, - .endpoint-list_share .shopping-product-input-group > .shopping-compact-submit .shopping-btn-icon, - .endpoint-shared_list .shopping-product-input-group > .shopping-compact-submit .shopping-btn-icon, - .endpoint-list .shopping-expense-input-group > .shopping-compact-submit .shopping-btn-icon, - .endpoint-list_share .shopping-expense-input-group > .shopping-compact-submit .shopping-btn-icon, - .endpoint-shared_list .shopping-expense-input-group > .shopping-compact-submit .shopping-btn-icon { - margin: 0; - font-size: 1rem; - } -} - - -/* endpoint fix for /list route */ -.endpoint-view_list .shopping-product-input-group, -.endpoint-view_list .shopping-expense-input-group { - display: flex; - flex-wrap: nowrap !important; - align-items: stretch; - gap: 0 !important; - width: 100%; -} - -.endpoint-view_list .shopping-product-input-group > .form-control, -.endpoint-view_list .shopping-expense-input-group > .form-control, -.endpoint-view_list .shopping-product-input-group > .btn, -.endpoint-view_list .shopping-expense-input-group > .btn { - position: relative; - min-height: 46px; - box-shadow: none; -} - -.endpoint-view_list .shopping-product-input-group > .shopping-product-name-input, -.endpoint-view_list .shopping-expense-input-group > .shopping-expense-amount-input { - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; -} - -.endpoint-view_list .shopping-product-input-group > .shopping-qty-input { - border-radius: 0 !important; - border-left-width: 0 !important; -} - -.endpoint-view_list .shopping-product-input-group > .shopping-compact-submit, -.endpoint-view_list .shopping-expense-input-group > .shopping-compact-submit, -.endpoint-view_list .share-submit-btn { - display: inline-flex; - align-items: center; - justify-content: center; - gap: .35rem; - margin-left: 0 !important; - min-width: 7.25rem; - border-top-left-radius: 0 !important; - border-bottom-left-radius: 0 !important; - border-top-right-radius: .9rem !important; - border-bottom-right-radius: .9rem !important; - border-left-width: 0 !important; -} - -@media (max-width: 767.98px) { - .endpoint-view_list .shopping-product-input-group > .shopping-product-name-input { - flex: 0 0 60% !important; - max-width: 60% !important; - min-width: 0; - } - - .endpoint-view_list .shopping-product-input-group > .shopping-qty-input { - flex: 0 0 15% !important; - max-width: 15% !important; - min-width: 0; - padding-left: .35rem; - padding-right: .35rem; - } - - .endpoint-view_list .shopping-product-input-group > .shopping-compact-submit { - flex: 0 0 25% !important; - width: 25% !important; - min-width: 0 !important; - padding-left: .4rem; - padding-right: .4rem; - } - - .endpoint-view_list .shopping-expense-input-group > .shopping-expense-amount-input { - flex: 1 1 auto !important; - min-width: 0; - } - - .endpoint-view_list .shopping-expense-input-group > .shopping-compact-submit { - flex: 0 0 5rem !important; - width: 5rem !important; - min-width: 5rem !important; - padding-left: .35rem; - padding-right: .35rem; - } - - .endpoint-view_list .shopping-product-input-group > .shopping-compact-submit .shopping-btn-label, - .endpoint-view_list .shopping-expense-input-group > .shopping-compact-submit .shopping-btn-label { - display: none; - } - - .endpoint-view_list .shopping-product-input-group > .shopping-compact-submit .shopping-btn-icon, - .endpoint-view_list .shopping-expense-input-group > .shopping-compact-submit .shopping-btn-icon { - margin: 0; - font-size: 1rem; - } -} - -/* --- JS render + progress bar consistency patch --- */ -#progress-bar-purchased { - background: linear-gradient(135deg, rgba(39,208,125,0.96), rgba(22,150,91,0.98)) !important; -} - -#progress-bar-not-purchased { - background: linear-gradient(135deg, rgba(246,196,83,0.96), rgba(224,164,26,0.98)) !important; -} - -#progress-bar-remaining { - background: rgba(255,255,255,0.08) !important; -} - - -/* ========================================================= - Shopping item rows: shared base alignment + mobile fixes -========================================================= */ -/* v10.2 item row consistency and mobile share fixes */ -.shopping-item-text { - line-height: 1.35; -} - -.shopping-item-text .info-line { - display: inline; - flex-basis: auto; - margin-top: 0; - white-space: normal; -} - -.shopping-item-text .info-line > span { - display: inline; -} - -.shopping-item-text .item-added-by-meta { - color: currentColor; - opacity: .72; - font-size: .92em; -} - -.shopping-item-text .item-added-by-meta b { - font-weight: 600; -} - -.shopping-item-name, -.shopping-item-text .info-line { - overflow-wrap: break-word; - word-break: normal; -} - -.shopping-item-actions { - flex: 0 0 auto; -} - -@media (max-width: 575.98px) { - .shopping-item-head { - flex-wrap: wrap; - align-items: flex-start; - } - - .shopping-item-text { - flex: 1 1 100%; - min-width: 0; - } - - .shopping-item-actions { - width: 100%; - margin-left: 0; - justify-content: flex-end; - } -} - - -/* v10.3 alignment fixes for list/share */ -.hide-purchased-switch--right { - display: inline-flex !important; - align-items: center; - justify-content: flex-end; - gap: .6rem; - width: auto; - margin-left: auto; - padding: 0 !important; - border: 0 !important; - background: transparent !important; - box-shadow: none !important; -} - -.hide-purchased-switch--right::before, -.hide-purchased-switch--right::after { - display: none !important; -} - -.hide-purchased-switch--right .form-check-input { - order: 1; - margin: 0; - float: none; - flex: 0 0 auto; -} - -.hide-purchased-switch--right .form-check-label { - order: 0; - margin: 0 !important; - white-space: nowrap; -} - -.list-action-row { - display: flex; - flex-wrap: nowrap; - align-items: stretch; - gap: .65rem; -} - -.list-action-row__form { - display: flex; - flex: 1 1 50%; -} - -.list-action-row__btn { - width: 100%; -} - -.list-action-row > .list-action-row__btn { - flex: 1 1 50%; -} - -.shopping-item-head { - flex-wrap: nowrap; - align-items: center; -} - -.shopping-item-text { - flex: 1 1 auto; - min-width: 0; -} - -.shopping-item-text .info-line { - flex-basis: auto; -} - -.shopping-item-actions { - align-items: center; - justify-content: flex-end; - flex: 0 0 auto; - white-space: nowrap; -} - -.shopping-item-actions .btn { - flex: 0 0 auto; -} - -@media (max-width: 575.98px) { - .shopping-item-main { - align-items: center; - } - - .shopping-item-head { - flex-wrap: nowrap; - align-items: center; - gap: .4rem; - } - - .shopping-item-text { - flex: 1 1 auto; - min-width: 0; - gap: .25rem; - } - - .shopping-item-actions { - width: auto; - margin-left: auto; - gap: .25rem; - } - - .shopping-item-actions .btn { - min-width: 2rem; - padding: .3rem .42rem; - } - - .hide-purchased-switch--right { - width: auto; - max-width: 100%; - } - - .list-action-row { - gap: .5rem; - } - - .list-action-row > .list-action-row__btn, - .list-action-row__form { - flex: 1 1 50%; - min-width: 0; - } - - .list-action-row__btn { - padding-left: .55rem; - padding-right: .55rem; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - } -} - - -/* layout polish 2026-03-15: toolbar, sorting and item alignment */ -.list-header-toolbar { - width: 100%; -} - -.list-header-toolbar > h2 { - flex: 1 1 auto; - min-width: 0; -} - -.list-header-toolbar .list-toolbar { - flex: 0 0 auto; - width: auto; - margin-left: auto; -} - -.list-toolbar__sort.btn { - display: inline-flex; - align-items: center; - justify-content: center; - white-space: nowrap; - border-width: 1px !important; -} - -.drag-handle { - display: none !important; - cursor: grab; -} - -body.sorting-active .drag-handle { - display: inline-flex !important; -} - -body.sorting-active .shopping-item-row { - cursor: grab; -} - -body.sorting-active .shopping-item-row:active, -body.sorting-active .drag-handle:active { - cursor: grabbing; -} - -body.sorting-active .shopping-item-row .large-checkbox { - pointer-events: none; -} - -.endpoint-list_share .shopping-item-name, -.endpoint-list_share .shopping-item-text .info-line, -.endpoint-shared_list .shopping-item-name, -.endpoint-shared_list .shopping-item-text .info-line { - overflow-wrap: break-word; - word-break: normal; -} - -.endpoint-list_share input[type="checkbox"].large-checkbox::before, -.endpoint-shared_list input[type="checkbox"].large-checkbox::before, -.endpoint-view_list input[type="checkbox"].large-checkbox::before { - font-size: 1.7em; -} - -@media (max-width: 575.98px) { - .endpoint-view_list .list-toolbar { - display: grid !important; - grid-template-columns: minmax(0, 1fr) auto; - align-items: center !important; - gap: .4rem !important; - flex-wrap: nowrap !important; - } - - .endpoint-view_list .list-toolbar__sort.btn { - min-width: 0; - padding: .35rem .55rem; - font-size: .82rem; - } - - .endpoint-view_list .hide-purchased-switch--right { - min-width: 0; - gap: .25rem; - font-size: .82rem; - } - - .endpoint-view_list .hide-purchased-switch--right .form-check-label { - margin-left: .25rem !important; - white-space: nowrap; - } - - .endpoint-view_list .hide-purchased-switch--right .form-check-input { - transform: scale(.92); - transform-origin: center; - } - - .list-header-toolbar { - align-items: flex-start !important; - } - - .list-header-toolbar .list-toolbar { - width: 100%; - justify-content: flex-end !important; - } -} - -/* hotfix 2026-03-15 v3: /share item layout parity with /list */ -/* hotfix 2026-03-15: /share item layout parity with /list */ -.endpoint-list_share .shopping-item-row, -.endpoint-shared_list .shopping-item-row { - overflow: hidden; - padding: .8rem .95rem; -} - -.endpoint-list_share .shopping-item-main, -.endpoint-shared_list .shopping-item-main, -.endpoint-view_list .shopping-item-main, -.endpoint-list .shopping-item-main { - display: flex; - align-items: center; - gap: .75rem; - width: 100%; -} - -.endpoint-list_share .shopping-item-content, -.endpoint-shared_list .shopping-item-content, -.endpoint-view_list .shopping-item-content, -.endpoint-list .shopping-item-content { - flex: 1 1 auto; - min-width: 0; - width: auto; -} - -.endpoint-list_share .shopping-item-head, -.endpoint-shared_list .shopping-item-head, -.endpoint-view_list .shopping-item-head, -.endpoint-list .shopping-item-head { - display: flex; - align-items: center; - justify-content: space-between; - gap: .75rem; -} - -.endpoint-list_share .shopping-item-text, -.endpoint-shared_list .shopping-item-text, -.endpoint-view_list .shopping-item-text, -.endpoint-list .shopping-item-text { - flex: 1 1 auto; - min-width: 0; - display: flex; - align-items: center; - align-content: center; - gap: .35rem; - flex-wrap: wrap; -} - -.endpoint-list_share .shopping-item-name, -.endpoint-shared_list .shopping-item-name, -.endpoint-view_list .shopping-item-name, -.endpoint-list .shopping-item-name { - display: inline; - min-width: 0; - max-width: 100%; - white-space: normal; - overflow-wrap: break-word; - word-break: normal; -} - -.endpoint-list_share .shopping-item-text .badge, -.endpoint-shared_list .shopping-item-text .badge, -.endpoint-view_list .shopping-item-text .badge, -.endpoint-list .shopping-item-text .badge, -.endpoint-list_share .shopping-item-text .info-line, -.endpoint-shared_list .shopping-item-text .info-line, -.endpoint-view_list .shopping-item-text .info-line, -.endpoint-list .shopping-item-text .info-line { - align-self: center; -} - -.endpoint-list_share .shopping-item-text .info-line, -.endpoint-shared_list .shopping-item-text .info-line, -.endpoint-view_list .shopping-item-text .info-line, -.endpoint-list .shopping-item-text .info-line { - display: block; - flex: 0 0 100%; - width: 100%; - margin-top: .1rem; - white-space: normal; - overflow-wrap: break-word; - word-break: normal; -} - -.endpoint-list_share .shopping-item-actions, -.endpoint-shared_list .shopping-item-actions, -.endpoint-view_list .shopping-item-actions, -.endpoint-list .shopping-item-actions { - display: inline-flex; - flex: 0 0 auto; - flex-wrap: nowrap; - align-items: center; - align-self: center; - justify-content: flex-end; - gap: .35rem; - margin-left: 0; - white-space: nowrap; -} - -.endpoint-list_share .shopping-item-actions .btn, -.endpoint-shared_list .shopping-item-actions .btn { - display: inline-flex; - align-items: center; - justify-content: center; - min-width: 2.25rem; - padding: .34rem .48rem; -} - -.endpoint-list_share .shopping-item-main > .large-checkbox, -.endpoint-shared_list .shopping-item-main > .large-checkbox, -.endpoint-view_list .shopping-item-main > .large-checkbox { - flex: 0 0 auto; - align-self: center; -} - -@media (max-width: 575.98px) { - .endpoint-list_share .shopping-item-main, - .endpoint-shared_list .shopping-item-main, - .endpoint-view_list .shopping-item-main, - .endpoint-list .shopping-item-main { - gap: .55rem; - } - - .endpoint-list_share .shopping-item-head, - .endpoint-shared_list .shopping-item-head, - .endpoint-view_list .shopping-item-head, - .endpoint-list .shopping-item-head { - display: flex; - align-items: center; - justify-content: space-between; - gap: .45rem; - } - - .endpoint-list_share .shopping-item-text, - .endpoint-shared_list .shopping-item-text, - .endpoint-view_list .shopping-item-text, - .endpoint-list .shopping-item-text { - flex: 1 1 auto; - min-width: 0; - gap: .25rem; - } - - .endpoint-list_share .shopping-item-actions, - .endpoint-shared_list .shopping-item-actions, - .endpoint-view_list .shopping-item-actions, - .endpoint-list .shopping-item-actions { - align-self: start; - width: auto; - margin-left: auto; - gap: .25rem; - } - - .endpoint-list_share .shopping-item-actions .btn, - .endpoint-shared_list .shopping-item-actions .btn { - min-width: 2rem; - padding: .3rem .42rem; - } -} - -.endpoint-list_share input[type="checkbox"].large-checkbox::before, -.endpoint-shared_list input[type="checkbox"].large-checkbox::before { - font-size: 1.75em; -} - -/* mobile menu simplification 2026-03-15 */ -.app-mobile-menu { - display: flex; - align-items: center; -} - -.app-mobile-menu__toggle { - display: inline-flex; - align-items: center; - justify-content: center; - width: 3rem; - height: 3rem; - border-radius: 14px; - background: rgba(255,255,255,0.04); -} - -.app-mobile-menu__panel { - min-width: 14rem; - padding: .4rem; - border-radius: 16px; - background: linear-gradient(180deg, rgba(14,22,35,0.98), rgba(9,15,26,0.98)) !important; - border: 1px solid rgba(255,255,255,0.1); - box-shadow: 0 18px 36px rgba(0,0,0,0.28); -} - -.app-mobile-menu__item { - display: flex; - align-items: center; - gap: .55rem; - min-height: 2.6rem; - padding: .55rem .75rem; - color: #fff; - border-radius: 12px; -} - -.app-mobile-menu__item:hover, -.app-mobile-menu__item:focus { - background: rgba(255,255,255,0.08); - color: #fff; -} - -@media (min-width: 992px) { - .app-mobile-menu { - display: none !important; - } -} - - -/* v5.1 create-list temp toggle mobile/Desktop fix */ -.create-list-input-group { - display: flex; - flex-wrap: nowrap !important; - align-items: stretch; - gap: 0 !important; -} - -.create-list-input-group > .form-control { - flex: 1 1 auto !important; - width: 1% !important; - min-width: 0 !important; - border-top-right-radius: 0 !important; - border-bottom-right-radius: 0 !important; -} - -.create-list-input-group > .create-list-temp-toggle, -.create-list-input-group > #tempToggle { - flex: 0 0 auto !important; - width: auto !important; - min-width: 10rem; - margin-left: -1px; - border-top-left-radius: 0 !important; - border-bottom-left-radius: 0 !important; - border-top-right-radius: 14px !important; - border-bottom-right-radius: 14px !important; - background: rgba(255,255,255,0.03) !important; - border-color: var(--app-border) !important; - color: var(--app-text) !important; - transition: background-color .18s ease, border-color .18s ease, color .18s ease, box-shadow .18s ease; -} - -.create-list-input-group > .create-list-temp-toggle.is-active, -.create-list-input-group > #tempToggle.is-active { - background: rgba(41, 209, 125, 0.16) !important; - border-color: rgba(41, 209, 125, 0.72) !important; - color: #9bf0c1 !important; - box-shadow: inset 0 0 0 1px rgba(41, 209, 125, 0.15); -} - -.create-list-input-group > .create-list-temp-toggle:hover, -.create-list-input-group > #tempToggle:hover, -.create-list-input-group > .create-list-temp-toggle:focus, -.create-list-input-group > #tempToggle:focus { - background: rgba(255,255,255,0.06) !important; - color: var(--app-text) !important; -} - -.create-list-input-group > .create-list-temp-toggle.is-active:hover, -.create-list-input-group > #tempToggle.is-active:hover, -.create-list-input-group > .create-list-temp-toggle.is-active:focus, -.create-list-input-group > #tempToggle.is-active:focus { - background: rgba(41, 209, 125, 0.2) !important; - color: #b7f7d2 !important; -} - -@media (max-width: 767.98px) { - .create-list-input-group { - gap: 0 !important; - } - - .create-list-input-group > .form-control { - padding-left: .9rem; - padding-right: .75rem; - } - - .create-list-input-group > .create-list-temp-toggle, - .create-list-input-group > #tempToggle { - min-width: 8.75rem; - padding-left: .85rem; - padding-right: .85rem; - font-size: .92rem; - letter-spacing: 0; - } -} - - -.endpoint-list_share .shopping-item-actions, -.endpoint-shared_list .shopping-item-actions, -.endpoint-view_list .shopping-item-actions, -.endpoint-list .shopping-item-actions { - gap: .35rem !important; - min-height: 2.35rem !important; -} - -.endpoint-list_share .shopping-action-btn, -.endpoint-shared_list .shopping-action-btn, -.endpoint-view_list .shopping-action-btn, -.endpoint-list .shopping-action-btn { - width: 2.35rem !important; - height: 2.35rem !important; - min-width: 2.35rem !important; - min-height: 2.35rem !important; - padding: 0 !important; - border-radius: .7rem !important; - font-size: 1rem !important; - line-height: 1 !important; -} - -.endpoint-list_share .shopping-action-btn--wide, -.endpoint-shared_list .shopping-action-btn--wide, -.endpoint-view_list .shopping-action-btn--wide, -.endpoint-list .shopping-action-btn--wide { - width: auto !important; - min-width: 5.9rem !important; - padding: 0 .8rem !important; -} -.endpoint-list_share .shopping-action-btn--countdown, -.endpoint-shared_list .shopping-action-btn--countdown, -.endpoint-view_list .shopping-action-btn--countdown, -.endpoint-list .shopping-action-btn--countdown { - width: auto !important; - min-width: 3.2rem !important; - padding: 0 .65rem !important; -} - - -.endpoint-list_share .shopping-action-btn > *, -.endpoint-shared_list .shopping-action-btn > *, -.endpoint-view_list .shopping-action-btn > *, -.endpoint-list .shopping-action-btn > * { - line-height: 1 !important; -} - -@media (max-width: 575.98px) { - .endpoint-list_share .shopping-action-btn, - .endpoint-shared_list .shopping-action-btn, - .endpoint-view_list .shopping-action-btn, - .endpoint-list .shopping-action-btn { - width: 2.15rem !important; - height: 2.15rem !important; - min-width: 2.15rem !important; - min-height: 2.15rem !important; - border-radius: .65rem !important; - } - - .endpoint-list_share .shopping-action-btn--wide, - .endpoint-shared_list .shopping-action-btn--wide, - .endpoint-view_list .shopping-action-btn--wide, - .endpoint-list .shopping-action-btn--wide { - min-width: 5.4rem !important; - padding: 0 .72rem !important; - } -} - -@media (max-width: 575.98px) { - .endpoint-list_share .shopping-action-btn--countdown, - .endpoint-shared_list .shopping-action-btn--countdown, - .endpoint-view_list .shopping-action-btn--countdown, - .endpoint-list .shopping-action-btn--countdown { - min-width: 3rem !important; - padding: 0 .55rem !important; - } -} - -body:not(.sorting-active) .drag-handle { - display: none !important; -} - - -/* ========================================================= - Consistent form controls + password toggle -========================================================= */ -:root { - --ui-control-height: 42px; - --ui-control-radius: 14px; - --ui-control-focus-ring: 0 0 0 .25rem rgba(24, 64, 118, .18); -} - -.ui-consistent-input { - min-height: var(--ui-control-height) !important; - border-radius: var(--ui-control-radius) !important; -} - -.ui-password-group { - display: flex !important; - flex-wrap: nowrap !important; - align-items: stretch !important; - width: 100% !important; - gap: 0 !important; - overflow: hidden !important; - border: 1px solid var(--ui-border-strong) !important; - border-radius: var(--ui-control-radius) !important; - background: rgba(255,255,255,0.04) !important; - background-image: none !important; - box-shadow: none !important; -} - -.ui-password-group:focus-within { - border-color: rgba(25, 135, 84, 0.6) !important; - box-shadow: 0 0 0 0.2rem rgba(25, 135, 84, 0.16) !important; -} - -.ui-password-group > .form-control { - flex: 1 1 auto !important; - width: 1% !important; - min-width: 0 !important; - min-height: var(--ui-control-height) !important; - border: 0 !important; - border-radius: 0 !important; - box-shadow: none !important; - background: transparent !important; - background-color: transparent !important; - background-image: none !important; - background-clip: padding-box !important; -} - -.ui-password-group > .form-control:focus { - box-shadow: none !important; - background: transparent !important; - background-color: transparent !important; -} - -.ui-password-group > .ui-password-toggle { - appearance: none !important; - -webkit-appearance: none !important; - display: inline-flex !important; - align-items: center !important; - justify-content: center !important; - flex: 0 0 46px !important; - width: 46px !important; - min-width: 46px !important; - min-height: var(--ui-control-height) !important; - padding: 0 !important; - margin: 0 !important; - cursor: pointer !important; - background: transparent !important; - background-color: transparent !important; - background-image: none !important; - color: rgba(255,255,255,0.72) !important; - border: 0 !important; - border-left: 1px solid rgba(255, 255, 255, 0.10) !important; - border-radius: 0 !important; - box-shadow: none !important; - line-height: 1 !important; -} - -.ui-password-group > .ui-password-toggle:hover, -.ui-password-group > .ui-password-toggle:focus, -.ui-password-group > .ui-password-toggle:focus-visible { - background: rgba(255,255,255,0.03) !important; - background-color: rgba(255,255,255,0.03) !important; - color: #fff !important; - border-left-color: rgba(255,255,255,0.16) !important; - box-shadow: none !important; - outline: none !important; -} - -.ui-password-group > .ui-password-toggle.is-active { - background: rgba(255,255,255,0.05) !important; - background-color: rgba(255,255,255,0.05) !important; - color: #fff !important; -} - -.ui-password-group > .ui-password-toggle > * { - pointer-events: none !important; -} - -.endpoint-login form .form-control:not(.form-control-sm), -.endpoint-system_auth form .form-control:not(.form-control-sm), -.endpoint-edit_my_list form .form-control:not(.form-control-sm):not(.form-control-plaintext), -.endpoint-edit_list form .form-control:not(.form-control-sm):not(.form-control-plaintext), -.endpoint-user_management form .form-control:not(.form-control-sm), -.endpoint-user_management .modal .form-control:not(.form-control-sm), -.endpoint-edit_my_list form .form-select, -.endpoint-edit_list form .form-select, -.endpoint-user_management form .form-select, -.endpoint-user_management .modal .form-select { - min-height: var(--ui-control-height) !important; -} - -.endpoint-login form .form-control.ui-consistent-input, -.endpoint-system_auth form .form-control.ui-consistent-input, -.endpoint-edit_my_list form .ui-consistent-input, -.endpoint-edit_list form .ui-consistent-input, -.endpoint-user_management form .ui-consistent-input, -.endpoint-user_management .modal .ui-consistent-input { - border-radius: var(--ui-control-radius) !important; -} - -/* - Password fields use only the generic ui-password-group rules above. - Keep endpoint-specific overrides out of login/system_auth/admin screens, - otherwise future changes start fighting through selector specificity. -*/ -.ui-password-group > .form-control.ui-consistent-input { - border-radius: 0 !important; -} - -.endpoint-edit_my_list .access-editor .access-input, -.endpoint-edit_list .input-group.input-group-sm .form-control { - min-height: var(--ui-control-height) !important; -} - -@media (max-width: 575.98px) { - .ui-password-group > .ui-password-toggle { - flex-basis: 44px !important; - width: 44px !important; - min-width: 44px !important; - } -} - -/* wyróżnienie pola dodawania produktu */ -.endpoint-list .shopping-entry-card, -.endpoint-list_share .shopping-entry-card, -.endpoint-shared_list .shopping-entry-card, -.endpoint-view_list .shopping-entry-card { - background: linear-gradient(180deg, rgba(25, 135, 84, 0.16), rgba(13, 17, 23, 0.92)); - border: 1px solid rgba(25, 135, 84, 0.42); - border-radius: 1rem; - padding: .9rem; - box-shadow: 0 .5rem 1.2rem rgba(0, 0, 0, 0.18); -} - -.endpoint-list .shopping-entry-card__label, -.endpoint-list_share .shopping-entry-card__label, -.endpoint-shared_list .shopping-entry-card__label, -.endpoint-view_list .shopping-entry-card__label { - display: inline-flex; - align-items: center; - gap: .4rem; - margin-bottom: .2rem; - font-size: .95rem; - font-weight: 700; - color: #d1f7df; -} - -.endpoint-list .shopping-entry-card__hint, -.endpoint-list_share .shopping-entry-card__hint, -.endpoint-shared_list .shopping-entry-card__hint, -.endpoint-view_list .shopping-entry-card__hint { - margin-bottom: .75rem; - color: rgba(255, 255, 255, 0.72); - font-size: .82rem; - line-height: 1.35; -} - -.endpoint-list .shopping-entry-card .shopping-product-input-group, -.endpoint-list_share .shopping-entry-card .shopping-product-input-group, -.endpoint-shared_list .shopping-entry-card .shopping-product-input-group, -.endpoint-view_list .shopping-entry-card .shopping-product-input-group { - margin-bottom: 0 !important; -} - -.endpoint-list .shopping-entry-card .shopping-product-input-group > .form-control, -.endpoint-list_share .shopping-entry-card .shopping-product-input-group > .form-control, -.endpoint-shared_list .shopping-entry-card .shopping-product-input-group > .form-control, -.endpoint-view_list .shopping-entry-card .shopping-product-input-group > .form-control { - border-color: rgba(25, 135, 84, 0.55) !important; - background: rgba(17, 24, 39, 0.95) !important; -} - -.endpoint-list .shopping-entry-card .shopping-product-input-group > .form-control::placeholder, -.endpoint-list_share .shopping-entry-card .shopping-product-input-group > .form-control::placeholder, -.endpoint-shared_list .shopping-entry-card .shopping-product-input-group > .form-control::placeholder, -.endpoint-view_list .shopping-entry-card .shopping-product-input-group > .form-control::placeholder { - color: rgba(255, 255, 255, 0.62); -} - -.endpoint-list .shopping-entry-card .shopping-product-input-group > .shopping-product-name-input:focus, -.endpoint-list_share .shopping-entry-card .shopping-product-input-group > .shopping-product-name-input:focus, -.endpoint-shared_list .shopping-entry-card .shopping-product-input-group > .shopping-product-name-input:focus, -.endpoint-view_list .shopping-entry-card .shopping-product-input-group > .shopping-product-name-input:focus { - box-shadow: inset 0 0 0 1px rgba(25, 135, 84, 0.25), 0 0 0 .2rem rgba(25, 135, 84, 0.18); -} - -@media (max-width: 767.98px) { - .endpoint-list .shopping-entry-card, - .endpoint-list_share .shopping-entry-card, - .endpoint-shared_list .shopping-entry-card, - .endpoint-view_list .shopping-entry-card { - padding: .8rem; - border-radius: .95rem; - } - - .endpoint-list .shopping-entry-card__label, - .endpoint-list_share .shopping-entry-card__label, - .endpoint-shared_list .shopping-entry-card__label, - .endpoint-view_list .shopping-entry-card__label { - font-size: .92rem; - } - - .endpoint-list .shopping-entry-card__hint, - .endpoint-list_share .shopping-entry-card__hint, - .endpoint-shared_list .shopping-entry-card__hint, - .endpoint-view_list .shopping-entry-card__hint { - font-size: .78rem; - margin-bottom: .65rem; - } -} - -/* ========== /expenses mobile fixes: separate range pickers + better wrapping ========== */ -.endpoint-expenses .expenses-range-toolbar { - width: 100%; -} - -.endpoint-expenses .expenses-range-group { - flex-wrap: wrap; - justify-content: center; - width: 100%; -} - -.endpoint-expenses .expenses-range-group > .btn { - white-space: nowrap; -} - -.endpoint-expenses .expenses-date-range { - align-items: stretch; -} - -@media (max-width: 767.98px) { - .endpoint-expenses .expenses-range-toolbar { - justify-content: stretch !important; - overflow: visible; - padding-bottom: 0; - } - - .endpoint-expenses .expenses-range-group { - display: grid !important; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: 0.55rem; - width: 100%; - min-width: 0; - } - - .endpoint-expenses .expenses-table-toolbar .expenses-range-group { - grid-template-columns: repeat(3, minmax(0, 1fr)); - } - - .endpoint-expenses .expenses-range-group > .btn { - flex: initial !important; - width: 100%; - min-width: 0; - padding-inline: 0.55rem; - font-size: 0.95rem; - } - - .endpoint-expenses .expenses-date-range { - display: grid !important; - grid-template-columns: 52px minmax(0, 1fr); - gap: 0.55rem; - width: 100%; - max-width: 100% !important; - flex-wrap: wrap !important; - } - - .endpoint-expenses .expenses-date-range > .input-group-text, - .endpoint-expenses .expenses-date-range > .form-control, - .endpoint-expenses .expenses-date-range > .btn { - width: 100% !important; - min-width: 0 !important; - flex: initial !important; - border-radius: 0.85rem !important; - } - - .endpoint-expenses .expenses-date-range > .btn { - grid-column: 1 / -1; - } -} - - -/* /share expense entry card aligned with product card */ -.endpoint-list .shopping-entry-card--expense, -.endpoint-list_share .shopping-entry-card--expense, -.endpoint-shared_list .shopping-entry-card--expense, -.endpoint-view_list .shopping-entry-card--expense { - background: linear-gradient(180deg, rgba(13, 110, 253, 0.16), rgba(13, 17, 23, 0.92)); - border-color: rgba(13, 110, 253, 0.42); -} - -.endpoint-list .shopping-entry-card--expense .shopping-entry-card__label, -.endpoint-list_share .shopping-entry-card--expense .shopping-entry-card__label, -.endpoint-shared_list .shopping-entry-card--expense .shopping-entry-card__label, -.endpoint-view_list .shopping-entry-card--expense .shopping-entry-card__label { - color: #d7e9ff; -} - -.endpoint-list .shopping-entry-card--expense .shopping-expense-input-group, -.endpoint-list_share .shopping-entry-card--expense .shopping-expense-input-group, -.endpoint-shared_list .shopping-entry-card--expense .shopping-expense-input-group, -.endpoint-view_list .shopping-entry-card--expense .shopping-expense-input-group { - margin-bottom: 0 !important; -} - -.endpoint-list .shopping-entry-card--expense .shopping-expense-input-group > .form-control, -.endpoint-list_share .shopping-entry-card--expense .shopping-expense-input-group > .form-control, -.endpoint-shared_list .shopping-entry-card--expense .shopping-expense-input-group > .form-control, -.endpoint-view_list .shopping-entry-card--expense .shopping-expense-input-group > .form-control { - border-color: rgba(13, 110, 253, 0.55) !important; - background: rgba(17, 24, 39, 0.95) !important; -} - -.endpoint-list .shopping-entry-card--expense .shopping-expense-input-group > .form-control::placeholder, -.endpoint-list_share .shopping-entry-card--expense .shopping-expense-input-group > .form-control::placeholder, -.endpoint-shared_list .shopping-entry-card--expense .shopping-expense-input-group > .form-control::placeholder, -.endpoint-view_list .shopping-entry-card--expense .shopping-expense-input-group > .form-control::placeholder { - color: rgba(255, 255, 255, 0.62); -} - -.endpoint-list .shopping-entry-card--expense .shopping-expense-input-group > .shopping-expense-amount-input:focus, -.endpoint-list_share .shopping-entry-card--expense .shopping-expense-input-group > .shopping-expense-amount-input:focus, -.endpoint-shared_list .shopping-entry-card--expense .shopping-expense-input-group > .shopping-expense-amount-input:focus, -.endpoint-view_list .shopping-entry-card--expense .shopping-expense-input-group > .shopping-expense-amount-input:focus { - box-shadow: inset 0 0 0 1px rgba(13, 110, 253, 0.25), 0 0 0 .2rem rgba(13, 110, 253, 0.18); -} - -.endpoint-list .share-submit-btn--expense, -.endpoint-list_share .share-submit-btn--expense, -.endpoint-shared_list .share-submit-btn--expense, -.endpoint-view_list .share-submit-btn--expense { - color: #8ec5ff; - border-color: rgba(13, 110, 253, 0.72) !important; - background: rgba(13, 110, 253, 0.12); -} - -.endpoint-list .share-submit-btn--expense:hover, -.endpoint-list_share .share-submit-btn--expense:hover, -.endpoint-shared_list .share-submit-btn--expense:hover, -.endpoint-view_list .share-submit-btn--expense:hover, -.endpoint-list .share-submit-btn--expense:focus, -.endpoint-list_share .share-submit-btn--expense:focus, -.endpoint-shared_list .share-submit-btn--expense:focus, -.endpoint-view_list .share-submit-btn--expense:focus { - color: #fff; - border-color: rgba(13, 110, 253, 0.9) !important; - background: rgba(13, 110, 253, 0.22); - box-shadow: 0 0 0 .2rem rgba(13, 110, 253, 0.16); -} - -/* UX polish 2026-03-19: list quick actions card */ -.list-quick-actions { - display: grid; - gap: .9rem; - padding: 1rem; - border: 1px solid rgba(255,255,255,.08); - border-radius: 1rem; - background: linear-gradient(180deg, rgba(255,255,255,.04), rgba(255,255,255,.02)); - box-shadow: 0 .5rem 1.25rem rgba(0,0,0,.14); -} - -.list-quick-actions__header { - display: flex; - align-items: flex-start; - justify-content: space-between; - gap: .75rem; -} - -.list-quick-actions__eyebrow { - font-size: .72rem; - letter-spacing: .08em; - text-transform: uppercase; - color: rgba(255,255,255,.58); - margin-bottom: .15rem; -} - -.list-quick-actions__title { - font-size: 1rem; - font-weight: 700; - color: #fff; - line-height: 1.2; -} - -.list-quick-actions__hint { - font-size: .82rem; - color: rgba(255,255,255,.62); - text-align: right; - max-width: 18rem; -} - -.list-quick-actions__grid { - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: .75rem; -} - -.list-quick-actions__form { - display: block; -} - -.list-quick-actions__action.btn { - width: 100%; - min-height: 78px; - display: flex; - align-items: flex-start; - gap: .75rem; - padding: .9rem 1rem; - border-radius: .95rem; - text-align: left; - white-space: normal; -} - -.list-quick-actions__action--primary.btn { - border-color: rgba(255,255,255,.2); - background: rgba(255,255,255,.03); -} - -.list-quick-actions__action--secondary.btn { - border-color: rgba(13,110,253,.5); - background: rgba(13,110,253,.08); -} - -.list-quick-actions__icon { - flex: 0 0 auto; - font-size: 1.05rem; - line-height: 1; - margin-top: .1rem; -} - -.list-quick-actions__content { - display: grid; - gap: .2rem; - min-width: 0; -} - -.list-quick-actions__label { - font-size: .95rem; - font-weight: 600; - color: #fff; - line-height: 1.25; -} - -.list-quick-actions__desc { - font-size: .81rem; - color: rgba(255,255,255,.66); - line-height: 1.35; -} - -@media (max-width: 767.98px) { - .list-quick-actions { - padding: .9rem; - gap: .75rem; - } - - .list-quick-actions__header { - flex-direction: column; - gap: .35rem; - } - - .list-quick-actions__hint { - max-width: none; - text-align: left; - } - - .list-quick-actions__grid { - grid-template-columns: 1fr; - } - - .list-quick-actions__action.btn { - min-height: 72px; - padding: .85rem .9rem; - } -} - - -/* ========================================================= - Mobile navbar and user chip -========================================================= */ -.app-navbar__meta--mobile { - display: none; -} - -.app-user-chip--mobile { - max-width: min(46vw, 15rem); - min-width: 0; - padding-left: .6rem; - padding-right: .4rem; -} - -.app-user-chip--mobile .badge { - max-width: 100%; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -@media (max-width: 991.98px) { - .app-navbar .container-xxl { - grid-template-columns: minmax(0, 1fr) auto auto; - } - - .app-navbar__meta--mobile { - display: flex !important; - width: auto; - justify-content: flex-end; - justify-self: end; - grid-column: 2; - min-width: 0; - max-width: min(42vw, 12rem); - } - - .app-user-chip--mobile { - display: inline-flex; - } - - .app-mobile-menu { - grid-column: 3; - justify-self: end; - } -} - -@media (max-width: 575.98px) { - .app-brand__icon { - width: 2.25rem; - height: 2.25rem; - } - - .app-user-chip--mobile { - gap: .35rem; - padding: .34rem .38rem .34rem .5rem; - } - - .app-user-chip--mobile .app-user-chip__label { - font-size: .62rem; - letter-spacing: .05em; - } - - .app-user-chip--mobile .badge { - font-size: .72rem; - max-width: 5.9rem; - } -} - -@media (max-width: 430px) { - .app-navbar .container-xxl { - grid-template-columns: minmax(0, 1fr) auto auto; - gap: .45rem; - } - - .app-user-chip--mobile { - max-width: min(38vw, 8.5rem); - } - - .app-user-chip--mobile .app-user-chip__label { - display: none; - } -} - -/* --- Main page list progress consistency --- */ -.endpoint-main_page .list-group-item { - display: flex; - flex-direction: column; - align-items: stretch; - justify-content: flex-start; -} - -.endpoint-main_page .main-list-progress-wrap { - display: block; - width: 100%; - flex: 0 0 100%; - margin-top: 0.8rem !important; -} - -.endpoint-main_page .list-group-item > .main-list-row + .main-list-progress-wrap { - align-self: stretch; -} - -.endpoint-main_page .main-list-progress { - width: 100%; - height: 16px; - margin-top: 0 !important; - border: 1px solid rgba(255, 255, 255, 0.08); - background: - linear-gradient(180deg, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.02)), - var(--dark-700) !important; - box-shadow: - inset 0 1px 0 rgba(255, 255, 255, 0.05), - 0 4px 10px rgba(0, 0, 0, 0.18); -} - -.endpoint-main_page .main-list-progress .progress-bar.bg-success { - background: linear-gradient(135deg, rgba(40, 199, 111, 0.98), rgba(22, 163, 74, 0.98)) !important; -} - -.endpoint-main_page .main-list-progress .progress-bar.bg-warning { - background: linear-gradient(135deg, rgba(245, 189, 65, 0.98), rgba(217, 119, 6, 0.98)) !important; -} - -.endpoint-main_page .main-list-progress .progress-bar.bg-transparent { - background: rgba(255, 255, 255, 0.08) !important; -} - -.endpoint-main_page .main-list-progress__label { - max-width: calc(100% - 0.85rem); - padding: 0 0.45rem; - overflow: hidden; - text-overflow: ellipsis; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.45); - letter-spacing: 0.01em; -} - -@media (max-width: 575.98px) { - .endpoint-main_page .main-list-progress { - height: 15px; - } - - .endpoint-main_page .main-list-progress__label { - font-size: 0.64rem; - } -} - -.endpoint-main_page #mainStatsCollapse.collapsing, -.endpoint-main_page #mainStatsCollapse.show { - overflow: visible; -} - -.endpoint-main_page .main-summary-card { - height: 100%; - padding: 1rem 1rem 1.05rem; - border-radius: 1rem; - border: 1px solid rgba(255, 255, 255, 0.08); - background: linear-gradient(180deg, rgba(255,255,255,0.04), rgba(255,255,255,0.02)), rgba(9, 16, 28, 0.88); - box-shadow: 0 12px 28px rgba(0, 0, 0, 0.2); -} - -.endpoint-main_page .main-summary-card__eyebrow { - font-size: 0.72rem; - text-transform: uppercase; - letter-spacing: 0.08em; - color: rgba(255, 255, 255, 0.65); - margin-bottom: 0.2rem; -} - -.endpoint-main_page .main-summary-card__title { - font-size: 1.05rem; -} - -.endpoint-main_page .main-summary-stats { - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: 0.7rem; -} - -.endpoint-main_page .main-summary-stat { - padding: 0.65rem 0.75rem; - border-radius: 0.85rem; - background: rgba(255, 255, 255, 0.04); - border: 1px solid rgba(255, 255, 255, 0.06); -} - -.endpoint-main_page .main-summary-stat__label { - display: block; - font-size: 0.73rem; - color: rgba(255, 255, 255, 0.66); - margin-bottom: 0.15rem; -} - - -@media (max-width: 575.98px) { - .endpoint-main_page .main-summary-card { - padding: 0.9rem; - } - - .endpoint-main_page .main-summary-stats { - grid-template-columns: 1fr; - } -} - -@media (max-width: 575.98px) { - .endpoint-list_share .shopping-item-head, - .endpoint-shared_list .shopping-item-head { - display: grid; - grid-template-columns: minmax(0, 1fr) auto; - align-items: start; - column-gap: .45rem; - } - - .endpoint-list_share .shopping-item-actions, - .endpoint-shared_list .shopping-item-actions { - align-self: start; - margin-left: 0; - justify-self: end; - } -} - -@media (max-width: 575.98px) { - .endpoint-list_share .shopping-item-main, - .endpoint-shared_list .shopping-item-main { - align-items: center; - } - - .endpoint-list_share .shopping-item-text, - .endpoint-shared_list .shopping-item-text, - .endpoint-list_share .shopping-item-main > .large-checkbox, - .endpoint-shared_list .shopping-item-main > .large-checkbox, - .endpoint-list_share .shopping-item-actions, - .endpoint-shared_list .shopping-item-actions { - align-self: center; - } - - .endpoint-list_share .shopping-item-actions, - .endpoint-shared_list .shopping-item-actions { - margin-left: auto; - justify-self: auto; - } -} - -.endpoint-list #items, -.endpoint-view_list #items, -.endpoint-list_share #items, -.endpoint-shared_list #items { - display: flex; - flex-direction: column; -} - -.endpoint-list #items > .list-group-item, -.endpoint-view_list #items > .list-group-item, -.endpoint-list_share #items > .list-group-item, -.endpoint-shared_list #items > .list-group-item { - margin: 0 !important; - border-width: 1px !important; - box-shadow: 0 4px 14px rgba(0,0,0,0.12) !important; - background-clip: padding-box; -} - -.endpoint-list #items > .list-group-item + .list-group-item, -.endpoint-view_list #items > .list-group-item + .list-group-item, -.endpoint-list_share #items > .list-group-item + .list-group-item, -.endpoint-shared_list #items > .list-group-item + .list-group-item { - margin-top: 0 !important; - border-top-width: 1px !important; -} - -/* ========================================================= - Preview product list -========================================================= */ - -.preview-product-list { - display: flex; - flex-direction: column; - gap: 1rem; -} - -.preview-product-summary { - padding: 0 0 0.85rem; - margin-bottom: 0.1rem; - border-bottom: 1px solid rgba(255,255,255,0.08); -} - -.preview-product-section { - display: flex; - flex-direction: column; - gap: 0.65rem; -} - -.preview-product-section-title { - margin: 0; - font-size: 1.05rem; - font-weight: 700; -} - -.preview-modal-items { - display: flex; - flex-direction: column; - gap: 0.75rem; -} - -#productPreviewModal .preview-modal-list-item { - display: flex; - align-items: center; - justify-content: space-between; - gap: 0.75rem; - width: 100%; - min-width: 0; - padding: 0.9rem 1rem; - margin: 0 !important; - border-radius: 16px !important; - border: 1px solid rgba(255,255,255,0.08) !important; - background: linear-gradient(180deg, rgba(11,22,40,0.92) 0%, rgba(8,16,30,0.92) 100%) !important; - box-shadow: inset 0 1px 0 rgba(255,255,255,0.03); -} - -#productPreviewModal .preview-modal-list-item:first-child, -#productPreviewModal .preview-modal-list-item:last-child, -#productPreviewModal .list-group-flush > .list-group-item:first-child, -#productPreviewModal .list-group-flush > .list-group-item:last-child { - border-radius: 16px !important; -} - -#productPreviewModal .preview-modal-list-item__name { - min-width: 0; - overflow-wrap: anywhere; - flex: 1 1 auto; -} - -#productPreviewModal .preview-modal-list-item .badge { - flex-shrink: 0; - min-width: 2.5rem; - border-radius: 10px; -} - - -/* ========================================================= - Receipt disclosure (share view) -========================================================= */ -.receipt-disclosure { - width: 100%; - cursor: pointer; - border: 1px solid rgba(255, 255, 255, 0.08); - border-radius: 20px; - background: linear-gradient(135deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0.02)); - box-shadow: 0 12px 32px rgba(0, 0, 0, 0.18); - transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease; -} - -.receipt-disclosure:hover, -.receipt-disclosure:focus-visible { - transform: translateY(-1px); - border-color: rgba(255, 255, 255, 0.18); - box-shadow: 0 16px 36px rgba(0, 0, 0, 0.24); - outline: none; -} - -.receipt-disclosure.is-open { - border-color: rgba(24, 64, 118, 0.9); - background: linear-gradient(135deg, rgba(24, 64, 118, 0.22), rgba(255, 255, 255, 0.03)); -} - -.receipt-disclosure__content { - display: flex; - align-items: center; - gap: 14px; - padding: 16px 18px; -} - -.receipt-disclosure__icon { - display: grid; - place-items: center; - width: 48px; - height: 48px; - border-radius: 14px; - background: rgba(255, 255, 255, 0.06); - font-size: 1.25rem; - flex-shrink: 0; -} - -.receipt-disclosure__text { - min-width: 0; - flex: 1; -} - -.receipt-disclosure__eyebrow { - font-size: 0.72rem; - letter-spacing: 0.08em; - text-transform: uppercase; - color: rgba(255, 255, 255, 0.52); - margin-bottom: 2px; -} - -.receipt-disclosure__title { - font-size: 1rem; - font-weight: 600; - color: var(--text-strong); -} - -.receipt-disclosure__meta { - display: flex; - align-items: center; - gap: 12px; - margin-left: auto; - flex-shrink: 0; -} - -.receipt-disclosure__count { - min-width: 34px; - padding: 6px 10px; - border-radius: 999px; - background: rgba(255, 255, 255, 0.08); - color: var(--text-strong); - font-size: 0.875rem; - text-align: center; -} - -.receipt-disclosure__chevron { - font-size: 1.15rem; - color: rgba(255, 255, 255, 0.7); - transition: transform 0.2s ease; -} - -.receipt-disclosure.is-open .receipt-disclosure__chevron { - transform: rotate(180deg); -} - -@media (max-width: 575.98px) { - .receipt-disclosure__content { - padding: 14px; - gap: 12px; - } - - .receipt-disclosure__icon { - width: 42px; - height: 42px; - border-radius: 12px; - } - - .receipt-disclosure__meta { - gap: 10px; - } - - .receipt-disclosure__title { - font-size: 0.95rem; - } -} - - -/* ========================================================= - Final form-control normalization for edit/admin screens -========================================================= */ -.endpoint-edit_my_list .stack-form > .mb-3 > .ui-consistent-input, -.endpoint-edit_my_list .stack-form > .mb-4 > .ui-consistent-input, -.endpoint-edit_my_list .stack-form .row .ui-consistent-input, -.endpoint-edit_list form > .mb-3 > .ui-consistent-input, -.endpoint-edit_list form > .mb-4 > .ui-consistent-input, -.endpoint-edit_list form .row .ui-consistent-input, -.endpoint-user_management .row > [class*="col-"] > .ui-consistent-input, -.endpoint-user_management .modal .ui-consistent-input { - border-radius: var(--ui-control-radius) !important; -} - -.endpoint-edit_my_list .ts-wrapper.single .ts-control, -.endpoint-edit_list .ts-wrapper.single .ts-control, -.endpoint-edit_my_list .ts-wrapper.multi .ts-control, -.endpoint-edit_list .ts-wrapper.multi .ts-control { - min-height: var(--ui-control-height) !important; - border-radius: var(--ui-control-radius) !important; -} - -/* Share hub redesign (mobile-first) */ -.share-hub { - border: 1px solid rgba(79, 142, 255, 0.18); - background: linear-gradient(180deg, rgba(11, 24, 43, 0.98), rgba(8, 17, 31, 0.96)) !important; -} - -.share-hub .card-body { - padding: 1rem; -} - -.share-hub__top { - display: flex; - align-items: flex-start; - justify-content: space-between; - gap: 0.9rem; - margin-bottom: 0.85rem; -} - -.share-hub__eyebrow, -.share-sheet__eyebrow { - font-size: 0.72rem; - letter-spacing: 0.08em; - text-transform: uppercase; - color: rgba(186, 210, 240, 0.62); - margin-bottom: 0.35rem; -} - -.share-hub__title { - font-size: 1.1rem; - font-weight: 700; -} - -.share-hub__status, -.share-sheet__section-head { - display: flex; - flex-wrap: wrap; - gap: 0.45rem; - align-items: center; -} - -.share-state-badge { - display: inline-flex; - align-items: center; - gap: 0.3rem; - min-height: 32px; - padding: 0.45rem 0.72rem; - font-size: 0.76rem; - font-weight: 600; - border: 1px solid rgba(255, 255, 255, 0.08); -} - -.share-state-badge--public { - background: rgba(41, 209, 125, 0.16); - color: #dfffea; -} - -.share-state-badge--private { - background: rgba(255, 255, 255, 0.06); - color: #edf5ff; -} - -.share-state-badge--link { - background: rgba(79, 142, 255, 0.14); - color: #d7e7ff; -} - -.share-state-badge--people { - background: rgba(255, 255, 255, 0.08); - color: #edf5ff; -} - -.share-hub__note { - color: rgba(210, 224, 244, 0.74); - font-size: 0.92rem; - line-height: 1.45; -} - -.share-hub__linkbox { - border: 1px solid rgba(255, 255, 255, 0.08); - background: rgba(255, 255, 255, 0.035); - border-radius: 16px; - padding: 0.85rem 0.95rem; -} - -.share-hub__linklabel { - font-size: 0.72rem; - text-transform: uppercase; - letter-spacing: 0.07em; - color: rgba(186, 210, 240, 0.58); - margin-bottom: 0.3rem; -} - -.share-hub__linkvalue { - color: #f4f8ff; - font-size: 0.95rem; - line-height: 1.45; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.share-hub__actions { - display: grid; - grid-template-columns: 1fr; - gap: 0.65rem; -} - -.share-hub__primary, -.share-hub__secondary, -.share-hub__manage, -.share-sheet__toggle, -.share-sheet__sticky-actions .btn, -.share-sheet__linkstack .btn, - - -.share-hub__manage { - white-space: nowrap; -} - -.share-sheet { - height: auto !important; - max-height: min(90vh, 760px); - border-top-left-radius: 24px; - border-top-right-radius: 24px; - border: 1px solid rgba(255, 255, 255, 0.06); - background: linear-gradient(180deg, rgba(8, 18, 33, 0.995), rgba(6, 13, 24, 0.99)) !important; - box-shadow: 0 -24px 60px rgba(0, 0, 0, 0.42); -} - -.share-sheet__header { - align-items: flex-start; - padding: 0.85rem 1rem 0.6rem; -} - -.share-sheet__body { - padding: 0 1rem calc(1rem + env(safe-area-inset-bottom)); - overflow-y: auto; -} - -.share-sheet__grabber { - width: 52px; - height: 5px; - border-radius: 999px; - margin: 0 auto 0.8rem; - background: rgba(255, 255, 255, 0.22); -} - -.share-sheet__section { - border: 1px solid rgba(255, 255, 255, 0.07); - background: rgba(255, 255, 255, 0.035); - border-radius: 18px; - padding: 0.95rem; - margin-bottom: 0.9rem; -} - -.share-sheet__section-head { - justify-content: space-between; - margin-bottom: 0.7rem; - font-weight: 600; -} - -.share-sheet__linkstack, -.share-access-panel__input { - display: grid; - grid-template-columns: 1fr; - gap: 0.65rem; -} - -.share-access-panel .tokens { - min-height: 2rem; -} - -.share-access-panel .token { - background: rgba(255, 255, 255, 0.03); -} - -.share-sheet__sticky-actions { - position: sticky; - bottom: 0; - padding-top: 0.3rem; - background: linear-gradient(180deg, rgba(6, 13, 24, 0), rgba(6, 13, 24, 0.96) 28%); -} - -@media (min-width: 576px) { - .share-hub .card-body, - .share-sheet__header, - .share-sheet__body { - padding-left: 1.2rem; - padding-right: 1.2rem; - } - - .share-sheet__linkstack, - .share-access-panel__input { - grid-template-columns: 1fr auto; - align-items: center; - } -} - -@media (min-width: 768px) { - .share-hub .card-body { - padding: 1.15rem 1.2rem; - } - - .share-hub__actions { - grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); - } - - .share-sheet { - max-width: 760px; - margin: 0 auto; - left: 0; - right: 0; - } -} - - -/* v5.2 create-list unity + receipt collapse fix */ -.endpoint-main_page .create-list-input-group { - display: flex; - flex-wrap: nowrap !important; - align-items: stretch; - overflow: hidden; - border-radius: 16px; - border: 1px solid rgba(255, 255, 255, 0.12); - background: rgba(7, 17, 31, 0.9); - box-shadow: 0 10px 28px rgba(0, 0, 0, 0.18); -} - -.endpoint-main_page .create-list-input-group > .create-list-title-input, -.endpoint-main_page .create-list-input-group > .form-control { - border: 0 !important; - border-right: 1px solid rgba(255, 255, 255, 0.08) !important; - border-radius: 0 !important; - background: transparent !important; - box-shadow: none !important; -} - -.endpoint-main_page .create-list-input-group > .create-list-title-input:focus, -.endpoint-main_page .create-list-input-group > .form-control:focus { - background: rgba(255, 255, 255, 0.02) !important; - box-shadow: none !important; -} - -.endpoint-main_page .create-list-input-group > .create-list-temp-toggle, -.endpoint-main_page .create-list-input-group > #tempToggle { - min-width: 9.5rem; - border: 0 !important; - border-radius: 0 !important; - background: rgba(255, 255, 255, 0.04) !important; - box-shadow: none !important; -} - -.endpoint-main_page .create-list-input-group > .create-list-temp-toggle.is-active, -.endpoint-main_page .create-list-input-group > #tempToggle.is-active { - background: rgba(41, 209, 125, 0.18) !important; -} - -.endpoint-main_page .create-list-temp-toggle__label { - display: inline-flex; - align-items: center; - justify-content: center; - min-height: 100%; -} - -.endpoint-main_page .create-list-input-group:focus-within { - border-color: rgba(41, 209, 125, 0.55); - box-shadow: 0 0 0 0.18rem rgba(41, 209, 125, 0.12), 0 10px 28px rgba(0, 0, 0, 0.18); -} - -.receipt-disclosure { - display: block; - padding: 0; - text-align: left; -} - -.receipt-disclosure, -.receipt-disclosure:hover, -.receipt-disclosure:focus, -.receipt-disclosure:active { - width: 100%; - appearance: none; - -webkit-appearance: none; -} - -.receipt-disclosure:focus-visible { - outline: none; -} - -.receipt-section--restoring { - transition: none !important; -} - -@media (max-width: 767.98px) { - .endpoint-main_page .create-list-input-group { - border-radius: 14px; - } - - .endpoint-main_page .create-list-input-group > .create-list-temp-toggle, - .endpoint-main_page .create-list-input-group > #tempToggle { - min-width: 8.25rem; - padding-left: .8rem; - padding-right: .8rem; - font-size: .9rem; - } -} - -@media (max-width: 575.98px) { - .endpoint-main_page .create-list-input-group > .create-list-title-input, - .endpoint-main_page .create-list-input-group > .form-control { - padding-left: .85rem; - padding-right: .7rem; - font-size: .95rem; - } - - .endpoint-main_page .create-list-input-group > .create-list-temp-toggle, - .endpoint-main_page .create-list-input-group > #tempToggle { - min-width: 7.6rem; - font-size: .84rem; - } - - .receipt-disclosure { - border-radius: 16px; - } -} diff --git a/shopping_app/static/css/style.zip b/shopping_app/static/css/style.zip new file mode 100644 index 0000000000000000000000000000000000000000..739d3bbad8105a3c5dd4db04e9ea33fb97664f9b GIT binary patch literal 22019 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 literal 0 HcmV?d00001 diff --git a/shopping_app/templates/base.html b/shopping_app/templates/base.html index 24714e0..9463165 100644 --- a/shopping_app/templates/base.html +++ b/shopping_app/templates/base.html @@ -10,27 +10,14 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + {% set hide_login_ui = request.path == '/system-auth' %}