diff --git a/src/app/(site)/login/page.tsx b/src/app/(site)/login/page.tsx
index 4e56990f..402a2dfb 100644
--- a/src/app/(site)/login/page.tsx
+++ b/src/app/(site)/login/page.tsx
@@ -122,24 +122,26 @@ export default async function LoginPage() {
bodyClassName="p-4"
className="card-glow"
>
-
+
{recentUsers.map((u) => (
{u.username}
@@ -157,24 +159,26 @@ export default async function LoginPage() {
bodyClassName="p-4"
className="card-glow"
>
-
+
{latestUsers.map((u) => (
{u.username}
diff --git a/src/app/(site)/page.tsx b/src/app/(site)/page.tsx
index 2d91dedf..8ab7a302 100644
--- a/src/app/(site)/page.tsx
+++ b/src/app/(site)/page.tsx
@@ -143,7 +143,7 @@ export default async function Home() {
{/* ── Top Bar ── */}
-
+
+ {tp("welcome", { hotelName: "" })}
+ {" "}
+
+
+
(
{u.username}
@@ -170,20 +172,22 @@ export default async function RegisterPage() {
{latestUsers.map((u) => (
{u.username}
diff --git a/src/app/globals.css b/src/app/globals.css
index 8ff35c5b..1b64b51d 100644
--- a/src/app/globals.css
+++ b/src/app/globals.css
@@ -2018,3 +2018,40 @@ details[open] > summary .details-open\:rotate-180 {
0 12px 32px -10px color-mix(in srgb, var(--color-primary) 32%, transparent),
0 0 0 1px color-mix(in srgb, var(--color-primary) 22%, transparent);
}
+
+/* Gradient accent hairline drawn on the top edge of a relative card. */
+.card-hairline {
+ position: relative;
+}
+.card-hairline::before {
+ content: "";
+ position: absolute;
+ inset-inline: 2%;
+ top: 0;
+ height: 2px;
+ border-radius: 999px;
+ background: linear-gradient(
+ 90deg,
+ transparent,
+ color-mix(in srgb, var(--color-primary) 75%, transparent) 30%,
+ var(--color-primary) 50%,
+ color-mix(in srgb, var(--color-accent) 70%, transparent) 70%,
+ transparent
+ );
+ opacity: 0.55;
+ pointer-events: none;
+ z-index: 1;
+}
+
+/* Brand gradient text (primary → accent). */
+.gradient-text {
+ background: linear-gradient(
+ 115deg,
+ var(--color-primary) 10%,
+ color-mix(in srgb, var(--color-primary) 55%, var(--color-accent)) 48%,
+ color-mix(in srgb, var(--color-accent) 92%, var(--color-primary)) 92%
+ );
+ -webkit-background-clip: text;
+ background-clip: text;
+ color: transparent;
+}
diff --git a/src/components/surface-card.tsx b/src/components/surface-card.tsx
index 5703f84e..516ec847 100644
--- a/src/components/surface-card.tsx
+++ b/src/components/surface-card.tsx
@@ -43,13 +43,15 @@ export function SurfaceCard({
}: SurfaceCardProps) {
const hasHeader = Boolean(title || icon || (actionHref && actionLabel));
+ const CARD_SHADOW =
+ "0 1px 2px rgba(0,0,0,0.05), 0 8px 24px -10px color-mix(in srgb, var(--color-text-muted) 22%, transparent), 0 0 0 0.5px color-mix(in srgb, var(--color-text-muted) 6%, transparent)";
+
return (
@@ -81,7 +83,7 @@ export function SurfaceCard({
)}
{title && (