feat: initial kavita-theme with W-MAKE Cyber Noir CSS theme

This commit is contained in:
eldov
2026-08-30 18:47:32 +02:00
commit d21fa4e9c4
3 changed files with 120 additions and 0 deletions
+19
View File
@@ -0,0 +1,19 @@
# Kavita E-Book / Comic Reader Themes
Custom Themes für den Kavita Server auf [free-warez.win](https://free-warez.win).
---
## 📁 Struktur
- `themes/`:
- `w-make-cyber.css`: **W-MAKE Cyber Noir** Theme mit Cyan & Smaragd Akzenten, Glassmorphism-Karten und Dark Obsidian Background.
- `deploy.sh`: Synchronisiert die CSS-Themes in das gemountete Datenverzeichnis `/opt/containers/kavita/data/themes/` und startet den Kavita-Container neu.
---
## 🚀 Deployment
```bash
./deploy.sh
```
Executable
+33
View File
@@ -0,0 +1,33 @@
#!/usr/bin/env bash
# deploy.sh - Deploy Kavita Themes
# Domain: kavita / free-warez.win
# Target Host: free-warez.win -> /opt/containers/kavita/data/themes/
set -euo pipefail
TARGET_HOST="free-warez.win"
LOCAL_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
THEMES_DIR="$LOCAL_DIR/themes"
REMOTE_THEMES_DIR="/opt/containers/kavita/data/themes"
echo "🚀 Deploying Kavita Themes"
echo " Target Host: $TARGET_HOST:$REMOTE_THEMES_DIR"
echo "========================================================="
# 1. Check SSH connection
echo "📡 Checking SSH connection to $TARGET_HOST..."
if ! ssh -q -o BatchMode=yes -o ConnectTimeout=5 "$TARGET_HOST" exit; then
echo "❌ Cannot connect to $TARGET_HOST via SSH."
exit 1
fi
# 2. Sync CSS files
echo "🔄 Transferring themes to $TARGET_HOST..."
rsync -avz "$THEMES_DIR/" "$TARGET_HOST:$REMOTE_THEMES_DIR/"
# 3. Restart Kavita to discover new themes
echo "🔄 Reloading Kavita container..."
ssh "$TARGET_HOST" "docker restart kavita"
echo "✅ Kavita theme(s) deployed successfully!"
echo "✨ Deployment complete!"
+68
View File
@@ -0,0 +1,68 @@
/*
Theme Name: W-MAKE Cyber Noir
Author: W-MAKE Community
Description: Cyber Glassmorphism Dark Theme with Cyan & Emerald accents for Kavita
*/
:root {
--primary-color: #00f2fe;
--primary-variant: #00b4d8;
--secondary-color: #10b981;
--bg-color: #050812;
--surface-color: rgba(11, 17, 32, 0.88);
--card-bg: rgba(14, 23, 44, 0.75);
--border-color: rgba(0, 242, 254, 0.18);
--text-color: #f8fafc;
--text-muted: #94a3b8;
--accent-glow: 0 0 20px rgba(0, 242, 254, 0.3);
}
body {
background-color: var(--bg-color) !important;
color: var(--text-color) !important;
background-image: radial-gradient(circle at 15% 15%, rgba(0, 242, 254, 0.06) 0%, transparent 60%),
radial-gradient(circle at 85% 85%, rgba(16, 185, 129, 0.05) 0%, transparent 60%) !important;
background-attachment: fixed !important;
}
/* Navbar */
.navbar, nav.top-nav {
background: rgba(7, 10, 20, 0.94) !important;
backdrop-filter: blur(20px) !important;
-webkit-backdrop-filter: blur(20px) !important;
border-bottom: 1px solid var(--border-color) !important;
box-shadow: 0 8px 30px rgba(0, 0, 0, 0.7) !important;
}
/* Cards */
.card, .card-body {
background: var(--card-bg) !important;
backdrop-filter: blur(16px) !important;
-webkit-backdrop-filter: blur(16px) !important;
border: 1px solid var(--border-color) !important;
border-radius: 14px !important;
transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1) !important;
}
.card:hover {
transform: translateY(-3px) !important;
border-color: var(--primary-color) !important;
box-shadow: 0 12px 32px rgba(0, 0, 0, 0.8), var(--accent-glow) !important;
}
/* Primary Buttons */
.btn-primary {
background: linear-gradient(135deg, #00f2fe 0%, #10b981 100%) !important;
color: #03060c !important;
border: none !important;
font-weight: 700 !important;
border-radius: 10px !important;
box-shadow: 0 4px 16px rgba(0, 242, 254, 0.35) !important;
transition: all 0.2s ease !important;
}
.btn-primary:hover {
filter: brightness(1.15) !important;
box-shadow: 0 6px 24px rgba(0, 242, 254, 0.6) !important;
transform: translateY(-1px) !important;
}