aboutsummaryrefslogtreecommitdiffstats
path: root/src/public/css/style.css
diff options
context:
space:
mode:
authorThomas Vanbesien <tvanbesi@proton.me>2026-03-21 22:36:11 +0100
committerThomas Vanbesien <tvanbesi@proton.me>2026-03-21 22:36:11 +0100
commitd63e3c91a97d77b202e280ab0fa007dfbe1baa46 (patch)
treecd3533bfb947ea753d91f71a75406644a73d678d /src/public/css/style.css
parentf60a390f5c51039fd1efc1df9a6a7f3864ce0062 (diff)
downloadcamagru-d63e3c91a97d77b202e280ab0fa007dfbe1baa46.tar.gz
camagru-d63e3c91a97d77b202e280ab0fa007dfbe1baa46.zip
Add editor with webcam/upload capture, overlay compositing, and gallery feed
Diffstat (limited to 'src/public/css/style.css')
-rw-r--r--src/public/css/style.css203
1 files changed, 203 insertions, 0 deletions
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;
+ }
}