Files
omniai-web/src/styles/pages/home.css
T

888 lines
19 KiB
CSS
Raw Normal View History

2026-06-02 12:38:01 +08:00
.omni-home {
--fg-body: #f3f5f2;
--fg-muted: #aeb8b1;
--fg-soft: #7e8983;
--accent: #00ff88;
--accent-rgb: 0, 255, 136;
--accent-hover: #58ffac;
--bg-inset: #101214;
--bg-hover: #202527;
--border-subtle: #2a3032;
--border-default: #394044;
--home-section-min-height: 100%;
position: relative;
isolation: isolate;
width: 100%;
height: 100%;
min-height: 0;
overflow: auto;
overscroll-behavior-y: contain;
scroll-behavior: smooth;
scroll-snap-type: y proximity;
background: #05080d;
color: var(--fg-body);
font-family: var(--font-sans);
}
.web-shell[data-view="home"] .omni-home {
--home-section-min-height: calc(100svh - 62px);
}
.omni-home button {
font: inherit;
}
.omni-home.page-motion {
animation: omni-home-page-enter 680ms cubic-bezier(0.22, 1, 0.36, 1) both;
}
@keyframes omni-home-page-enter {
from {
opacity: 0;
transform: translateY(10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@media (prefers-reduced-motion: reduce) {
.omni-home {
scroll-behavior: auto;
}
.omni-home.page-motion {
animation: none;
}
}
.omni-home__bg-video,
.omni-home__scrim {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
pointer-events: none;
}
.omni-home__bg-video {
z-index: 0;
object-fit: cover;
}
.omni-home__scrim {
z-index: 1;
background:
linear-gradient(180deg, rgba(5, 8, 13, 0.72), rgba(5, 8, 13, 0.48) 42%, rgba(5, 8, 13, 0.88)),
linear-gradient(90deg, rgba(5, 8, 13, 0.82), rgba(5, 8, 13, 0.56) 48%, rgba(5, 8, 13, 0.82));
}
.omni-home__shell {
position: relative;
z-index: 2;
display: grid;
min-height: var(--home-section-min-height);
place-items: center;
padding: clamp(30px, 4vw, 58px) clamp(22px, 5vw, 72px) clamp(36px, 5vw, 76px);
scroll-snap-align: start;
scroll-snap-stop: normal;
}
.omni-home__hero {
display: grid;
grid-template-columns: minmax(0, 1fr);
justify-items: center;
align-content: center;
gap: clamp(14px, 2.1vw, 26px);
width: min(100%, 1180px);
margin: 0 auto;
}
.omni-home__copy {
order: 1;
display: grid;
justify-items: center;
gap: 16px;
width: 100%;
}
.omni-home__copy h1 {
max-width: none;
margin: 0;
color: #f6fff9;
font-size: clamp(38px, 4.4vw, 64px);
font-weight: 900;
letter-spacing: 0;
line-height: 1.05;
text-align: center;
white-space: nowrap;
}
.omni-home__copy p {
max-width: 720px;
margin: 0;
color: var(--fg-muted);
font-size: clamp(15px, 1.45vw, 19px);
font-weight: 500;
letter-spacing: 0;
line-height: 1.75;
text-align: center;
}
.omni-home__actions {
order: 3;
display: grid;
grid-template-columns: repeat(3, minmax(154px, 1fr));
gap: 14px;
width: min(100%, 660px);
margin-top: clamp(2px, 0.7vw, 10px);
}
.omni-home__entry {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 12px;
min-width: 0;
min-height: 72px;
padding: 0 28px;
border: 1px solid var(--border-subtle);
border-radius: 8px;
background: var(--bg-inset);
color: var(--fg-body);
cursor: pointer;
font-size: 17px;
font-weight: 850;
transition: border-color 160ms ease, background 160ms ease, color 160ms ease, transform 160ms ease;
}
.omni-home__entry .anticon {
font-size: 18px;
}
.omni-home__entry:hover {
border-color: var(--border-default);
background: var(--bg-hover);
color: #ffffff;
transform: translateY(-1px);
}
.omni-home__entry--primary {
border-color: var(--accent);
background: var(--accent);
color: var(--dg-button-text, #061014);
}
.omni-home__entry--primary:hover {
border-color: var(--accent-hover, var(--accent));
background: var(--accent-hover, var(--accent));
color: var(--dg-button-text, #061014);
}
.omni-home__carousel {
order: 2;
position: relative;
justify-self: center;
width: min(68vw, 820px);
min-height: 0;
aspect-ratio: 16 / 9;
transform: none;
padding: 0;
overflow: hidden;
border: 0;
border-radius: 0;
background: transparent;
box-shadow: none;
}
.omni-home__carousel-stage {
position: relative;
width: 100%;
height: 100%;
min-height: 0;
overflow: hidden;
border-radius: inherit;
background: transparent;
}
.omni-home__carousel-stage img {
position: absolute;
top: 50%;
left: 50%;
display: block;
width: 78%;
height: auto;
max-height: calc(100% - 34px);
aspect-ratio: 16 / 9;
border: 0;
border-radius: 8px;
object-fit: cover;
opacity: 0.42;
transform: translate(-50%, -50%) scale(0.72);
transition:
left 520ms cubic-bezier(0.32, 0.72, 0, 1),
opacity 360ms ease,
transform 520ms cubic-bezier(0.32, 0.72, 0, 1),
filter 360ms ease;
}
.omni-home__carousel-stage img.is-active {
z-index: 3;
opacity: 1;
transform: translate(-50%, -50%) scale(1);
filter: none;
}
.omni-home__carousel-stage img.is-prev,
.omni-home__carousel-stage img.is-next {
z-index: 1;
width: 56%;
max-height: calc(100% - 72px);
filter: brightness(0.62) saturate(0.78);
}
.omni-home__carousel-stage img.is-prev {
left: 18%;
}
.omni-home__carousel-stage img.is-next {
left: 82%;
}
.omni-home__carousel-dots {
position: absolute;
left: 50%;
bottom: 18px;
display: flex;
align-items: center;
gap: 8px;
transform: translateX(-50%);
}
.omni-home__carousel-dots button {
width: 9px;
height: 9px;
padding: 0;
border: 0;
border-radius: 999px;
background: rgba(255, 255, 255, 0.46);
cursor: pointer;
transition: width 180ms ease, background 180ms ease;
}
.omni-home__carousel-dots button.is-active {
width: 28px;
background: var(--accent);
}
.omni-home__carousel {
width: min(100%, 1280px);
min-height: clamp(340px, 34vw, 500px);
aspect-ratio: auto;
overflow: hidden;
color: #f6f8f6;
isolation: isolate;
}
.omni-home__carousel-stage {
width: min(100%, 1160px);
height: clamp(320px, 31vw, 450px);
margin: 0 auto;
overflow: visible;
transform-style: preserve-3d;
}
.omni-home__carousel-deck {
position: absolute;
inset: 0;
transform-style: preserve-3d;
}
.omni-home__carousel-card {
--apple-card-offset: 0;
--apple-card-depth: 0;
--apple-card-z: 20;
--apple-card-x: 0;
--apple-card-y: 0;
--apple-card-z-offset: 0;
--apple-card-rotate-y: 0deg;
--apple-card-rotate-z: 0deg;
--apple-card-scale: 1;
--apple-card-opacity: 1;
position: absolute;
top: 50%;
left: 50%;
display: grid;
width: clamp(214px, 17vw, 286px);
height: clamp(122px, 9.8vw, 162px);
place-items: center;
overflow: hidden;
border: 0;
border-radius: clamp(10px, 1.2vw, 16px);
background: #0d1110;
color: #101412;
padding: 0;
cursor: pointer;
opacity: var(--apple-card-opacity);
box-shadow:
0 10px 24px rgb(0 0 0 / 16%),
inset 0 -1px 0 rgb(0 0 0 / 8%);
transform:
translate(-50%, -50%)
translateX(var(--apple-card-x))
translateY(var(--apple-card-y))
translateZ(var(--apple-card-z-offset))
rotateY(var(--apple-card-rotate-y))
rotateZ(var(--apple-card-rotate-z))
scale(var(--apple-card-scale));
transform-origin: center;
transform-style: preserve-3d;
transition:
transform 860ms cubic-bezier(0.22, 1, 0.36, 1),
opacity 640ms cubic-bezier(0.22, 1, 0.36, 1),
box-shadow 640ms cubic-bezier(0.22, 1, 0.36, 1),
width 860ms cubic-bezier(0.22, 1, 0.36, 1),
height 860ms cubic-bezier(0.22, 1, 0.36, 1);
z-index: var(--apple-card-z);
}
.omni-home__carousel-card::before {
content: "";
position: absolute;
inset: 0;
border-radius: inherit;
background:
linear-gradient(180deg, rgb(255 255 255 / 14%), transparent 24%),
linear-gradient(0deg, rgb(0 0 0 / 20%), transparent 44%);
pointer-events: none;
z-index: 2;
}
.omni-home__carousel-stage .omni-home__carousel-card img {
position: static;
display: block;
width: 100%;
height: 100%;
max-height: none;
aspect-ratio: auto;
border: 0;
border-radius: inherit;
opacity: 1;
filter:
saturate(1.08)
contrast(1.02)
drop-shadow(0 18px 18px rgb(0 0 0 / 14%));
object-fit: cover;
transform: translateZ(12px);
transition:
filter 640ms cubic-bezier(0.22, 1, 0.36, 1),
transform 860ms cubic-bezier(0.22, 1, 0.36, 1);
}
.omni-home__carousel.is-resetting .omni-home__carousel-card,
.omni-home__carousel.is-resetting .omni-home__carousel-card img {
transition: none;
}
.omni-home__carousel-card.is-active {
width: clamp(390px, 37vw, 620px);
height: clamp(220px, 20.8vw, 350px);
border-radius: clamp(16px, 1.8vw, 24px);
box-shadow:
0 18px 40px rgb(0 0 0 / 26%),
inset 0 -1px 0 rgb(0 0 0 / 8%);
}
.omni-home__carousel-stage .omni-home__carousel-card.is-active img {
width: 100%;
height: 100%;
filter:
saturate(1.12)
contrast(1.04)
drop-shadow(0 22px 20px rgb(0 0 0 / 16%));
transform: translateZ(20px) scale(1.02);
}
.omni-home__carousel-card:hover {
box-shadow:
0 28px 58px rgb(0 0 0 / 34%),
inset 0 -1px 0 rgb(0 0 0 / 8%);
}
.omni-home__carousel-dots {
display: none;
}
.omni-home__feature-pages {
position: relative;
z-index: 2;
display: grid;
gap: 0;
width: 100%;
min-height: var(--home-section-min-height);
background:
linear-gradient(180deg, rgb(5 8 13 / 0%), #05080d 2%, #05080d 100%),
linear-gradient(90deg, rgb(255 255 255 / 3%) 1px, transparent 1px),
linear-gradient(180deg, rgb(255 255 255 / 3%) 1px, transparent 1px);
background-size: auto, 36px 36px, 36px 36px;
}
.omni-home__feature-page {
position: relative;
display: grid;
grid-template-columns: minmax(300px, 0.62fr) minmax(520px, 1.38fr);
align-items: center;
gap: clamp(28px, 5vw, 72px);
min-height: var(--home-section-min-height);
overflow: hidden;
border-top: 1px solid rgb(255 255 255 / 8%);
padding: clamp(42px, 6vw, 82px) clamp(22px, 7vw, 92px);
scroll-snap-align: start;
scroll-snap-stop: normal;
}
.omni-home__feature-page::before {
content: "";
position: absolute;
inset: 0;
background:
linear-gradient(90deg, rgb(5 8 13 / 94%) 0%, rgb(5 8 13 / 78%) 38%, rgb(5 8 13 / 40%) 100%),
linear-gradient(180deg, rgb(255 255 255 / 5%), transparent 32%);
pointer-events: none;
}
.omni-home__feature-page.is-token::before {
background:
linear-gradient(90deg, rgb(5 8 13 / 96%) 0%, rgb(5 8 13 / 80%) 42%, rgb(5 8 13 / 48%) 100%),
linear-gradient(180deg, rgb(255 255 255 / 6%), transparent 34%);
}
.omni-home__feature-page.is-ecommerce::before {
background:
linear-gradient(90deg, rgb(5 8 13 / 92%) 0%, rgb(5 8 13 / 76%) 36%, rgb(5 8 13 / 36%) 100%),
linear-gradient(180deg, rgb(255 255 255 / 4%), transparent 30%);
}
.omni-home__feature-copy,
.omni-home__feature-visual,
.omni-home__feature-stats {
position: relative;
z-index: 1;
}
.omni-home__feature-copy {
display: grid;
justify-items: start;
gap: 20px;
max-width: 620px;
}
.omni-home__feature-copy > span,
.omni-home__experience-copy > span {
display: inline-flex;
align-items: center;
gap: 10px;
color: var(--accent);
font-size: 13px;
font-weight: 900;
letter-spacing: 0.08em;
text-transform: uppercase;
}
.omni-home__feature-copy > span .anticon,
.omni-home__experience-copy > span .anticon {
font-size: 17px;
}
.omni-home__feature-copy h2,
.omni-home__experience-copy h2 {
margin: 0;
color: #ffffff;
font-size: clamp(42px, 6.8vw, 96px);
font-weight: 950;
letter-spacing: 0;
line-height: 1.04;
}
.omni-home__feature-copy p,
.omni-home__experience-copy p {
max-width: 720px;
margin: 0;
color: rgb(232 238 236 / 78%);
font-size: clamp(17px, 2vw, 25px);
font-weight: 650;
letter-spacing: 0;
line-height: 1.65;
}
.omni-home__feature-copy button,
.omni-home__experience-actions button {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 10px;
min-height: 58px;
border: 1px solid rgb(255 255 255 / 82%);
border-radius: 999px;
background: #ffffff;
color: #05080d;
padding: 0 30px;
cursor: pointer;
font-size: 18px;
font-weight: 900;
transition:
transform 160ms ease,
border-color 160ms ease,
background 160ms ease,
color 160ms ease;
}
.omni-home__feature-copy button:hover,
.omni-home__experience-actions button:hover {
border-color: var(--accent);
background: var(--accent);
color: #061014;
transform: translateY(-2px);
}
.omni-home__feature-visual {
justify-self: stretch;
display: grid;
min-height: clamp(280px, 31vw, 520px);
max-height: min(58vh, 560px);
aspect-ratio: 6240 / 2656;
place-items: center;
overflow: hidden;
border: 1px solid rgb(255 255 255 / 12%);
border-radius: 20px;
background: #101214;
box-shadow: 0 28px 72px rgb(0 0 0 / 36%);
}
.omni-home__feature-visual img {
display: block;
width: 100%;
height: 100%;
filter: saturate(1.04) contrast(1.04);
object-fit: contain;
object-position: center;
transform: none;
transform-origin: center;
}
.omni-home__feature-stats {
position: absolute;
right: clamp(22px, 7vw, 92px);
bottom: clamp(26px, 5vw, 58px);
display: flex;
flex-wrap: wrap;
justify-content: flex-end;
gap: 10px;
max-width: min(760px, 48vw);
}
.omni-home__feature-stats span {
display: inline-flex;
align-items: center;
min-height: 36px;
border: 1px solid rgb(255 255 255 / 16%);
border-radius: 999px;
background: rgb(255 255 255 / 8%);
color: rgb(255 255 255 / 82%);
padding: 0 14px;
font-size: 13px;
font-weight: 850;
backdrop-filter: blur(12px);
}
.omni-home__experience {
position: relative;
display: grid;
grid-template-columns: minmax(280px, 0.86fr) minmax(360px, 1.14fr) minmax(240px, auto);
align-items: center;
gap: clamp(24px, 4.5vw, 72px);
min-height: var(--home-section-min-height);
overflow: hidden;
border-top: 1px solid rgb(255 255 255 / 8%);
padding: clamp(46px, 7vw, 96px) clamp(22px, 7vw, 92px);
scroll-snap-align: start;
scroll-snap-stop: normal;
background:
linear-gradient(112deg, rgb(0 255 136 / 16%) 0 1px, transparent 1px 18%),
linear-gradient(68deg, rgb(70 170 255 / 13%) 0 1px, transparent 1px 22%),
linear-gradient(135deg, rgb(170 95 255 / 12%) 0%, transparent 32%),
linear-gradient(180deg, #070b10 0%, #05080d 100%);
}
.omni-home__experience::before {
content: "";
position: absolute;
inset: 0;
background:
linear-gradient(90deg, rgb(0 255 136 / 12%) 1px, transparent 1px),
linear-gradient(180deg, rgb(70 170 255 / 9%) 1px, transparent 1px),
linear-gradient(135deg, transparent 0 44%, rgb(255 211 93 / 20%) 44% 44.35%, transparent 44.35% 100%);
background-size: 36px 36px, 36px 36px, 100% 100%;
mask-image: linear-gradient(180deg, rgb(0 0 0 / 78%), rgb(0 0 0 / 28%));
pointer-events: none;
}
.omni-home__experience-copy,
.omni-home__experience-visual,
.omni-home__experience-actions {
position: relative;
z-index: 1;
}
.omni-home__experience-copy {
display: grid;
gap: 20px;
max-width: 940px;
}
.omni-home__experience-copy h2 {
max-width: 560px;
font-size: clamp(42px, 5.4vw, 84px);
}
.omni-home__experience-copy p {
max-width: 520px;
font-size: clamp(18px, 1.55vw, 24px);
}
.omni-home__experience-visual {
display: grid;
min-height: clamp(280px, 31vw, 420px);
place-items: center;
isolation: isolate;
}
.omni-home__experience-visual::before,
.omni-home__experience-visual::after {
content: "";
position: absolute;
inset: 8% 5%;
border: 1px solid rgb(0 255 136 / 28%);
transform: skewX(-12deg);
pointer-events: none;
}
.omni-home__experience-visual::after {
inset: 22% 15%;
border-color: rgb(70 170 255 / 24%);
transform: skewX(14deg);
}
.omni-home__experience-line {
position: absolute;
left: 5%;
right: 5%;
height: 2px;
background: linear-gradient(90deg, transparent, rgb(0 255 136 / 78%), rgb(70 170 255 / 68%), transparent);
transform: rotate(-8deg);
transform-origin: center;
z-index: 0;
}
.omni-home__experience-line.is-top {
top: 24%;
}
.omni-home__experience-line.is-bottom {
bottom: 25%;
background: linear-gradient(90deg, transparent, rgb(255 211 93 / 70%), rgb(170 95 255 / 66%), transparent);
transform: rotate(8deg);
}
.omni-home__experience-routes {
position: relative;
z-index: 1;
display: grid;
grid-template-columns: repeat(2, minmax(130px, 1fr));
gap: 16px;
width: min(100%, 520px);
}
.omni-home__experience-route {
--route-color: var(--accent);
display: grid;
gap: 7px;
min-height: 106px;
align-content: center;
border: 1px solid color-mix(in srgb, var(--route-color) 42%, transparent);
border-left-width: 5px;
border-radius: 8px;
background:
linear-gradient(135deg, color-mix(in srgb, var(--route-color) 19%, transparent), rgb(255 255 255 / 5%)),
rgb(6 12 14 / 72%);
color: #ffffff;
padding: 16px 18px;
box-shadow: 0 20px 46px rgb(0 0 0 / 26%);
backdrop-filter: blur(12px);
}
.omni-home__experience-route b {
font-size: clamp(24px, 2.4vw, 36px);
font-weight: 950;
line-height: 1;
}
.omni-home__experience-route small {
color: rgb(235 245 242 / 72%);
font-size: 13px;
font-weight: 850;
}
.omni-home__experience-route.is-green {
--route-color: #00ff88;
}
.omni-home__experience-route.is-cyan {
--route-color: #46aaff;
}
.omni-home__experience-route.is-violet {
--route-color: #aa5fff;
}
.omni-home__experience-route.is-amber {
--route-color: #ffd35d;
}
.omni-home__experience-actions {
display: grid;
gap: 14px;
min-width: min(100%, 320px);
}
.omni-home__experience-actions button {
width: 100%;
min-height: 64px;
border-color: rgb(255 255 255 / 20%);
background: rgb(255 255 255 / 7%);
color: #ffffff;
backdrop-filter: blur(14px);
}
.omni-home__experience-actions button.is-primary {
border-color: var(--accent);
background: var(--accent);
color: #061014;
}
@media (max-width: 980px) {
.omni-home__shell {
align-items: start;
padding: 34px 18px 48px;
}
.omni-home__hero {
grid-template-columns: 1fr;
}
.omni-home__carousel {
width: 100%;
min-height: 0;
transform: none;
}
.omni-home__carousel-stage {
min-height: 0;
}
.omni-home__feature-page,
.omni-home__experience {
grid-template-columns: 1fr;
}
.omni-home__feature-page {
min-height: var(--home-section-min-height);
padding-block: 48px 86px;
}
.omni-home__feature-copy {
max-width: 720px;
}
.omni-home__feature-visual {
min-height: 0;
max-height: none;
}
.omni-home__feature-stats {
right: 22px;
left: 22px;
max-width: none;
justify-content: flex-start;
}
.omni-home__experience-actions {
width: min(100%, 520px);
}
}
@media (max-width: 560px) {
.omni-home__copy h1 {
font-size: 30px;
}
.omni-home__actions,
.omni-home__entry {
width: 100%;
}
.omni-home__actions {
grid-template-columns: 1fr;
}
.omni-home__carousel {
padding: 0;
}
.omni-home__carousel-stage {
min-height: 0;
}
.omni-home__carousel-stage img {
width: 82%;
}
.omni-home__feature-page,
.omni-home__experience {
padding-inline: 18px;
}
.omni-home__feature-copy h2,
.omni-home__experience-copy h2 {
font-size: 34px;
}
.omni-home__feature-copy p,
.omni-home__experience-copy p {
font-size: 16px;
}
.omni-home__feature-copy button,
.omni-home__experience-actions button {
width: 100%;
min-height: 56px;
font-size: 16px;
}
.omni-home__feature-visual {
min-height: 0;
border-radius: 12px;
}
.omni-home__feature-stats {
bottom: 34px;
}
.omni-home__feature-stats span {
min-height: 32px;
font-size: 12px;
}
}