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 && (