From 0af3395ad7c9ecc1471f2937ece8f58d6d0e892b Mon Sep 17 00:00:00 2001 From: Adrian Victor Date: Fri, 17 Jul 2026 23:21:57 -0300 Subject: [PATCH] Add manifest.json, prevent pinch to zoom on mobile, make body dodge mobile keyboard and add partial light theme. --- icon-192.png | Bin 0 -> 2495 bytes icon-512.png | Bin 0 -> 10735 bytes index.html | 4 +++- manifest.json | 23 ++++++++++++++++++++ style.css | 59 +++++++++++++++++++++++++++++--------------------- 5 files changed, 60 insertions(+), 26 deletions(-) create mode 100644 icon-192.png create mode 100644 icon-512.png create mode 100644 manifest.json diff --git a/icon-192.png b/icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..1aa462ab71c79695a2192db2350678424e2cfa43 GIT binary patch literal 2495 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 literal 0 HcmV?d00001 diff --git a/icon-512.png b/icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..06df20e23034d5f57a0e08f116967c9dbe929b93 GIT binary patch literal 10735 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 literal 0 HcmV?d00001 diff --git a/index.html b/index.html index dfe1f76..97d55cf 100644 --- a/index.html +++ b/index.html @@ -2,7 +2,8 @@ - + + Pandora @@ -10,6 +11,7 @@ +
diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..0cde8f6 --- /dev/null +++ b/manifest.json @@ -0,0 +1,23 @@ +{ + "name": "PANDORA chat", + "short_name": "PANDORA", + "theme_color": "#ffffff", + "background_color": "#102457", + "display": "standalone", + "orientation": "any", + "scope": "./", + "start_url": "./", + "description": "Internet messaging", + "icons": [ + { + "src": "icon-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "icon-512.png", + "sizes": "512x512", + "type": "image/png" + } + ] +} diff --git a/style.css b/style.css index f5f85e0..1c17b27 100644 --- a/style.css +++ b/style.css @@ -22,6 +22,24 @@ --high-box-shadow: 2px 7px 5px rgba(0, 0, 0, 0.3), 0px -4px 10px rgba(0, 0, 0, 0.3); } +body.light { + --bg-main: white; + --bg-secondary: #F0F0F0; + --sidebar-bg: white; + --chat-bg: white; + --border-color: rgba(255, 255, 255, 0.08); + --border-hover: rgba(255, 255, 255, 0.15); + --text-primary: black; + --text-secondary: black; + --text-muted: rgb(134, 134, 134); + --accent: black; --accent-gradient: white; --accent-hover: #4f46e5; --online-color: rgba(0, 0, 000, 0.6); + --bubble-incoming: #01abaa; + --bubble-outgoing: #016f6e; + --input-bg: white; --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05); + --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.3), 0 4px 6px -2px rgba(0, 0, 0, 0.1); --glass-blur: blur(20px); + --high-box-shadow: 2px 7px 5px rgba(0, 0, 0, 0.3), 0px -4px 10px rgba(0, 0, 0, 0.3); +} + * { margin: 0; padding: 0; @@ -281,11 +299,16 @@ input:focus { border: 1px solid transparent; } -.chat-item:hover { - background: rgba(255, 255, 255, 0.04); - transform: scale(0.98) skewX(10deg); - filter: blur(.1px); - opacity: .6; +@media (hover: hover) { + .chat-item:hover { + background: rgba(255, 255, 255, 0.04); transform: scale(0.98) skewX(10deg); filter: blur(.1px); opacity: .6; + } +} + +@media (hover: none) { + .chat-item:active { + background: rgba(255, 255, 255, 0.04); transform: scale(0.98) skewX(10deg); filter: blur(.1px); opacity: .6; + } } .chat-item-info { @@ -695,15 +718,15 @@ input:focus { } .alternate-panel button, .alternate-panel input { - border: medium solid white; + border: medium solid var(--text-primary); border-radius: 100%; background-color: transparent; } .alternate-panel button:hover, .alternate-panel input:hover { - border-color: white; - background-color: white; - color: black; + border-color: var(--bg-primary); + background-color: var(--text-primary); + color: var(--bg-primary); } .chat-input-panel button { @@ -726,8 +749,8 @@ input:focus { #message-input { flex: 1; padding: 12px 18px; - background-color: white; - border: 1px solid var(--border-color); + background-color: var(--text-primary); + border: medium solid var(--border-color); color: var(--bg-main); font-size: 0.95rem; transition: all 0.2s ease; @@ -739,7 +762,6 @@ input:focus { outline: none; border-color: var(--accent); background: rgba(255, 255, 255, 0.06); - box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.1); } .send-btn { @@ -882,19 +904,6 @@ input:focus { } /* Modal Styling */ -.modal-overlay { - position: fixed; - top: 0; - left: 0; - width: 100vw; - height: 100vh; - background: rgba(0, 0, 0, 0.6); - backdrop-filter: blur(8px); - display: flex; - z-index: 100; - transition: all 0.3s ease; -} - .modal-content { width: 100%; background: var(--bg-main);