diff options
| author | sillylaird <sillyfanboy@gmail.com> | 2026-09-03 00:33:59 +0000 |
|---|---|---|
| committer | sillylaird <sillyfanboy@gmail.com> | 2026-09-03 00:33:59 +0000 |
| commit | 898b52edcb47bcb3e9d6106e74ca73e74ea01e70 (patch) | |
| tree | 85c6ee5ad58b860144551184d4cf86b560c62b91 /assets/css/pages/admin.css | |
| download | www-898b52edcb47bcb3e9d6106e74ca73e74ea01e70.tar.gz www-898b52edcb47bcb3e9d6106e74ca73e74ea01e70.zip | |
Diffstat (limited to '')
| -rw-r--r-- | assets/css/pages/admin.css | 392 |
1 files changed, 392 insertions, 0 deletions
diff --git a/assets/css/pages/admin.css b/assets/css/pages/admin.css new file mode 100644 index 0000000..6262433 --- /dev/null +++ b/assets/css/pages/admin.css @@ -0,0 +1,392 @@ +/* Unified admin panel — terminal theme helpers */ + +.admin-tabs { + display: flex; + flex-wrap: wrap; + gap: var(--space-xs); + margin: 0 0 var(--space-lg); + border-bottom: 1px solid var(--border); +} + +.admin-tabs a { + padding: var(--space-sm) var(--space-md); + border: 1px solid var(--border); + border-bottom: none; + border-radius: var(--r) var(--r) 0 0; + color: var(--muted); + font-weight: 700; +} + +.admin-tabs a.active { + color: var(--ink); + border-color: var(--accent); + background: #0a0000; +} + +.admin-flash { + padding: var(--space-sm) var(--space-md); + border-radius: var(--r); + margin-bottom: var(--space-md); + border: 1px solid var(--border); +} + +.admin-flash.ok { border-color: #2e7d32; } +.admin-flash.err { border-color: var(--accent); } + +.admin-cols { + display: grid; + grid-template-columns: 1fr 1fr; + gap: var(--space-lg); + align-items: start; +} + +@media (max-width: 800px) { + .admin-cols { grid-template-columns: 1fr; } +} + +.panel { + border: 1px solid var(--border); + border-radius: var(--r); + margin-bottom: var(--space-md); +} + +.panel-head { + padding: var(--space-sm) var(--space-md); + border-bottom: 1px solid var(--border); + font-size: var(--fs-xs); + text-transform: uppercase; + letter-spacing: .07em; + color: var(--muted); +} + +.panel-body { padding: var(--space-md); } + +.admin-field { margin-bottom: var(--space-md); } + +.admin-field label { + display: block; + margin-bottom: 4px; + font-size: var(--fs-sm); +} + +.admin-field input, +.admin-field textarea, +.admin-field select { + width: 100%; + box-sizing: border-box; + background: #050000; + border: 1px solid var(--border); + color: #d00000; + padding: 10px; + border-radius: var(--r); + font: inherit; +} + +.md-toolbar { + display: flex; + flex-wrap: wrap; + gap: 4px; + margin-bottom: 6px; +} + +.md-toolbar button { + padding: 6px 10px; + font-size: var(--fs-xs); +} + +#md-preview { + background: #050000; + border: 1px solid var(--border); + border-radius: var(--r); + padding: 12px; + min-height: 200px; + overflow: auto; + line-height: 1.6; +} + +.admin-list { + list-style: none; + padding: 0; + margin: 0; +} + +.admin-item { + border: 1px solid var(--border); + border-radius: var(--r); + padding: var(--space-sm) var(--space-md); + margin-bottom: var(--space-sm); +} + +.admin-item small { + color: var(--muted); + font-family: monospace; +} + +.inline-form { display: inline; } + +.admin-checks { + display: flex; + flex-direction: column; + gap: 6px; + margin: 0 0 var(--space-md); +} + +.admin-checks label { + font-size: var(--fs-sm); +} + +.admin-motd-actions { + display: flex; + flex-wrap: wrap; + gap: var(--space-sm); + margin: 0 0 var(--space-md); +} + +.motd-xmpp-preview { + margin: 0; + white-space: pre-wrap; + overflow-wrap: anywhere; + font-family: var(--font-mono, ui-monospace, monospace); + font-size: var(--fs-sm); + line-height: 1.55; + color: var(--ink); +} + +.type-badge { + font-family: monospace; + padding: 1px 7px; + border: 1px solid var(--border); + border-radius: var(--r); + color: var(--muted); +} + +table.admin-table { + width: 100%; + border-collapse: collapse; +} + +table.admin-table th, +table.admin-table td { + border: 1px solid var(--border); + padding: 6px 8px; + text-align: left; + vertical-align: top; + font-size: var(--fs-sm); +} + +.ratio-wrap { + position: relative; + padding-top: 56.25%; +} + +.ratio-wrap iframe { + position: absolute; + inset: 0; + width: 100%; + height: 100%; + border: 0; + border-radius: var(--r); +} + +.preview-panel img, +.preview-panel video, +.preview-panel audio { + max-width: 100%; + border-radius: var(--r); + display: block; +} + +/* Utility replacements for residual inline styles */ +.admin-section-title { + font-size: var(--fs-lg); + margin: var(--space-2xl) 0 var(--space-md); +} + +.admin-section-label { + font-size: var(--fs-sm); + text-transform: uppercase; + letter-spacing: .07em; + color: var(--muted); + margin: var(--space-xl) 0 var(--space-sm); +} + +.admin-stack-gap { + margin-bottom: var(--space-2xl); +} + +.admin-inline-note { + font-size: var(--fs-sm); + color: var(--accent); +} + +.admin-search-input { + padding: 8px; + background: #050000; + border: 1px solid var(--border); + color: #d00000; + border-radius: var(--r); +} + +body.light-mode .admin-tabs a.active { + background: #fff4f4; +} + +body.light-mode .admin-field input, +body.light-mode .admin-field textarea, +body.light-mode .admin-field select, +body.light-mode #md-preview, +body.light-mode .admin-search-input { + background: #fff; + color: #2a1212; +} + +/* ---- Traffic analytics ---- */ +.traffic-live-bar { + display: flex; + align-items: center; + gap: 0.4rem; + margin: 0 0 var(--space-md); + font-family: var(--font-mono, ui-monospace, monospace); + font-size: var(--fs-xs); + letter-spacing: 0.04em; + text-transform: uppercase; + color: var(--muted); +} +.traffic-live-dot { + width: 8px; + height: 8px; + border-radius: 50%; + background: #39ff14; + box-shadow: 0 0 8px rgba(57, 255, 20, 0.7); + animation: traffic-live-pulse 1.6s ease-in-out infinite; +} +.traffic-live-bar--ok .traffic-live-dot { + background: #39ff14; +} +.traffic-live-bar--err .traffic-live-dot { + background: #ff4d4d; + box-shadow: 0 0 8px rgba(255, 77, 77, 0.55); + animation: none; +} +.traffic-live-bar--err #traffic-live-status { + color: #ff6b6b; +} +@keyframes traffic-live-pulse { + 0%, 100% { opacity: 1; transform: scale(1); } + 50% { opacity: 0.45; transform: scale(0.85); } +} +body.light-mode .traffic-live-dot { + background: #1a7a12; + box-shadow: none; +} +body.light-mode .traffic-live-bar--err .traffic-live-dot { + background: #c0392b; +} + +.traffic-kpi-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); + gap: var(--space-sm); + margin: 0 0 var(--space-lg); +} +.traffic-kpi-val.traffic-kpi-flash { + animation: traffic-kpi-pop 0.55s ease; +} +@keyframes traffic-kpi-pop { + 0% { transform: scale(1); } + 35% { transform: scale(1.12); filter: brightness(1.35); } + 100% { transform: scale(1); } +} +.traffic-kpi { + border: 1px solid var(--border); + border-radius: var(--r); + padding: var(--space-md); + background: #0a0000; + text-align: center; +} +.traffic-kpi-val { + display: block; + font-family: var(--font-mono, ui-monospace, monospace); + font-size: 1.6rem; + font-weight: 700; + color: #39ff14; + text-shadow: 0 0 8px rgba(57, 255, 20, .25); + line-height: 1.2; +} +.traffic-kpi-label { + display: block; + margin-top: 4px; + font-size: var(--fs-xs); + text-transform: uppercase; + letter-spacing: .06em; + color: var(--muted); +} +.traffic-kpi--bots { + border-color: rgba(255, 159, 26, 0.45); +} +.traffic-kpi--bots .traffic-kpi-val { + color: #ff9f1a; + text-shadow: 0 0 8px rgba(255, 159, 26, .3); +} +.traffic-row--bot { + opacity: 0.78; +} +.traffic-badge--bot { + background: rgba(255, 159, 26, 0.18); + color: #ff9f1a; + border: 1px solid rgba(255, 159, 26, 0.4); +} +body.light-mode .traffic-kpi--bots .traffic-kpi-val { + color: #a65c00; + text-shadow: none; +} +body.light-mode .traffic-badge--bot { + background: rgba(166, 92, 0, 0.1); + color: #a65c00; + border-color: rgba(166, 92, 0, 0.35); +} +.traffic-chart-panel .panel-body { + padding-bottom: var(--space-sm); +} +.traffic-chart { + display: block; + width: 100%; + max-width: 100%; + height: auto; + background: #050000; + border: 1px solid var(--border); + border-radius: var(--r); +} +.traffic-chart-legend { + display: flex; + flex-wrap: wrap; + gap: 1rem; + margin-top: var(--space-sm); + font-size: var(--fs-xs); + color: var(--muted); + font-family: var(--font-mono, ui-monospace, monospace); +} +.traffic-swatch { + display: inline-block; + width: 12px; + height: 12px; + border-radius: 2px; + margin-right: 4px; + vertical-align: -1px; +} +.traffic-swatch--hits { background: #39ff14; box-shadow: 0 0 6px rgba(57,255,20,.4); } +.traffic-swatch--uniq { background: #5b9dff; box-shadow: 0 0 6px rgba(91,157,255,.35); } +.traffic-swatch--bots { background: #ff9f1a; box-shadow: 0 0 6px rgba(255,159,26,.4); } +.traffic-chart-row { margin-bottom: var(--space-md); } +body.light-mode .traffic-swatch--bots { background: #a65c00; box-shadow: none; } + +body.light-mode .traffic-kpi { + background: #f8fbfd; +} +body.light-mode .traffic-kpi-val { + color: #1a7a12; + text-shadow: none; +} +body.light-mode .traffic-chart { + background: #f4f7fa; +} |
