Files
supabase/apps/www/styles/globals.css
T
Francesco Sansalvadore aa764e4013 chore(www): refine www styling (#47499)
### Logo positioning bug on Safari

#### Before
<img width="1538" height="1404" alt="CleanShot 2026-07-01 at 07 11
55@2x_b0d735b7df6470afb861f4e82cfeed554743cec621475197e07ff39a98c5c506"
src="https://github.com/user-attachments/assets/dc8483bd-5a2a-4d89-9b90-d0ab3529b4b5"
/>


#### After
<img width="1177" height="526" alt="Screenshot 2026-07-01 at 15 25 59"
src="https://github.com/user-attachments/assets/e5ab66eb-56eb-4f1b-8a66-783aafad069d"
/>

### Uniform h1 styling

#### Before
Font-weight too heavy
<img width="721" height="504" alt="Screenshot 2026-07-01 at 15 55 53"
src="https://github.com/user-attachments/assets/4dc4e157-f746-4626-9ec7-5e893d7155ba"
/>

#### After
<img width="693" height="410" alt="Screenshot 2026-07-01 at 15 56 04"
src="https://github.com/user-attachments/assets/c012d6e5-0889-4466-b2b2-56d1c9516e27"
/>

### AI Builders platform card
### Before
<img width="675" height="573" alt="Screenshot 2026-07-01 at 16 18 31"
src="https://github.com/user-attachments/assets/a34e2fde-115b-45e8-8d44-9fc32c22c0a1"
/>

### After
<img width="640" height="576" alt="Screenshot 2026-07-01 at 16 18 23"
src="https://github.com/user-attachments/assets/45ebf1c7-6508-40de-a755-dda17824979a"
/>

### Logo theme-awareness on 404 page

#### Before
<img width="1053" height="670" alt="Screenshot 2026-07-02 at 11 22 45"
src="https://github.com/user-attachments/assets/d1f45cc8-00ad-48ad-a21a-3b92bf6097f0"
/>

#### After
<img width="1053" height="666" alt="Screenshot 2026-07-02 at 11 22 28"
src="https://github.com/user-attachments/assets/8b6435aa-da87-46f3-9d5c-750f8222edb1"
/>

---

Plus other minor padding/spacing issues:
- remove customer stories in homepage
- use correct container width and align "Use Supabase with [framework]"
section
- restore default `--font-sm` sizing as it resulted too small for www

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Bug Fixes / UI Improvements**
* Refined spacing, layout, and responsive styling across multiple
homepage sections.
* Improved featured logo positioning and adjusted community/hero copy
sizing.
  * Updated site typography for better readability and wrapping.
* Refreshed the 404 experience with a smoother reveal animation and
consistent layout.
  * Updated deep dark-mode behavior to apply only during launch weeks.
* **Performance**
* Lazy-loaded multiple homepage sections to improve initial load and
perceived speed.
* **SEO / New Features**
  * Added a dedicated 404 page that disables indexing.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-03 03:14:43 +10:00

879 lines
16 KiB
CSS

@import 'config/tailwind.config.css';
@import './../../../packages/ui/build/css/themes/faux-classic-dark.css';
@source '../_blog/*.mdx';
@source '../components/**/*.tsx';
@source '../data/**/*.tsx';
@source '../layouts/**/*.tsx';
@source '../lib/mdx/mdxComponents.tsx';
@source '../pages/**/*.{tsx,mdx}';
@source '../app/**/*.{tsx,ts,js}';
@source './../../../packages/ui/src/**/*.{tsx,ts,js}';
@source './../../../packages/ui-patterns/src/**/*.{tsx,ts,js}';
@source './../../../packages/marketing/src/**/*.{tsx,ts,js}';
@theme inline {
--font-sans:
var(--font-inter), Inter, Helvetica Neue, Helvetica, ui-sans-serif, system-ui, sans-serif;
--font-heading: var(--font-manrope, var(--font-sans));
--font-mono: var(--font-source-code-pro), 'Source Code Pro', ui-monospace, Menlo, monospace;
}
@utility section-container {
@apply w-full mx-auto max-w-7xl px-6 lg:px-12 xl:px-24;
}
@theme {
--color-purple-sos-100: hsl(293 80% 97%);
--color-purple-sos-200: hsl(293 85% 91%);
--color-purple-sos-300: hsl(293 90% 80%);
--color-purple-sos-400: hsl(293 95% 67%);
--color-purple-sos-500: hsl(293 100% 54%);
--color-purple-sos-600: hsl(293 100% 44%);
--color-purple-sos-700: hsl(293 100% 34%);
--color-purple-sos-800: hsl(293 95% 22%);
--color-purple-sos-900: hsl(293 90% 12%);
--animate-flash-code: flash-code 1s forwards;
--animate-flash-code-slow: flash-code 2s forwards;
--animate-spinner: spinner 1s both infinite;
--animate-marquee: marquee 35s linear infinite;
--animate-marquee-vertical: marquee-vertical 180s linear infinite both;
--animate-pulse-radar: pulse-radar 3s linear infinite;
--animate-slide-in: slideIn 250ms ease-in both;
--delay-1200: 1200ms;
--delay-1500: 1500ms;
/* font sizing and weights optimized for Inter */
--text-base: 0.9375rem;
--text-lg: 1rem;
--text-xl: 1.125rem;
--text-2xl: 1.375rem;
--text-3xl: 1.75rem;
--text-4xl: 2.125rem;
--text-5xl: 2.875rem;
--text-6xl: 3.625rem;
--text-7xl: 4.375rem;
--text-8xl: 5.875rem;
--text-9xl: 7.875rem;
--font-weight-normal: 450;
}
@keyframes flash-code {
0% {
background-color: rgba(63, 207, 142, 0.1);
}
100% {
background-color: transparent;
}
}
@keyframes slideIn {
0% {
transform: translate3d(0, -100%, 0);
}
100% {
transform: translate3d(0, 0, 0);
}
}
@keyframes spinner {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
@keyframes marquee {
0% {
transform: translateX(0%);
}
100% {
transform: translateX(-100%);
}
}
@keyframes marquee-reverse {
0% {
transform: translateX(-100%);
}
100% {
transform: translateX(0%);
}
}
@keyframes marquee-vertical {
0% {
transform: translateY(0%);
}
100% {
transform: translateY(-100%);
}
}
@keyframes pulse-radar {
0% {
transform: scale(0);
opacity: 0;
}
50% {
opacity: 0.8;
}
100% {
transform: scale(100%);
opacity: 0;
}
}
@layer base {
*,
::after,
::before,
::backdrop,
::file-selector-button {
border-color: hsl(var(--border-default, currentColor));
}
h2,
h3,
h4,
h5,
h6,
.h2,
.h3,
.h4,
.h5,
.h6 {
@apply font-heading font-semibold;
}
h1,
.h1 {
@apply font-heading font-medium tracking-normal;
}
}
@layer utilities {
.run {
animation-play-state: running;
}
.pause {
animation-play-state: paused;
}
}
@layer components {
.disable-blur {
image-rendering: -webkit-optimize-contrast;
}
}
html {
scroll-behavior: smooth !important;
font-weight: 450;
}
body {
@apply bg-default text-foreground;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/*
* Typography
*/
.h1:not(.prose *):not(.overwrite),
.h2:not(.prose *):not(.overwrite),
.h3:not(.prose *):not(.overwrite),
.h4:not(.prose *):not(.overwrite),
.h5:not(.prose *):not(.overwrite),
.h6:not(.prose *):not(.overwrite) {
/* @apply text-foreground; */
margin-bottom: 16px;
}
.h1:not(.prose *):not(.overwrite) {
@apply text-4xl;
}
.h2:not(.prose *):not(.overwrite) {
@apply text-4xl;
}
.h3:not(.prose *):not(.overwrite) {
@apply text-2xl;
}
.h4:not(.prose *):not(.overwrite) {
@apply text-xl;
}
.h5:not(.prose *):not(.overwrite) {
@apply text-xl;
}
h1:not(.overwrite),
h2:not(.overwrite),
h3:not(.overwrite),
h4:not(.overwrite),
h5:not(.overwrite),
h6:not(.overwrite) {
scroll-margin-top: 90px;
}
.h1:not(.prose *):not(.overwrite),
.h2:not(.prose *):not(.overwrite) {
line-height: 1.2 !important;
}
.label:not(.prose *):not(.overwrite) {
@apply text-xs font-mono uppercase text-foreground-lighter tracking-wider;
}
.heading-gradient {
@apply text-[#F4FFFA00] bg-clip-text bg-linear-to-b from-foreground to-foreground/70;
}
.heading-gradient-brand {
@apply text-[#3ECF8E00] bg-clip-text bg-linear-to-b from-brand to-brand/80;
}
.toc-animate {
@apply translate-x-1! text-brand!;
}
.prose-toc a {
transition: all 0.07s ease-in-out;
}
@media only screen and (max-width: 960px) {
.h1:not(.prose *):not(.overwrite) {
font-size: 2.2rem !important;
}
.h2:not(.prose *):not(.overwrite) {
font-size: 2rem !important;
}
}
@media only screen and (max-width: 720px) {
.h1:not(.prose *):not(.overwrite) {
font-size: 2rem !important;
}
.h2:not(.prose *):not(.overwrite) {
font-size: 1.8rem !important;
}
}
@media only screen and (max-width: 520px) {
.h1:not(.prose *):not(.overwrite) {
font-size: 1.8rem !important;
}
.h2:not(.prose *):not(.overwrite) {
font-size: 1.6rem !important;
}
}
.p:not(.prose *):not(.overwrite) {
@apply text-foreground-light;
margin-bottom: 16px;
}
.small:not(.prose *):not(.overwrite) {
@apply text-foreground-lighter text-xs;
}
.section--masked {
/* overflow: hidden; */
}
::selection {
background-color: #6ee7b7 !important;
color: #333 !important;
}
.section--bg-masked {
position: absolute;
width: 100%;
height: 100%;
/* overflow: visible; */
}
.section--bg {
@apply bg-background;
position: relative;
height: 100%;
width: 100%;
top: 0;
left: 0;
transform-origin: 100% 0;
overflow: hidden;
}
.stroke-text {
-webkit-text-fill-color: transparent; /* Will override color (regardless of order) */
-webkit-text-stroke-width: 1px;
-webkit-text-stroke-color: hsl(var(--background-selection));
}
.stroke-text.fill {
-webkit-text-fill-color: #1ae88f;
}
/* Database page */
.dashboard-tabs div[role='separator'] {
@apply border border-strong;
}
/* override position of tabs */
.dashboard-tabs > div > div {
justify-content: center;
}
/* Auth page */
.dark .header--light {
display: none;
}
.header--dark {
display: none;
}
.dark .header--dark {
display: block;
}
table {
margin-top: 1em;
border-collapse: collapse;
}
/*
* sets the image in @Next/Image components to respect the height of the content
*/
.next-image--dynamic-fill {
display: block;
width: 100%;
border-radius: 6px;
overflow: hidden;
grid-column: 1 / -1;
}
.next-image--dynamic-fill.wide,
video.wide {
@apply sm:max-w-none -mx-2 w-[calc(100%+1rem)] md:-mx-4 md:w-[calc(100%+2rem)] lg:-mx-8 lg:w-[calc(100%+4rem)];
}
.next-image--dynamic-fill > span {
position: relative !important;
}
.next-image--dynamic-fill img {
object-fit: contain;
width: 100% !important;
position: relative !important;
height: unset !important;
}
.line-clamp {
display: -webkit-box;
margin: 0 auto;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
/**
animations
*/
.fade-in-up-2ms {
opacity: 0;
transform: translate3d(0, 10px, 0);
animation: fadeInUp 0.2s cubic-bezier(0.25, 0.25, 0, 1) both;
}
.fade-in-up-4ms {
opacity: 0;
transform: translate3d(0, 10px, 0);
animation: fadeInUp 0.4s cubic-bezier(0.25, 0.25, 0, 1) both;
}
.fade-in-2ms {
opacity: 0;
transform: translate3d(0, 10px, 0);
animation: fadeIn 0.2s cubic-bezier(0.25, 0.25, 0, 1) both;
}
.fade-in-4ms {
opacity: 0;
transform: translate3d(0, 10px, 0);
animation: fadeIn 0.4s cubic-bezier(0.25, 0.25, 0, 1) both;
}
@keyframes fadeInUp {
to {
opacity: 1;
transform: translate3d(0, 0, 0);
}
}
@keyframes fadeIn {
to {
opacity: 1;
}
}
/**
launch week
*/
.launch-week-timeline-border--approaching {
border-image: linear-gradient(to bottom, hsl(var(--brand-default)), var(--color-purple-700)) 1
100%;
}
.video-container {
@apply overflow-hidden rounded-xl border;
position: relative;
width: 100%;
padding-bottom: 56.25%;
}
.video-container.no-border {
@apply border-none!;
}
.video-container iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
border: 0;
}
.all-unset {
all: unset;
}
.auth-container {
background: linear-gradient(270deg, #71fb8e, #acecbc);
background-size: 400% 400%;
-webkit-animation: AnimationName 14s ease infinite;
-moz-animation: AnimationName 14s ease infinite;
animation: AnimationName 14s ease infinite;
}
@-webkit-keyframes AnimationName {
0% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
100% {
background-position: 0% 50%;
}
}
@-moz-keyframes AnimationName {
0% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
100% {
background-position: 0% 50%;
}
}
@keyframes AnimationName {
0% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
100% {
background-position: 0% 50%;
}
}
@property --rotate {
syntax: '<angle>';
initial-value: 132deg;
inherits: false;
}
:root {
--auth-ui-card-height: 50vh;
--lw-secondary-color: #8a8f98;
}
.glow-area {
width: 100%;
height: 100%;
position: absolute;
background-color: transparent;
z-index: -1;
cursor: pointer;
}
.glow-area::after {
position: absolute;
content: '';
top: calc(var(--auth-ui-card-height) / 8);
left: 0;
right: 0;
z-index: -1;
height: 100%;
width: 100%;
margin: 0 auto;
transform: scale(0.75);
filter: blur(calc(var(--auth-ui-card-height) / 6));
background-image: linear-gradient(
var(--rotate),
hsl(var(--brand-default)),
#3c67e3 43%,
hsl(var(--brand-default))
);
opacity: 1;
transition: opacity 0.5s;
animation: spin 8s linear infinite;
}
@keyframes spin {
0% {
--rotate: 0deg;
}
100% {
--rotate: 360deg;
}
}
@keyframes transformSpin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
/* recharts */
.recharts-surface {
overflow: visible;
}
/* Fix inline code block wrapping */
@media screen and (min-width: 769px) {
.short-inline-codeblock {
white-space: pre !important;
}
}
.gradient-container {
min-height: 360px;
position: relative;
max-width: 1600px;
margin: 0 auto;
left: 0;
right: 0;
overflow: hidden;
}
@media screen and (max-width: 769px) {
.gradient-container {
left: 50%;
transform: translateX(-50%);
}
}
.gradient-mask {
z-index: -10;
position: absolute;
min-height: 100%;
width: 75%;
margin: 0 auto;
left: 0;
right: 0;
background: radial-gradient(
circle at 50% -35%,
rgba(57, 97, 125, 0.32) 0%,
rgba(57, 97, 125, 0.32) 5%,
rgba(0, 222, 209, 0.75) 8%,
hsl(var(--background-default)) 65%,
hsl(var(--background-default)) 100%
);
}
@media screen and (max-width: 769px) {
.gradient-mask {
width: 100%;
}
}
/* The bottom part below the stroke */
.gradient-mask--masked {
z-index: -10;
position: absolute;
min-height: 100%;
width: 100%;
margin: 0 auto;
left: 0;
right: 0;
background: radial-gradient(
circle at 50% -60%,
rgba(255, 255, 255, 0) 0%,
hsl(var(--background-default)) 65%
);
}
@media screen and (max-width: 769px) {
.gradient-mask--masked {
background: radial-gradient(
circle at 50% -40%,
rgba(255, 255, 255, 0) 0%,
hsl(var(--background-default)) 65%
);
}
}
/* The stroke on the circle */
.flair-mask-a {
position: absolute;
background-color: #375965;
top: 1px;
width: 180%;
left: -40%;
height: 500px;
-webkit-clip-path: ellipse(52% 135px at 50% 3px);
clip-path: ellipse(52% 213px at 50% -75px);
}
/* The inside of the circle */
.flair-mask-b {
position: absolute;
background-color: hsl(var(--background-default));
top: 0px;
width: 182%;
left: -41%;
height: 500px;
-webkit-clip-path: ellipse(52% 135px at 50% 3px);
clip-path: ellipse(52% 213px at 50% -75px);
}
@media only screen and (min-width: 600px) {
.flair-mask-a {
top: 1px;
margin: 0 auto;
width: 140%;
left: -20%;
right: 0;
}
.flair-mask-b {
top: 0px;
margin: 0 auto;
width: 142%;
left: -21%;
right: 0;
}
}
@media only screen and (min-width: 960px) {
.flair-mask-a {
top: 1px;
margin: 0 auto;
width: 120%;
left: -10%;
right: 0;
}
.flair-mask-b {
top: 0px;
margin: 0 auto;
width: 121%;
left: -10.5%;
right: 0;
}
}
.radial-mask {
-webkit-mask-image: linear-gradient(rgba(0, 0, 0, 1), transparent);
}
/* Text with a gradient background */
[class*='gradient-text-'] {
background-clip: text;
-webkit-text-fill-color: transparent;
}
[class*='gradient-text-']::selection {
background-color: hsl(var(--brand-default));
background-clip: unset;
-webkit-text-fill-color: white;
}
@layer utilities {
.gradient-text-brand-100 {
background-image: linear-gradient(
45deg,
hsl(var(--brand-500)) 0%,
hsl(var(--brand-default)) 100%
);
}
.gradient-text-brand-300 {
background-image: linear-gradient(
45deg,
hsl(var(--brand-500)) 0%,
hsl(var(--brand-default)) 100%
);
}
.gradient-text-100 {
background-image: -webkit-linear-gradient(45deg, #fff 0%, var(--color-green-1200) 100%);
}
.gradient-text-500 {
background-image: -webkit-linear-gradient(
45deg,
hsl(var(--foreground-lighter)) 0%,
hsl(var(--foreground-default)) 100%
);
}
.gradient-text-pink-500 {
@apply text-transparent bg-clip-text bg-linear-to-br from-[#c867ee] to-[#f6a4f3];
}
.gradient-text-purple-500 {
@apply text-transparent bg-clip-text bg-linear-to-br from-[#902DFB] to-[#D87BF5];
}
.gradient-text-purple-800 {
@apply text-transparent bg-clip-text bg-linear-to-br from-[#5900EA] to-[#A242E5];
}
.gradient-text-gold-500 {
background-image: -webkit-linear-gradient(45deg, #e4b641 100%, #f5bf0069 41%);
}
.radial-gradient-text-500 {
background: radial-gradient(45% 100% at 50% 50%, #fff 30%, hsla(0, 0%, 100%, 0.35) 100%);
}
.radial-gradient-text-600 {
background: radial-gradient(45% 100% at 50% 50%, #fff 30%, hsla(0, 0%, 100%, 0.6) 100%);
}
}
/* LW7 Tickets Slider */
.ticket-brick-swiper .swiper-slide {
width: 230px;
}
@media (min-width: 768px) {
.ticket-brick-swiper .swiper-slide {
width: 450px;
}
}
.ticket-brick-swiper .swiper-wrapper,
.swiper-transition-linear .swiper-wrapper {
transition-timing-function: linear;
}
/* dat.GUI */
.dg.ac {
z-index: 9999 !important;
margin-top: 65px !important;
}
/* Zoomable image */
[data-rmiz-modal]:focus,
[data-rmiz-modal-overlay]:focus {
outline: none !important;
}
[data-rmiz-modal-overlay],
[data-rmiz-modal-img] {
transition-timing-function: cubic-bezier(0.24, 0.25, 0.05, 1) !important;
}
[data-rmiz-modal-overlay='visible'] {
@apply bg-background!;
opacity: 0.8;
}
[data-rmiz-modal-img] {
image-rendering: high-quality;
}
/* Loader dots */
.loader-dots div {
animation-timing-function: cubic-bezier(0, 1, 1, 0);
}
.loader-dots div:nth-child(1) {
left: 4px;
animation: loader-dots1 0.6s infinite;
}
.loader-dots div:nth-child(2) {
left: 4px;
animation: loader-dots2 0.6s infinite;
}
.loader-dots div:nth-child(3) {
left: 16px;
animation: loader-dots2 0.6s infinite;
}
.loader-dots div:nth-child(4) {
left: 28px;
animation: loader-dots3 0.6s infinite;
}
@keyframes loader-dots1 {
0% {
transform: scale(0);
}
100% {
transform: scale(1);
}
}
@keyframes loader-dots3 {
0% {
transform: scale(1);
}
100% {
transform: scale(0);
}
}
@keyframes loader-dots2 {
0% {
transform: translate(0, 0);
}
100% {
transform: translate(12px, 0);
}
}
.lw13-game-input {
visibility: none;
opacity: 0;
}
@media (hover: none) {
.lw13-game-input {
visibility: visible !important;
opacity: 1 !important;
}
}