diff --git a/netgrimoire-theme.css b/netgrimoire-theme.css new file mode 100644 index 0000000..fc21c24 --- /dev/null +++ b/netgrimoire-theme.css @@ -0,0 +1,379 @@ +/* ============================================================ + NETGRIMOIRE THEME FOR WIKI.JS + Dark arcane aesthetic — teal/cyan glowing network nodes + Paste into: Administration → Theme → Custom CSS + ============================================================ */ + +/* ── Google Fonts ─────────────────────────────────────────── */ +@import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@400;600;700&family=Share+Tech+Mono&family=Raleway:wght@300;400;500&display=swap'); + +/* ── CSS Variables ────────────────────────────────────────── */ +:root { + --ng-teal: #00e5cc; + --ng-teal-dim: #00b39e; + --ng-teal-glow: rgba(0, 229, 204, 0.35); + --ng-teal-faint: rgba(0, 229, 204, 0.08); + --ng-bg-deep: #070b0f; + --ng-bg-base: #0a0d12; + --ng-bg-raised: #0d1117; + --ng-bg-surface: #111922; + --ng-border: rgba(0, 229, 204, 0.18); + --ng-text: #b8d4d0; + --ng-text-bright: #d9eeeb; + --ng-text-muted: #5a7f7a; +} + +/* ── Page & Application Background ───────────────────────── */ +body, +.application--wrap, +.main-bg { + background-color: var(--ng-bg-base) !important; + color: var(--ng-text) !important; +} + +/* Constellation-style radial shimmer behind content */ +.contents { + background-color: var(--ng-bg-base) !important; + background-image: + radial-gradient(ellipse at 15% 20%, rgba(0, 180, 150, 0.05) 0%, transparent 55%), + radial-gradient(ellipse at 85% 75%, rgba(0, 130, 110, 0.04) 0%, transparent 55%) !important; +} + +/* ── Header / Top Nav ─────────────────────────────────────── */ +.v-toolbar, +.v-toolbar__content, +nav.v-toolbar { + background: linear-gradient(180deg, #060a0d 0%, #0a0d12 100%) !important; + border-bottom: 1px solid var(--ng-border) !important; + box-shadow: 0 2px 18px rgba(0, 229, 204, 0.08) !important; +} + +/* Site title */ +.v-toolbar__title, +.v-toolbar .site-title { + font-family: 'Cinzel', serif !important; + color: var(--ng-teal) !important; + letter-spacing: 0.08em; + text-shadow: 0 0 14px var(--ng-teal-glow); +} + +/* Header icons & buttons */ +.v-toolbar .v-btn, +.v-toolbar .v-icon { + color: var(--ng-teal-dim) !important; + transition: color 0.2s, text-shadow 0.2s !important; +} +.v-toolbar .v-btn:hover, +.v-toolbar .v-icon:hover { + color: var(--ng-teal) !important; + text-shadow: 0 0 8px var(--ng-teal-glow); +} + +/* ── Sidebar / Left Nav ───────────────────────────────────── */ +nav.navigation, +.navigation-drawer, +.v-navigation-drawer { + background: var(--ng-bg-raised) !important; + border-right: 1px solid var(--ng-border) !important; + box-shadow: 2px 0 20px rgba(0, 0, 0, 0.4) !important; +} + +/* Nav items */ +.v-list-item, +.v-list__tile { + color: var(--ng-text) !important; + font-family: 'Raleway', sans-serif !important; + font-weight: 400; + transition: color 0.2s, background 0.2s, padding-left 0.2s !important; +} + +.v-list-item:hover, +.v-list__tile:hover { + background: var(--ng-teal-faint) !important; + color: var(--ng-teal) !important; + padding-left: 20px !important; +} + +/* Active nav item */ +.v-list-item--active, +.v-list__tile--active { + color: var(--ng-teal) !important; + border-left: 3px solid var(--ng-teal) !important; + background: rgba(0, 229, 204, 0.06) !important; +} + +/* Nav section headers */ +.v-subheader { + font-family: 'Cinzel', serif !important; + font-size: 0.65rem !important; + letter-spacing: 0.18em !important; + color: var(--ng-text-muted) !important; + text-transform: uppercase; +} + +/* Nav icons */ +.v-list-item .v-icon, +.v-list__tile .v-icon { + color: var(--ng-teal-dim) !important; +} + +/* ── Page Content Area ────────────────────────────────────── */ +.page-content-wrap, +.editor-page-content, +article.contents { + background: transparent !important; +} + +/* ── Typography ───────────────────────────────────────────── */ +.contents h1, +.contents h2, +.contents h3, +.page-header h1 { + font-family: 'Cinzel', serif !important; + color: var(--ng-teal) !important; + text-shadow: 0 0 16px rgba(0, 229, 204, 0.25); + letter-spacing: 0.04em; +} + +.contents h4, +.contents h5, +.contents h6 { + font-family: 'Cinzel', serif !important; + color: var(--ng-teal-dim) !important; +} + +.contents h1 { border-bottom: 1px solid var(--ng-border); padding-bottom: 0.4em; } +.contents h2 { border-bottom: 1px solid rgba(0, 229, 204, 0.08); padding-bottom: 0.2em; } + +.contents p, +.contents li, +.contents td { + font-family: 'Raleway', sans-serif !important; + color: var(--ng-text) !important; + line-height: 1.75 !important; +} + +/* ── Links ────────────────────────────────────────────────── */ +.contents a { + color: var(--ng-teal-dim) !important; + text-decoration: none !important; + border-bottom: 1px solid transparent; + transition: color 0.2s, border-color 0.2s, text-shadow 0.2s !important; +} + +.contents a:hover { + color: var(--ng-teal) !important; + border-bottom-color: var(--ng-teal-dim); + text-shadow: 0 0 8px var(--ng-teal-glow); +} + +/* ── Code Blocks ──────────────────────────────────────────── */ +.contents pre, +.contents pre code { + background: #060b10 !important; + border: 1px solid var(--ng-border) !important; + border-radius: 6px !important; + font-family: 'Share Tech Mono', monospace !important; + color: #7df3d6 !important; + box-shadow: inset 0 0 20px rgba(0, 229, 204, 0.04), 0 0 12px rgba(0, 0, 0, 0.5) !important; +} + +.contents code { + font-family: 'Share Tech Mono', monospace !important; + background: rgba(0, 229, 204, 0.07) !important; + color: var(--ng-teal) !important; + border-radius: 3px !important; + padding: 0.1em 0.4em !important; + border: 1px solid rgba(0, 229, 204, 0.12) !important; +} + +/* ── Blockquotes ──────────────────────────────────────────── */ +.contents blockquote { + border-left: 3px solid var(--ng-teal) !important; + background: var(--ng-teal-faint) !important; + color: var(--ng-text-bright) !important; + border-radius: 0 6px 6px 0 !important; + box-shadow: inset 0 0 16px rgba(0, 229, 204, 0.03) !important; + padding: 0.8em 1.2em !important; +} + +/* ── Tables ───────────────────────────────────────────────── */ +.contents table { + border-collapse: collapse !important; + width: 100% !important; +} + +.contents thead tr { + background: rgba(0, 229, 204, 0.1) !important; +} + +.contents thead th { + font-family: 'Cinzel', serif !important; + color: var(--ng-teal) !important; + border-bottom: 1px solid var(--ng-border) !important; + letter-spacing: 0.06em; + font-size: 0.85em !important; +} + +.contents tbody tr { + border-bottom: 1px solid rgba(0, 229, 204, 0.06) !important; + transition: background 0.15s !important; +} + +.contents tbody tr:hover { + background: var(--ng-teal-faint) !important; +} + +.contents td, .contents th { + padding: 0.6em 1em !important; + color: var(--ng-text) !important; +} + +/* ── Horizontal Rules ─────────────────────────────────────── */ +.contents hr { + border: none !important; + border-top: 1px solid var(--ng-border) !important; + box-shadow: 0 0 8px var(--ng-teal-glow) !important; + margin: 2em 0 !important; +} + +/* ── Page Cards / Navigation Tiles ───────────────────────── */ +.page-card, +.v-card { + background: var(--ng-bg-surface) !important; + border: 1px solid var(--ng-border) !important; + border-radius: 8px !important; + transition: box-shadow 0.3s, border-color 0.3s, transform 0.2s !important; + box-shadow: 0 2px 12px rgba(0, 0, 0, 0.4) !important; +} + +.page-card:hover, +.v-card:hover { + border-color: var(--ng-teal-dim) !important; + box-shadow: 0 0 20px rgba(0, 229, 204, 0.2), 0 4px 20px rgba(0, 0, 0, 0.5) !important; + transform: translateY(-2px) !important; +} + +.v-card__title { + font-family: 'Cinzel', serif !important; + color: var(--ng-teal) !important; +} + +.v-card__text { + color: var(--ng-text) !important; + font-family: 'Raleway', sans-serif !important; +} + +/* ── Search Bar ───────────────────────────────────────────── */ +.v-input__slot { + background: var(--ng-bg-raised) !important; + border: 1px solid var(--ng-border) !important; + border-radius: 6px !important; +} + +.v-input__slot:focus-within { + border-color: var(--ng-teal) !important; + box-shadow: 0 0 10px rgba(0, 229, 204, 0.2) !important; +} + +.v-input input, +.v-input textarea { + color: var(--ng-text-bright) !important; + font-family: 'Raleway', sans-serif !important; + caret-color: var(--ng-teal) !important; +} + +/* Search result items */ +.v-list, +.v-autocomplete__content { + background: var(--ng-bg-raised) !important; + border: 1px solid var(--ng-border) !important; +} + +/* ── Breadcrumbs ──────────────────────────────────────────── */ +.v-breadcrumbs, +.breadcrumbs { + font-family: 'Raleway', sans-serif !important; + font-size: 0.8rem !important; +} + +.v-breadcrumbs li, +.v-breadcrumbs__item { + color: var(--ng-text-muted) !important; +} + +.v-breadcrumbs a, +.v-breadcrumbs__item--link { + color: var(--ng-teal-dim) !important; +} + +/* ── Tags / Chips ─────────────────────────────────────────── */ +.v-chip { + background: rgba(0, 229, 204, 0.1) !important; + border: 1px solid var(--ng-border) !important; + color: var(--ng-teal) !important; + font-family: 'Share Tech Mono', monospace !important; + font-size: 0.75rem !important; +} + +/* ── Buttons ──────────────────────────────────────────────── */ +.v-btn--flat, +.v-btn:not(.v-btn--icon):not(.v-btn--floating) { + font-family: 'Cinzel', serif !important; + letter-spacing: 0.08em !important; +} + +.v-btn.primary, +.v-btn--color.primary { + background: transparent !important; + border: 1px solid var(--ng-teal) !important; + color: var(--ng-teal) !important; + box-shadow: 0 0 12px rgba(0, 229, 204, 0.2) !important; + transition: box-shadow 0.3s, background 0.3s !important; +} + +.v-btn.primary:hover { + background: rgba(0, 229, 204, 0.1) !important; + box-shadow: 0 0 20px rgba(0, 229, 204, 0.35) !important; +} + +/* ── Scrollbar ────────────────────────────────────────────── */ +::-webkit-scrollbar { width: 6px; height: 6px; } +::-webkit-scrollbar-track { background: var(--ng-bg-deep); } +::-webkit-scrollbar-thumb { + background: rgba(0, 229, 204, 0.25); + border-radius: 3px; +} +::-webkit-scrollbar-thumb:hover { background: rgba(0, 229, 204, 0.45); } + +/* ── Selection ────────────────────────────────────────────── */ +::selection { + background: rgba(0, 229, 204, 0.2); + color: var(--ng-text-bright); +} + +/* ── Animated Rune Pulse on Active Nav Item ───────────────── */ +@keyframes runePulse { + 0%, 100% { box-shadow: inset 3px 0 0 var(--ng-teal), 0 0 8px rgba(0, 229, 204, 0.15); } + 50% { box-shadow: inset 3px 0 0 var(--ng-teal), 0 0 18px rgba(0, 229, 204, 0.35); } +} + +.v-list-item--active, +.v-list__tile--active { + animation: runePulse 3s ease-in-out infinite !important; +} + +/* ── Subtle Constellation Dots (background decorative) ────── */ +@keyframes starFloat { + 0%, 100% { opacity: 0.3; transform: scale(1); } + 50% { opacity: 0.7; transform: scale(1.4); } +} + +/* ── Footer ───────────────────────────────────────────────── */ +footer.v-footer { + background: var(--ng-bg-raised) !important; + border-top: 1px solid var(--ng-border) !important; + color: var(--ng-text-muted) !important; + font-family: 'Share Tech Mono', monospace !important; + font-size: 0.75rem !important; +}