diff --git a/html/priv.ejs b/html/priv.ejs index 867bbc48..2aa8fbc8 100644 --- a/html/priv.ejs +++ b/html/priv.ejs @@ -1,23 +1,22 @@ + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with this program. If not, see https://www.gnu.org/licenses/. +--> @@ -140,25 +139,93 @@ .grid-2 { display: grid; gap: 12px; grid-template-columns: 1fr 1fr; } + + /* --- Mobile enhancements (desktop unchanged) --- */ @media (max-width: 900px) { + html { font-size: 17px; } .doc { grid-template-columns: 1fr; } - nav.toc { position: static; max-height: none; } + nav.toc { display: none; } /* hide sidebar TOC on mobile */ + .mobile-toc { display: block; } /* show mobile TOC instead */ + article.paper { padding: 20px; } + .doc-title { font-size: 1.6rem; } + .grid-2 { grid-template-columns: 1fr; } + .meta { font-size: .95rem; } + .shell { padding: 18px; } } - /* Details blocks */ - details.block { - background: #0c0c0d; border: 1px solid #1a1a1d; border-radius: 14px; - padding: 10px 12px; margin: 10px 0; + /* Mobile TOC block (hidden on desktop) */ + .mobile-toc { + display: none; + margin: 10px 0 16px 0; + background: #0f0f10; + border: 1px solid #1f1f22; + border-radius: 14px; + overflow: hidden; } - details.block > summary { - cursor: pointer; list-style: none; display: flex; align-items: center; gap: 10px; - font-weight: 700; color: #e6f7ff; + .mobile-toc summary { + cursor: pointer; + padding: 12px 14px; + font-weight: 700; + color: #e6f7ff; + list-style: none; + display: flex; align-items: center; gap: 10px; } - details.block > summary::before { - content: "▸"; transition: transform .15s ease; color: #8bd2ff; + .mobile-toc summary::before { + content: "▸"; color: #8bd2ff; transition: transform .15s ease; + } + .mobile-toc[open] summary::before { transform: rotate(90deg); } + .mobile-toc .toc-links { padding: 8px 14px 14px; } + .mobile-toc .toc-links a { display: block; padding: 8px 6px; color: #cfe8ff; } + + /* Floating search (works on desktop & mobile without altering layout) */ + .search-fab { + position: fixed; + right: 20px; bottom: 24px; + z-index: 60; + } + .search-fab button { + appearance: none; border: 0; cursor: pointer; + border-radius: 999px; + padding: 10px 12px; + background: linear-gradient(135deg, #0ea5e9, #8b5cf6); + color: #0b0b0b; font-weight: 800; + box-shadow: 0 10px 30px rgba(0,0,0,.35); + } + .search-panel { + position: fixed; + right: 20px; bottom: 72px; + background: #0f0f10; + border: 1px solid #1f1f22; + border-radius: 14px; + padding: 10px; + width: min(520px, calc(100vw - 36px)); + box-shadow: 0 12px 36px rgba(0,0,0,.45); + display: none; + } + .search-panel.active { display: block; } + .search-row { + display: flex; gap: 8px; + } + .search-row input[type="search"] { + flex: 1; + border-radius: 10px; + border: 1px solid #232327; + background: #0c0c0d; + color: #eaeaea; + padding: 10px 12px; + } + .search-row button { + appearance: none; border: 0; cursor: pointer; + padding: 10px 14px; border-radius: 10px; + background: #111; color: #ddd; border: 1px solid #222; + } + .search-row button:hover { background: #161616; border-color: #2a2a2a; } + .search-hint { margin-top: 6px; color: #a9a9a9; font-size: . Nine25rem; } /* small hint */ + /* prevent overlapping on iOS safe areas */ + @supports (padding: max(0px)) { + .search-fab { right: max(20px, env(safe-area-inset-right)); bottom: max(24px, env(safe-area-inset-bottom)); } + .search-panel { right: max(20px, env(safe-area-inset-right)); bottom: max(72px, calc(env(safe-area-inset-bottom) + 48px)); } } - details[open].block > summary::before { transform: rotate(90deg); } - details.block p, details.block ul { margin-left: 22px; } /* Footer */ footer.site { @@ -169,7 +236,7 @@ /* Print */ @media print { - header.site, nav.toc { display: none !important; } + header.site, nav.toc, .mobile-toc, .search-fab, .search-panel { display: none !important; } body { background: #fff; color: #000; } article.paper { background: #fff; border-color: #999; box-shadow: none; } a { color: #0645ad; } @@ -188,14 +255,14 @@
+ The Poke service and this default instance (poketube.fun) are owned and operated by the Poke Project. + Learn more at initiative.poketube.fun. +
++ The informational website at initiative.poketube.fun does not collect personal information. + For hosting-related processing, the Codeberg privacy policy applies: + codeberg.org/Codeberg/org/src/branch/main/PrivacyPolicy.md. +
+Our translate page does not send data to Google. We use the community-run - SimplyTranslate service (a privacy-friendly translation proxy). + SimplyTranslate service (a privacy-friendly translation front-end). SimplyTranslate is a free software project: source code at codeberg.org/ManeraKai/simplytranslate and its legal notice. @@ -398,18 +490,9 @@
- Connections use modern TLS. We minimize what could ever be exposed by not collecting personal data in the first place. Less data, less risk. Math checks out. -
-