From a5757d3bf952bc9fd9c025cbbfa06c6198550b28 Mon Sep 17 00:00:00 2001 From: lenafx Date: Thu, 1 Jan 2026 01:14:36 +0100 Subject: [PATCH] edit modal with better design --- .../views/css/components/anilist-modal.css | 295 ++++++++-------- .../views/css/components/local-library.css | 132 ------- docker/views/css/components/anilist-modal.css | 334 ++++++++---------- docker/views/css/components/local-library.css | 132 ------- 4 files changed, 292 insertions(+), 601 deletions(-) delete mode 100644 desktop/views/css/components/local-library.css delete mode 100644 docker/views/css/components/local-library.css diff --git a/desktop/views/css/components/anilist-modal.css b/desktop/views/css/components/anilist-modal.css index 5312c7b..8cf918b 100644 --- a/desktop/views/css/components/anilist-modal.css +++ b/desktop/views/css/components/anilist-modal.css @@ -1,268 +1,279 @@ +:root { + + --color-primary: #8b5cf6; + --bg-modal: rgba(15, 15, 15, 0.95); + --border-subtle: rgba(255, 255, 255, 0.1); + --input-bg: rgba(0, 0, 0, 0.4); +} + .modal-overlay { position: fixed; inset: 0; - background: rgba(0,0,0,0.9); - backdrop-filter: blur(10px); + background: rgba(0, 0, 0, 0.85); + backdrop-filter: blur(8px); z-index: 2000; display: flex; align-items: center; justify-content: center; padding: 1rem; + opacity: 0; + visibility: hidden; + transition: all 0.3s ease; +} + +.modal-overlay.active { + opacity: 1; + visibility: visible; } .modal-content { - background: var(--color-bg-amoled); - border: 1px solid rgba(255,255,255,0.1); - border-radius: var(--radius-lg); - max-width: 900px; + background: var(--bg-modal); + border: 1px solid var(--border-subtle); + border-radius: 16px; + max-width: 850px; width: 95%; - padding: 0; position: relative; - animation: modalSlideUp 0.3s ease; - box-shadow: 0 20px 50px rgba(0,0,0,0.8); + box-shadow: 0 25px 80px rgba(0, 0, 0, 0.9), + 0 0 0 1px rgba(255, 255, 255, 0.05); max-height: 90vh; display: flex; flex-direction: column; + transform: scale(0.95) translateY(10px); + transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1); } -@keyframes modalSlideUp { - from { - opacity: 0; - transform: translateY(20px); - } - to { - opacity: 1; - transform: translateY(0); - } +.modal-overlay.active .modal-content { + transform: scale(1) translateY(0); } .modal-close { position: absolute; - top: 1rem; - right: 1rem; - background: rgba(255,255,255,0.05); - border: 1px solid rgba(255,255,255,0.1); - color: white; - width: 36px; - height: 36px; + top: 1.2rem; + right: 1.2rem; + background: rgba(255, 255, 255, 0.03); + border: 1px solid var(--border-subtle); + color: #ccc; + width: 32px; + height: 32px; border-radius: 8px; cursor: pointer; display: flex; align-items: center; justify-content: center; - font-size: 1.2rem; - transition: 0.2s; + font-size: 1rem; + transition: all 0.2s; z-index: 2001; } .modal-close:hover { - background: var(--color-danger); - border-color: var(--color-danger); + background: #ef4444; + border-color: #ef4444; + color: white; + transform: rotate(90deg); } .modal-title { - font-size: 1.8rem; + font-size: 1.5rem; font-weight: 800; - padding: 1.5rem 2rem 0.5rem; - margin-bottom: 0; - color: var(--color-text-primary); - border-bottom: 1px solid rgba(255,255,255,0.05); + padding: 2rem 2.5rem 1rem 2.5rem; + margin: 0; + color: white; + border-bottom: 1px solid var(--border-subtle); + letter-spacing: -0.02em; + background: linear-gradient(to right, #fff, #aaa); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; } .modal-body { - display: flex; - flex-direction: column; + padding: 0 2.5rem; overflow-y: auto; - padding: 0 2rem; flex-grow: 1; + + scrollbar-width: thin; + scrollbar-color: rgba(255,255,255,0.2) transparent; } +.modal-body::-webkit-scrollbar { width: 6px; } +.modal-body::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.2); border-radius: 10px; } + .modal-fields-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem 2rem; - padding: 1.5rem 0; + padding: 2rem 0; } .form-group { display: flex; flex-direction: column; - gap: 0.5rem; -} - -.form-group.notes-group { - grid-column: 1 / span 2; -} -.form-group.checkbox-group { - grid-column: 3 / 4; - align-self: flex-end; - margin-bottom: 0.5rem; -} -.form-group.full-width { - grid-column: 1 / -1; + gap: 0.6rem; } .form-group label { - font-size: 0.8rem; + font-size: 0.75rem; font-weight: 700; - color: var(--color-text-secondary); + color: rgba(255, 255, 255, 0.6); text-transform: uppercase; - letter-spacing: 0.5px; + letter-spacing: 0.05em; } .form-input { - background: var(--color-bg-field); - border: 1px solid rgba(255,255,255,0.1); - color: var(--color-text-primary); - padding: 0.8rem 1rem; - border-radius: 8px; + background: var(--input-bg); + border: 1px solid var(--border-subtle); + color: white; + padding: 0.9rem 1rem; + border-radius: 10px; font-family: inherit; - font-size: 1rem; - transition: 0.2s; + font-size: 0.95rem; + font-weight: 500; + transition: all 0.2s ease; } .form-input:focus { outline: none; + background: rgba(0,0,0,0.6); border-color: var(--color-primary); - box-shadow: 0 0 10px var(--color-primary-glow); + box-shadow: 0 0 0 4px rgba(139, 92, 246, 0.15); } -.notes-textarea { - resize: vertical; - min-height: 100px; -} +.form-group.notes-group { grid-column: 1 / span 2; } +.form-group.checkbox-group { grid-column: 3 / 4; align-self: end; margin-bottom: 0.8rem; } +.form-group.full-width { grid-column: 1 / -1; } +.notes-textarea { resize: vertical; min-height: 100px; line-height: 1.5; } -.date-group { - display: flex; - gap: 1rem; -} - -.date-input-pair { - flex: 1; - min-width: 0; - display: flex; - flex-direction: column; - gap: 0.5rem; -} +.date-group { display: flex; gap: 1.5rem; } +.date-input-pair { flex: 1; display: flex; flex-direction: column; gap: 0.6rem; } .checkbox-group { flex-direction: row; align-items: center; - gap: 1rem; + background: rgba(255,255,255,0.02); + padding: 0.8rem; + border-radius: 8px; + border: 1px solid transparent; + transition: 0.2s; } +.checkbox-group:hover { border-color: var(--border-subtle); } + .form-checkbox { - width: 18px; - height: 18px; - border: 1px solid rgba(255,255,255,0.2); - background: var(--color-bg-base); - border-radius: 4px; + width: 20px; + height: 20px; + border: 1px solid rgba(255, 255, 255, 0.3); + background: transparent; + border-radius: 5px; cursor: pointer; - -webkit-appearance: none; appearance: none; position: relative; - transition: all 0.2s; - flex-shrink: 0; + transition: 0.2s; } .form-checkbox:checked { background: var(--color-primary); border-color: var(--color-primary); + box-shadow: 0 0 10px rgba(139, 92, 246, 0.4); } .form-checkbox:checked::after { - content: '✓'; + content: "✓"; position: absolute; - top: 50%; - left: 50%; + top: 50%; left: 50%; transform: translate(-50%, -50%); color: white; - font-size: 14px; + font-size: 12px; + font-weight: 900; } .modal-actions { display: flex; gap: 1rem; - margin-top: 0; - justify-content: flex-end; - flex-shrink: 0; - padding: 1rem 2rem; - border-top: 1px solid rgba(255,255,255,0.05); - background: var(--color-bg-amoled); - position: sticky; - bottom: 0; - z-index: 10; + padding: 1.5rem 2.5rem; + border-top: 1px solid var(--border-subtle); + background: rgba(10, 10, 10, 0.3); + border-bottom-left-radius: 16px; + border-bottom-right-radius: 16px; + backdrop-filter: blur(10px); } .btn-primary, .btn-secondary, .btn-danger { - padding: 0.8rem 1.5rem; - border-radius: 999px; + padding: 0.85rem 1.8rem; + border-radius: 10px; font-weight: 700; - font-size: 0.95rem; + font-size: 0.9rem; border: none; cursor: pointer; - transition: transform 0.2s, background 0.2s; - flex: none; + transition: all 0.2s ease; + display: flex; + align-items: center; + justify-content: center; } .btn-primary { background: var(--color-primary); color: white; + box-shadow: 0 4px 15px rgba(139, 92, 246, 0.3); } .btn-primary:hover { - transform: scale(1.05); + transform: translateY(-2px); + box-shadow: 0 6px 20px rgba(139, 92, 246, 0.4); + filter: brightness(1.1); } .btn-secondary { - background: rgba(255,255,255,0.1); - color: white; - border: 1px solid rgba(255,255,255,0.2); + background: transparent; + border: 1px solid var(--border-subtle); + color: #ccc; } .btn-secondary:hover { - background: rgba(255,255,255,0.15); + background: rgba(255, 255, 255, 0.1); + color: white; + border-color: white; } .btn-danger { - background: var(--color-danger); - color: white; + background: rgba(239, 68, 68, 0.1); + color: #ef4444; + border: 1px solid rgba(239, 68, 68, 0.2); margin-right: auto; } .btn-danger:hover { - opacity: 0.9; + background: #ef4444; + color: white; + box-shadow: 0 4px 15px rgba(239, 68, 68, 0.3); } -.modal-overlay { - display: none; - opacity: 0; -} -.modal-overlay.active { - display: flex; - opacity: 1; -} - -@media (max-width: 900px) { +@media (max-width: 768px) { .modal-content { - max-width: 95%; + width: 100%; + height: 100%; + max-height: 100vh; + border-radius: 0; + border: none; } - .modal-fields-grid { - grid-template-columns: repeat(2, 1fr); - } - .form-group.notes-group { - grid-column: 1 / -1; - } - .form-group.checkbox-group { - grid-column: 1 / -1; - align-self: auto; - } - .modal-actions { - padding: 1rem 1.5rem; - } - .modal-title, .modal-body { - padding-left: 1.5rem; - padding-right: 1.5rem; - } -} + .modal-title { padding: 1.5rem 1.5rem 1rem; } + .modal-body { padding: 0 1.5rem; } + .modal-fields-grid { display: flex; flex-direction: column; gap: 1.2rem; } + + .form-group, .form-group.notes-group, + .form-group.checkbox-group, .form-group.full-width { + grid-column: auto; + width: 100%; + } + + .date-group { flex-direction: column; gap: 1rem; } + .modal-actions { + flex-direction: column; + gap: 0.8rem; + padding: 1.5rem; + } + + .btn-primary, .btn-secondary, .btn-danger { width: 100%; padding: 1rem; } + .btn-primary { order: 1; } + .btn-secondary { order: 2; } + .btn-danger { order: 3; margin-top: 0.5rem; } +} \ No newline at end of file diff --git a/desktop/views/css/components/local-library.css b/desktop/views/css/components/local-library.css deleted file mode 100644 index ce410af..0000000 --- a/desktop/views/css/components/local-library.css +++ /dev/null @@ -1,132 +0,0 @@ -.library-mode-btn { - padding: 0.6rem 1.2rem; - background: rgba(255, 255, 255, 0.05); - border-radius: var(--radius-full); - border: 1px solid rgba(255, 255, 255, 0.1); - color: var(--color-text-secondary); - cursor: pointer; - display: flex; - align-items: center; - gap: 0.5rem; - font-weight: 600; - font-size: 0.9rem; - transition: all 0.2s; -} - -.library-mode-btn:hover { - background: rgba(255, 255, 255, 0.1); - color: white; -} - -.library-mode-btn.active { - background: var(--color-primary); - color: white; - border-color: var(--color-primary); -} - -.library-mode-btn svg { - width: 18px; - height: 18px; -} - -.local-library-grid { - display: grid; - grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); - gap: 1.5rem; - padding: 1rem 0; -} - -.local-card { - cursor: pointer; - transition: transform 0.3s cubic-bezier(0.2, 0.8, 0.2, 1); -} - -.local-card:hover { - transform: translateY(-8px); -} - -.local-card-info { - padding: 0.8rem 0; -} - -.local-card-title { - font-size: 1rem; - font-weight: 600; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - margin-bottom: 0.5rem; -} - -.match-status { - font-size: 0.85rem; - display: inline-block; - padding: 0.25rem 0.75rem; - border-radius: var(--radius-sm); -} - -.status-linked { - background: rgba(34, 197, 94, 0.2); - color: var(--color-success); -} - -.status-unlinked { - background: rgba(239, 68, 68, 0.2); - color: var(--color-danger); -} - -.hidden { - display: none !important; -} - -.skeleton-card { - width: 100%; - aspect-ratio: 2/3; - background: linear-gradient(90deg, #18181b 25%, #27272a 50%, #18181b 75%); - background-size: 200% 100%; - animation: shimmer 1.5s infinite; - border-radius: var(--radius-md); -} - -@keyframes shimmer { - 0% { background-position: 200% 0; } - 100% { background-position: -200% 0; } -} - -.hero-wrapper { - position: relative; -} - -.library-mode-btn.icon-only { - position: absolute; - bottom: 2rem; - right: 2rem; - z-index: 50; -} - - -.hero-mode-switch .library-mode-btn { - backdrop-filter: blur(10px); -} - -.local-filters { - display: flex; - gap: 1rem; - margin-bottom: 1rem; - flex-wrap: wrap; -} - -.filter-btn { - padding: 0.4rem 0.9rem; - border-radius: 999px; - background: rgba(255,255,255,0.06); - border: 1px solid rgba(255,255,255,0.12); - color: #bbb; - cursor: pointer; -} - -.filter-btn.active { - background: var(--color-primary); - color: white; - border-color: var(--color-primary); -} diff --git a/docker/views/css/components/anilist-modal.css b/docker/views/css/components/anilist-modal.css index 25f0020..8cf918b 100644 --- a/docker/views/css/components/anilist-modal.css +++ b/docker/views/css/components/anilist-modal.css @@ -1,335 +1,279 @@ +:root { + + --color-primary: #8b5cf6; + --bg-modal: rgba(15, 15, 15, 0.95); + --border-subtle: rgba(255, 255, 255, 0.1); + --input-bg: rgba(0, 0, 0, 0.4); +} + .modal-overlay { position: fixed; inset: 0; - background: rgba(0, 0, 0, 0.9); - backdrop-filter: blur(10px); + background: rgba(0, 0, 0, 0.85); + backdrop-filter: blur(8px); z-index: 2000; display: flex; align-items: center; justify-content: center; padding: 1rem; + opacity: 0; + visibility: hidden; + transition: all 0.3s ease; +} + +.modal-overlay.active { + opacity: 1; + visibility: visible; } .modal-content { - background: var(--color-bg-amoled); - border: 1px solid rgba(255, 255, 255, 0.1); - border-radius: var(--radius-lg); - max-width: 900px; + background: var(--bg-modal); + border: 1px solid var(--border-subtle); + border-radius: 16px; + max-width: 850px; width: 95%; - padding: 0; position: relative; - animation: modalSlideUp 0.3s ease; - box-shadow: 0 20px 50px rgba(0, 0, 0, 0.8); + box-shadow: 0 25px 80px rgba(0, 0, 0, 0.9), + 0 0 0 1px rgba(255, 255, 255, 0.05); max-height: 90vh; display: flex; flex-direction: column; + transform: scale(0.95) translateY(10px); + transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1); } -@keyframes modalSlideUp { - from { - opacity: 0; - transform: translateY(20px); - } - to { - opacity: 1; - transform: translateY(0); - } +.modal-overlay.active .modal-content { + transform: scale(1) translateY(0); } .modal-close { position: absolute; - top: 1rem; - right: 1rem; - background: rgba(255, 255, 255, 0.05); - border: 1px solid rgba(255, 255, 255, 0.1); - color: white; - width: 36px; - height: 36px; + top: 1.2rem; + right: 1.2rem; + background: rgba(255, 255, 255, 0.03); + border: 1px solid var(--border-subtle); + color: #ccc; + width: 32px; + height: 32px; border-radius: 8px; cursor: pointer; display: flex; align-items: center; justify-content: center; - font-size: 1.2rem; - transition: 0.2s; + font-size: 1rem; + transition: all 0.2s; z-index: 2001; } .modal-close:hover { - background: var(--color-danger); - border-color: var(--color-danger); + background: #ef4444; + border-color: #ef4444; + color: white; + transform: rotate(90deg); } .modal-title { - font-size: 1.8rem; + font-size: 1.5rem; font-weight: 800; - padding: 1.5rem 2rem 0.5rem; - margin-bottom: 0; - color: var(--color-text-primary); - border-bottom: 1px solid rgba(255, 255, 255, 0.05); + padding: 2rem 2.5rem 1rem 2.5rem; + margin: 0; + color: white; + border-bottom: 1px solid var(--border-subtle); + letter-spacing: -0.02em; + background: linear-gradient(to right, #fff, #aaa); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; } .modal-body { - display: flex; - flex-direction: column; + padding: 0 2.5rem; overflow-y: auto; - padding: 0 2rem; flex-grow: 1; + + scrollbar-width: thin; + scrollbar-color: rgba(255,255,255,0.2) transparent; } +.modal-body::-webkit-scrollbar { width: 6px; } +.modal-body::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.2); border-radius: 10px; } + .modal-fields-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem 2rem; - padding: 1.5rem 0; + padding: 2rem 0; } .form-group { display: flex; flex-direction: column; - gap: 0.5rem; -} - -.form-group.notes-group { - grid-column: 1 / span 2; -} -.form-group.checkbox-group { - grid-column: 3 / 4; - align-self: flex-end; - margin-bottom: 0.5rem; -} -.form-group.full-width { - grid-column: 1 / -1; + gap: 0.6rem; } .form-group label { - font-size: 0.8rem; + font-size: 0.75rem; font-weight: 700; - color: var(--color-text-secondary); + color: rgba(255, 255, 255, 0.6); text-transform: uppercase; - letter-spacing: 0.5px; + letter-spacing: 0.05em; } .form-input { - background: var(--color-bg-field); - border: 1px solid rgba(255, 255, 255, 0.1); - color: var(--color-text-primary); - padding: 0.8rem 1rem; - border-radius: 8px; + background: var(--input-bg); + border: 1px solid var(--border-subtle); + color: white; + padding: 0.9rem 1rem; + border-radius: 10px; font-family: inherit; - font-size: 1rem; - transition: 0.2s; + font-size: 0.95rem; + font-weight: 500; + transition: all 0.2s ease; } .form-input:focus { outline: none; + background: rgba(0,0,0,0.6); border-color: var(--color-primary); - box-shadow: 0 0 10px var(--color-primary-glow); + box-shadow: 0 0 0 4px rgba(139, 92, 246, 0.15); } -.notes-textarea { - resize: vertical; - min-height: 100px; -} +.form-group.notes-group { grid-column: 1 / span 2; } +.form-group.checkbox-group { grid-column: 3 / 4; align-self: end; margin-bottom: 0.8rem; } +.form-group.full-width { grid-column: 1 / -1; } +.notes-textarea { resize: vertical; min-height: 100px; line-height: 1.5; } -.date-group { - display: flex; - gap: 1rem; -} - -.date-input-pair { - flex: 1; - min-width: 0; - display: flex; - flex-direction: column; - gap: 0.5rem; -} +.date-group { display: flex; gap: 1.5rem; } +.date-input-pair { flex: 1; display: flex; flex-direction: column; gap: 0.6rem; } .checkbox-group { flex-direction: row; align-items: center; - gap: 1rem; + background: rgba(255,255,255,0.02); + padding: 0.8rem; + border-radius: 8px; + border: 1px solid transparent; + transition: 0.2s; } +.checkbox-group:hover { border-color: var(--border-subtle); } + .form-checkbox { - width: 18px; - height: 18px; - border: 1px solid rgba(255, 255, 255, 0.2); - background: var(--color-bg-base); - border-radius: 4px; + width: 20px; + height: 20px; + border: 1px solid rgba(255, 255, 255, 0.3); + background: transparent; + border-radius: 5px; cursor: pointer; - -webkit-appearance: none; appearance: none; position: relative; - transition: all 0.2s; - flex-shrink: 0; + transition: 0.2s; } .form-checkbox:checked { background: var(--color-primary); border-color: var(--color-primary); + box-shadow: 0 0 10px rgba(139, 92, 246, 0.4); } .form-checkbox:checked::after { content: "✓"; position: absolute; - top: 50%; - left: 50%; + top: 50%; left: 50%; transform: translate(-50%, -50%); color: white; - font-size: 14px; + font-size: 12px; + font-weight: 900; } .modal-actions { display: flex; gap: 1rem; - margin-top: 0; - justify-content: flex-end; - flex-shrink: 0; - padding: 1rem 2rem; - border-top: 1px solid rgba(255, 255, 255, 0.05); - background: var(--color-bg-amoled); - position: sticky; - bottom: 0; - z-index: 10; + padding: 1.5rem 2.5rem; + border-top: 1px solid var(--border-subtle); + background: rgba(10, 10, 10, 0.3); + border-bottom-left-radius: 16px; + border-bottom-right-radius: 16px; + backdrop-filter: blur(10px); } -.btn-primary, -.btn-secondary, -.btn-danger { - padding: 0.8rem 1.5rem; - border-radius: 999px; +.btn-primary, .btn-secondary, .btn-danger { + padding: 0.85rem 1.8rem; + border-radius: 10px; font-weight: 700; - font-size: 0.95rem; + font-size: 0.9rem; border: none; cursor: pointer; - transition: - transform 0.2s, - background 0.2s; - flex: none; + transition: all 0.2s ease; + display: flex; + align-items: center; + justify-content: center; } .btn-primary { background: var(--color-primary); color: white; + box-shadow: 0 4px 15px rgba(139, 92, 246, 0.3); } .btn-primary:hover { - transform: scale(1.05); + transform: translateY(-2px); + box-shadow: 0 6px 20px rgba(139, 92, 246, 0.4); + filter: brightness(1.1); } .btn-secondary { - background: rgba(255, 255, 255, 0.1); - color: white; - border: 1px solid rgba(255, 255, 255, 0.2); + background: transparent; + border: 1px solid var(--border-subtle); + color: #ccc; } .btn-secondary:hover { - background: rgba(255, 255, 255, 0.15); + background: rgba(255, 255, 255, 0.1); + color: white; + border-color: white; } .btn-danger { - background: var(--color-danger); - color: white; + background: rgba(239, 68, 68, 0.1); + color: #ef4444; + border: 1px solid rgba(239, 68, 68, 0.2); margin-right: auto; } .btn-danger:hover { - opacity: 0.9; + background: #ef4444; + color: white; + box-shadow: 0 4px 15px rgba(239, 68, 68, 0.3); } -.modal-overlay { - display: none; - opacity: 0; -} -.modal-overlay.active { - display: flex; - opacity: 1; -} - -@media (max-width: 600px) { +@media (max-width: 768px) { .modal-content { width: 100%; height: 100%; max-height: 100vh; border-radius: 0; - display: flex; - flex-direction: column; + border: none; } - .modal-title { - font-size: 1.4rem; - padding: 1rem; + .modal-title { padding: 1.5rem 1.5rem 1rem; } + .modal-body { padding: 0 1.5rem; } + .modal-fields-grid { display: flex; flex-direction: column; gap: 1.2rem; } - padding-right: 3rem; - } - - .modal-close { - top: 0.8rem; - right: 0.8rem; - width: 40px; - height: 40px; - background: rgba(255, 255, 255, 0.08); - } - - .modal-body { - padding: 0 1rem; - } - - .modal-fields-grid { - display: flex; - flex-direction: column; - gap: 1.2rem; - padding: 1rem 0; - } - - .form-group, - .form-group.notes-group, - .form-group.checkbox-group, - .form-group.full-width { + .form-group, .form-group.notes-group, + .form-group.checkbox-group, .form-group.full-width { grid-column: auto; width: 100%; } - .date-group { - flex-direction: column; - gap: 1rem; - } - - .notes-textarea { - min-height: 120px; - } - + .date-group { flex-direction: column; gap: 1rem; } .modal-actions { flex-direction: column; gap: 0.8rem; - padding: 1rem; - background: var(--color-bg-elevated); + padding: 1.5rem; } - .btn-primary, - .btn-secondary, - .btn-danger { - width: 100%; - padding: 1rem; - margin: 0; - display: flex; - justify-content: center; - align-items: center; - font-size: 1rem; - } - - .btn-primary { - order: 1; - } - .btn-secondary { - order: 2; - } - .btn-danger { - order: 3; - margin-top: 0.5rem; - background: rgba(239, 68, 68, 0.2); - color: #f87171; - border: 1px solid rgba(239, 68, 68, 0.3); - } -} + .btn-primary, .btn-secondary, .btn-danger { width: 100%; padding: 1rem; } + .btn-primary { order: 1; } + .btn-secondary { order: 2; } + .btn-danger { order: 3; margin-top: 0.5rem; } +} \ No newline at end of file diff --git a/docker/views/css/components/local-library.css b/docker/views/css/components/local-library.css deleted file mode 100644 index ce410af..0000000 --- a/docker/views/css/components/local-library.css +++ /dev/null @@ -1,132 +0,0 @@ -.library-mode-btn { - padding: 0.6rem 1.2rem; - background: rgba(255, 255, 255, 0.05); - border-radius: var(--radius-full); - border: 1px solid rgba(255, 255, 255, 0.1); - color: var(--color-text-secondary); - cursor: pointer; - display: flex; - align-items: center; - gap: 0.5rem; - font-weight: 600; - font-size: 0.9rem; - transition: all 0.2s; -} - -.library-mode-btn:hover { - background: rgba(255, 255, 255, 0.1); - color: white; -} - -.library-mode-btn.active { - background: var(--color-primary); - color: white; - border-color: var(--color-primary); -} - -.library-mode-btn svg { - width: 18px; - height: 18px; -} - -.local-library-grid { - display: grid; - grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); - gap: 1.5rem; - padding: 1rem 0; -} - -.local-card { - cursor: pointer; - transition: transform 0.3s cubic-bezier(0.2, 0.8, 0.2, 1); -} - -.local-card:hover { - transform: translateY(-8px); -} - -.local-card-info { - padding: 0.8rem 0; -} - -.local-card-title { - font-size: 1rem; - font-weight: 600; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - margin-bottom: 0.5rem; -} - -.match-status { - font-size: 0.85rem; - display: inline-block; - padding: 0.25rem 0.75rem; - border-radius: var(--radius-sm); -} - -.status-linked { - background: rgba(34, 197, 94, 0.2); - color: var(--color-success); -} - -.status-unlinked { - background: rgba(239, 68, 68, 0.2); - color: var(--color-danger); -} - -.hidden { - display: none !important; -} - -.skeleton-card { - width: 100%; - aspect-ratio: 2/3; - background: linear-gradient(90deg, #18181b 25%, #27272a 50%, #18181b 75%); - background-size: 200% 100%; - animation: shimmer 1.5s infinite; - border-radius: var(--radius-md); -} - -@keyframes shimmer { - 0% { background-position: 200% 0; } - 100% { background-position: -200% 0; } -} - -.hero-wrapper { - position: relative; -} - -.library-mode-btn.icon-only { - position: absolute; - bottom: 2rem; - right: 2rem; - z-index: 50; -} - - -.hero-mode-switch .library-mode-btn { - backdrop-filter: blur(10px); -} - -.local-filters { - display: flex; - gap: 1rem; - margin-bottom: 1rem; - flex-wrap: wrap; -} - -.filter-btn { - padding: 0.4rem 0.9rem; - border-radius: 999px; - background: rgba(255,255,255,0.06); - border: 1px solid rgba(255,255,255,0.12); - color: #bbb; - cursor: pointer; -} - -.filter-btn.active { - background: var(--color-primary); - color: white; - border-color: var(--color-primary); -}