diff --git a/app/globals.css b/app/globals.css index 4efcd96..07781c8 100644 --- a/app/globals.css +++ b/app/globals.css @@ -93,9 +93,10 @@ --sidebar-divider: #d7e0ef; --hairline-soft: rgb(14 21 40 / 0.07); --glass-tint: rgb(255 255 255 / 0.55); + --glass-top: rgb(255 255 255 / 0.55); --text: #0e1526; /* 16.9:1 on #f4f7fd */ --text-muted: #4d5c78; /* 6.3:1 */ - --text-subtle: #5a6a86; /* 5.1:1 */ + --text-subtle: #55647f; /* 5.6:1 */ --hover: rgb(14 21 40 / 0.05); --sidebar-top: #eef3fb; --sidebar-bottom: #e5edf9; @@ -135,6 +136,7 @@ --sidebar-divider: rgb(255 255 255 / 0.1); --hairline-soft: rgb(255 255 255 / 0.08); --glass-tint: rgb(255 255 255 / 0.06); + --glass-top: rgb(255 255 255 / 0.08); --text: #e9eefb; /* 15.4:1 on #0e1424 */ --text-muted: #b7c3dc; /* 10.4:1 */ --text-subtle: #94a4c2; /* 7.3:1 */ @@ -163,22 +165,23 @@ --shadow-card-hover: 0 10px 28px -16px rgb(0 0 0 / 0.55), 0 1px 2px rgb(0 0 0 / 0.3); } -/* Backdrop: the icon's navy base and blue wash, seen through frosted glass. */ +/* Backdrop: the icon's navy base with saturated blue/periwinkle/cyan blobs — + this is the colour the frosted surfaces are blurring. */ :root { - --bd-sky: rgb(110 175 245 / 0.2); - --bd-lilac: rgb(145 145 240 / 0.14); - --bd-mint: rgb(110 210 230 / 0.12); - --bd-top: #f8fafe; - --bd-mid: #f2f6fd; - --bd-bottom: #ecf1fb; + --bd-a: rgb(96 160 250 / 0.5); + --bd-b: rgb(150 150 245 / 0.42); + --bd-c: rgb(90 205 235 / 0.38); + --bd-top: #f7faff; + --bd-mid: #eef4fd; + --bd-bottom: #e8f0fb; } .dark { - --bd-sky: rgb(60 130 230 / 0.14); - --bd-lilac: rgb(110 115 235 / 0.1); - --bd-mint: rgb(70 180 215 / 0.08); - --bd-top: #111a2e; - --bd-mid: #0e1424; - --bd-bottom: #0a101d; + --bd-a: rgb(48 120 235 / 0.42); + --bd-b: rgb(105 110 240 / 0.34); + --bd-c: rgb(50 165 220 / 0.3); + --bd-top: #101a30; + --bd-mid: #0c1220; + --bd-bottom: #080d18; } html, @@ -245,53 +248,54 @@ body { overflow: hidden; pointer-events: none; background: - radial-gradient(135vw 110vh at 4% -30%, var(--bd-sky) 0%, transparent 72%), - radial-gradient(125vw 105vh at 104% -18%, var(--bd-lilac) 0%, transparent 70%), - radial-gradient(135vw 105vh at 38% 128%, var(--bd-mint) 0%, transparent 72%), + radial-gradient(52vw 52vh at 12% 4%, var(--bd-a) 0%, transparent 68%), + radial-gradient(46vw 46vh at 94% 12%, var(--bd-b) 0%, transparent 66%), + radial-gradient(56vw 52vh at 78% 98%, var(--bd-c) 0%, transparent 68%), + radial-gradient(44vw 44vh at 26% 82%, var(--bd-a) 0%, transparent 70%), linear-gradient(180deg, var(--bd-top) 0%, var(--bd-mid) 50%, var(--bd-bottom) 100%); } -/* Two slow, very soft blobs for a little life behind the glass. */ +/* Two slow, saturated blobs so the glass always has colour to bend. */ .app-backdrop::before, .app-backdrop::after { content: ""; position: absolute; border-radius: 50%; - filter: blur(110px); - opacity: 0.22; + filter: blur(80px); + opacity: 0.55; } .app-backdrop::before { - width: 52vw; - height: 52vw; - min-width: 24rem; - min-height: 24rem; - top: -26vh; - left: -18vw; - background: radial-gradient(circle, var(--bd-sky), transparent 66%); + width: 44vw; + height: 44vw; + min-width: 20rem; + min-height: 20rem; + top: 4vh; + left: 6vw; + background: radial-gradient(circle, var(--bd-a), transparent 64%); animation: float 16s ease-in-out infinite; } .app-backdrop::after { - width: 46vw; - height: 46vw; - min-width: 22rem; - min-height: 22rem; - bottom: -28vh; - right: -14vw; - background: radial-gradient(circle, var(--bd-mint), transparent 66%); + width: 40vw; + height: 40vw; + min-width: 18rem; + min-height: 18rem; + bottom: -6vh; + right: 2vw; + background: radial-gradient(circle, var(--bd-c), transparent 64%); animation: float 20s ease-in-out infinite reverse; } .dark .app-backdrop::before, .dark .app-backdrop::after { - opacity: 0.3; + opacity: 0.6; } @layer components { /* Glass primitives ------------------------------------------------------ */ .glass-panel { @apply backdrop-blur-xl backdrop-saturate-150; - background: color-mix(in oklab, var(--surface) 82%, transparent); + background: color-mix(in oklab, var(--surface) 68%, transparent); border: 1px solid var(--hairline); - box-shadow: var(--shadow-card); + box-shadow: var(--shadow-card), inset 0 1px 0 var(--glass-top); } .glass-chip { @@ -307,7 +311,7 @@ body { /* Tailwind emits both the prefixed and standard properties; hand-written backdrop-filter gets minified down to -webkit- only, which paints nothing. */ @apply backdrop-blur-xl backdrop-saturate-150; - background: color-mix(in oklab, var(--surface) 70%, transparent); + background: color-mix(in oklab, var(--surface) 62%, transparent); border-bottom: 1px solid var(--hairline); } @@ -315,7 +319,7 @@ body { surface as the cards, with a neutral border and shadow. */ .study-chrome { @apply backdrop-blur-xl backdrop-saturate-150; - background: color-mix(in oklab, var(--surface) 88%, transparent); + background: color-mix(in oklab, var(--surface) 72%, transparent); border: 1px solid var(--hairline); box-shadow: var(--shadow-card); } @@ -326,9 +330,9 @@ body { .card { border-radius: 1.125rem; /* 18px */ @apply backdrop-blur-xl backdrop-saturate-150; - background: color-mix(in oklab, var(--surface) 78%, transparent); + background: color-mix(in oklab, var(--surface) 62%, transparent); border: 1px solid var(--card-border); - box-shadow: var(--card-shadow); + box-shadow: var(--card-shadow), inset 0 1px 0 var(--glass-top); } /* Opt-in hover lift for interactive cards (deck cards). Pointer devices only, @@ -354,7 +358,7 @@ body { .list-group { border-radius: 1rem; @apply backdrop-blur-lg backdrop-saturate-150; - background: color-mix(in oklab, var(--surface) 82%, transparent); + background: color-mix(in oklab, var(--surface) 70%, transparent); border: 1px solid var(--hairline); overflow: hidden; } @@ -407,7 +411,7 @@ body { .tabbar { @apply backdrop-blur-xl; - background: color-mix(in oklab, var(--page) 88%, transparent); + background: color-mix(in oklab, var(--page) 74%, transparent); border-top: 1px solid var(--hairline); } @@ -428,8 +432,8 @@ body { @apply backdrop-blur-xl backdrop-saturate-150; background: linear-gradient( 180deg, - color-mix(in oklab, var(--sidebar-top) 84%, transparent), - color-mix(in oklab, var(--sidebar-bottom) 84%, transparent) + color-mix(in oklab, var(--sidebar-top) 68%, transparent), + color-mix(in oklab, var(--sidebar-bottom) 68%, transparent) ); border-right: 1px solid var(--sidebar-divider); box-shadow: var(--sidebar-edge);