feat: add public player profile page

This commit is contained in:
2026-03-06 13:49:14 -08:00
committed by Naomi Carrigan
parent f734176965
commit 32c13f73c4
5 changed files with 313 additions and 1 deletions
+173
View File
@@ -1107,6 +1107,179 @@ body {
font-size: 0.85rem;
}
/* ── Profile link button in ResourceBar ────────────────────────────────── */
.profile-link-button {
align-items: center;
background: rgba(255, 255, 255, 0.06);
border: 1px solid rgba(147, 51, 234, 0.4);
border-radius: 1rem;
color: var(--colour-text-muted);
display: flex;
font-size: 0.8rem;
gap: 0.3rem;
margin-left: auto;
padding: 0.3rem 0.8rem;
text-decoration: none;
transition: all 0.2s;
white-space: nowrap;
}
.profile-link-button:hover {
background: rgba(147, 51, 234, 0.2);
border-color: var(--colour-primary);
color: var(--colour-text);
}
/* ── Public Profile Page ────────────────────────────────────────────────── */
.profile-page {
align-items: center;
background: var(--colour-bg);
display: flex;
justify-content: center;
min-height: 100vh;
padding: 2rem 1rem;
}
.profile-card {
background: var(--colour-surface);
border: 1px solid rgba(147, 51, 234, 0.3);
border-radius: 1rem;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
max-width: 520px;
padding: 2rem;
width: 100%;
}
.profile-header {
align-items: center;
display: flex;
gap: 1.5rem;
margin-bottom: 1.75rem;
}
.profile-avatar {
border: 3px solid var(--colour-primary);
border-radius: 50%;
height: 96px;
width: 96px;
}
.profile-identity {
display: flex;
flex-direction: column;
gap: 0.25rem;
}
.profile-character-name {
font-size: 1.6rem;
font-weight: 700;
margin: 0;
}
.profile-username {
color: var(--colour-text-muted);
font-size: 0.9rem;
margin: 0;
}
.profile-prestige-badge {
background: rgba(255, 215, 0, 0.15);
border: 1px solid rgba(255, 215, 0, 0.4);
border-radius: 1rem;
color: gold;
font-size: 0.8rem;
padding: 0.2rem 0.6rem;
width: fit-content;
}
.profile-stats {
display: grid;
gap: 1rem;
grid-template-columns: repeat(3, 1fr);
margin-bottom: 1.75rem;
}
.profile-stat {
align-items: center;
background: rgba(255, 255, 255, 0.04);
border: 1px solid rgba(147, 51, 234, 0.2);
border-radius: 0.5rem;
display: flex;
flex-direction: column;
gap: 0.25rem;
padding: 0.75rem 0.5rem;
text-align: center;
}
.profile-stat-icon {
font-size: 1.4rem;
}
.profile-stat-value {
font-size: 1rem;
font-weight: 700;
}
.profile-stat-date {
font-size: 0.72rem;
}
.profile-stat-label {
color: var(--colour-text-muted);
font-size: 0.7rem;
}
.profile-actions {
display: flex;
gap: 0.75rem;
}
.profile-share-button {
background: rgba(147, 51, 234, 0.2);
border: 1px solid var(--colour-primary);
border-radius: 0.5rem;
color: var(--colour-text);
cursor: pointer;
flex: 1;
font-family: inherit;
font-size: 0.9rem;
padding: 0.65rem 1rem;
transition: background 0.2s;
}
.profile-share-button:hover {
background: rgba(147, 51, 234, 0.35);
}
.profile-play-link {
background: var(--colour-primary);
border-radius: 0.5rem;
color: #fff;
flex: 1;
font-size: 0.9rem;
font-weight: 600;
padding: 0.65rem 1rem;
text-align: center;
text-decoration: none;
transition: opacity 0.2s;
}
.profile-play-link:hover {
opacity: 0.85;
}
.profile-loading,
.profile-error {
color: var(--colour-text-muted);
display: flex;
flex-direction: column;
font-size: 1rem;
gap: 1rem;
text-align: center;
}
/* ── Panel Header (title + lock toggle row) ────────────────────────────── */
.panel-header {