-
-
Switch profiles
-
+
+
+
+
+
-
-
-
+
+
-
-
-
-
+
+
+
+
+
+ Add profile
+ Link another npub
+
+
+
+
Profiles you add here will stay on this device so you can quickly switch before posting or moderating.
diff --git a/css/style.css b/css/style.css
index d36859e4..43d90bef 100644
--- a/css/style.css
+++ b/css/style.css
@@ -269,6 +269,280 @@ header img {
-webkit-backdrop-filter: blur(0.625rem); /* For Safari */
}
+/* --------------------------------------------------------------------------
+ Profile modal account pane
+ --------------------------------------------------------------------------
+ The modal previously mixed Tailwind-style utility classes with our global
+ stylesheet. Those utilities are not always present in the production build,
+ so important layout rules (borders, gaps, flex behaviour) were getting
+ dropped. This block consolidates the account tab styling in one predictable
+ place so future tweaks only require CSS updates here instead of scattered
+ inline class lists.
+--------------------------------------------------------------------------- */
+#profileModal .profile-pane {
+ display: flex;
+ flex-direction: column;
+ gap: 1.5rem;
+}
+
+#profileModal .profile-switcher {
+ display: flex;
+ flex-direction: column;
+ gap: 1.5rem;
+ padding: clamp(1.25rem, 2vw, 1.5rem);
+ border-radius: 1.25rem;
+ border: 0.0625rem solid rgba(148, 163, 184, 0.28);
+ background: linear-gradient(145deg, rgba(15, 23, 42, 0.94), rgba(15, 23, 42, 0.72));
+ box-shadow: 0 1.75rem 3.5rem rgba(8, 11, 30, 0.45);
+}
+
+#profileModal .profile-switcher__header {
+ display: flex;
+ flex-direction: column;
+ gap: 0.75rem;
+}
+
+#profileModal .profile-switcher__intro {
+ display: flex;
+ flex-direction: column;
+ gap: 0.35rem;
+}
+
+#profileModal .profile-switcher__title {
+ margin: 0;
+ font-size: 1rem;
+ font-weight: 600;
+ color: var(--color-text);
+}
+
+#profileModal .profile-switcher__subtitle {
+ margin: 0;
+ font-size: 0.875rem;
+ color: var(--color-muted);
+}
+
+#profileModal .profile-switcher__badge {
+ align-self: flex-start;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ padding: 0.35rem 0.85rem;
+ font-size: 0.625rem;
+ font-weight: 600;
+ letter-spacing: 0.18em;
+ text-transform: uppercase;
+ border-radius: 9999px;
+ background: rgba(59, 130, 246, 0.18);
+ color: rgba(191, 219, 254, 0.95);
+ border: 0.0625rem solid rgba(96, 165, 250, 0.25);
+}
+
+#profileModal .profile-card {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ gap: 0.85rem;
+ padding: 1rem;
+ border-radius: 1rem;
+ border: 0.0625rem solid rgba(148, 163, 184, 0.24);
+ background: rgba(15, 23, 42, 0.72);
+ box-shadow: inset 0 1px 0 rgba(148, 163, 184, 0.08);
+ color: var(--color-text);
+ cursor: pointer;
+ transition: border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
+ outline: none;
+}
+
+#profileModal .profile-card:hover {
+ border-color: rgba(148, 163, 184, 0.45);
+}
+
+#profileModal .profile-card:focus-visible {
+ border-color: rgba(96, 165, 250, 0.6);
+ box-shadow: 0 0 0 0.1875rem rgba(37, 99, 235, 0.25);
+}
+
+#profileModal .profile-card--active {
+ border-color: rgba(59, 130, 246, 0.55);
+ background: linear-gradient(160deg, rgba(37, 99, 235, 0.22), rgba(15, 23, 42, 0.78));
+ box-shadow: 0 1.35rem 2.8rem rgba(37, 99, 235, 0.22);
+}
+
+#profileModal .profile-card__avatar {
+ flex: 0 0 auto;
+ width: 3rem;
+ height: 3rem;
+ display: grid;
+ place-items: center;
+ border-radius: 9999px;
+ overflow: hidden;
+ border: 0.1875rem solid rgba(148, 163, 184, 0.3);
+ background: rgba(15, 23, 42, 0.95);
+}
+
+#profileModal .profile-card__avatar img {
+ width: 100%;
+ height: 100%;
+ border-radius: inherit;
+ object-fit: cover;
+}
+
+#profileModal .profile-card--active .profile-card__avatar {
+ border-color: rgba(96, 165, 250, 0.7);
+ box-shadow: 0 0 0 0.1875rem rgba(59, 130, 246, 0.18);
+}
+
+#profileModal .profile-card__meta {
+ flex: 1;
+ min-width: 0;
+ display: flex;
+ flex-direction: column;
+ gap: 0.5rem;
+}
+
+#profileModal .profile-card__topline {
+ display: flex;
+ flex-direction: column;
+ gap: 0.35rem;
+ align-items: flex-start;
+}
+
+#profileModal .profile-card__label {
+ font-size: 0.7rem;
+ font-weight: 600;
+ letter-spacing: 0.2em;
+ text-transform: uppercase;
+ color: rgba(191, 219, 254, 0.9);
+}
+
+#profileModal .profile-card__action {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ padding: 0.3rem 0.8rem;
+ border-radius: 9999px;
+ border: 0.0625rem solid rgba(59, 130, 246, 0.4);
+ background: rgba(59, 130, 246, 0.14);
+ color: rgba(191, 219, 254, 0.95);
+ font-size: 0.65rem;
+ font-weight: 600;
+ letter-spacing: 0.18em;
+ text-transform: uppercase;
+ text-decoration: none;
+ transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
+}
+
+#profileModal .profile-card__action:hover,
+#profileModal .profile-card__action:focus-visible {
+ background: rgba(59, 130, 246, 0.24);
+ border-color: rgba(59, 130, 246, 0.6);
+ color: #ffffff;
+}
+
+#profileModal .profile-card__name {
+ font-size: 0.95rem;
+ font-weight: 600;
+ color: var(--color-text);
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+#profileModal .profile-card__npub {
+ font-size: 0.75rem;
+ font-family: "JetBrains Mono", "Fira Code", ui-monospace, SFMono-Regular, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
+ color: rgba(148, 163, 184, 0.85);
+ word-break: break-all;
+}
+
+#profileModal .profile-switcher__list {
+ display: flex;
+ flex-direction: column;
+ gap: 1rem;
+}
+
+#profileModal .profile-switcher__add {
+ display: flex;
+ align-items: center;
+ gap: 1rem;
+ padding: 1rem;
+ border-radius: 1rem;
+ border: 0.125rem dashed rgba(148, 163, 184, 0.35);
+ background: rgba(15, 23, 42, 0.55);
+ color: rgba(226, 232, 240, 0.85);
+ text-align: left;
+ cursor: pointer;
+ transition: border-color 0.2s ease, background 0.2s ease, color 0.2s ease;
+}
+
+#profileModal .profile-switcher__add:hover,
+#profileModal .profile-switcher__add:focus-visible {
+ border-color: rgba(96, 165, 250, 0.65);
+ background: rgba(59, 130, 246, 0.18);
+ color: #ffffff;
+ outline: none;
+}
+
+#profileModal .profile-switcher__addAvatar {
+ flex: 0 0 auto;
+ width: 3rem;
+ height: 3rem;
+ display: grid;
+ place-items: center;
+ border-radius: 9999px;
+ border: 0.125rem dashed currentColor;
+ color: inherit;
+ background: rgba(15, 23, 42, 0.75);
+}
+
+#profileModal .profile-switcher__addAvatar svg {
+ width: 1.25rem;
+ height: 1.25rem;
+}
+
+#profileModal .profile-switcher__addCopy {
+ display: flex;
+ flex-direction: column;
+ gap: 0.25rem;
+}
+
+#profileModal .profile-switcher__addTitle {
+ font-size: 0.9rem;
+ font-weight: 600;
+ color: inherit;
+}
+
+#profileModal .profile-switcher__addHint {
+ font-size: 0.75rem;
+ color: rgba(148, 163, 184, 0.85);
+}
+
+#profileModal .profile-switcher__helper {
+ margin: 0;
+ font-size: 0.75rem;
+ color: rgba(148, 163, 184, 0.7);
+}
+
+@media (min-width: 640px) {
+ #profileModal .profile-switcher__header {
+ flex-direction: row;
+ align-items: center;
+ justify-content: space-between;
+ }
+
+ #profileModal .profile-card {
+ flex-direction: row;
+ align-items: center;
+ }
+
+ #profileModal .profile-card__topline {
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center;
+ gap: 0.75rem;
+ }
+}
+
/* If you ever want to show it, add ".flex" class dynamically */
#playerModal.flex {
display: flex;
From 2b1d5488d67bf8fba72be2407e7cb83622e35c9e Mon Sep 17 00:00:00 2001
From: thePR0M3TH3AN <53631862+PR0M3TH3AN@users.noreply.github.com>
Date: Mon, 29 Sep 2025 15:58:12 -0400
Subject: [PATCH 10/10] Restore hidden profile panes
---
css/style.css | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/css/style.css b/css/style.css
index 43d90bef..53523690 100644
--- a/css/style.css
+++ b/css/style.css
@@ -285,6 +285,16 @@ header img {
gap: 1.5rem;
}
+/*
+ Ensure the global `.hidden` helper keeps working for the tab panes. Our
+ profile-pane declaration above sets a `display` value with higher
+ specificity than `.hidden`, so we explicitly restore the hidden state when
+ both classes are present.
+*/
+#profileModal .profile-pane.hidden {
+ display: none;
+}
+
#profileModal .profile-switcher {
display: flex;
flex-direction: column;