Files
omniai-web/src/styles/pages/home.css
T
stringadmin f5a75074a4 feat: 邮箱注册验证 + 9项功能修复与优化
【认证系统】
- 新增邮箱验证码注册/登录流程 (sendEmailCode / verifyEmail / forgotPassword / resetPassword)
- register-email 现在需要验证码
- 服务端新增 email_verification_codes 表 + patch-email-verification.js
- App.tsx 登录后 emailVerified 检查提醒
- keyServerClient token 显式传递修复 401 错误

【电商模块】
- 自动推进: 策划完成后自动生成分镜图/视频
- 模特图选项 (性别/年龄/种族/体型/场景) 注入 AI 提示词
- 任务持久化指纹修复 (图片数量替代 blob URL)
- 新增「视频换装」入口 (happyhorse-1.0-video-edit)

【剧本评分】
- 新增 .docx/.doc Word 文档支持 (ZIP解压+XML提取)
- 历史记录支持点击查看/恢复评测结果

【画布】
- ReactFlow 节点禁止内置拖拽避免冲突
- 连接线拖拽弹窗优化 (预览线不消失, 弹窗跟踪鼠标)

【页面修复】
- 首页轮播图改为 aspect-ratio: 16/9 解决尺寸问题
- 资产库新增悬停删除按钮
- scriptEvalClient 改用服务端 /api/ai/chat 端点
- TokenUsagePage 未登录跳过 API 调用
2026-06-03 20:19:07 +08:00

1229 lines
27 KiB
CSS

.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: auto;
aspect-ratio: 16 / 9;
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: auto;
aspect-ratio: 16 / 9;
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-label {
position: absolute;
bottom: 12px;
left: 14px;
z-index: 2;
padding: 4px 12px;
border-radius: 999px;
background: rgba(var(--accent-rgb, 0, 255, 136), 0.16);
border: 1px solid rgba(var(--accent-rgb, 0, 255, 136), 0.24);
color: var(--fg-body, #f3f5f2);
font-size: 12px;
font-weight: 900;
white-space: nowrap;
}
.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-model::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;
transition: transform 280ms var(--ease-out-expo, cubic-bezier(0.16, 1, 0.3, 1)),
filter 280ms ease;
}
.omni-home__feature-visual:hover img {
transform: scale(1.03);
filter: saturate(1.1) contrast(1.06) brightness(1.04);
}
.omni-home__feature-page.is-model .omni-home__feature-visual {
aspect-ratio: 16 / 9;
min-height: clamp(360px, 36vw, 620px);
max-height: min(68vh, 680px);
border-color: rgb(255 255 255 / 14%);
border-radius: 8px;
background: #0a0b12;
box-shadow:
0 34px 90px rgb(0 0 0 / 42%),
inset 0 1px 0 rgb(255 255 255 / 7%);
}
.omni-home__feature-page.is-ecommerce .omni-home__feature-visual {
aspect-ratio: 16 / 9;
min-height: clamp(360px, 36vw, 620px);
max-height: min(68vh, 680px);
border-color: rgb(255 255 255 / 14%);
border-radius: 8px;
background: #101214;
box-shadow:
0 34px 90px rgb(0 0 0 / 42%),
inset 0 1px 0 rgb(255 255 255 / 7%);
}
.omni-home-ecommerce-showcase {
position: relative;
isolation: isolate;
display: grid;
grid-template-columns: minmax(240px, 0.86fr) minmax(360px, 1.14fr);
grid-template-rows: auto 1fr;
gap: clamp(16px, 2vw, 28px);
width: 100%;
height: 100%;
overflow: hidden;
padding: clamp(22px, 3vw, 38px);
background:
linear-gradient(145deg, rgb(255 255 255 / 5%), transparent 28%),
linear-gradient(180deg, #181b1d 0%, #0d0f10 100%);
}
.omni-home-ecommerce-showcase__depth,
.omni-home-ecommerce-showcase__grain {
position: absolute;
inset: 0;
pointer-events: none;
}
.omni-home-ecommerce-showcase__depth {
z-index: -2;
background:
linear-gradient(90deg, rgb(255 255 255 / 5%) 1px, transparent 1px),
linear-gradient(180deg, rgb(255 255 255 / 4%) 1px, transparent 1px),
radial-gradient(circle at 50% 50%, transparent 0 42%, rgb(0 0 0 / 36%) 78%),
linear-gradient(140deg, rgb(0 255 136 / 10%), transparent 40%);
background-size: 32px 32px, 32px 32px, 100% 100%, 100% 100%;
}
.omni-home-ecommerce-showcase__grain {
z-index: -1;
opacity: 0.22;
background:
repeating-linear-gradient(0deg, rgb(255 255 255 / 4%) 0 1px, transparent 1px 4px),
repeating-linear-gradient(90deg, rgb(255 255 255 / 3%) 0 1px, transparent 1px 5px);
mix-blend-mode: soft-light;
}
.omni-home-ecommerce-showcase__prompt {
display: grid;
align-content: center;
gap: 8px;
min-height: 152px;
border: 1px solid rgb(0 255 136 / 42%);
border-radius: 8px;
background:
linear-gradient(135deg, rgb(0 255 136 / 12%), rgb(255 255 255 / 7%)),
rgb(18 21 22 / 84%);
padding: clamp(18px, 2.2vw, 26px);
box-shadow:
0 0 0 1px rgb(0 255 136 / 10%),
0 20px 58px rgb(0 255 136 / 10%),
inset 0 1px 0 rgb(255 255 255 / 10%);
backdrop-filter: blur(20px);
}
.omni-home-ecommerce-showcase__prompt span {
color: rgb(0 255 136 / 86%);
font-size: clamp(13px, 1vw, 16px);
font-weight: 900;
}
.omni-home-ecommerce-showcase__prompt strong {
color: #f7faf8;
font-size: clamp(26px, 2.5vw, 44px);
font-weight: 950;
line-height: 1.08;
}
.omni-home-ecommerce-showcase__prompt p {
max-width: 420px;
margin: 0;
color: rgb(232 238 236 / 76%);
font-size: clamp(14px, 1.18vw, 18px);
font-weight: 700;
line-height: 1.55;
}
.omni-home-ecommerce-showcase__tools {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
align-self: end;
gap: 12px;
}
.omni-home-ecommerce-showcase__tool {
display: grid;
gap: 6px;
min-height: 92px;
align-content: center;
border: 1px solid rgb(255 255 255 / 12%);
border-radius: 8px;
background: rgb(255 255 255 / 7%);
padding: 15px 16px;
box-shadow: 0 18px 42px rgb(0 0 0 / 20%);
backdrop-filter: blur(20px);
transition:
transform 220ms cubic-bezier(0.16, 1, 0.3, 1),
border-color 220ms ease,
background 220ms ease;
}
.omni-home-ecommerce-showcase__tool:hover {
border-color: rgb(0 255 136 / 36%);
background: rgb(0 255 136 / 9%);
transform: translateY(-3px) scale(1.01);
}
.omni-home-ecommerce-showcase__tool b {
color: #ffffff;
font-size: clamp(20px, 1.7vw, 28px);
font-weight: 950;
line-height: 1;
}
.omni-home-ecommerce-showcase__tool small {
color: rgb(232 238 236 / 58%);
font-size: clamp(12px, 1vw, 15px);
font-weight: 800;
}
.omni-home-ecommerce-showcase__gallery {
position: relative;
grid-row: 1 / 3;
min-height: 0;
}
.omni-home-ecommerce-showcase__shot {
position: absolute;
display: grid;
grid-template-rows: minmax(0, 1fr) auto;
overflow: hidden;
border: 1px solid rgb(255 255 255 / 14%);
border-radius: 8px;
background: rgb(255 255 255 / 8%);
box-shadow:
0 24px 62px rgb(0 0 0 / 32%),
inset 0 1px 0 rgb(255 255 255 / 8%);
backdrop-filter: blur(20px);
transition:
transform 240ms cubic-bezier(0.16, 1, 0.3, 1),
border-color 220ms ease,
box-shadow 220ms ease;
}
.omni-home-ecommerce-showcase__shot:hover {
border-color: rgb(0 255 136 / 32%);
box-shadow: 0 30px 76px rgb(0 0 0 / 40%);
transform: translateY(-4px) scale(1.015);
}
.omni-home-ecommerce-showcase__shot.is-1 {
z-index: 3;
top: 3%;
left: 18%;
width: 61%;
height: 65%;
}
.omni-home-ecommerce-showcase__shot.is-2 {
z-index: 2;
bottom: 2%;
left: 0;
width: 47%;
height: 43%;
}
.omni-home-ecommerce-showcase__shot.is-3 {
z-index: 2;
right: 0;
bottom: 0;
width: 48%;
height: 45%;
}
.omni-home-ecommerce-showcase__shot img {
width: 100%;
height: 100%;
min-height: 0;
object-fit: cover;
object-position: center;
filter: saturate(0.96) contrast(1.02);
transform: none;
}
.omni-home-ecommerce-showcase__shot:hover img {
transform: none;
filter: saturate(1.02) contrast(1.04);
}
.omni-home-ecommerce-showcase__shot > div {
display: grid;
gap: 3px;
border-top: 1px solid rgb(255 255 255 / 10%);
background: rgb(12 14 15 / 88%);
padding: 12px 14px 13px;
}
.omni-home-ecommerce-showcase__shot span {
justify-self: start;
border: 1px solid rgb(0 255 136 / 30%);
border-radius: 999px;
background: rgb(0 255 136 / 10%);
color: rgb(0 255 136 / 92%);
padding: 3px 9px;
font-size: 12px;
font-weight: 950;
line-height: 1;
}
.omni-home-ecommerce-showcase__shot strong {
color: #f7faf8;
font-size: clamp(15px, 1.15vw, 20px);
font-weight: 950;
line-height: 1.15;
}
.omni-home-ecommerce-showcase__shot small {
color: rgb(232 238 236 / 58%);
font-size: clamp(11px, 0.92vw, 14px);
font-weight: 800;
}
.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);
cursor: pointer;
transition: transform 200ms var(--ease-out-expo, cubic-bezier(0.16, 1, 0.3, 1)),
box-shadow 200ms ease;
}
.omni-home__experience-route:hover {
transform: translateY(-2px);
box-shadow: 0 24px 52px rgb(0 0 0 / 32%);
}
.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-page.is-model .omni-home__feature-visual,
.omni-home__feature-page.is-ecommerce .omni-home__feature-visual {
min-height: 620px;
}
.omni-home-ecommerce-showcase {
grid-template-columns: 1fr;
grid-template-rows: auto auto minmax(360px, 1fr);
}
.omni-home-ecommerce-showcase__gallery {
grid-row: auto;
min-height: 360px;
}
.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-page.is-ecommerce .omni-home__feature-visual {
min-height: 0;
aspect-ratio: auto;
border-radius: 8px;
}
.omni-home-ecommerce-showcase {
gap: 14px;
padding: 14px;
}
.omni-home-ecommerce-showcase__prompt {
min-height: 130px;
}
.omni-home-ecommerce-showcase__tools {
grid-template-columns: 1fr 1fr;
gap: 8px;
}
.omni-home-ecommerce-showcase__tool {
min-height: 78px;
padding: 12px;
}
.omni-home-ecommerce-showcase__gallery {
display: grid;
gap: 12px;
min-height: 0;
}
.omni-home-ecommerce-showcase__shot,
.omni-home-ecommerce-showcase__shot.is-1,
.omni-home-ecommerce-showcase__shot.is-2,
.omni-home-ecommerce-showcase__shot.is-3 {
position: relative;
inset: auto;
width: 100%;
height: auto;
aspect-ratio: 4 / 3;
}
.omni-home__feature-stats {
bottom: 34px;
}
.omni-home__feature-stats span {
min-height: 32px;
font-size: 12px;
}
}