From d63e3c91a97d77b202e280ab0fa007dfbe1baa46 Mon Sep 17 00:00:00 2001 From: Thomas Vanbesien Date: Sat, 21 Mar 2026 22:36:11 +0100 Subject: Add editor with webcam/upload capture, overlay compositing, and gallery feed --- src/public/css/style.css | 203 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 203 insertions(+) (limited to 'src/public/css/style.css') diff --git a/src/public/css/style.css b/src/public/css/style.css index 897f54b..e152519 100644 --- a/src/public/css/style.css +++ b/src/public/css/style.css @@ -207,9 +207,212 @@ footer { height: 1rem; } +/* Gallery page */ +.gallery-page { + max-width: 600px; + margin: 0 auto; +} + +.gallery-page h1 { + margin-bottom: 1.5rem; +} + +.gallery-feed { + display: flex; + flex-direction: column; + gap: 1.5rem; +} + +.gallery-post { + background: #fff; + border: 1px solid #dbdbdb; + border-radius: 8px; + overflow: hidden; +} + +.post-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 0.75rem 1rem; +} + +.post-header time { + color: #999; + font-size: 0.85rem; +} + +.gallery-post img { + width: 100%; + display: block; +} + +.pagination { + display: flex; + justify-content: center; + align-items: center; + gap: 0.5rem; + margin-top: 2rem; +} + +.pagination a { + padding: 0.4rem 0.75rem; + border: 1px solid #dbdbdb; + border-radius: 4px; + text-decoration: none; + color: #0095f6; +} + +.pagination a:hover { + background: #f0f0f0; +} + +.pagination .current-page { + padding: 0.4rem 0.75rem; + background: #0095f6; + color: #fff; + border-radius: 4px; +} + +/* Editor page */ +.editor-page { + max-width: 960px; + margin: 0 auto; +} + +.editor-page h1 { + margin-bottom: 1.5rem; +} + +.editor-layout { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 1.5rem; + align-items: start; +} + +.editor-source, +.editor-preview { + background: #fff; + border: 1px solid #dbdbdb; + border-radius: 8px; + padding: 1rem; +} + +.source-tabs { + display: flex; + gap: 0.5rem; + margin-bottom: 1rem; +} + +.tab { + flex: 1; + padding: 0.5rem; + background: #fafafa; + border: 1px solid #dbdbdb; + border-radius: 4px; + cursor: pointer; + font-size: 0.95rem; +} + +.tab.active { + background: #0095f6; + color: #fff; + border-color: #0095f6; +} + +#webcam-video { + width: 100%; + aspect-ratio: 1; + object-fit: cover; + border-radius: 4px; + background: #000; +} + +#preview-canvas { + width: 100%; + height: auto; + border-radius: 4px; + border: 1px solid #dbdbdb; +} + +.overlay-controls { + margin: 0.75rem 0; + display: flex; + align-items: center; + gap: 0.5rem; +} + +.overlay-controls input[type="range"] { + flex: 1; +} + +.editor-preview h2 { + font-size: 1rem; + margin-bottom: 0.5rem; +} + +.overlay-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(80px, 1fr)); + gap: 0.5rem; + margin-bottom: 1rem; +} + +.overlay-thumb { + width: 100%; + aspect-ratio: 1; + object-fit: contain; + border: 2px solid #dbdbdb; + border-radius: 4px; + cursor: pointer; + opacity: 0.6; + transition: opacity 0.15s, border-color 0.15s; + background: #fafafa; + padding: 4px; +} + +.overlay-thumb:hover { + opacity: 0.8; +} + +.overlay-thumb.selected { + opacity: 1; + border-color: #0095f6; +} + +.btn { + width: 100%; + padding: 0.6rem; + background: #0095f6; + color: #fff; + border: none; + border-radius: 4px; + font-size: 1rem; + cursor: pointer; + margin-top: 0.5rem; +} + +.btn:hover { + background: #007ad9; +} + +.btn:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +#file-input { + width: 100%; + margin-top: 0.5rem; +} + @media (max-width: 600px) { header nav { flex-direction: column; gap: 0.5rem; } + .editor-layout { + grid-template-columns: 1fr; + } } -- cgit v1.2.3