Initial commit: OmniAI Web Frontend

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-06-02 12:38:01 +08:00
commit bedee3ba8d
183 changed files with 94805 additions and 0 deletions
+2
View File
@@ -0,0 +1,2 @@
/* Compatibility shim: app-wide styles are layered through index.css. */
@import "./index.css";
+43
View File
@@ -0,0 +1,43 @@
* {
box-sizing: border-box;
}
html,
body,
#root {
width: 100%;
height: 100%;
margin: 0;
}
body {
min-width: 320px;
overflow: hidden;
background: var(--page-bg);
color: var(--text);
font-family: var(--font-sans);
letter-spacing: 0;
}
button,
textarea,
input {
font: inherit;
}
button {
border: 0;
}
button:focus-visible,
textarea:focus-visible,
input:focus-visible {
outline: 2px solid rgba(var(--accent-rgb), 0.48);
outline-offset: 2px;
}
img,
video {
display: block;
max-width: 100%;
}
+34
View File
@@ -0,0 +1,34 @@
.dropzone {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 6px;
padding: 28px 16px;
border: 2px dashed var(--border-weak, #333);
border-radius: var(--radius-lg, 14px);
cursor: pointer;
transition: border-color 0.2s ease, background-color 0.2s ease;
text-align: center;
}
.dropzone:hover {
border-color: var(--accent, #0d9488);
background: color-mix(in srgb, var(--accent, #0d9488) 5%, transparent);
}
.dropzone--active {
border-color: var(--accent, #0d9488);
background: color-mix(in srgb, var(--accent, #0d9488) 10%, transparent);
border-style: solid;
}
.dropzone__label {
font-size: 14px;
color: var(--text-primary, #e5e5e5);
}
.dropzone__hint {
font-size: 12px;
color: var(--text-tertiary, #888);
}
+50
View File
@@ -0,0 +1,50 @@
.empty-state {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 12px;
padding: 48px 24px;
text-align: center;
}
.empty-state__illustration {
color: var(--fg-soft, #888);
margin-bottom: 8px;
opacity: 0.7;
}
.empty-state__title {
font-size: 16px;
font-weight: 600;
color: var(--fg-body, #e0e0e0);
}
.empty-state__desc {
font-size: 13px;
color: var(--fg-soft, #888);
max-width: 280px;
margin: 0;
line-height: 1.5;
}
.empty-state__action {
margin-top: 8px;
padding: 8px 20px;
border: none;
border-radius: 8px;
background: var(--accent, #0d9488);
color: #fff;
font-size: 13px;
font-weight: 500;
cursor: pointer;
transition: background 0.15s, transform 0.1s;
}
.empty-state__action:hover {
background: var(--accent-hover, #0f766e);
}
.empty-state__action:active {
transform: scale(0.97);
}
File diff suppressed because it is too large Load Diff
+69
View File
@@ -0,0 +1,69 @@
/* Global motion utilities and shared animations */
/* Stagger entrance for list/grid children */
@keyframes list-item-in {
from {
opacity: 0;
transform: translateY(8px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes scale-in {
from {
opacity: 0;
transform: scale(0.95);
}
to {
opacity: 1;
transform: scale(1);
}
}
@keyframes slide-up-in {
from {
opacity: 0;
transform: translateY(12px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes backdrop-in {
from { opacity: 0; }
to { opacity: 1; }
}
/* Stagger utility: apply to parent, children get delayed entrance */
.motion-stagger > * {
animation: list-item-in 280ms var(--ease-out-expo, cubic-bezier(0.16, 1, 0.3, 1)) both;
}
.motion-stagger > *:nth-child(1) { animation-delay: 0ms; }
.motion-stagger > *:nth-child(2) { animation-delay: 40ms; }
.motion-stagger > *:nth-child(3) { animation-delay: 80ms; }
.motion-stagger > *:nth-child(4) { animation-delay: 120ms; }
.motion-stagger > *:nth-child(5) { animation-delay: 160ms; }
.motion-stagger > *:nth-child(6) { animation-delay: 200ms; }
.motion-stagger > *:nth-child(7) { animation-delay: 240ms; }
.motion-stagger > *:nth-child(8) { animation-delay: 280ms; }
.motion-stagger > *:nth-child(9) { animation-delay: 320ms; }
.motion-stagger > *:nth-child(10) { animation-delay: 360ms; }
.motion-stagger > *:nth-child(n+11) { animation-delay: 400ms; }
/* Global reduced-motion override */
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
}
+17
View File
@@ -0,0 +1,17 @@
.page-transition {
position: relative;
flex: 1;
min-height: 0;
animation: page-fade-in 150ms ease-out both;
}
@keyframes page-fade-in {
from {
opacity: 0;
transform: translateY(4px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
+111
View File
@@ -0,0 +1,111 @@
/* Shared primitives for new CSS. Keep legacy component debt in legacy-components.css. */
.ui-surface {
border: 1px solid var(--border-subtle);
border-radius: var(--radius-lg);
background: var(--surface-panel);
box-shadow: var(--shadow-panel);
}
.ui-muted {
color: var(--text-muted);
}
.ui-focus-ring:focus-visible {
outline: 2px solid rgba(var(--accent-rgb), 0.48);
outline-offset: 2px;
}
.page-loading-skeleton {
display: flex;
flex-direction: column;
gap: 16px;
width: 100%;
height: 100%;
min-height: 200px;
padding: 32px;
}
.page-loading-skeleton__bar {
width: 40%;
height: 24px;
border-radius: 8px;
background: var(--surface-elevated, #222);
animation: skeleton-shimmer 1.4s ease infinite;
}
.page-loading-skeleton__row {
display: flex;
gap: 16px;
}
.page-loading-skeleton__card {
flex: 1;
height: 140px;
border-radius: 14px;
background: var(--surface-elevated, #222);
animation: skeleton-shimmer 1.4s ease infinite;
animation-delay: 0.15s;
}
.page-loading-skeleton__block {
width: 100%;
height: 200px;
border-radius: 14px;
background: var(--surface-elevated, #222);
animation: skeleton-shimmer 1.4s ease infinite;
animation-delay: 0.3s;
}
@keyframes skeleton-shimmer {
0%, 100% { opacity: 0.4; }
50% { opacity: 0.7; }
}
.page-transition-wrap {
width: 100%;
height: 100%;
min-height: 0;
}
.page-motion--exit {
animation: page-out 180ms ease both;
pointer-events: none;
}
.page-motion--exit .page-motion {
animation: none;
}
@keyframes page-out {
to { opacity: 0; transform: translateY(-6px); }
}
.page-loading-center {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
min-height: 200px;
gap: 12px;
}
.page-loading-center__text {
font: 400 13px/1 'PingFang SC', 'Microsoft YaHei UI', system-ui, sans-serif;
color: var(--text-muted, rgba(255,255,255,.45));
letter-spacing: 0.02em;
}
.page-loading-spinner {
width: 32px;
height: 32px;
border: 3px solid var(--border-subtle, #e5e5e5);
border-top-color: var(--accent, #0d9488);
border-radius: 50%;
animation: page-spin 0.7s linear infinite;
}
@keyframes page-spin {
to { transform: rotate(360deg); }
}
+399
View File
@@ -0,0 +1,399 @@
/* === Recharge Modal === */
.recharge-modal {
position: fixed;
inset: 0;
z-index: 1200;
display: grid;
place-items: center;
padding: 24px;
}
.recharge-modal__backdrop {
position: absolute;
inset: 0;
border: 0;
background: rgb(0 0 0 / 72%);
cursor: pointer;
backdrop-filter: blur(5px);
}
@keyframes rechargeModalIn {
from {
opacity: 0;
transform: translateY(12px) scale(0.98);
}
to {
opacity: 1;
transform: translateY(0) scale(1);
}
}
.recharge-modal__panel {
position: relative;
z-index: 1;
display: grid;
gap: 20px;
width: min(1300px, 100%);
max-height: calc(100vh - 32px);
overflow-y: auto;
border: 1px solid var(--border-subtle, rgb(255 255 255 / 10%));
border-radius: 20px;
background: var(--bg-surface, #171a1f);
color: var(--fg-body, #edf2f7);
padding: 28px;
box-shadow: 0 28px 80px rgb(0 0 0 / 44%);
animation: rechargeModalIn 180ms ease both;
scrollbar-color: rgba(var(--accent-rgb), 0.36) transparent;
}
.recharge-modal__header {
position: relative;
display: block;
padding: 0 168px 18px;
border-bottom: 1px solid var(--border-weak, rgb(255 255 255 / 7%));
text-align: center;
}
.recharge-modal__header > div {
max-width: 720px;
margin: 0 auto;
}
.recharge-modal__eyebrow {
color: var(--accent, #34d399);
font-size: 12px;
font-weight: 850;
}
.recharge-modal__header h2 {
margin: 4px 0 6px;
font-size: 22px;
font-weight: 900;
letter-spacing: 0;
}
.recharge-modal__header p {
margin: 0;
color: var(--fg-muted, #9ba7b7);
font-size: 13px;
line-height: 1.55;
}
.recharge-modal__balance {
position: absolute;
top: 8px;
right: 48px;
border: 1px solid rgba(var(--accent-rgb), 0.28);
border-radius: 999px;
background: rgba(var(--accent-rgb), 0.1);
color: var(--fg-body, #edf2f7);
padding: 8px 12px;
font-size: 12px;
font-weight: 850;
white-space: nowrap;
}
.recharge-modal__close {
position: absolute;
top: 4px;
right: 0;
display: grid;
place-items: center;
width: 34px;
height: 34px;
border: 1px solid transparent;
border-radius: 9px;
background: transparent;
color: var(--fg-muted, #9ba7b7);
cursor: pointer;
transition:
background 0.15s,
border-color 0.15s,
color 0.15s;
}
.recharge-modal__close:hover {
border-color: var(--border-subtle, rgb(255 255 255 / 10%));
background: var(--bg-hover, rgb(255 255 255 / 7%));
color: var(--fg-body, #edf2f7);
}
.recharge-modal__promo {
display: flex;
align-items: center;
justify-content: center;
gap: 12px;
border: 1px solid rgba(var(--accent-rgb), 0.24);
border-radius: 14px;
background:
linear-gradient(90deg, rgba(var(--accent-rgb), 0.16), rgba(var(--accent-rgb), 0.06)),
var(--bg-elevated, #20242b);
color: var(--fg-muted, #9ba7b7);
padding: 12px 16px;
font-size: 13px;
line-height: 1.45;
text-align: center;
}
.recharge-modal__promo strong {
color: var(--accent, #34d399);
font-weight: 950;
white-space: nowrap;
}
.recharge-modal__audience-tabs {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 8px;
border: 1px solid var(--border-subtle, rgb(255 255 255 / 10%));
border-radius: 12px;
background: var(--bg-inset, rgb(0 0 0 / 18%));
padding: 6px;
}
.recharge-modal__audience-tabs button {
min-height: 38px;
border: 1px solid transparent;
border-radius: 9px;
background: transparent;
color: var(--fg-muted, #9ba7b7);
cursor: pointer;
font: inherit;
font-size: 13px;
font-weight: 900;
}
.recharge-modal__audience-tabs button:hover {
border-color: var(--border-subtle, rgb(255 255 255 / 10%));
background: var(--bg-hover, rgb(255 255 255 / 7%));
color: var(--fg-body, #edf2f7);
}
.recharge-modal__audience-tabs button.is-active {
border-color: rgba(var(--accent-rgb), 0.48);
background: rgba(var(--accent-rgb), 0.16);
color: var(--accent, #34d399);
}
.recharge-modal__grid {
display: grid;
gap: 14px;
}
.recharge-modal__grid[data-audience="personal"] {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.recharge-modal__grid[data-audience="enterprise"] {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.recharge-modal__card {
position: relative;
display: flex;
min-width: 0;
min-height: 390px;
flex-direction: column;
gap: 12px;
border: 1px solid var(--border-subtle, rgb(255 255 255 / 10%));
border-radius: 14px;
background: var(--bg-elevated, #20242b);
padding: 18px;
}
.recharge-modal__card.is-selected {
border-color: rgba(var(--accent-rgb), 0.55);
box-shadow: 0 0 0 1px rgba(var(--accent-rgb), 0.16);
}
.recharge-modal__badge {
position: absolute;
top: 12px;
right: 12px;
border-radius: 999px;
background: var(--accent, #34d399);
color: #07110d;
padding: 4px 9px;
font-size: 11px;
font-weight: 900;
}
.recharge-modal__card-head {
display: flex;
align-items: center;
gap: 12px;
padding-right: 84px;
}
.recharge-modal__card-icon {
display: grid;
width: 42px;
height: 42px;
min-width: 42px;
place-items: center;
border-radius: 12px;
background: rgba(var(--accent-rgb), 0.12);
color: var(--accent, #34d399);
font-size: 18px;
}
.recharge-modal__card h3 {
margin: 0;
font-size: 17px;
font-weight: 900;
}
.recharge-modal__card-head span:not(.recharge-modal__card-icon) {
color: var(--fg-muted, #9ba7b7);
font-size: 12px;
font-weight: 800;
}
.recharge-modal__price strong {
color: var(--fg-body, #edf2f7);
font-size: 25px;
font-weight: 950;
}
.recharge-modal__period {
width: fit-content;
border: 1px solid rgba(var(--accent-rgb), 0.26);
border-radius: 999px;
background: rgba(var(--accent-rgb), 0.1);
color: var(--accent, #34d399);
padding: 4px 9px;
font-size: 12px;
font-weight: 900;
}
.recharge-modal__grant {
margin: 0;
border-radius: 10px;
background: var(--bg-inset, rgb(0 0 0 / 18%));
color: var(--fg-muted, #9ba7b7);
padding: 10px 12px;
font-size: 12px;
font-weight: 700;
line-height: 1.55;
}
.recharge-modal__diff-label {
width: fit-content;
color: var(--fg-body, #edf2f7);
font-size: 12px;
font-weight: 900;
}
.recharge-modal__features {
display: grid;
gap: 8px;
height: 92px;
margin: 0;
padding: 0;
padding-right: 6px;
overflow-y: auto;
list-style: none;
overscroll-behavior: contain;
scrollbar-width: none;
scrollbar-gutter: stable;
}
.recharge-modal__features::-webkit-scrollbar {
width: 0;
height: 0;
}
.recharge-modal__features li {
display: grid;
grid-template-columns: 14px minmax(0, 1fr);
gap: 8px;
color: var(--fg-muted, #9ba7b7);
font-size: 12px;
line-height: 1.45;
}
.recharge-modal__features .anticon {
margin-top: 2px;
color: var(--accent, #34d399);
font-size: 12px;
}
.recharge-modal__buy {
display: inline-flex;
align-items: center;
justify-content: center;
margin-top: auto;
min-height: 38px;
border: 0;
border-radius: 10px;
background: var(--accent, #34d399);
color: #07110d;
cursor: pointer;
font-size: 13px;
font-weight: 900;
}
.recharge-modal__buy.is-selected {
box-shadow: 0 0 0 1px rgba(var(--accent-rgb), 0.2), 0 10px 24px rgba(var(--accent-rgb), 0.18);
}
.recharge-modal__buy:hover {
filter: brightness(1.05);
}
.recharge-modal__rules {
border: 1px solid var(--border-subtle, rgb(255 255 255 / 10%));
border-radius: 14px;
background: var(--bg-elevated, #20242b);
padding: 16px 18px;
}
.recharge-modal__rules h3 {
margin: 0 0 10px;
font-size: 15px;
font-weight: 900;
}
.recharge-modal__rules ol {
display: grid;
gap: 8px;
margin: 0;
padding-left: 20px;
color: var(--fg-muted, #9ba7b7);
font-size: 12px;
line-height: 1.55;
}
@media (max-width: 980px) {
.recharge-modal__grid[data-audience="personal"],
.recharge-modal__grid[data-audience="enterprise"] {
grid-template-columns: 1fr;
}
}
@media (max-width: 640px) {
.recharge-modal {
padding: 12px;
}
.recharge-modal__panel {
padding: 18px;
}
.recharge-modal__header {
padding: 0 40px 16px;
}
.recharge-modal__balance {
position: static;
display: inline-flex;
margin-top: 12px;
}
.recharge-modal__promo {
align-items: flex-start;
flex-direction: column;
text-align: left;
}
}
+56
View File
@@ -0,0 +1,56 @@
@keyframes skeleton-shimmer {
0% { background-position: 120% 0; }
100% { background-position: -120% 0; }
}
.skeleton-shimmer {
background: linear-gradient(
90deg,
rgba(255, 255, 255, 0.04),
rgba(255, 255, 255, 0.1),
rgba(255, 255, 255, 0.04)
);
background-size: 220% 100%;
animation: skeleton-shimmer 1.2s ease-in-out infinite;
}
.skeleton-card {
display: flex;
flex-direction: column;
gap: 10px;
padding: 12px;
border-radius: var(--radius-lg, 14px);
background: var(--bg-elevated, #222);
}
.skeleton-card__thumb {
width: 100%;
aspect-ratio: 4 / 3;
border-radius: 8px;
}
.skeleton-card__body {
display: flex;
flex-direction: column;
gap: 8px;
padding: 4px 0;
}
.skeleton-card__title {
width: 60%;
height: 14px;
border-radius: 4px;
}
.skeleton-card__desc {
width: 85%;
height: 12px;
border-radius: 4px;
}
.skeleton-list {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
gap: 16px;
padding: 16px;
}
+108
View File
@@ -0,0 +1,108 @@
.app-toast-container {
position: fixed;
bottom: 24px;
left: 50%;
transform: translateX(-50%);
z-index: 9999;
display: flex;
flex-direction: column;
gap: 8px;
pointer-events: none;
max-width: min(420px, calc(100vw - 32px));
}
.app-toast {
display: flex;
align-items: center;
gap: 8px;
padding: 10px 14px;
border-radius: 10px;
background: rgba(22, 22, 22, 0.95);
backdrop-filter: blur(8px);
font-size: 13px;
color: var(--text-primary, #e5e5e5);
pointer-events: auto;
animation: toast-in 220ms ease-out;
border: 1px solid rgba(255, 255, 255, 0.08);
}
.app-toast--success {
border-color: rgba(16, 185, 129, 0.3);
}
.app-toast--error {
border-color: rgba(239, 68, 68, 0.3);
}
.app-toast__icon {
flex-shrink: 0;
width: 20px;
height: 20px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
font-size: 11px;
font-weight: 700;
}
.app-toast--success .app-toast__icon {
background: rgba(16, 185, 129, 0.2);
color: #10b981;
}
.app-toast--error .app-toast__icon {
background: rgba(239, 68, 68, 0.2);
color: #ef4444;
}
.app-toast--info .app-toast__icon {
background: rgba(99, 102, 241, 0.2);
color: #818cf8;
}
.app-toast__msg {
flex: 1;
line-height: 1.4;
}
.app-toast__retry {
flex-shrink: 0;
padding: 3px 10px;
border: 1px solid rgba(255, 255, 255, 0.15);
border-radius: 6px;
background: transparent;
color: var(--text-primary, #e5e5e5);
font-size: 12px;
cursor: pointer;
transition: background 0.15s;
}
.app-toast__retry:hover {
background: rgba(255, 255, 255, 0.08);
}
.app-toast__close {
flex-shrink: 0;
width: 20px;
height: 20px;
display: flex;
align-items: center;
justify-content: center;
border: none;
border-radius: 50%;
background: transparent;
color: var(--text-tertiary, #888);
font-size: 14px;
cursor: pointer;
transition: color 0.15s;
}
.app-toast__close:hover {
color: var(--text-primary, #e5e5e5);
}
@keyframes toast-in {
from { opacity: 0; transform: translateY(12px); }
to { opacity: 1; transform: translateY(0); }
}
+35
View File
@@ -0,0 +1,35 @@
@import "./tokens.css";
@import "./base/reset.css";
@import "./shell/app-shell.css";
@import "./components/primitives.css";
@import "./components/legacy-components.css";
@import "./pages/home.css";
@import "./pages/welcome-splash.css";
@import "./pages/workbench.css";
@import "./pages/ecommerce.css";
@import "./pages/ecommerce-video.css";
@import "./pages/community.css";
@import "./pages/assets.css";
@import "./pages/more.css";
@import "./pages/avatar-console.css";
@import "./pages/more-tools.css";
@import "./pages/studio-layout.css";
@import "./pages/image-workbench.css";
@import "./pages/subtitle-removal.css";
@import "./pages/size-template.css";
@import "./pages/script-tokens.css";
@import "./pages/profile.css";
@import "./pages/canvas.css";
@import "./pages/agent.css";
@import "./pages/compliance.css";
@import "./pages/provider-health.css";
@import "./pages/legacy-pages.css";
@import "./components/recharge-modal.css";
@import "./components/dropzone.css";
@import "./components/skeleton.css";
@import "./components/toast.css";
@import "./components/empty-state.css";
@import "./components/page-transition.css";
@import "./components/motion.css";
@import "./themes/dark-green.css";
@import "./pages/local-theme-parity.css";
+2
View File
@@ -0,0 +1,2 @@
/* Compatibility shim: page styles are layered through index.css. */
@import "./index.css";
+1
View File
@@ -0,0 +1 @@
/* Agent page rules move here as they are retired from legacy-pages.css. */
+211
View File
@@ -0,0 +1,211 @@
/* Asset library page rules move here as they are retired from legacy-pages.css. */
.asset-context-menu {
position: fixed;
z-index: 200;
min-width: 140px;
padding: 4px;
background: #1a1a1a;
border: 1px solid #333;
border-radius: 8px;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
}
.asset-context-menu button {
display: flex;
align-items: center;
gap: 8px;
width: 100%;
padding: 8px 12px;
border: 0;
border-radius: 6px;
background: transparent;
color: #ef4444;
font-size: 13px;
cursor: pointer;
transition: background 0.15s;
}
.asset-context-menu button:hover {
background: rgba(239, 68, 68, 0.1);
}
.asset-preview-modal {
position: fixed;
inset: 0;
z-index: 140;
display: grid;
place-items: center;
padding: 32px;
color: var(--fg-body);
}
.asset-preview-modal__backdrop {
position: absolute;
inset: 0;
border: 0;
background: rgba(0, 0, 0, 0.72);
cursor: zoom-out;
backdrop-filter: none;
animation: backdrop-in 150ms ease both;
}
.asset-preview-modal__panel {
position: relative;
z-index: 1;
display: grid;
grid-template-rows: auto minmax(0, 1fr) auto;
width: min(1120px, calc(100vw - 64px));
animation: scale-in 200ms var(--ease-out-expo, cubic-bezier(0.16, 1, 0.3, 1)) both;
max-height: min(820px, calc(100vh - 64px));
overflow: hidden;
border: 1px solid rgba(var(--accent-rgb), 0.22);
border-radius: 18px;
background: color-mix(in srgb, var(--bg-panel) 96%, transparent);
box-shadow: none;
}
.asset-preview-modal__head {
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
min-height: 58px;
padding: 12px 14px 12px 18px;
border-bottom: 1px solid var(--border-weak);
background: rgba(255, 255, 255, 0.035);
}
.asset-preview-modal__head > div {
display: grid;
gap: 4px;
min-width: 0;
}
.asset-preview-modal__head strong,
.asset-preview-modal__head span {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.asset-preview-modal__head strong {
color: var(--fg-body);
font-size: 15px;
font-weight: 1000;
}
.asset-preview-modal__head span {
color: var(--fg-muted);
font-size: 12px;
font-weight: 800;
}
.asset-preview-modal__close {
display: inline-grid;
place-items: center;
width: 36px;
min-width: 36px;
height: 36px;
border: 1px solid var(--border-subtle);
border-radius: 10px;
background: var(--bg-inset);
color: var(--fg-muted);
cursor: pointer;
transition:
background 160ms ease,
border-color 160ms ease,
color 160ms ease,
transform 160ms ease;
}
.asset-preview-modal__close:hover {
border-color: rgba(var(--accent-rgb), 0.44);
background: rgba(var(--accent-rgb), 0.12);
color: var(--accent);
transform: translateY(-1px);
}
.asset-preview-modal__body {
display: grid;
place-items: center;
min-height: 0;
padding: 20px;
background: var(--bg-shell);
}
.asset-preview-modal__body img,
.asset-preview-modal__body video {
display: block;
width: auto;
max-width: 100%;
height: auto;
max-height: calc(100vh - 210px);
border-radius: 12px;
object-fit: contain;
box-shadow: none;
}
.asset-preview-modal__empty {
display: grid;
justify-items: center;
gap: 10px;
color: var(--fg-muted);
text-align: center;
}
.asset-preview-modal__empty .anticon {
color: var(--accent);
font-size: 32px;
}
.asset-preview-modal__empty strong {
color: var(--fg-body);
font-size: 15px;
}
.asset-preview-modal__meta {
display: flex;
flex-wrap: wrap;
gap: 8px;
padding: 12px 18px;
border-top: 1px solid var(--border-weak);
background: rgba(255, 255, 255, 0.035);
}
.asset-preview-modal__meta span {
display: inline-flex;
align-items: center;
min-height: 24px;
padding: 0 9px;
border-radius: 999px;
background: var(--bg-inset);
color: var(--fg-soft);
font-size: 12px;
font-weight: 800;
}
.asset-card--desktop {
cursor: zoom-in;
}
@media (max-width: 720px) {
.asset-preview-modal {
padding: 14px;
}
.asset-preview-modal__panel {
width: calc(100vw - 28px);
max-height: calc(100vh - 28px);
border-radius: 14px;
}
.asset-preview-modal__body {
padding: 12px;
}
.asset-preview-modal__body img,
.asset-preview-modal__body video {
max-height: calc(100vh - 190px);
}
}
File diff suppressed because it is too large Load Diff
+711
View File
@@ -0,0 +1,711 @@
.studio-canvas-project-bar {
position: absolute;
top: 14px;
right: 14px;
z-index: 80;
display: inline-flex;
align-items: center;
gap: 10px;
max-width: calc(100vw - 104px);
min-height: 44px;
padding: 6px 6px 6px 14px;
border: 1px solid var(--border-subtle);
border-radius: 14px;
background: var(--bg-panel);
color: var(--fg-muted);
box-shadow: var(--shadow-tight);
}
.studio-canvas .react-flow__attribution {
display: none;
}
.canvas-page .studio-canvas-video-player {
position: absolute;
inset: 0;
overflow: hidden;
border-radius: inherit;
background: #050806;
}
.canvas-page .studio-canvas-video-player video {
display: block;
width: 100%;
height: 100%;
object-fit: cover;
}
.canvas-page .studio-canvas-video-player__shade {
position: absolute;
inset: auto 0 0;
height: 38%;
background: rgba(0, 0, 0, 0.62);
pointer-events: none;
}
.canvas-page .studio-canvas-video-player__center,
.canvas-page .studio-canvas-video-player__button {
display: inline-grid;
place-items: center;
border: 1px solid rgba(255, 255, 255, 0.18);
background: rgba(0, 0, 0, 0.48);
color: rgba(255, 255, 255, 0.92);
cursor: pointer;
transition:
background 150ms ease,
border-color 150ms ease,
color 150ms ease,
opacity 150ms ease,
transform 150ms ease;
}
.canvas-page .studio-canvas-video-player__center {
position: absolute;
left: 50%;
top: 50%;
z-index: 8;
width: 46px;
height: 46px;
border-radius: 999px;
font-size: 22px;
transform: translate(-50%, -50%);
}
.canvas-page .studio-canvas-video-player.is-playing:not(:hover) .studio-canvas-video-player__center {
opacity: 0;
pointer-events: none;
transform: translate(-50%, -50%) scale(0.92);
}
.canvas-page .studio-canvas-video-player__controls {
position: absolute;
left: 10px;
right: 10px;
bottom: 10px;
z-index: 9;
display: grid;
grid-template-columns: 30px auto minmax(90px, 1fr) 30px;
align-items: center;
gap: 8px;
min-height: 34px;
padding: 5px 7px;
border: 1px solid rgba(255, 255, 255, 0.12);
border-radius: 12px;
background: rgba(5, 9, 7, 0.58);
box-shadow: none;
backdrop-filter: none;
pointer-events: auto;
}
.canvas-page .studio-canvas-video-player__button {
width: 28px;
height: 28px;
border-radius: 9px;
font-size: 14px;
}
.canvas-page .studio-canvas-video-player__center:hover,
.canvas-page .studio-canvas-video-player__button:hover {
border-color: rgba(var(--accent-rgb), 0.48);
background: rgba(var(--accent-rgb), 0.18);
color: #fff;
transform: translateY(-1px);
}
.canvas-page .studio-canvas-video-player__center:hover {
transform: translate(-50%, -50%) scale(1.04);
}
.canvas-page .studio-canvas-video-player__time {
color: rgba(255, 255, 255, 0.86);
font-size: 11px;
font-weight: 900;
line-height: 1;
white-space: nowrap;
}
.canvas-page .studio-canvas-video-player__seek {
width: 100%;
min-width: 0;
height: 4px;
accent-color: var(--accent);
cursor: pointer;
}
.canvas-page .studio-canvas-video-player__seek::-webkit-slider-thumb {
width: 12px;
height: 12px;
border-radius: 999px;
}
.studio-canvas-project-bar__identity {
display: grid;
gap: 2px;
min-width: 0;
max-width: min(320px, 34vw);
}
.studio-canvas-project-bar__name {
display: flex;
align-items: center;
min-width: 0;
color: var(--fg-body);
font-size: 13px;
font-weight: 1000;
line-height: 1.2;
}
.studio-canvas-project-bar__name span {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.studio-canvas-project-bar__name-form {
display: inline-flex;
align-items: center;
gap: 6px;
min-width: min(260px, 32vw);
}
.studio-canvas-project-bar__name-form input {
width: min(220px, 28vw);
height: 30px;
padding: 0 10px;
border: 1px solid rgba(var(--accent-rgb), 0.42);
border-radius: 9px;
background: var(--bg-inset);
color: var(--fg-body);
font-size: 13px;
font-weight: 900;
}
.studio-canvas-project-bar__name-form button,
.studio-canvas-project-bar__rename {
display: inline-grid;
place-items: center;
width: 30px;
min-width: 30px;
height: 30px;
border: 1px solid var(--border-subtle);
border-radius: 9px;
background: var(--bg-inset);
color: var(--fg-muted);
cursor: pointer;
transition:
background 160ms ease,
border-color 160ms ease,
color 160ms ease,
transform 160ms ease;
}
.studio-canvas-project-bar__name-form button:hover,
.studio-canvas-project-bar__rename:hover {
border-color: rgba(var(--accent-rgb), 0.42);
background: rgba(var(--accent-rgb), 0.12);
color: var(--accent);
transform: translateY(-1px);
}
.studio-canvas-project-bar__status {
max-width: min(360px, 42vw);
overflow: hidden;
font-size: 12px;
font-weight: 800;
text-overflow: ellipsis;
white-space: nowrap;
}
.studio-canvas-project-bar__status.is-success {
color: var(--accent);
}
.studio-canvas-project-bar__status.is-error {
color: var(--error);
}
.studio-canvas-project-bar__save {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 7px;
min-width: 84px;
min-height: 34px;
padding: 0 13px;
border: 1px solid var(--accent);
border-radius: 11px;
background: var(--accent);
color: #061014;
font-size: 13px;
font-weight: 900;
cursor: pointer;
transition: background 160ms ease, border-color 160ms ease, transform 160ms ease;
}
.studio-canvas-project-bar__save:hover:not(:disabled) {
border-color: var(--accent-hover, var(--accent));
background: var(--accent-hover, var(--accent));
transform: translateY(-1px);
}
.studio-canvas-project-bar__save:disabled {
cursor: wait;
opacity: 0.72;
}
.studio-canvas-project-bar__autosave-status {
display: inline-flex;
align-items: center;
font-size: 11px;
font-weight: 500;
padding: 0 8px;
opacity: 0;
transition: opacity 0.3s ease;
}
.studio-canvas-project-bar__autosave-status--saving {
opacity: 1;
color: var(--fg-muted, #888);
}
.studio-canvas-project-bar__autosave-status--saved {
opacity: 1;
color: #10b981;
}
.studio-canvas-project-bar__autosave-status--error {
opacity: 1;
color: #ef4444;
}
.studio-canvas-project-bar__export,
.studio-canvas-project-bar__publish {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 7px;
min-height: 34px;
padding: 0 12px;
border-radius: 11px;
font-size: 13px;
font-weight: 900;
cursor: pointer;
transition:
background 160ms ease,
border-color 160ms ease,
color 160ms ease,
transform 160ms ease,
opacity 160ms ease;
}
.studio-canvas-project-bar__export {
border: 1px solid var(--border-subtle);
background: var(--bg-inset);
color: var(--fg-body);
}
.studio-canvas-project-bar__export:hover {
border-color: rgba(var(--accent-rgb), 0.44);
background: rgba(var(--accent-rgb), 0.12);
color: var(--accent);
transform: translateY(-1px);
}
.studio-canvas-project-bar__publish {
border: 1px solid #35d27d;
background: #35d27d;
color: #06140b;
}
.studio-canvas-project-bar__publish:hover:not(:disabled) {
border-color: #4ade80;
background: #4ade80;
transform: translateY(-1px);
}
.studio-canvas-project-bar__publish:disabled {
cursor: wait;
opacity: 0.72;
}
.studio-canvas-project-bar__recent {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 7px;
min-height: 34px;
padding: 0 12px;
border: 1px solid var(--border-subtle);
border-radius: 11px;
background: var(--bg-inset);
color: var(--fg-body);
font-size: 13px;
font-weight: 900;
cursor: pointer;
transition:
background 160ms ease,
border-color 160ms ease,
color 160ms ease,
transform 160ms ease;
}
.studio-canvas-project-bar__recent em {
display: inline-grid;
place-items: center;
min-width: 18px;
height: 18px;
padding: 0 5px;
border-radius: 999px;
background: var(--accent);
color: #061014;
font-size: 11px;
font-style: normal;
font-weight: 1000;
}
.studio-canvas-project-bar__recent:hover,
.studio-canvas-project-bar__recent.is-active {
border-color: rgba(var(--accent-rgb), 0.44);
background: rgba(var(--accent-rgb), 0.12);
color: var(--accent);
transform: translateY(-1px);
}
.studio-canvas-recent-drawer {
position: absolute;
top: 72px;
right: 14px;
z-index: 82;
display: grid;
grid-template-rows: 1fr;
width: min(360px, calc(100vw - 104px));
height: min(284px, calc(100vh - 92px));
min-height: 0;
overflow: hidden;
border: 1px solid var(--border-subtle);
border-radius: 16px;
background: color-mix(in srgb, var(--bg-panel) 94%, transparent);
color: var(--fg-body);
box-shadow: none;
backdrop-filter: none;
}
.studio-canvas-recent-drawer__list {
display: grid;
align-content: start;
gap: 10px;
min-height: 0;
height: 100%;
padding: 12px;
overflow-y: auto;
}
.studio-canvas-recent-project {
display: grid;
grid-template-columns: 76px 1fr;
gap: 12px;
width: 100%;
min-height: 84px;
padding: 9px;
border: 1px solid var(--border-subtle);
border-radius: 14px;
background: var(--bg-inset);
color: var(--fg-body);
text-align: left;
cursor: pointer;
transition:
background 160ms ease,
border-color 160ms ease,
transform 160ms ease;
}
.studio-canvas-recent-project:hover:not(:disabled) {
border-color: rgba(var(--accent-rgb), 0.46);
background: rgba(var(--accent-rgb), 0.1);
transform: translateX(-2px);
}
.studio-canvas-recent-project:disabled {
cursor: not-allowed;
opacity: 0.6;
}
.studio-canvas-recent-project img,
.studio-canvas-recent-project__thumb {
width: 76px;
height: 66px;
overflow: hidden;
border: 1px solid var(--border-subtle);
border-radius: 10px;
background: var(--bg-elevated);
}
.studio-canvas-recent-project img {
object-fit: cover;
}
.studio-canvas-recent-project__thumb {
display: grid;
place-items: center;
color: var(--accent);
font-size: 22px;
}
.studio-canvas-recent-project__body {
display: grid;
align-content: center;
gap: 4px;
min-width: 0;
}
.studio-canvas-recent-project__body strong,
.studio-canvas-recent-project__body small,
.studio-canvas-recent-project__body em {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.studio-canvas-recent-project__body strong {
color: var(--fg-body);
font-size: 13px;
font-weight: 1000;
}
.studio-canvas-recent-project__body small {
color: var(--fg-muted);
font-size: 12px;
font-weight: 800;
}
.studio-canvas-recent-project__body em {
color: var(--fg-soft);
font-size: 11px;
font-style: normal;
font-weight: 800;
}
.studio-canvas-recent-drawer__empty {
display: grid;
justify-items: center;
gap: 8px;
padding: 54px 20px;
color: var(--fg-muted);
text-align: center;
}
.studio-canvas-recent-drawer__empty .anticon {
color: var(--accent);
font-size: 30px;
}
.studio-canvas-recent-drawer__empty strong {
color: var(--fg-body);
font-size: 15px;
}
.studio-canvas-recent-drawer__empty span {
font-size: 12px;
font-weight: 800;
}
.studio-canvas-recent-drawer__community {
display: none;
min-height: 42px;
margin: 0 12px 12px;
border: 1px solid rgba(var(--accent-rgb), 0.44);
border-radius: 12px;
background: rgba(var(--accent-rgb), 0.12);
color: var(--accent);
font-size: 13px;
font-weight: 1000;
cursor: pointer;
}
.studio-canvas-recent-drawer__community:hover {
background: var(--accent);
color: #061014;
}
.studio-tool-layout--canvas-empty {
grid-template-rows: minmax(0, 1fr);
grid-template-areas: "canvas";
}
.studio-canvas.is-empty-projects {
overflow: hidden;
}
.studio-canvas.is-empty-projects .react-flow__controls {
display: none;
}
.studio-canvas-empty-projects {
position: absolute;
inset: 0;
z-index: 84;
display: grid;
place-content: center;
justify-items: center;
gap: 18px;
padding: 32px;
color: var(--fg-body);
text-align: center;
pointer-events: none;
}
.studio-canvas-empty-projects strong {
max-width: min(560px, calc(100vw - 180px));
color: var(--fg-body);
font-size: clamp(20px, 2vw, 28px);
font-weight: 1000;
line-height: 1.35;
}
.studio-canvas-empty-projects__button {
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 132px;
min-height: 42px;
padding: 0 22px;
border: 1px solid var(--accent);
border-radius: 12px;
background: var(--accent);
color: #061014;
font-size: 14px;
font-weight: 1000;
cursor: pointer;
pointer-events: auto;
box-shadow: none;
transition:
background 160ms ease,
border-color 160ms ease,
box-shadow 160ms ease,
transform 160ms ease;
}
.studio-canvas-empty-projects__button:hover {
border-color: var(--accent-hover, var(--accent));
background: var(--accent-hover, var(--accent));
box-shadow: none;
transform: translateY(-1px);
}
@media (max-width: 640px) {
.studio-canvas-project-bar {
right: 10px;
left: 10px;
gap: 6px;
justify-content: space-between;
}
.studio-canvas-project-bar__status {
max-width: calc(100vw - 140px);
}
.studio-canvas-project-bar__identity {
max-width: none;
}
.studio-canvas-project-bar__name-form {
min-width: 0;
}
.studio-canvas-project-bar__name-form input {
width: min(180px, 42vw);
}
.studio-canvas-project-bar__recent span,
.studio-canvas-project-bar__export span,
.studio-canvas-project-bar__publish span {
display: none;
}
.studio-canvas-project-bar__export,
.studio-canvas-project-bar__publish,
.studio-canvas-project-bar__save,
.studio-canvas-project-bar__recent {
min-width: 34px;
padding: 0 9px;
}
.studio-canvas-recent-drawer {
top: 68px;
right: 10px;
left: 10px;
width: auto;
}
.studio-canvas-empty-projects strong {
max-width: calc(100vw - 48px);
font-size: 20px;
}
}
.studio-canvas-zoom-controls {
position: absolute;
bottom: 16px;
left: 16px;
z-index: 80;
display: inline-flex;
align-items: center;
gap: 2px;
padding: 4px;
border: 1px solid var(--border-subtle);
border-radius: 12px;
background: var(--bg-panel);
pointer-events: auto;
}
.studio-canvas-zoom-controls button {
display: inline-grid;
place-items: center;
min-width: 32px;
height: 30px;
padding: 0 8px;
border: none;
border-radius: 8px;
background: transparent;
color: var(--fg-muted);
font-size: 14px;
font-weight: 900;
cursor: pointer;
transition: background 140ms ease, color 140ms ease;
}
.studio-canvas-zoom-controls button:hover {
background: rgba(var(--accent-rgb), 0.12);
color: var(--accent);
}
.studio-canvas-zoom-controls__pct {
min-width: 48px !important;
font-size: 12px !important;
font-variant-numeric: tabular-nums;
}
.studio-canvas-align-guides {
position: absolute;
inset: 0;
pointer-events: none;
z-index: 15;
}
.studio-canvas-align-guide {
position: absolute;
background: var(--accent);
opacity: 0.6;
}
.studio-canvas-align-guide--x {
top: -9999px;
bottom: -9999px;
width: 1px;
}
.studio-canvas-align-guide--y {
left: -9999px;
right: -9999px;
height: 1px;
}
+119
View File
@@ -0,0 +1,119 @@
/* Community page rules move here as they are retired from legacy-pages.css. */
.community-page .community-case-card__preview {
grid-area: 1 / 1 / 2 / 2;
display: block;
width: 100%;
height: 100%;
min-height: 0;
margin: 0;
padding: 0;
border: 0;
border-radius: inherit;
background: transparent;
color: inherit;
box-shadow: none;
cursor: pointer;
overflow: hidden;
pointer-events: none;
}
.community-page .community-case-card__preview > img {
display: block;
width: 100%;
height: 100%;
object-fit: cover;
}
.community-page .community-case-card__preview:hover,
.community-page .community-case-card__preview:focus-visible {
background: transparent;
box-shadow: none;
}
.community-page .community-carousel__slide--video {
padding: 0;
background: transparent;
cursor: default;
}
.community-page .community-carousel__slide--video::before,
.community-page .community-carousel__slide--video::after {
content: none;
display: none;
}
.community-page .community-carousel__video {
position: absolute;
inset: 0;
z-index: 1;
display: block;
width: 100%;
height: 100%;
background: transparent;
object-fit: cover;
}
.community-page .community-carousel__slide--video:not(.is-center) .community-carousel__video {
filter: brightness(0.72) saturate(0.9);
}
.community-case-empty {
position: relative;
display: grid;
justify-items: center;
gap: 10px;
width: 100%;
min-height: 260px;
overflow: hidden;
padding: 42px 24px;
border: 1px solid rgba(var(--accent-rgb, 0, 255, 136), 0.2);
border-radius: var(--radius-md, 8px);
background:
linear-gradient(135deg, rgba(var(--accent-rgb, 0, 255, 136), 0.1), transparent 34%),
linear-gradient(180deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0.015)),
var(--bg-surface, rgba(255, 255, 255, 0.04));
color: var(--fg-muted, #8b968f);
text-align: center;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04);
}
.community-case-empty::before {
content: "";
position: absolute;
inset: 14px;
border: 1px dashed rgba(var(--accent-rgb, 0, 255, 136), 0.16);
border-radius: calc(var(--radius-md, 8px) - 2px);
pointer-events: none;
}
.community-case-empty__icon {
position: relative;
z-index: 1;
display: grid;
place-items: center;
width: 52px;
height: 52px;
border: 1px solid rgba(var(--accent-rgb, 0, 255, 136), 0.24);
border-radius: var(--radius-sm, 8px);
background: rgba(var(--accent-rgb, 0, 255, 136), 0.12);
color: var(--accent, #00ff88);
font-size: 22px;
}
.community-case-empty strong {
position: relative;
z-index: 1;
color: var(--fg-body, #f3f5f2);
font-size: 18px;
font-weight: 800;
}
.community-case-empty > span:not(.community-case-empty__icon) {
position: relative;
z-index: 1;
max-width: 360px;
font-size: 13px;
font-weight: 600;
line-height: 1.6;
}
+789
View File
@@ -0,0 +1,789 @@
.community-review-page,
.report-page {
min-height: 100%;
background: #0d0d0f;
color: var(--fg-body);
}
.community-review-page__inner,
.report-page__inner {
width: min(1180px, calc(100% - 48px));
margin: 0 auto;
padding: 34px 0 48px;
}
.community-review-toolbar,
.report-hero {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 18px;
}
.community-review-toolbar {
margin-bottom: 18px;
}
.community-review-toolbar span,
.report-hero p,
.community-review-meta,
.community-review-list__item small,
.community-review-note-preview,
.report-contact-strip span,
.report-form label,
.report-form__actions span {
color: var(--fg-muted);
}
.community-review-toolbar h1,
.report-hero h1 {
margin: 4px 0 6px;
color: var(--fg-body);
font-size: clamp(24px, 3vw, 34px);
line-height: 1.15;
}
.community-review-toolbar p,
.report-hero p {
margin: 0;
font-size: 14px;
line-height: 1.6;
}
.community-review-toolbar__actions,
.community-review-tabs,
.community-review-status-tabs,
.community-review-actions,
.report-form__actions {
display: flex;
align-items: center;
gap: 10px;
flex-wrap: wrap;
}
.community-review-toolbar__actions button,
.community-review-tabs button,
.community-review-status-tabs button,
.community-review-actions button,
.community-review-access button,
.report-form__actions button,
.report-success button {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 8px;
min-height: 38px;
padding: 0 14px;
border: 1px solid var(--border-subtle);
border-radius: 12px;
background: var(--bg-inset);
color: var(--fg-body);
font-weight: 800;
cursor: pointer;
transition: background 160ms ease, border-color 160ms ease, color 160ms ease, transform 160ms ease;
}
.community-review-toolbar__actions button:hover,
.community-review-tabs button:hover,
.community-review-status-tabs button:hover,
.community-review-actions button:hover,
.community-review-access button:hover,
.report-form__actions button:hover,
.report-success button:hover {
border-color: rgba(var(--accent-rgb), 0.42);
background: var(--bg-hover);
transform: translateY(-1px);
}
.community-review-toolbar__actions button:first-child,
.community-review-tabs button.is-active,
.community-review-status-tabs button.is-active,
.community-review-actions button:last-child,
.community-review-access button,
.report-form__actions button,
.report-success button {
border-color: var(--accent);
background: var(--accent);
color: #061014;
}
.community-review-actions button:first-child {
border-color: rgba(255, 90, 95, 0.42);
background: rgba(255, 90, 95, 0.12);
color: #ff9a9d;
}
.community-review-toolbar__actions button:disabled,
.community-review-actions button:disabled,
.report-form__actions button:disabled {
opacity: 0.55;
cursor: not-allowed;
transform: none;
}
.community-review-tabs,
.community-review-status-tabs {
margin: 0 0 14px;
}
.community-review-tabs {
padding: 5px;
border: 1px solid var(--border-subtle);
border-radius: 16px;
background: var(--bg-inset);
}
.community-review-tabs button {
min-width: 112px;
border-color: transparent;
background: transparent;
}
.community-review-status-tabs button {
min-height: 34px;
padding: 0 12px;
}
.community-review-error,
.report-form__error {
margin: 0 0 14px;
padding: 12px 14px;
border: 1px solid rgba(255, 90, 95, 0.28);
border-radius: 12px;
background: rgba(255, 90, 95, 0.1);
color: #ff9a9d;
}
.community-case-add-success {
display: inline-flex;
align-items: center;
gap: 8px;
margin: 0 0 14px;
padding: 12px 14px;
border: 1px solid rgba(var(--accent-rgb), 0.32);
border-radius: 12px;
background: rgba(var(--accent-rgb), 0.12);
color: var(--accent);
font-weight: 800;
}
.community-review-layout {
display: grid;
grid-template-columns: minmax(260px, 360px) minmax(0, 1fr);
gap: 16px;
min-height: 580px;
}
.community-review-list,
.community-review-detail,
.community-case-add-form,
.community-case-add-preview,
.report-form,
.report-success,
.community-review-access {
border: 1px solid var(--border-subtle);
border-radius: 18px;
background: var(--bg-panel);
box-shadow: var(--shadow-tight);
}
.community-case-add-targets button {
gap: 8px;
}
.community-case-add-layout {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(300px, 380px);
gap: 16px;
align-items: start;
}
.community-case-add-form {
display: grid;
gap: 16px;
padding: 22px;
}
.community-case-add-form__grid {
display: grid;
grid-template-columns: 1.1fr 0.9fr 150px;
gap: 12px;
}
.community-case-add-form label,
.community-case-add-upload-row label {
display: grid;
gap: 8px;
min-width: 0;
color: var(--fg-muted);
font-size: 13px;
font-weight: 800;
}
.community-case-add-form input,
.community-case-add-form select,
.community-case-add-form textarea {
width: 100%;
border: 1px solid var(--border-default);
border-radius: 12px;
background: var(--bg-inset);
color: var(--fg-body);
font: inherit;
outline: none;
}
.community-case-add-form input,
.community-case-add-form select {
min-height: 42px;
padding: 0 12px;
}
.community-case-add-form textarea {
min-height: 132px;
padding: 12px;
resize: vertical;
}
.community-case-add-form input:focus,
.community-case-add-form select:focus,
.community-case-add-form textarea:focus {
border-color: rgba(var(--accent-rgb), 0.52);
box-shadow: 0 0 0 3px rgba(var(--accent-rgb), 0.1);
}
.community-case-add-upload-row {
display: grid;
grid-template-columns: auto minmax(0, 1fr);
gap: 12px;
align-items: end;
}
.community-case-add-upload-row > button,
.community-case-add-actions button {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 8px;
min-height: 42px;
padding: 0 14px;
border: 1px solid var(--border-subtle);
border-radius: 12px;
background: var(--bg-inset);
color: var(--fg-body);
font-weight: 800;
cursor: pointer;
transition: background 160ms ease, border-color 160ms ease, color 160ms ease, transform 160ms ease;
}
.community-case-add-upload-row > button:hover,
.community-case-add-actions button:hover {
border-color: rgba(var(--accent-rgb), 0.42);
background: var(--bg-hover);
transform: translateY(-1px);
}
.community-case-add-actions {
display: flex;
flex-wrap: wrap;
gap: 10px;
}
.community-case-add-actions button:first-child {
border-color: var(--accent);
background: var(--accent);
color: #061014;
}
.community-case-add-actions button:disabled {
opacity: 0.55;
cursor: not-allowed;
transform: none;
}
.community-case-add-preview {
position: sticky;
top: 24px;
display: grid;
gap: 12px;
padding: 18px;
}
.community-case-add-preview > span {
width: fit-content;
padding: 5px 9px;
border-radius: 999px;
background: rgba(var(--accent-rgb), 0.12);
color: var(--accent);
font-size: 12px;
font-weight: 800;
}
.community-case-add-preview strong {
color: var(--fg-body);
font-size: 20px;
line-height: 1.25;
}
.community-case-add-preview p {
margin: 0;
color: var(--fg-muted);
line-height: 1.65;
}
.community-case-add-preview img,
.community-case-add-preview__empty {
width: 100%;
aspect-ratio: 16 / 10;
border: 1px solid var(--border-subtle);
border-radius: 14px;
background: var(--bg-inset);
object-fit: cover;
}
.community-case-add-preview__empty {
display: grid;
place-items: center;
color: var(--fg-muted);
font-size: 13px;
font-weight: 800;
}
.community-case-add-preview dl {
display: grid;
grid-template-columns: auto minmax(0, 1fr);
gap: 8px 10px;
margin: 0;
color: var(--fg-muted);
font-size: 13px;
}
.community-case-add-preview dt {
font-weight: 800;
}
.community-case-add-preview dd {
min-width: 0;
margin: 0;
overflow: hidden;
color: var(--fg-body);
text-overflow: ellipsis;
white-space: nowrap;
}
.community-review-list {
min-height: 0;
max-height: calc(100svh - 230px);
padding: 10px;
overflow: auto;
}
.community-review-list__item {
display: grid;
grid-template-columns: 72px minmax(0, 1fr);
grid-template-areas:
"thumb status"
"thumb title"
"thumb meta";
gap: 4px 12px;
width: 100%;
min-height: 92px;
padding: 10px;
border: 1px solid transparent;
border-radius: 14px;
background: transparent;
text-align: left;
cursor: pointer;
}
.community-review-layout--reports .community-review-list__item {
grid-template-columns: 1fr;
grid-template-areas:
"status"
"title"
"meta";
min-height: 84px;
}
.community-review-list__item:hover,
.community-review-list__item.is-active {
border-color: rgba(var(--accent-rgb), 0.32);
background: var(--bg-hover);
}
.community-review-list__item img,
.community-review-list__thumb {
grid-area: thumb;
width: 72px;
height: 72px;
border-radius: 12px;
background: var(--bg-inset);
object-fit: cover;
}
.community-review-list__item > span:not(.community-review-list__thumb) {
grid-area: status;
justify-self: start;
padding: 2px 7px;
border-radius: 999px;
background: rgba(var(--accent-rgb), 0.12);
color: var(--accent);
font-size: 11px;
font-weight: 800;
}
.community-review-list__item strong {
grid-area: title;
min-width: 0;
overflow: hidden;
color: var(--fg-body);
font-size: 14px;
text-overflow: ellipsis;
white-space: nowrap;
}
.community-review-list__item small {
grid-area: meta;
min-width: 0;
overflow: hidden;
font-size: 12px;
text-overflow: ellipsis;
white-space: nowrap;
}
.community-review-list__empty,
.community-review-detail--empty {
display: grid;
place-items: center;
min-height: 180px;
color: var(--fg-muted);
text-align: center;
}
.community-review-detail {
display: grid;
grid-template-columns: minmax(260px, 42%) minmax(0, 1fr);
overflow: hidden;
}
.community-review-layout--reports .community-review-detail {
grid-template-columns: 1fr;
}
.community-review-detail__cover {
position: relative;
min-height: 100%;
background: var(--bg-inset);
}
.community-review-detail__cover img {
width: 100%;
height: 100%;
min-height: 420px;
object-fit: cover;
}
.community-review-detail__cover span {
position: absolute;
top: 14px;
left: 14px;
padding: 6px 10px;
border-radius: 999px;
background: rgba(13, 13, 15, 0.78);
color: var(--accent);
font-size: 12px;
font-weight: 800;
}
.community-review-detail__body {
display: flex;
flex-direction: column;
gap: 16px;
min-width: 0;
padding: 22px;
}
.community-review-detail__body header span,
.report-hero__icon {
display: inline-flex;
align-items: center;
justify-content: center;
width: fit-content;
min-height: 28px;
padding: 0 10px;
border-radius: 999px;
background: rgba(var(--accent-rgb), 0.12);
color: var(--accent);
font-size: 12px;
font-weight: 800;
}
.community-review-detail__body h2 {
margin: 10px 0 8px;
color: var(--fg-body);
font-size: 24px;
}
.community-review-detail__body p {
margin: 0;
color: var(--fg-muted);
line-height: 1.7;
}
.community-review-meta {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 8px;
font-size: 13px;
}
.community-review-meta span,
.community-review-note-preview,
.community-review-report-raw {
min-width: 0;
padding: 10px 12px;
border: 1px solid var(--border-subtle);
border-radius: 12px;
background: var(--bg-inset);
}
.community-review-note {
display: grid;
gap: 8px;
color: var(--fg-muted);
font-size: 13px;
font-weight: 800;
}
.community-review-note textarea,
.report-form input,
.report-form select,
.report-form textarea {
width: 100%;
border: 1px solid var(--border-default);
border-radius: 12px;
background: var(--bg-inset);
color: var(--fg-body);
font: inherit;
outline: none;
}
.community-review-note textarea {
min-height: 118px;
padding: 12px;
resize: vertical;
}
.community-review-note textarea:focus,
.report-form input:focus,
.report-form select:focus,
.report-form textarea:focus {
border-color: rgba(var(--accent-rgb), 0.52);
box-shadow: 0 0 0 3px rgba(var(--accent-rgb), 0.1);
}
.community-review-report-detail .community-review-detail__body {
padding: 26px;
}
.community-review-link {
display: inline-flex;
align-items: center;
justify-content: center;
width: fit-content;
min-height: 36px;
padding: 0 14px;
border: 1px solid rgba(var(--accent-rgb), 0.36);
border-radius: 12px;
background: rgba(var(--accent-rgb), 0.12);
color: var(--accent);
text-decoration: none;
font-weight: 800;
}
.community-review-report-raw {
display: grid;
gap: 6px;
color: var(--fg-muted);
}
.community-review-report-raw span {
color: var(--fg-body);
font-weight: 800;
}
.community-review-access {
display: grid;
justify-items: center;
gap: 12px;
width: min(520px, calc(100% - 40px));
margin: 80px auto;
padding: 34px 28px;
text-align: center;
}
.community-review-access > .anticon {
display: grid;
place-items: center;
width: 52px;
height: 52px;
border-radius: 16px;
background: rgba(var(--accent-rgb), 0.14);
color: var(--accent);
font-size: 24px;
}
.community-review-access h1,
.report-success h2 {
margin: 0;
color: var(--fg-body);
}
.community-review-access p,
.report-success p {
margin: 0;
color: var(--fg-muted);
line-height: 1.7;
}
.report-page__inner {
width: min(920px, calc(100% - 48px));
}
.report-hero {
justify-content: flex-start;
margin-bottom: 18px;
}
.report-hero__icon {
flex: 0 0 52px;
width: 52px;
height: 52px;
border-radius: 16px;
font-size: 22px;
}
.report-contact-strip {
display: flex;
flex-wrap: wrap;
gap: 10px;
margin-bottom: 18px;
}
.report-contact-strip span {
display: inline-flex;
align-items: center;
gap: 8px;
min-height: 34px;
padding: 0 12px;
border: 1px solid var(--border-subtle);
border-radius: 999px;
background: var(--bg-inset);
font-size: 13px;
}
.report-form {
display: grid;
gap: 16px;
padding: 22px;
}
.report-form label {
display: grid;
gap: 8px;
font-size: 13px;
font-weight: 800;
}
.report-form input,
.report-form select {
min-height: 42px;
padding: 0 12px;
}
.report-form textarea {
min-height: 132px;
padding: 12px;
resize: vertical;
}
.report-form__grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 12px;
}
.report-success {
display: grid;
justify-items: center;
gap: 12px;
padding: 42px 24px;
text-align: center;
}
.report-success > .anticon {
color: var(--accent);
font-size: 42px;
}
@media (max-width: 900px) {
.community-review-page__inner,
.report-page__inner {
width: min(100% - 28px, 720px);
padding-top: 24px;
}
.community-review-toolbar {
flex-direction: column;
}
.community-review-layout,
.community-review-detail,
.community-case-add-layout {
grid-template-columns: 1fr;
}
.community-case-add-form__grid {
grid-template-columns: 1fr;
}
.community-case-add-preview {
position: static;
}
.community-review-list {
max-height: none;
}
.community-review-detail__cover img {
min-height: 240px;
}
.community-review-meta,
.report-form__grid {
grid-template-columns: 1fr;
}
}
@media (max-width: 560px) {
.community-review-toolbar__actions,
.community-review-actions,
.community-case-add-upload-row,
.community-case-add-actions,
.report-form__actions {
align-items: stretch;
flex-direction: column;
}
.community-review-toolbar__actions button,
.community-review-actions button,
.community-case-add-upload-row > button,
.community-case-add-actions button,
.report-form__actions button {
width: 100%;
}
.community-review-tabs {
display: grid;
grid-template-columns: 1fr 1fr;
}
}
+510
View File
@@ -0,0 +1,510 @@
.product-clone-page[data-tool="clone"] .product-clone-preview--video {
display: block;
width: 100%;
height: 100%;
min-height: 0;
align-content: initial;
justify-items: initial;
gap: 0;
overflow: hidden;
background: #0e1014;
scrollbar-color: #353b45 #0e1014;
}
.ecom-video-workspace {
display: grid;
grid-template-rows: auto minmax(0, 1fr);
width: 100%;
height: 100%;
min-height: 0;
overflow: hidden;
background: #0e1014;
color: #e5ebf4;
}
.ecom-video-flowbar {
position: relative;
z-index: 3;
display: grid;
grid-template-columns: auto minmax(96px, 1fr) auto;
align-items: center;
gap: 18px;
min-height: 58px;
border-bottom: 1px solid #242a33;
background: #11151b;
padding: 10px 16px;
}
.ecom-video-flowbar__title {
display: inline-flex;
align-items: center;
gap: 12px;
min-width: 0;
}
.ecom-video-flowbar__pulse {
width: 10px;
height: 10px;
border-radius: 999px;
background: #48505c;
}
.ecom-video-flowbar__pulse.is-active {
background: #34d399;
}
.ecom-video-flowbar__wave {
display: inline-flex;
align-items: end;
gap: 3px;
width: 24px;
height: 18px;
}
.ecom-video-flowbar__wave i {
display: block;
width: 4px;
height: 8px;
border-radius: 999px;
background: #5b6675;
animation: ecom-video-wave 1.1s ease-in-out infinite;
}
.ecom-video-flowbar__wave i:nth-child(2) {
height: 15px;
animation-delay: 120ms;
}
.ecom-video-flowbar__wave i:nth-child(3) {
height: 11px;
animation-delay: 240ms;
}
.ecom-video-step-dots {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 8px;
min-width: 0;
}
.ecom-video-step-dot {
display: block;
width: 7px;
height: 7px;
border-radius: 999px;
background: #343b46;
}
.ecom-video-step-dot.is-done {
background: #34d399;
}
.ecom-video-step-dot.is-active {
background: #53e5ff;
animation: ecom-video-node-breathe 1.2s ease-in-out infinite;
}
.ecom-video-flowbar__actions {
display: inline-flex;
align-items: center;
justify-content: flex-end;
gap: 8px;
}
.ecom-video-flowbar__error {
max-width: min(260px, 28vw);
overflow: hidden;
color: #ff9f9f;
font-size: 12px;
font-weight: 800;
text-overflow: ellipsis;
white-space: nowrap;
}
.ecom-video-flow-action {
display: inline-grid;
width: 38px;
height: 38px;
place-items: center;
border: 1px solid #1c4d3a;
border-radius: 8px;
background: #34d399;
color: #06110e;
padding: 0;
font-size: 17px;
cursor: pointer;
transition:
transform 150ms ease,
border-color 150ms ease,
background-color 150ms ease,
color 150ms ease;
}
.ecom-video-flow-action:hover:not(:disabled) {
transform: translateY(-1px);
}
.ecom-video-flow-action--ghost {
background: #0e2b26;
color: #baf6ff;
border-color: #1a4d40;
}
.ecom-video-flow-action--danger {
border-color: #4d1a1a;
background: #2b1212;
color: #ffb1b1;
}
.ecom-video-flow-action:disabled {
border-color: #303743;
background: #20252d;
color: #697486;
cursor: not-allowed;
}
.ecom-video-flow-canvas {
position: relative;
min-height: 0;
overflow: auto;
background: #101318;
padding: 26px;
}
.ecom-video-flow-map {
position: relative;
z-index: 1;
display: flex;
align-items: center;
justify-content: center;
gap: clamp(24px, 3vw, 48px);
min-width: 0;
min-height: 100%;
}
.ecom-video-flow-lines {
position: absolute;
inset: 50% 0 auto;
z-index: 0;
width: 100%;
height: min(72%, 420px);
overflow: visible;
pointer-events: none;
transform: translateY(-50%);
}
.ecom-video-flow-lines path {
fill: none;
stroke: #485365;
stroke-width: 3;
stroke-linecap: round;
stroke-dasharray: 12 14;
}
.ecom-video-flow-lines path.is-active {
stroke: #34d399;
animation: ecom-video-path-dash 1.8s linear infinite;
}
.ecom-video-flow-map > :not(.ecom-video-flow-lines) {
position: relative;
z-index: 1;
}
.ecom-video-scene-strip {
display: flex;
align-items: center;
justify-content: center;
gap: clamp(12px, 2vw, 24px);
min-width: 0;
overflow-x: auto;
overflow-y: visible;
padding: 28px 4px;
scrollbar-width: thin;
scrollbar-color: #414958 #101318;
}
.ecom-video-flow-node {
position: relative;
flex: 0 0 auto;
overflow: hidden;
border: 1px solid #333a45;
border-radius: 8px;
background: #172027;
animation: ecom-video-node-in 360ms ease both;
}
.ecom-video-flow-node.is-ready,
.ecom-video-flow-node.is-completed {
border-color: #1c4d3a;
background: #162820;
}
.ecom-video-flow-node.is-running,
.ecom-video-flow-node.is-pending {
border-color: #1a4d4d;
animation: ecom-video-node-breathe 1.6s ease-in-out infinite;
}
.ecom-video-flow-node.is-failed {
border-color: #4d1a1a;
background: #2a1b1d;
}
.ecom-video-flow-node--source,
.ecom-video-flow-node--final {
width: min(100%, 142px);
aspect-ratio: 9 / 13;
}
.ecom-video-flow-node--final {
border-color: #3d3020;
}
.ecom-video-flow-node--final.is-completed {
border-color: #4d3a1a;
background: #2a2116;
}
.ecom-video-flow-node--scene {
width: clamp(76px, 7vw, 104px);
aspect-ratio: 9 / 16;
}
.ecom-video-flow-node__media,
.ecom-video-flow-node__media img,
.ecom-video-flow-node__media video {
display: block;
width: 100%;
height: 100%;
}
.ecom-video-flow-node__media img,
.ecom-video-flow-node__media video {
object-fit: cover;
}
.ecom-video-flow-node__placeholder {
display: grid;
width: 100%;
height: 100%;
place-items: center;
background: #18231f;
color: #7eeecf;
font-size: 30px;
}
.ecom-video-flow-node__status-orb {
position: absolute;
left: 9px;
top: 9px;
z-index: 4;
width: 12px;
height: 12px;
border: 2px solid #0c1016;
border-radius: 999px;
background: #687386;
}
.ecom-video-flow-node.is-ready .ecom-video-flow-node__status-orb,
.ecom-video-flow-node.is-completed .ecom-video-flow-node__status-orb {
background: #34d399;
}
.ecom-video-flow-node.is-running .ecom-video-flow-node__status-orb,
.ecom-video-flow-node.is-pending .ecom-video-flow-node__status-orb {
background: #53e5ff;
}
.ecom-video-flow-node.is-failed .ecom-video-flow-node__status-orb {
background: #ff5e5e;
}
.ecom-video-flow-node--final.is-completed .ecom-video-flow-node__status-orb {
background: #ffb84d;
}
.ecom-video-flow-node__progress {
position: absolute;
left: 0;
right: 0;
bottom: 0;
z-index: 4;
height: 4px;
overflow: hidden;
background: #242830;
}
.ecom-video-flow-node__progress i {
display: block;
height: 100%;
background: #53e5ff;
transition: width 240ms ease;
}
.ecom-video-flow-node__retry {
position: absolute;
right: 9px;
top: 9px;
z-index: 5;
display: grid;
width: 32px;
height: 32px;
place-items: center;
border: 1px solid #4d1a1a;
border-radius: 999px;
background: #241417;
color: #ffb1b1;
cursor: pointer;
}
.ecom-video-flow-connector,
.ecom-video-scene-link {
position: relative;
height: 4px;
border-radius: 999px;
background: #303843;
}
.ecom-video-flow-connector {
flex: 0 0 clamp(30px, 3vw, 56px);
}
.ecom-video-scene-link {
flex: 0 0 clamp(26px, 3vw, 44px);
}
.ecom-video-flow-connector i,
.ecom-video-scene-link i {
position: absolute;
inset: 0;
transform: translateX(-100%);
background: #34d399;
}
.ecom-video-flow-connector.is-active i,
.ecom-video-scene-link.is-active i {
animation: ecom-video-flow-line 1.55s linear infinite;
}
.ecom-video-flow-dock {
position: sticky;
z-index: 4;
right: 0;
bottom: 0;
left: 0;
display: flex;
justify-content: center;
gap: 8px;
padding-top: 20px;
}
.ecom-video-flow-dock button {
display: inline-grid;
width: 38px;
height: 38px;
place-items: center;
border: 1px solid #3d3020;
border-radius: 8px;
background: #15181f;
color: #ffe1ad;
font-size: 16px;
cursor: pointer;
transition:
transform 150ms ease,
border-color 150ms ease,
background-color 150ms ease;
}
.ecom-video-flow-dock button:hover {
border-color: #4d3a1a;
background: #241c12;
transform: translateY(-1px);
}
.ecom-video-flow-notice {
position: absolute;
right: 22px;
bottom: 18px;
z-index: 5;
border: 1px solid #1c3d2a;
border-radius: 999px;
background: #08110f;
color: #a8ffe3;
padding: 7px 11px;
font-size: 12px;
font-weight: 900;
}
@keyframes ecom-video-flow-line {
from { transform: translateX(-100%); }
to { transform: translateX(100%); }
}
@keyframes ecom-video-path-dash {
to { stroke-dashoffset: -52; }
}
@keyframes ecom-video-node-in {
from {
opacity: 0;
transform: translateY(10px) scale(0.98);
}
to {
opacity: 1;
transform: translateY(0) scale(1);
}
}
@keyframes ecom-video-node-breathe {
0%, 100% { border-color: #1a4d4d; }
50% { border-color: #53e5ff; }
}
@keyframes ecom-video-pulse {
from {
opacity: 0.8;
transform: scale(0.7);
}
to {
opacity: 0;
transform: scale(1.45);
}
}
@keyframes ecom-video-wave {
0%, 100% {
opacity: 0.45;
transform: scaleY(0.72);
}
50% {
opacity: 1;
transform: scaleY(1);
}
}
@media (max-width: 900px) {
.ecom-video-flowbar {
grid-template-columns: auto 1fr;
gap: 12px;
}
.ecom-video-step-dots {
justify-content: flex-start;
order: 3;
grid-column: 1 / -1;
}
.ecom-video-flowbar__actions {
justify-content: flex-end;
}
.ecom-video-flow-canvas {
padding: 20px;
}
.ecom-video-flow-node--scene {
width: 118px;
}
}
File diff suppressed because it is too large Load Diff
+887
View File
@@ -0,0 +1,887 @@
.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;
}
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+373
View File
@@ -0,0 +1,373 @@
/* Local preview theme parity: scoped to ecommerce/template pages, colors and border tones only. */
.product-clone-page[data-tool="clone"] {
background: var(--bg-base);
color: var(--fg-body);
}
.product-clone-page[data-tool="clone"] > .product-clone-shell,
.product-clone-page[data-tool="clone"] .clone-ai-preview {
background: var(--bg-base);
}
.product-clone-page[data-tool="clone"] .product-clone-panel,
.product-clone-page[data-tool="clone"] .clone-ai-panel::-webkit-scrollbar-track {
background: var(--bg-panel);
}
.product-clone-page[data-tool="clone"] .product-clone-panel,
.product-clone-page[data-tool="clone"] :is(
.clone-ai-logo,
.clone-ai-card,
.clone-ai-platform-spec,
.clone-ai-count-panel,
.clone-ai-replicate-panel,
.clone-ai-module-panel,
.clone-ai-model-panel,
.clone-ai-video-panel,
.clone-ai-empty-state .anticon,
.clone-ai-main-result,
.clone-ai-result-grid button,
.clone-ai-input-wrapper
) {
border-color: var(--border-weak);
}
.product-clone-page[data-tool="clone"] :is(
.clone-ai-logo,
.clone-ai-card,
.clone-ai-platform-spec,
.clone-ai-count-panel,
.clone-ai-replicate-panel,
.clone-ai-module-panel,
.clone-ai-model-panel,
.clone-ai-video-panel,
.clone-ai-empty-state .anticon,
.clone-ai-main-result,
.clone-ai-result-grid button,
.clone-ai-input-wrapper
) {
background: var(--bg-panel);
}
.product-clone-page[data-tool="clone"] :is(
.clone-ai-logo em,
.clone-ai-upload-zone,
.clone-ai-upload-icon,
.clone-ai-uploaded-file,
.clone-ai-tag-group button,
.clone-ai-basic-select > button,
.clone-ai-basic-select__menu,
.clone-ai-basic-select__menu button,
.clone-ai-replicate-tabs button,
.clone-ai-replicate-upload,
.clone-ai-replicate-link input,
.clone-ai-replicate-levels button,
.clone-ai-count-row,
.clone-ai-count-stepper button,
.clone-ai-module-list button,
.clone-ai-model-tabs button,
.clone-ai-model-scene-grid button,
.clone-ai-model-select,
.clone-ai-model-select > button,
.clone-ai-model-select__menu,
.clone-ai-model-select__menu button,
.clone-ai-video-options button,
.clone-ai-video-smart,
.clone-ai-video-smart i,
.clone-ai-send-button
) {
border-color: var(--border-subtle);
background: var(--bg-inset);
color: var(--fg-muted);
}
.product-clone-page[data-tool="clone"] :is(
.clone-ai-upload-zone:hover,
.clone-ai-upload-zone.is-dragging,
.clone-ai-tag-group button:hover,
.clone-ai-basic-select > button:hover,
.clone-ai-basic-select > button.is-open,
.clone-ai-basic-select__menu button:hover,
.clone-ai-basic-select__menu button.is-active,
.clone-ai-replicate-tabs button:hover,
.clone-ai-replicate-upload:hover,
.clone-ai-replicate-levels button:hover,
.clone-ai-count-stepper button:hover:not(:disabled),
.clone-ai-module-list button:hover,
.clone-ai-model-tabs button:hover,
.clone-ai-model-scene-grid button:hover,
.clone-ai-model-select > button:hover,
.clone-ai-model-select > button.is-open,
.clone-ai-model-select__menu button:hover,
.clone-ai-model-select__menu button.is-active,
.clone-ai-video-options button:hover,
.clone-ai-video-smart:hover,
.clone-ai-send-button:hover:not(:disabled),
.clone-ai-main-result:hover,
.clone-ai-result-grid button:hover
) {
border-color: var(--border-default);
background: var(--bg-hover);
color: var(--fg-body);
}
.product-clone-page[data-tool="clone"] :is(
.clone-ai-logo em.is-ready,
.clone-ai-tag-group button.is-active,
.clone-ai-basic-select__menu button.is-active,
.clone-ai-replicate-tabs button.is-active,
.clone-ai-replicate-levels button.is-active,
.clone-ai-module-list button.is-active,
.clone-ai-model-tabs button.is-active,
.clone-ai-model-scene-grid button.is-active,
.clone-ai-model-select__menu button.is-active,
.clone-ai-video-options button.is-active,
.clone-ai-video-smart.is-on
) {
border-color: rgba(var(--accent-rgb), 0.42);
background: var(--accent-muted);
color: var(--accent);
}
.product-clone-page[data-tool="clone"] :is(
.clone-ai-logo strong,
.clone-ai-card h2,
.clone-ai-platform-spec strong,
.clone-ai-basic-select > button strong,
.clone-ai-model-select > button strong,
.clone-ai-preview-header strong,
.clone-ai-empty-state strong,
.clone-ai-input-wrapper textarea
) {
color: var(--fg-body);
}
.product-clone-page[data-tool="clone"] :is(
.clone-ai-logo em,
.clone-ai-card h2 .anticon,
.clone-ai-upload-title,
.clone-ai-upload-hint,
.clone-ai-settings-label,
.clone-ai-basic-select > button span,
.clone-ai-model-select > button span,
.clone-ai-preview-header span,
.clone-ai-empty-state,
.clone-ai-empty-state span,
.clone-ai-char-count,
.clone-ai-input-wrapper textarea::placeholder
) {
color: var(--fg-muted);
}
.product-clone-page[data-tool="clone"] :is(
.clone-ai-logo__mark,
.clone-ai-upload-zone strong,
.clone-ai-generate,
.clone-ai-send-button
) {
background: var(--accent);
color: var(--dg-button-text, #061014);
}
.product-clone-page[data-tool="clone"] :is(
.clone-ai-logo strong span,
.clone-ai-upload-icon,
.clone-ai-preview-header b,
.clone-ai-video-smart.is-on i::after
) {
color: var(--accent);
}
.product-clone-page[data-tool="clone"] :is(
.clone-ai-generate:disabled,
.clone-ai-send-button:disabled
) {
background: var(--bg-inset);
color: var(--fg-soft);
}
.product-clone-page[data-tool="clone"] .clone-ai-flow-arrow {
background: var(--accent);
}
.product-clone-page[data-tool="clone"] .clone-ai-video-smart.is-on i {
border-color: rgba(var(--accent-rgb), 0.42);
background: var(--accent-muted);
}
.product-clone-page[data-tool="clone"] .clone-ai-settings-toggle {
border-color: var(--border-default);
background: var(--bg-panel);
color: var(--fg-muted);
}
.product-clone-page[data-tool="clone"] .clone-ai-settings-toggle:hover,
.product-clone-page[data-tool="clone"] .clone-ai-settings-toggle:focus-visible {
border-color: rgba(var(--accent-rgb), 0.42);
background: var(--bg-hover);
color: var(--accent);
}
.size-template-workbench {
--size-green: var(--accent);
--size-cyan: var(--accent);
--size-violet: var(--accent);
--size-amber: var(--accent);
}
.size-template-workbench .product-clone-panel,
.size-template-workbench :is(
.size-template-upload-card,
.size-template-generate-card,
.size-template-platform-dialog,
.size-template-main-frame,
.size-template-spec-grid,
.size-template-preview-note,
.size-template-empty-state__image
) {
border-color: var(--border-weak);
background: var(--bg-panel);
color: var(--fg-body);
}
.size-template-workbench :is(.size-template-detail-card span, .size-template-check-list span) {
border-color: var(--border-subtle);
background: var(--bg-inset);
color: var(--fg-muted);
}
.size-template-workbench :is(
.size-template-upload-card h2,
.size-template-generate-card h2,
.size-template-main-frame span,
.size-template-spec-grid b,
.size-template-preview-note > div:first-child
) {
color: var(--fg-body);
}
.size-template-workbench :is(.size-template-platform-dialog button, .size-template-preview-note p) {
color: var(--fg-muted);
}
.size-template-workbench :is(
.size-template-static-field.is-clickable > button:hover,
.size-template-static-field.is-clickable > button[aria-expanded="true"],
.size-template-platform-dialog button:hover,
.size-template-platform-dialog button.is-active
) {
border-color: var(--border-default);
background: var(--bg-hover);
color: var(--fg-body);
}
.size-template-workbench :is(
.size-template-preview-note > div:first-child .anticon,
.size-template-check-list .anticon
) {
color: var(--accent);
}
.web-shell[data-ui-theme="dark-green"] .omni-commerce-page {
--commerce-accent: var(--accent);
--commerce-accent-strong: var(--accent);
--commerce-accent-rgb: var(--accent-rgb);
--commerce-ink: var(--fg-body);
--commerce-muted: var(--fg-muted);
--commerce-line: var(--border-subtle);
--commerce-panel: var(--bg-panel);
--commerce-soft: var(--bg-inset);
background: var(--bg-base);
color: var(--fg-body);
}
.web-shell[data-ui-theme="dark-green"] .omni-commerce-page :is(
.omni-commerce-panel,
.omni-commerce-band,
.omni-commerce-flow-head,
.omni-commerce-template,
.omni-commerce-project
) {
border-color: var(--border-weak);
background: var(--bg-panel);
color: var(--fg-body);
}
.web-shell[data-ui-theme="dark-green"] .omni-commerce-page :is(
.omni-commerce-ghost-action,
.omni-commerce-text-button,
.omni-commerce-segmented button,
.omni-commerce-ratio-grid button,
.omni-commerce-filter button,
.omni-commerce-flow-head button,
.omni-commerce-template em,
.omni-commerce-search,
.omni-commerce-project__delete
) {
border-color: var(--border-subtle);
background: var(--bg-inset);
color: var(--fg-muted);
}
.web-shell[data-ui-theme="dark-green"] .omni-commerce-page :is(
.omni-commerce-ghost-action:hover,
.omni-commerce-text-button:hover,
.omni-commerce-segmented button:hover,
.omni-commerce-ratio-grid button:hover,
.omni-commerce-filter button:hover,
.omni-commerce-flow-head button:hover,
.omni-commerce-template__select:hover em,
.omni-commerce-project__delete:hover
) {
border-color: var(--border-default);
background: var(--bg-hover);
color: var(--fg-body);
}
.web-shell[data-ui-theme="dark-green"] .omni-commerce-page :is(
.omni-commerce-segmented button.is-active,
.omni-commerce-ratio-grid button.is-active,
.omni-commerce-filter button.is-active,
.omni-commerce-step-head > span,
.omni-commerce-template span
) {
border-color: rgba(var(--accent-rgb), 0.42);
background: var(--accent-muted);
color: var(--accent);
}
.web-shell[data-ui-theme="dark-green"] .omni-commerce-page :is(
.omni-commerce-section-head h2,
.omni-commerce-template strong,
.omni-commerce-project strong,
.omni-commerce-search input
) {
color: var(--fg-body);
}
.web-shell[data-ui-theme="dark-green"] .omni-commerce-page :is(
.omni-commerce-section-head span,
.omni-commerce-template p,
.omni-commerce-project span,
.omni-commerce-search,
.omni-commerce-search input::placeholder
) {
color: var(--fg-muted);
}
.web-shell[data-ui-theme="dark-green"] .omni-commerce-page .omni-commerce-section-head .anticon {
color: var(--accent);
}
.web-shell[data-ui-theme="dark-green"] .ecommerce-template-apple-card {
border: 1px solid var(--border-weak);
background: var(--bg-panel);
color: var(--fg-body);
}
.web-shell[data-ui-theme="dark-green"] .ecommerce-template-apple-card:hover,
.web-shell[data-ui-theme="dark-green"] .ecommerce-template-apple-card.is-active {
border-color: rgba(var(--accent-rgb), 0.42);
background: var(--bg-panel);
}
File diff suppressed because it is too large Load Diff
+315
View File
@@ -0,0 +1,315 @@
.more-page-v2 {
display: grid;
grid-template-rows: auto minmax(0, 1fr);
height: 100%;
min-height: 0;
overflow: hidden;
padding-left: 82px;
background: var(--bg-base);
color: var(--fg-body);
font-family: var(--font-sans);
}
.more-page-v2__header {
display: flex;
align-items: center;
gap: 24px;
padding: 18px 28px 14px;
border-bottom: 1px solid var(--border-weak);
background:
linear-gradient(90deg, rgba(var(--accent-rgb), 0.1), transparent 50%),
var(--bg-surface, var(--bg-panel));
}
.more-page-v2__header h1 {
margin: 0;
font-size: 18px;
font-weight: 800;
letter-spacing: -0.01em;
}
.more-page-v2__filters {
display: flex;
align-items: center;
gap: 6px;
}
.more-page-v2__filters button {
display: inline-flex;
align-items: center;
min-height: 30px;
padding: 0 12px;
border: 1px solid var(--border-subtle);
border-radius: 999px;
background: var(--bg-inset);
color: var(--fg-muted);
font: inherit;
font-size: 12px;
font-weight: 600;
cursor: pointer;
transition: all 140ms ease;
}
.more-page-v2__filters button:hover {
border-color: rgba(var(--accent-rgb), 0.3);
color: var(--fg-body);
}
.more-page-v2__filters button.is-active {
border-color: rgba(var(--accent-rgb), 0.5);
background: rgba(var(--accent-rgb), 0.12);
color: var(--accent);
}
.more-page-v2__scroll {
overflow-y: auto;
padding: 24px 28px 64px;
scrollbar-color: rgba(var(--accent-rgb), 0.2) transparent;
}
.more-page-v2__section {
margin-bottom: 28px;
}
.more-page-v2__section-title {
display: flex;
align-items: center;
gap: 8px;
margin: 0 0 14px;
color: var(--fg-muted);
font-size: 12px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.04em;
}
.more-page-v2__section-title .anticon {
font-size: 13px;
color: var(--accent);
}
.more-page-v2__recent-row {
display: flex;
gap: 10px;
flex-wrap: wrap;
}
.more-page-v2__featured-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 16px;
}
.more-card--featured {
display: flex;
align-items: flex-start;
gap: 16px;
padding: 24px;
border-radius: var(--radius-md, 14px);
background: var(--card-gradient);
border: 1px solid var(--border-weak);
transition: all 200ms ease;
overflow: hidden;
position: relative;
}
.more-card--featured::before {
content: "";
position: absolute;
top: -20px;
right: -20px;
width: 120px;
height: 120px;
border-radius: 50%;
background: radial-gradient(circle, rgba(var(--accent-rgb), 0.06), transparent 70%);
pointer-events: none;
}
.more-card--featured:hover {
border-color: rgba(var(--accent-rgb), 0.4);
transform: translateY(-2px);
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
}
.more-card__featured-icon {
display: grid;
place-items: center;
width: 56px;
height: 56px;
border-radius: 16px;
background: rgba(var(--accent-rgb), 0.12);
color: var(--accent);
font-size: 24px;
flex-shrink: 0;
}
.more-card__featured-body {
display: flex;
flex-direction: column;
gap: 6px;
text-align: left;
}
.more-card__featured-body strong {
font-size: 16px;
font-weight: 700;
}
.more-card__featured-body span {
font-size: 13px;
color: var(--fg-muted);
line-height: 1.5;
}
.more-card__cta {
margin-top: 4px;
font-size: 12px !important;
font-weight: 600;
color: var(--accent) !important;
}
.more-page-v2__grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
gap: 14px;
}
.more-card {
position: relative;
display: grid;
align-content: start;
justify-items: start;
gap: 8px;
padding: 18px;
border: 1px solid var(--border-weak);
border-radius: var(--radius-sm, 10px);
background: var(--bg-panel);
color: var(--fg-body);
font: inherit;
text-align: left;
cursor: pointer;
transition: all 160ms ease;
}
.more-card:hover {
border-color: rgba(var(--accent-rgb), 0.4);
background: var(--bg-hover, rgba(255, 255, 255, 0.03));
transform: translateY(-2px);
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
}
.more-card--pending {
opacity: 0.5;
cursor: not-allowed;
}
.more-card--pending:hover {
transform: none;
box-shadow: none;
border-color: var(--border-weak);
background: var(--bg-panel);
}
.more-card--recent {
flex-direction: row;
display: flex;
align-items: center;
gap: 10px;
padding: 10px 16px;
min-width: 140px;
}
.more-card__icon {
display: grid;
place-items: center;
width: 38px;
height: 38px;
border-radius: var(--radius-xs, 8px);
background: rgba(var(--accent-rgb), 0.1);
color: var(--accent);
font-size: 16px;
flex-shrink: 0;
}
.more-card--recent .more-card__icon {
width: 30px;
height: 30px;
font-size: 14px;
}
.more-card strong {
font-size: 13px;
font-weight: 700;
}
.more-card__desc {
color: var(--fg-muted);
font-size: 12px;
line-height: 1.5;
}
.more-card__badge {
position: absolute;
top: 10px;
right: 10px;
padding: 2px 8px;
border-radius: 999px;
background: rgba(var(--accent-rgb), 0.12);
color: var(--accent);
font-size: 10px;
font-weight: 700;
}
@media (max-width: 1180px) {
.more-page-v2 {
padding-left: 20px;
}
}
@media (max-width: 860px) {
.more-page-v2 {
padding-left: 0;
}
.more-page-v2__header {
flex-wrap: wrap;
padding: 14px 16px 12px;
gap: 12px;
}
.more-page-v2__scroll {
padding: 16px 16px 48px;
}
.more-page-v2__grid {
grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
gap: 10px;
}
.more-page-v2__recent-row {
overflow-x: auto;
flex-wrap: nowrap;
padding-bottom: 4px;
}
.more-page-v2__featured-grid {
grid-template-columns: 1fr;
gap: 12px;
}
.more-card--featured {
padding: 18px;
gap: 12px;
}
.more-card__featured-icon {
width: 44px;
height: 44px;
border-radius: 12px;
font-size: 20px;
}
.more-card__featured-body strong {
font-size: 15px;
}
}
+1
View File
@@ -0,0 +1 @@
/* Profile page rules move here as they are retired from legacy-pages.css. */
+166
View File
@@ -0,0 +1,166 @@
.provider-health-page__inner {
display: flex;
flex-direction: column;
gap: 24px;
padding: 24px;
max-width: 960px;
}
.provider-health-toolbar {
display: flex;
justify-content: space-between;
align-items: flex-start;
}
.provider-health-toolbar h2 {
font-size: 18px;
margin: 0 0 4px;
}
.provider-health-toolbar p {
font-size: 13px;
color: var(--text-muted);
margin: 0;
}
.provider-health-toolbar button {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 6px 14px;
border-radius: 8px;
border: 1px solid var(--border-subtle);
background: var(--surface-elevated);
color: var(--text-primary);
font-size: 13px;
cursor: pointer;
}
.provider-health-toolbar button:disabled {
opacity: 0.5;
cursor: wait;
}
.provider-health-access {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 12px;
padding: 80px 0;
text-align: center;
color: var(--text-muted);
}
.provider-health-access button {
padding: 8px 20px;
border-radius: 10px;
background: var(--accent);
color: #fff;
border: none;
cursor: pointer;
}
.provider-health-error {
color: var(--error, #ef4444);
font-size: 13px;
}
.provider-health-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
gap: 12px;
}
.provider-health-card {
padding: 16px;
border-radius: 14px;
background: var(--surface-card);
border: 1px solid var(--border-subtle);
display: flex;
flex-direction: column;
gap: 8px;
}
.provider-health-card__header {
display: flex;
align-items: center;
gap: 8px;
font-size: 15px;
}
.provider-health-card__status {
font-size: 12px;
padding: 2px 8px;
border-radius: 999px;
font-weight: 500;
}
.provider-health-card__status--healthy {
background: rgba(16, 185, 129, 0.15);
color: #10b981;
}
.provider-health-card__status--arrears,
.provider-health-card__status--denied,
.provider-health-card__status--error {
background: rgba(239, 68, 68, 0.15);
color: #ef4444;
}
.provider-health-card__status--timeout,
.provider-health-card__status--no_key {
background: rgba(245, 158, 11, 0.15);
color: #f59e0b;
}
.provider-health-card__status--unknown {
background: rgba(156, 163, 175, 0.15);
color: #9ca3af;
}
.provider-health-card__time {
font-size: 11px;
color: var(--text-muted);
}
.provider-health-card__error {
font-size: 12px;
color: var(--error, #ef4444);
margin: 0;
}
.provider-health-section {
display: flex;
flex-direction: column;
gap: 8px;
}
.provider-health-section h3 {
font-size: 14px;
margin: 0;
}
.provider-health-table {
width: 100%;
border-collapse: collapse;
font-size: 13px;
}
.provider-health-table th {
text-align: left;
padding: 8px 12px;
border-bottom: 2px solid var(--border-subtle);
color: var(--text-muted);
font-size: 12px;
font-weight: 500;
}
.provider-health-table td {
padding: 6px 12px;
border-bottom: 1px solid var(--border-subtle);
}
.provider-health-table tr:hover td {
background: var(--surface-elevated);
}
File diff suppressed because it is too large Load Diff
+476
View File
@@ -0,0 +1,476 @@
.product-clone-page[data-tool="clone"].size-template-workbench {
--clone-settings-panel-width: 640px;
--size-green: #34d399;
--size-cyan: #38bdf8;
--size-violet: #a78bfa;
--size-amber: #fbbf24;
}
.web-shell[data-view="sizeTemplate"] .product-clone-page[data-tool="clone"] {
padding-left: 92px;
}
.web-shell[data-view="sizeTemplate"] .product-clone-page[data-tool="clone"] > .product-clone-shell {
width: 100%;
grid-template-columns: var(--clone-settings-panel-width) minmax(0, 1fr);
}
.web-shell[data-view="sizeTemplate"] .product-clone-page[data-tool="clone"].is-settings-collapsed > .product-clone-shell {
grid-template-columns: 0 minmax(0, 1fr);
}
.size-template-workbench .product-clone-panel {
background: #15171c;
}
.size-template-workbench .size-template-settings-panel {
gap: 18px;
padding: 22px 22px;
}
.size-template-workbench .size-template-upload-card,
.size-template-workbench .size-template-generate-card {
border-color: #303540;
border-radius: 14px;
background: #1b1d23;
padding: 16px;
}
.size-template-workbench .size-template-upload-card h2,
.size-template-workbench .size-template-generate-card h2 {
margin-bottom: 11px;
color: #b8c0cd;
font-size: 12px;
font-weight: 900;
}
.size-template-workbench .size-template-upload-zone {
min-height: 174px;
border-radius: 10px;
}
.size-template-workbench .size-template-uploaded-files {
margin-top: 10px;
}
.size-template-empty-state.has-upload {
gap: 12px;
}
.size-template-empty-state__image {
width: min(72%, 420px);
max-height: min(46vh, 420px);
object-fit: contain;
border: 1px solid #303540;
border-radius: 14px;
background: #101115;
}
.size-template-workbench .size-template-category-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 10px;
}
.size-template-workbench .size-template-category-grid button {
height: 54px;
padding: 0 12px;
font-size: 13px;
line-height: 1.2;
white-space: normal;
}
.size-template-workbench .clone-ai-settings-section {
gap: 10px;
}
.size-template-workbench .clone-ai-settings-section + .clone-ai-settings-section {
margin-top: 16px;
}
.size-template-workbench .clone-ai-select-group {
gap: 12px;
}
.size-template-workbench .size-template-static-field > button {
height: 66px;
padding: 10px 38px 10px 14px;
}
.size-template-workbench .size-template-static-field > button {
cursor: default;
}
.size-template-workbench .size-template-static-field.is-clickable > button {
cursor: pointer;
}
.size-template-workbench .size-template-static-field.is-clickable > button:hover,
.size-template-workbench .size-template-static-field.is-clickable > button[aria-expanded="true"] {
border-color: #34d399;
background: #202c28;
}
.size-template-workbench .size-template-static-field > button:active {
transform: none;
}
.size-template-workbench .size-template-static-field > button i {
display: none;
}
.size-template-workbench .size-template-static-field.is-clickable > button i {
display: block;
}
.size-template-platform-dialog {
position: absolute;
z-index: 40;
top: calc(100% + 8px);
left: 0;
right: 0;
display: grid;
gap: 5px;
overflow: hidden;
border: 1px solid #303540;
border-radius: 10px;
background: #20232a;
padding: 6px;
box-shadow: 0 18px 40px rgb(0 0 0 / 34%);
animation: size-template-dialog-rise 150ms ease both;
}
.size-template-platform-dialog button {
min-height: 38px;
border: 0;
border-radius: 7px;
background: transparent;
color: #b7bfcc;
padding: 0 12px;
text-align: left;
font-size: 13px;
font-weight: 900;
cursor: pointer;
}
.size-template-platform-dialog button:hover,
.size-template-platform-dialog button.is-active {
background: #17352a;
color: #34d399;
}
@keyframes size-template-dialog-rise {
from {
opacity: 0;
transform: translateY(-6px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.size-template-workbench .size-template-preset-panel {
max-height: none;
}
.size-template-workbench .size-template-preset-list button span {
display: block;
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.size-template-workbench .size-template-option-panel {
flex: 1 1 auto;
min-height: 238px;
height: auto;
max-height: none;
gap: 12px;
padding: 14px;
}
.size-template-workbench .clone-ai-model-tabs {
gap: 10px;
}
.size-template-workbench .clone-ai-model-tabs button {
height: 42px;
font-size: 13px;
}
.size-template-workbench .clone-ai-model-scroll {
padding-right: 6px;
}
.size-template-workbench .size-template-option-grid {
align-content: start;
gap: 10px;
}
.size-template-workbench .size-template-option-grid button {
justify-content: flex-start;
min-height: 50px;
padding: 11px 12px;
font-size: 13px;
text-align: left;
line-height: 1.3;
}
.size-template-workbench .size-template-submit {
flex: 0 0 auto;
min-height: 58px;
margin-top: 0;
font-size: 16px;
}
.size-template-workbench .size-template-demo-board {
display: grid;
grid-template-columns: minmax(220px, 300px) 54px minmax(330px, 520px);
align-items: center;
gap: 20px;
width: min(100%, 930px);
}
.size-template-workbench .size-template-demo-board::before {
content: "";
display: block;
grid-column: 2;
grid-row: 1;
width: 54px;
height: 2px;
border-radius: 999px;
background: linear-gradient(90deg, #34d399, rgb(52 211 153 / 0%));
box-shadow: 0 0 18px rgb(52 211 153 / 35%);
}
.size-template-main-frame {
--size-template-ratio: 1 / 1;
--size-tone: var(--size-green);
display: grid;
grid-column: 1;
grid-row: 1;
width: min(100%, 300px);
aspect-ratio: var(--size-template-ratio);
min-height: 180px;
max-height: 360px;
align-content: center;
justify-items: center;
gap: 10px;
overflow: hidden;
border: 1px solid color-mix(in srgb, var(--size-tone) 48%, #2c3038);
border-left: 6px solid var(--size-tone);
border-radius: 14px;
background:
linear-gradient(90deg, rgb(255 255 255 / 8%) 1px, transparent 1px),
linear-gradient(180deg, rgb(255 255 255 / 8%) 1px, transparent 1px),
linear-gradient(135deg, color-mix(in srgb, var(--size-tone) 18%, transparent), rgb(255 255 255 / 5%)),
#1b1d23;
background-size: 20px 20px, 20px 20px, auto, auto;
color: #eef2f6;
cursor: pointer;
box-shadow: 0 26px 70px rgb(0 0 0 / 35%);
}
.size-template-main-frame span {
color: #eef2f6;
font-size: clamp(42px, 6vw, 72px);
font-weight: 950;
line-height: 1;
}
.size-template-main-frame strong {
color: rgb(238 242 246 / 72%);
font-size: 15px;
font-weight: 900;
}
.size-template-main-frame.is-green {
--size-tone: var(--size-green);
}
.size-template-main-frame.is-cyan {
--size-tone: var(--size-cyan);
}
.size-template-main-frame.is-violet {
--size-tone: var(--size-violet);
}
.size-template-main-frame.is-amber {
--size-tone: var(--size-amber);
}
.size-template-spec-grid {
display: grid;
grid-column: 3;
grid-row: 1;
grid-template-columns: repeat(2, minmax(130px, 1fr));
gap: 12px;
}
.size-template-spec-grid span {
display: grid;
min-height: 112px;
align-content: center;
gap: 8px;
border: 1px solid #2c3038;
border-radius: 14px;
background: #1b1d23;
color: #8f98a8;
padding: 16px;
font-size: 13px;
font-weight: 850;
}
.size-template-spec-grid b {
color: #eef2f6;
font-size: 18px;
font-weight: 950;
}
.size-template-preview-note {
position: absolute;
left: 46px;
right: 46px;
bottom: 118px;
display: grid;
grid-template-columns: minmax(180px, auto) minmax(0, 1fr) auto;
align-items: center;
gap: 14px;
border: 1px solid #2c3038;
border-radius: 18px;
background: #1b1d23;
padding: 14px 16px;
}
.size-template-preview-note > div:first-child {
display: inline-flex;
align-items: center;
gap: 10px;
color: #eef2f6;
font-size: 14px;
font-weight: 900;
}
.size-template-preview-note > div:first-child .anticon {
color: #34d399;
}
.size-template-preview-note p {
min-width: 0;
margin: 0;
overflow: hidden;
color: #8f98a8;
font-size: 13px;
font-weight: 750;
line-height: 1.5;
text-overflow: ellipsis;
white-space: nowrap;
}
.size-template-detail-card {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 10px;
width: min(100%, 930px);
}
.size-template-detail-card span {
display: flex;
min-height: 44px;
align-items: center;
border: 1px solid #2c3038;
border-radius: 12px;
background: #1b1d23;
color: #b7bfcc;
padding: 10px 12px;
font-size: 13px;
font-weight: 800;
line-height: 1.45;
}
.size-template-check-list {
display: flex;
flex-wrap: wrap;
justify-content: flex-end;
gap: 8px;
}
.size-template-check-list span {
display: inline-flex;
align-items: center;
gap: 6px;
min-height: 30px;
border: 1px solid #303540;
border-radius: 999px;
background: #22252d;
color: #b7bfcc;
padding: 0 10px;
font-size: 12px;
font-weight: 850;
white-space: nowrap;
}
.size-template-check-list .anticon {
color: #34d399;
}
@media (max-width: 1320px) {
.size-template-workbench .size-template-demo-board {
grid-template-columns: minmax(180px, 260px) 44px minmax(280px, 1fr);
}
.size-template-preview-note {
left: 30px;
right: 30px;
}
.size-template-detail-card {
width: min(100%, 840px);
}
}
@media (max-width: 980px) {
.web-shell[data-view="sizeTemplate"] .product-clone-page[data-tool="clone"] {
--clone-settings-panel-width: 100%;
padding-left: 0;
}
.web-shell[data-view="sizeTemplate"] .product-clone-page[data-tool="clone"] > .product-clone-shell,
.web-shell[data-view="sizeTemplate"] .product-clone-page[data-tool="clone"].is-settings-collapsed > .product-clone-shell {
grid-template-columns: 1fr;
}
.web-shell[data-view="sizeTemplate"] .product-clone-page[data-tool="clone"].is-settings-collapsed .product-clone-panel {
display: none;
}
.size-template-workbench .size-template-demo-board {
grid-template-columns: 1fr;
max-width: 430px;
}
.size-template-workbench .size-template-demo-board::before {
display: none;
}
.size-template-main-frame,
.size-template-spec-grid {
grid-column: 1;
grid-row: auto;
}
.size-template-spec-grid,
.size-template-preview-note,
.size-template-detail-card {
grid-template-columns: 1fr;
}
.size-template-preview-note,
.size-template-detail-card {
position: static;
width: min(100%, 430px);
}
}
+680
View File
@@ -0,0 +1,680 @@
/* Unified studio layout — shared by Digital Human, Character Mix, and similar workspace pages. */
.studio-tool-layout {
display: grid;
grid-template-rows: 46px minmax(0, 1fr) 36px;
grid-template-columns: minmax(260px, 300px) minmax(0, 1fr) minmax(238px, 280px);
grid-template-areas:
"toolstrip toolstrip toolstrip"
"left canvas right"
"status status status";
width: 100%;
height: 100%;
min-height: 0;
overflow: hidden;
background: var(--bg-base);
}
.studio-tool-layout--no-left {
grid-template-columns: minmax(0, 1fr) minmax(238px, 280px);
grid-template-areas:
"toolstrip toolstrip"
"canvas right"
"status status";
}
.studio-tool-layout--no-right {
grid-template-columns: minmax(260px, 300px) minmax(0, 1fr);
grid-template-areas:
"toolstrip toolstrip"
"left canvas"
"status status";
}
.studio-tool-layout--no-left.studio-tool-layout--no-right {
grid-template-columns: minmax(0, 1fr);
grid-template-areas:
"toolstrip"
"canvas"
"status";
}
.studio-tool-layout--no-top {
grid-template-rows: minmax(0, 1fr) 36px;
grid-template-areas:
"left canvas right"
"status status status";
}
.studio-tool-layout--no-top.studio-tool-layout--no-left {
grid-template-areas:
"canvas right"
"status status";
}
.studio-tool-layout--no-top.studio-tool-layout--no-right {
grid-template-areas:
"left canvas"
"status status";
}
.studio-tool-layout--no-top.studio-tool-layout--no-left.studio-tool-layout--no-right {
grid-template-areas:
"canvas"
"status";
}
.studio-toolstrip {
grid-area: toolstrip;
display: flex;
align-items: center;
min-width: 0;
gap: 12px;
padding: 0 16px;
border-bottom: 1px solid var(--border-weak);
background:
linear-gradient(90deg, rgba(var(--accent-rgb), 0.14), transparent 48%),
var(--bg-panel);
}
.studio-toolstrip__left {
display: flex;
align-items: center;
min-width: 0;
gap: 12px;
}
.studio-toolstrip__breadcrumb {
color: var(--fg-body);
font-size: 14px;
font-weight: 750;
white-space: nowrap;
}
.studio-toolstrip__divider {
width: 1px;
height: 18px;
background: var(--border-subtle);
}
.studio-segmented {
display: flex;
align-items: center;
gap: 4px;
padding: 3px;
border: 1px solid var(--border-weak);
border-radius: var(--radius-xs);
background: var(--bg-inset);
}
.studio-segmented__btn {
display: inline-flex;
align-items: center;
justify-content: center;
min-height: 28px;
padding: 0 12px;
border: 1px solid transparent;
border-radius: 6px;
background: transparent;
color: var(--fg-muted);
font: inherit;
font-size: 12px;
font-weight: 700;
cursor: pointer;
transition: background 140ms ease, color 140ms ease, border-color 140ms ease;
}
.studio-segmented__btn:hover {
background: var(--bg-hover);
color: var(--fg-body);
}
.studio-segmented__btn.is-active {
border-color: rgba(var(--accent-rgb), 0.38);
background: rgba(var(--accent-rgb), 0.13);
color: var(--accent);
}
/* Panels */
.studio-panel {
grid-area: left;
display: grid;
align-content: start;
min-width: 0;
min-height: 0;
gap: 0;
overflow-y: auto;
padding: 14px;
border-right: 1px solid var(--border-weak);
background: var(--bg-panel);
scrollbar-color: rgba(var(--accent-rgb), 0.34) transparent;
}
.studio-panel--right {
grid-area: right;
border-right: 0;
border-left: 1px solid var(--border-weak);
}
.studio-panel__section {
display: grid;
gap: 10px;
padding: 14px 0;
border-bottom: 1px solid var(--border-weak);
}
.studio-panel__section:first-child {
padding-top: 0;
}
.studio-panel__section:last-child {
border-bottom: 0;
}
.studio-panel__section-head {
display: flex;
align-items: center;
justify-content: space-between;
min-width: 0;
gap: 10px;
}
.studio-panel__section-title {
color: var(--fg-body);
font-size: 13px;
font-weight: 750;
}
.studio-panel__section-chip {
display: inline-flex;
align-items: center;
min-height: 22px;
padding: 0 8px;
border-radius: 999px;
font-size: 11px;
font-weight: 700;
}
.studio-panel__section-chip--waiting {
background: var(--bg-inset);
color: var(--fg-muted);
}
.studio-panel__section-chip--ready {
background: rgba(var(--accent-rgb), 0.13);
color: var(--accent);
}
/* Upload slots */
.studio-upload-slot--empty,
.studio-upload-slot--filled {
display: grid;
grid-template-columns: auto minmax(0, 1fr);
align-items: center;
gap: 14px;
min-height: 100px;
padding: 16px;
border: 1px dashed rgba(var(--accent-rgb), 0.36);
border-radius: var(--radius-sm);
background:
linear-gradient(180deg, rgba(var(--accent-rgb), 0.06), transparent),
var(--bg-inset);
cursor: pointer;
transition: border-color 140ms ease, background 140ms ease;
}
.studio-upload-slot--empty:hover,
.studio-upload-slot--filled:hover {
border-color: rgba(var(--accent-rgb), 0.56);
background: var(--bg-hover);
}
.studio-upload-slot--filled {
border-style: solid;
border-color: rgba(var(--accent-rgb), 0.28);
}
.studio-upload-slot--empty input[type="file"],
.studio-upload-slot--filled input[type="file"] {
display: none;
}
.studio-upload-slot--empty__icon {
display: grid;
place-items: center;
width: 56px;
height: 56px;
border-radius: var(--radius-xs);
background: rgba(var(--accent-rgb), 0.13);
color: var(--accent);
font-size: 24px;
}
.studio-upload-slot--filled__thumb {
width: 72px;
height: 72px;
border-radius: var(--radius-xs);
object-fit: cover;
border: 1px solid var(--border-subtle);
}
.studio-upload-slot--filled__info {
display: grid;
gap: 3px;
min-width: 0;
}
.studio-upload-slot--filled__info strong {
color: var(--fg-body);
font-size: 13px;
font-weight: 700;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.studio-upload-slot--filled__info small {
color: var(--fg-muted);
font-size: 11px;
}
/* Canvas */
.studio-canvas {
grid-area: canvas;
position: relative;
display: grid;
place-items: center;
min-width: 0;
min-height: 0;
overflow: auto;
padding: 18px;
background:
radial-gradient(circle, rgba(var(--accent-rgb), 0.12) 1px, transparent 1.4px),
var(--bg-inset);
background-size: 22px 22px;
}
.studio-canvas-ghost {
display: grid;
justify-items: center;
gap: 10px;
padding: 32px;
text-align: center;
}
.studio-canvas-ghost__icon {
display: grid;
place-items: center;
width: 56px;
height: 56px;
border-radius: var(--radius-sm);
background: rgba(var(--accent-rgb), 0.13);
color: var(--accent);
font-size: 26px;
}
.studio-canvas-ghost__title {
color: var(--fg-body);
font-size: 15px;
font-weight: 700;
}
.studio-canvas-ghost__hint {
max-width: 320px;
color: var(--fg-muted);
font-size: 12px;
line-height: 1.5;
}
.studio-canvas-image {
display: grid;
place-items: center;
}
.studio-canvas-image img {
display: block;
max-width: 100%;
max-height: 68vh;
border: 1px solid var(--border-subtle);
border-radius: var(--radius-sm);
object-fit: contain;
}
.studio-canvas-video {
position: relative;
display: grid;
place-items: center;
width: 100%;
}
.studio-canvas-video video {
display: block;
max-width: 100%;
max-height: 68vh;
border: 1px solid var(--border-subtle);
border-radius: var(--radius-sm);
}
.studio-result-caption {
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
margin-top: 10px;
color: var(--fg-muted);
font-size: 12px;
}
.studio-result-caption strong {
color: var(--accent);
font-weight: 750;
}
.studio-result-actions {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 8px;
margin-top: 8px;
}
.studio-result-actions--with-clear {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.studio-result-actions button {
display: inline-flex;
min-width: 0;
min-height: 36px;
align-items: center;
justify-content: center;
gap: 6px;
border: 1px solid var(--border-subtle);
border-radius: var(--radius-xs);
background: var(--bg-inset);
color: var(--fg-body);
font: inherit;
font-size: 12px;
font-weight: 750;
cursor: pointer;
transition: border-color 140ms ease, background 140ms ease, color 140ms ease;
}
.studio-result-actions button:hover:not(:disabled) {
border-color: rgba(var(--accent-rgb), 0.42);
background: rgba(var(--accent-rgb), 0.11);
color: var(--accent);
}
.studio-result-actions button:disabled {
cursor: not-allowed;
opacity: 0.56;
}
.studio-canvas-pip {
position: absolute;
bottom: 14px;
right: 14px;
width: 96px;
height: 96px;
overflow: hidden;
border: 2px solid rgba(var(--accent-rgb), 0.42);
border-radius: var(--radius-xs);
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.4);
}
.studio-canvas-pip img {
width: 100%;
height: 100%;
object-fit: cover;
}
/* Controls: toggles, generate button, audio preview */
.studio-toggle-row {
display: flex;
align-items: center;
justify-content: space-between;
min-width: 0;
gap: 12px;
padding: 10px 0;
}
.studio-toggle-row__copy {
display: grid;
gap: 2px;
min-width: 0;
}
.studio-toggle-row__title {
color: var(--fg-body);
font-size: 13px;
font-weight: 700;
}
.studio-toggle-row__desc {
color: var(--fg-muted);
font-size: 11px;
}
.studio-toggle {
position: relative;
flex: 0 0 auto;
width: 40px;
height: 22px;
border: 1px solid var(--border-subtle);
border-radius: 999px;
background: var(--bg-inset);
cursor: pointer;
transition: background 140ms ease, border-color 140ms ease;
}
.studio-toggle__thumb {
position: absolute;
top: 3px;
left: 3px;
width: 14px;
height: 14px;
border-radius: 50%;
background: var(--fg-muted);
transition: transform 140ms ease, background 140ms ease;
}
.studio-toggle.is-on {
border-color: rgba(var(--accent-rgb), 0.42);
background: rgba(var(--accent-rgb), 0.13);
}
.studio-toggle.is-on .studio-toggle__thumb {
background: var(--accent);
transform: translateX(18px);
}
.studio-generate-btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 8px;
width: 100%;
min-height: 40px;
margin-top: 8px;
border: 1px solid var(--accent);
border-radius: var(--radius-xs);
background: var(--accent);
color: #061014;
font: inherit;
font-size: 13px;
font-weight: 750;
cursor: pointer;
transition: opacity 140ms ease, transform 140ms ease;
}
.studio-generate-btn:hover {
opacity: 0.88;
transform: translateY(-1px);
}
.studio-generate-btn:disabled {
cursor: not-allowed;
opacity: 0.48;
}
.studio-audio-preview {
width: 100%;
height: 36px;
margin-top: 8px;
border-radius: var(--radius-xs);
}
/* Debug panel */
.studio-debug-panel__clear {
border: 1px solid var(--border-subtle);
border-radius: 999px;
background: var(--bg-inset);
color: var(--fg-muted);
font: inherit;
font-size: 11px;
font-weight: 700;
padding: 3px 8px;
cursor: pointer;
}
.studio-debug-panel__clear:hover {
color: var(--fg-body);
border-color: rgba(var(--accent-rgb), 0.36);
}
.studio-debug-panel__list {
display: grid;
gap: 8px;
max-height: 280px;
overflow-y: auto;
padding-right: 2px;
}
.studio-debug-panel__item {
display: grid;
gap: 5px;
padding: 9px 10px;
border: 1px solid var(--border-subtle);
border-left: 3px solid rgba(var(--accent-rgb), 0.42);
border-radius: var(--radius-xs);
background: var(--bg-inset);
}
.studio-debug-panel__item--success {
border-left-color: var(--accent);
}
.studio-debug-panel__item--error {
border-left-color: #ff5c7a;
}
.studio-debug-panel__item-head {
display: flex;
align-items: center;
justify-content: space-between;
min-width: 0;
gap: 8px;
}
.studio-debug-panel__item-head strong {
color: var(--fg-body);
font-size: 12px;
font-weight: 750;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.studio-debug-panel__item-head span,
.studio-debug-panel__empty {
color: var(--fg-muted);
font-size: 11px;
}
.studio-debug-panel__item p {
margin: 0;
color: var(--fg-muted);
font-size: 11px;
line-height: 1.45;
word-break: break-all;
}
/* Status bar */
.studio-status-bar {
grid-area: status;
display: flex;
align-items: center;
min-width: 0;
gap: 10px;
padding: 0 16px;
border-top: 1px solid var(--border-weak);
background: var(--bg-panel);
}
.studio-status-bar__badge {
display: inline-flex;
align-items: center;
min-height: 22px;
padding: 0 8px;
border-radius: 999px;
font-size: 11px;
font-weight: 750;
}
.studio-status-bar__badge--idle {
background: var(--bg-inset);
color: var(--fg-muted);
}
.studio-status-bar__badge--running {
background: rgba(var(--accent-rgb), 0.13);
color: var(--accent);
}
.studio-status-bar__text {
color: var(--fg-muted);
font-size: 12px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.studio-status-bar__meta {
margin-left: auto;
color: var(--accent);
font-size: 12px;
font-weight: 700;
white-space: nowrap;
}
/* Responsive */
@media (max-width: 1080px) {
.studio-tool-layout {
grid-template-columns: minmax(220px, 280px) minmax(0, 1fr);
grid-template-areas:
"toolstrip toolstrip"
"left canvas"
"status status";
}
.studio-panel--right {
display: none;
}
}
@media (max-width: 720px) {
.studio-tool-layout {
grid-template-columns: minmax(0, 1fr);
grid-template-rows: 46px auto minmax(260px, 1fr) 36px;
grid-template-areas:
"toolstrip"
"left"
"canvas"
"status";
}
.studio-panel {
border-right: 0;
border-bottom: 1px solid var(--border-weak);
max-height: 320px;
}
}
+135
View File
@@ -0,0 +1,135 @@
.subtitle-removal-presets {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 8px;
margin-top: 8px;
}
.subtitle-removal-preset {
display: flex;
flex-direction: column;
align-items: center;
gap: 4px;
padding: 10px 8px;
border: 1.5px solid var(--border-weak, #e5e5e5);
border-radius: 10px;
background: var(--bg-surface, #fff);
cursor: pointer;
transition: border-color 0.15s, background 0.15s;
}
.subtitle-removal-preset:hover {
border-color: var(--accent, #0d9488);
background: var(--bg-elevated, #f8f8f8);
}
.subtitle-removal-preset.is-active {
border-color: var(--accent, #0d9488);
background: color-mix(in srgb, var(--accent, #0d9488) 6%, transparent);
}
.subtitle-removal-preset strong {
font-size: 12px;
font-weight: 600;
}
.subtitle-removal-preset span {
font-size: 11px;
opacity: 0.55;
text-align: center;
}
.subtitle-removal-preset__visual {
position: relative;
width: 48px;
height: 32px;
border-radius: 4px;
background: var(--bg-page, #f0f0f0);
border: 1px solid var(--border-weak, #e0e0e0);
overflow: hidden;
}
.subtitle-removal-preset__region {
position: absolute;
left: 0;
right: 0;
top: var(--region-top);
height: var(--region-height);
background: color-mix(in srgb, var(--accent, #0d9488) 30%, transparent);
border-top: 1.5px dashed var(--accent, #0d9488);
border-bottom: 1.5px dashed var(--accent, #0d9488);
}
.subtitle-removal-preview {
display: flex;
flex-direction: column;
align-items: center;
gap: 16px;
padding: 24px;
width: 100%;
height: 100%;
overflow: auto;
}
.subtitle-removal-preview__video-wrap {
position: relative;
display: flex;
flex-direction: column;
align-items: center;
max-width: 100%;
}
.subtitle-removal-preview__video-wrap video {
max-width: 100%;
max-height: 40vh;
border-radius: 8px;
}
.subtitle-removal-preview__video-wrap h4 {
margin: 0 0 8px;
font-size: 13px;
opacity: 0.7;
}
.subtitle-removal-preview__region-overlay {
position: absolute;
left: 0;
right: 0;
top: var(--region-top);
height: var(--region-height);
background: rgba(13, 148, 136, 0.15);
border-top: 2px dashed rgba(13, 148, 136, 0.6);
border-bottom: 2px dashed rgba(13, 148, 136, 0.6);
pointer-events: none;
border-radius: 2px;
}
.subtitle-removal-preview__actions {
display: flex;
align-items: center;
gap: 8px;
margin-top: 12px;
}
.subtitle-removal-preview__actions button {
display: inline-flex;
align-items: center;
gap: 4px;
padding: 6px 14px;
border: none;
border-radius: var(--radius-sm, 6px);
background: rgba(0, 0, 0, 0.7);
color: #fff;
font-size: 13px;
cursor: pointer;
transition: background 0.15s;
}
.subtitle-removal-preview__actions button:hover:not(:disabled) {
background: var(--accent, #0d9488);
}
.subtitle-removal-preview__actions button:disabled {
opacity: 0.5;
cursor: not-allowed;
}
+124
View File
@@ -0,0 +1,124 @@
.welcome-splash {
position: fixed;
inset: 0;
z-index: 9999;
background: #000;
transition: opacity 0.7s ease;
}
.welcome-splash.is-exiting {
opacity: 0;
pointer-events: none;
}
.welcome-splash__canvas {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
display: block;
}
.welcome-splash__ambient {
position: absolute;
inset: 0;
background: radial-gradient(ellipse at 50% 80%, rgba(0, 255, 0, 0.08), transparent 70%);
pointer-events: none;
}
.welcome-splash__hero {
position: relative;
z-index: 10;
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
padding: 1rem;
}
.welcome-splash__title {
font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", sans-serif;
font-weight: 900;
font-size: clamp(4.5rem, 18vw, 9rem);
letter-spacing: 0.08em;
background: linear-gradient(135deg, #0f0, #0fa, #2eff7a, #aaffaa);
-webkit-background-clip: text;
background-clip: text;
color: transparent;
margin: 0 0 0.3em;
animation: welcome-splash-glow 3s infinite alternate;
}
@keyframes welcome-splash-glow {
0% { text-shadow: 0 0 15px #0f0, 0 0 30px #0f8a3a; }
100% { text-shadow: 0 0 30px #2eff7a, 0 0 60px #0f0, 0 0 10px #aaffaa; }
}
.welcome-splash__subtitle {
font-family: "Microsoft YaHei", "PingFang SC", monospace;
font-size: clamp(1.1rem, 5vw, 1.8rem);
font-weight: 500;
letter-spacing: 0.12em;
color: #caffb0;
background: rgba(0, 0, 0, 0.55);
backdrop-filter: blur(6px);
padding: 0.6rem 1.5rem;
border-radius: 60px;
border: 1px solid rgba(0, 255, 0, 0.5);
box-shadow: 0 0 18px rgba(0, 255, 0, 0.25);
margin: 0;
}
.welcome-splash__enter {
font-family: "Microsoft YaHei", "PingFang SC", monospace;
font-size: clamp(1.3rem, 6vw, 2.2rem);
font-weight: 700;
letter-spacing: 0.1em;
color: #e0ffc0;
background: linear-gradient(135deg, rgba(0, 30, 0, 0.7), rgba(0, 60, 0, 0.6));
backdrop-filter: blur(8px);
padding: 0.7rem 1.8rem;
border-radius: 50px;
margin-top: 2rem;
border: 1px solid #2eff7a;
box-shadow: 0 0 25px rgba(50, 255, 50, 0.4);
cursor: pointer;
animation: welcome-splash-enter-in 0.8s cubic-bezier(0.2, 0.9, 0.4, 1.2) both;
transition: transform 0.2s, box-shadow 0.2s;
}
.welcome-splash__enter:hover {
transform: scale(1.05);
box-shadow: 0 0 40px rgba(50, 255, 50, 0.6);
}
.welcome-splash__enter:active {
transform: scale(0.97);
}
@keyframes welcome-splash-enter-in {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@media (max-width: 640px) {
.welcome-splash__subtitle {
white-space: normal;
width: 85%;
line-height: 1.4;
font-size: 1rem;
padding: 0.4rem 1rem;
}
.welcome-splash__title {
letter-spacing: 0.05em;
}
}
+442
View File
@@ -0,0 +1,442 @@
/* Workbench page rules move here as they are retired from legacy-pages.css. */
.wb-prompt-cases {
position: relative;
z-index: 1;
width: min(100%, 1600px);
margin-top: 8px;
}
.wb-prompt-cases__grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
grid-auto-flow: dense;
grid-auto-rows: 10px;
gap: 10px;
}
.wb-prompt-case-card {
position: relative;
display: block;
min-width: 0;
min-height: 0;
grid-row: span 14;
overflow: hidden;
border: 0;
border-radius: 8px;
background: var(--bg-inset);
color: var(--fg-body);
padding: 0;
cursor: zoom-in;
text-align: left;
isolation: isolate;
}
.wb-prompt-case-card--ratio-wide {
grid-column: span 1;
grid-row: span 8;
}
.wb-prompt-case-card--ratio-tall {
grid-column: span 1;
grid-row: span 23;
}
.wb-prompt-case-card--ratio-square {
grid-column: span 1;
grid-row: span 13;
}
.wb-prompt-case-card--ratio-portrait {
grid-column: span 1;
grid-row: span 16;
}
.wb-prompt-case-card img {
display: block;
width: 100%;
height: 100%;
object-fit: cover;
background: #07111b;
transform: scale(1.001);
transition: filter 180ms ease, transform 180ms ease;
}
.wb-prompt-case-card:hover img,
.wb-prompt-case-card:focus-visible img {
filter: brightness(0.72);
transform: scale(1.035);
}
.wb-prompt-case-card > div {
position: absolute;
z-index: 1;
}
.wb-prompt-case-card > div {
inset: auto 0 0;
display: grid;
gap: 4px;
padding: 36px 12px 12px;
background: rgba(0, 0, 0, 0.82);
opacity: 0;
pointer-events: none;
transform: translateY(8px);
transition: opacity 160ms ease, transform 160ms ease;
}
.wb-prompt-case-card:hover > div,
.wb-prompt-case-card:focus-visible > div {
opacity: 1;
transform: translateY(0);
}
.wb-prompt-case-card strong {
color: #fff;
font-size: 13px;
font-weight: 800;
line-height: 1.3;
}
.wb-prompt-case-card em {
color: rgba(255, 255, 255, 0.72);
font-size: 12px;
font-style: normal;
font-weight: 650;
}
.web-shell .ai-workbench-page.is-launch .wb-home {
gap: 20px;
}
.web-shell .ai-workbench-page.is-launch .wb-prompt-cases .wb-showcase__header {
margin-bottom: 10px;
}
.wb-prompt-case-modal {
position: fixed;
inset: 0;
z-index: 1200;
display: grid;
place-items: center;
padding: 28px;
background: rgba(2, 6, 12, 0.42);
}
.wb-prompt-case-modal__backdrop {
position: absolute;
inset: 0;
border: 0;
background: rgba(2, 6, 12, 0.58);
backdrop-filter: none;
cursor: zoom-out;
}
.wb-prompt-case-modal__panel {
--prompt-case-modal-max-height: min(720px, calc(100svh - 56px));
position: relative;
z-index: 1;
display: grid;
grid-template-columns: minmax(300px, 0.95fr) minmax(300px, 1fr);
width: min(880px, calc(100vw - 56px));
max-height: var(--prompt-case-modal-max-height);
overflow: hidden;
border: 1px solid rgba(148, 163, 184, 0.18);
border-radius: 16px;
background: #070b10;
color: #e5edf7;
box-shadow: none;
}
.wb-prompt-case-modal__media {
display: grid;
place-items: center;
min-height: 0;
overflow: hidden;
padding: 16px;
background: #05080d;
}
.wb-prompt-case-modal__media img {
display: block;
width: 100%;
max-height: min(560px, calc(100svh - 108px));
border-radius: 12px;
object-fit: contain;
box-shadow: none;
}
.wb-prompt-case-modal__sidebar {
position: relative;
display: grid;
align-content: start;
min-height: 0;
max-height: var(--prompt-case-modal-max-height);
gap: 16px;
overflow-y: auto;
overscroll-behavior: contain;
padding: 34px 26px 26px;
scrollbar-gutter: stable;
border-left: 1px solid rgba(148, 163, 184, 0.16);
background: #0c1118;
}
.wb-prompt-case-modal__close {
position: absolute;
top: 14px;
right: 14px;
display: grid;
place-items: center;
width: 34px;
height: 34px;
border: 1px solid rgba(148, 163, 184, 0.18);
border-radius: 10px;
background: rgba(15, 23, 42, 0.72);
color: #e5edf7;
cursor: pointer;
}
.wb-prompt-case-modal__close:hover {
background: rgba(30, 41, 59, 0.95);
color: #ffffff;
}
.wb-prompt-case-author {
display: grid;
grid-template-columns: 36px minmax(0, 1fr);
gap: 10px;
align-items: center;
}
.wb-prompt-case-author > span {
display: grid;
place-items: center;
width: 36px;
height: 36px;
border-radius: 50%;
background: #00ff88;
color: #061014;
font-size: 13px;
font-weight: 900;
}
.wb-prompt-case-author strong,
.wb-prompt-case-meta h2 {
color: #f8fafc;
}
.wb-prompt-case-author strong {
display: block;
overflow: hidden;
font-size: 14px;
font-weight: 900;
text-overflow: ellipsis;
white-space: nowrap;
}
.wb-prompt-case-author em,
.wb-prompt-case-meta span {
color: #94a3b8;
font-size: 12px;
font-style: normal;
font-weight: 700;
}
.wb-prompt-case-meta {
display: grid;
gap: 8px;
padding-bottom: 18px;
border-bottom: 1px solid rgba(148, 163, 184, 0.16);
}
.wb-prompt-case-meta h2 {
margin: 0;
font-size: 19px;
font-weight: 900;
line-height: 1.25;
}
.wb-prompt-case-meta p {
margin: 0;
color: #cbd5e1;
font-size: 13px;
font-weight: 650;
line-height: 1.65;
}
.wb-prompt-case-prompt {
display: grid;
gap: 10px;
}
.wb-prompt-case-prompt span {
color: #94a3b8;
font-size: 14px;
font-weight: 850;
}
.wb-prompt-case-prompt p {
margin: 0;
color: #e2e8f0;
font-size: 14px;
font-weight: 700;
line-height: 1.75;
white-space: pre-wrap;
}
.wb-prompt-case-actions {
position: sticky;
bottom: -1px;
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 8px;
margin: 0 -2px -2px;
padding: 10px 2px 2px;
background: #0c1118;
}
.wb-prompt-case-actions button {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 7px;
min-height: 44px;
border: 1px solid rgba(148, 163, 184, 0.16);
border-radius: 8px;
background: #16202c;
color: #e5edf7;
font-size: 14px;
font-weight: 850;
cursor: pointer;
}
.wb-prompt-case-actions button:hover {
background: #1f2c3a;
color: #ffffff;
}
.wb-prompt-case-actions button:first-child {
background: #00ff88;
border-color: #00ff88;
color: #061014;
}
.wb-prompt-case-actions button:first-child:hover {
background: #42ffa6;
color: #061014;
}
@media (max-width: 980px) {
.wb-prompt-cases__grid {
grid-template-columns: repeat(auto-fill, minmax(170px, 1fr));
grid-auto-rows: 8px;
gap: 8px;
}
.wb-prompt-case-card {
grid-row: span 13;
}
.wb-prompt-case-card--ratio-wide {
grid-column: span 1;
grid-row: span 7;
}
.wb-prompt-case-card--ratio-tall {
grid-column: span 1;
grid-row: span 19;
}
.wb-prompt-case-card--ratio-square {
grid-column: span 1;
grid-row: span 11;
}
.wb-prompt-case-card--ratio-portrait {
grid-column: span 1;
grid-row: span 14;
}
.wb-prompt-case-modal__panel {
--prompt-case-modal-max-height: calc(100svh - 28px);
width: min(640px, calc(100vw - 28px));
max-height: var(--prompt-case-modal-max-height);
grid-template-columns: 1fr;
overflow-y: auto;
}
.wb-prompt-case-modal__media {
min-height: 0;
overflow: visible;
padding: 18px;
}
.wb-prompt-case-modal__sidebar {
max-height: none;
overflow: visible;
border-left: 0;
border-top: 1px solid rgba(148, 163, 184, 0.16);
padding: 24px 22px 24px;
}
.wb-prompt-case-modal__close {
right: 14px;
top: 14px;
}
}
@media (max-width: 560px) {
.wb-prompt-cases__grid {
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
grid-auto-rows: 8px;
gap: 8px;
}
.wb-prompt-case-card {
grid-row: span 12;
}
.wb-prompt-case-card--ratio-wide {
grid-column: span 1;
grid-row: span 7;
}
.wb-prompt-case-card--ratio-tall {
grid-column: span 1;
grid-row: span 18;
}
.wb-prompt-case-card--ratio-square {
grid-column: span 1;
grid-row: span 11;
}
.wb-prompt-case-card--ratio-portrait {
grid-column: span 1;
grid-row: span 13;
}
.wb-prompt-case-card > div {
padding: 34px 10px 10px;
}
.wb-prompt-case-card strong {
font-size: 12px;
}
.wb-prompt-case-card em {
font-size: 11px;
}
.wb-prompt-case-modal__media {
padding: 16px;
}
.wb-prompt-case-modal__sidebar {
padding: 22px 16px 22px;
}
.wb-prompt-case-actions {
grid-template-columns: 1fr;
}
}
+542
View File
@@ -0,0 +1,542 @@
/* Shell layout extracted from the legacy app stylesheet. */
.web-shell {
display: block;
width: 100%;
height: 100%;
overflow: hidden;
background: var(--page-bg);
background-size: auto;
}
.web-shell[data-theme="dark"] {
background: var(--page-bg);
background-size: auto;
}
.event-strip {
position: relative;
z-index: 30;
display: flex;
align-items: center;
justify-content: center;
gap: 14px;
height: 36px;
padding: 0 44px 0 18px;
border-bottom: 1px solid rgba(37, 96, 56, 0.12);
background: rgba(210, 246, 219, 0.94);
color: #173425;
font-size: 12px;
font-weight: 800;
white-space: nowrap;
}
.web-shell[data-theme="dark"] .event-strip {
border-color: rgba(var(--accent-rgb), 0.2);
background: var(--bg-panel);
color: var(--fg-body);
}
.event-strip__pill {
padding: 5px 13px;
border-radius: 999px;
background: rgba(255, 255, 255, 0.86);
color: #236039;
box-shadow: inset 0 0 0 1px rgba(35, 96, 57, 0.11);
}
.web-shell[data-theme="dark"] .event-strip__pill {
background: rgba(255, 255, 255, 0.11);
color: var(--accent);
}
.event-strip button {
height: 24px;
padding: 0 12px;
border: 1px solid rgba(35, 96, 57, 0.18);
border-radius: 999px;
background: rgba(255, 255, 255, 0.7);
color: #236039;
font-weight: 900;
cursor: pointer;
transition: background var(--transition-fast, 140ms ease), border-color var(--transition-fast, 140ms ease), transform var(--transition-fast, 140ms ease);
}
.event-strip button:hover {
transform: translateY(-1px);
}
.web-shell[data-theme="dark"] .event-strip button {
border-color: rgba(255, 255, 255, 0.14);
background: rgba(255, 255, 255, 0.08);
color: var(--fg-body);
}
.event-strip__close {
position: absolute;
top: 50%;
right: 14px;
display: grid;
place-items: center;
width: 26px;
height: 26px;
padding: 0;
transform: translateY(-50%);
border: 0;
background: transparent;
color: rgba(23, 52, 37, 0.7);
cursor: pointer;
}
.web-shell[data-theme="dark"] .event-strip__close {
color: rgba(244, 247, 245, 0.72);
}
.web-shell__stage {
position: relative;
height: calc(100svh - 36px);
min-height: 0;
}
.web-shell.event-strip-hidden .web-shell__stage {
height: 100svh;
}
.web-shell__content {
display: flex;
flex-direction: column;
min-width: 0;
height: 100%;
}
.web-topbar {
position: relative;
z-index: 20;
display: flex;
align-items: center;
justify-content: space-between;
flex: 0 0 62px;
gap: 18px;
padding: 12px 22px 10px;
border-bottom: 1px solid var(--border-weak);
background: var(--bg-panel);
}
.web-shell[data-theme="dark"] .web-topbar {
background: var(--bg-panel);
}
.brand-lockup {
display: inline-flex;
align-items: center;
gap: 10px;
min-width: 0;
background: transparent;
color: var(--text);
font-size: 15px;
font-weight: 900;
cursor: pointer;
}
.brand-lockup__mark {
display: inline-flex;
align-items: center;
justify-content: center;
width: 30px;
height: 30px;
overflow: hidden;
border-radius: 8px;
background: transparent;
color: inherit;
font-size: 0;
box-shadow: none;
}
.brand-lockup__logo {
display: block;
width: 100%;
height: 100%;
object-fit: contain;
}
.brand-lockup__name {
white-space: nowrap;
}
.brand-lockup__tone {
display: inline-flex;
align-items: center;
height: 22px;
padding: 0 8px;
border: 1px solid var(--border-subtle);
border-radius: 999px;
background: var(--bg-inset);
color: var(--fg-muted);
font-size: 11px;
font-weight: 900;
text-transform: uppercase;
}
.web-topbar__actions {
display: flex;
align-items: center;
justify-content: flex-end;
min-width: 0;
gap: 8px;
}
.creator-button,
.member-button,
.profile-button,
.icon-button,
.theme-toggle {
position: relative;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 7px;
min-width: 0;
height: 36px;
padding: 0 12px;
border: 1px solid var(--border-subtle);
border-radius: 12px;
background: var(--bg-inset);
color: var(--text);
font-size: 12px;
font-weight: 850;
cursor: pointer;
box-shadow: none;
transition:
transform 160ms ease,
border-color 160ms ease,
background 160ms ease,
color 160ms ease;
}
.web-shell[data-theme="dark"] .creator-button,
.web-shell[data-theme="dark"] .member-button,
.web-shell[data-theme="dark"] .profile-button,
.web-shell[data-theme="dark"] .icon-button,
.web-shell[data-theme="dark"] .theme-toggle {
background: var(--bg-inset);
box-shadow: none;
}
.creator-button {
border-color: rgba(var(--accent-rgb), 0.26);
background: rgba(var(--accent-rgb), 0.12);
color: #1f6d3c;
}
.web-shell[data-theme="dark"] .creator-button {
color: var(--accent);
}
.member-button {
color: var(--cyan-strong);
}
.member-button--community {
color: var(--text);
}
.icon-button,
.theme-toggle {
width: 36px;
padding: 0;
}
.theme-switcher {
display: inline-flex;
align-items: center;
gap: 4px;
height: 40px;
padding: 3px;
border: 1px solid var(--border-subtle);
border-radius: 14px;
background: var(--bg-inset);
box-shadow: none;
}
.web-shell[data-theme="dark"] .theme-switcher {
border-color: rgba(var(--accent-rgb), 0.18);
background: var(--bg-inset);
box-shadow: none;
}
.theme-switcher .theme-toggle.theme-switcher__option {
width: auto;
min-width: 70px;
height: 32px;
min-height: 32px;
padding: 0 10px;
border-color: transparent;
border-radius: 10px;
background: transparent;
color: var(--fg-muted);
box-shadow: none;
}
.theme-switcher .theme-toggle.theme-switcher__option.is-active {
border-color: rgba(var(--accent-rgb), 0.24);
background: rgba(var(--accent-rgb), 0.16);
color: var(--accent);
}
.theme-switcher .theme-toggle.theme-switcher__option:hover {
background: rgba(var(--accent-rgb), 0.12);
transform: translateY(0);
}
.profile-button--guest {
border-color: rgba(var(--accent-rgb), 0.32);
background: var(--accent);
color: #07100b;
}
.creator-button:hover,
.member-button:hover,
.profile-button:hover,
.icon-button:hover,
.theme-toggle:hover {
transform: translateY(-1px);
border-color: var(--line-strong);
background: var(--bg-hover);
}
.profile-button--guest:hover {
background: rgba(var(--accent-rgb), 0.88);
color: #07100b;
}
.status-dot {
position: absolute;
top: 7px;
right: 7px;
width: 6px;
height: 6px;
border-radius: 999px;
background: var(--danger);
}
.floating-nav {
position: fixed;
z-index: 24;
left: 22px;
top: 50%;
display: flex;
flex-direction: column;
align-items: center;
width: 62px;
padding: 8px;
border: 1px solid var(--border-weak);
border-radius: 20px;
transform: translateY(-50%);
background: var(--bg-panel);
box-shadow: var(--shadow-tight);
}
.web-shell[data-theme="dark"] .floating-nav {
background: var(--bg-panel);
}
.floating-nav__create,
.floating-nav__button {
position: relative;
display: inline-flex;
align-items: center;
justify-content: center;
width: 44px;
height: 44px;
border-radius: 14px;
background: transparent;
color: var(--text-muted);
font-size: 18px;
cursor: pointer;
transition:
background 160ms ease,
color 160ms ease,
transform 160ms ease,
box-shadow 160ms ease;
}
.floating-nav__item {
position: relative;
display: flex;
justify-content: center;
width: 44px;
}
.floating-nav__submenu {
position: absolute;
left: calc(100% + 12px);
top: 50%;
z-index: 3;
display: grid;
gap: 6px;
min-width: 112px;
padding: 6px;
border: 1px solid var(--border-weak);
border-radius: 16px;
transform: translate(-6px, -50%);
background: var(--bg-elevated);
box-shadow: var(--shadow-tight);
opacity: 0;
pointer-events: none;
transition:
opacity 160ms ease,
transform 160ms ease;
}
.web-shell[data-theme="dark"] .floating-nav__submenu {
background: var(--bg-elevated);
}
.floating-nav__item.has-children.is-submenu-open .floating-nav__submenu {
opacity: 1;
transform: translate(0, -50%);
pointer-events: auto;
}
.floating-nav__item.has-children.is-submenu-open .floating-nav__button .floating-nav__label {
opacity: 0;
transform: translate(-6px, -50%);
}
.floating-nav__subbutton {
display: flex;
align-items: center;
gap: 8px;
min-width: 0;
height: 36px;
padding: 0 10px;
border-radius: 12px;
background: transparent;
color: var(--text-muted);
font-size: 12px;
font-weight: 900;
cursor: pointer;
white-space: nowrap;
transition:
background 160ms ease,
color 160ms ease,
transform 160ms ease;
}
.floating-nav__subbutton:hover,
.floating-nav__subbutton.is-active {
background: rgba(var(--accent-rgb), 0.14);
color: var(--accent);
}
.floating-nav__create {
margin-bottom: 6px;
background: var(--accent);
color: #07100b;
font-size: 26px;
font-weight: 900;
box-shadow: none;
}
.floating-nav__label {
position: absolute;
left: calc(100% + 12px);
top: 50%;
display: inline-flex;
align-items: center;
width: max-content;
max-width: 180px;
height: 30px;
padding: 0 11px;
border: 1px solid var(--line);
border-radius: 999px;
transform: translate(-6px, -50%);
background: var(--bg-elevated);
color: var(--fg-body);
font-size: 12px;
font-weight: 900;
opacity: 0;
overflow: hidden;
pointer-events: none;
white-space: nowrap;
box-shadow: var(--shadow-tight);
transition:
opacity 160ms ease,
transform 160ms ease;
}
.floating-nav__button:hover,
.floating-nav__button.is-active {
background: rgba(var(--accent-rgb), 0.14);
color: var(--text);
transform: translateY(-1px);
}
.floating-nav__button:active {
transform: scale(0.92);
transition-duration: 80ms;
}
.floating-nav__button.is-active {
color: var(--accent);
box-shadow: inset 0 0 0 1px rgba(var(--accent-rgb), 0.34);
}
.floating-nav__button:hover .floating-nav__label,
.floating-nav__button:focus-visible .floating-nav__label,
.floating-nav__button.is-active .floating-nav__label {
opacity: 1;
transform: translate(0, -50%);
}
.floating-nav__button.has-divider {
margin-top: 9px;
}
.floating-nav__button.has-divider::before {
content: "";
position: absolute;
top: -6px;
width: 30px;
height: 1px;
background: var(--line);
}
.floating-page-scroll-actions {
position: fixed;
z-index: 25;
left: 30px;
top: calc(50% + 265px);
display: grid;
gap: 7px;
}
.floating-page-scroll-actions__button {
display: inline-flex;
align-items: center;
justify-content: center;
width: 44px;
height: 36px;
border: 1px solid var(--line);
border-radius: 12px;
background: rgba(var(--accent-rgb), 0.08);
color: var(--text-muted);
font-size: 16px;
cursor: pointer;
transition:
background 160ms ease,
color 160ms ease,
transform 160ms ease;
}
.floating-page-scroll-actions__button:hover {
background: rgba(var(--accent-rgb), 0.16);
color: var(--accent);
transform: translateY(-1px);
}
.web-shell__page {
flex: 1;
min-height: 0;
overflow: auto;
scrollbar-color: rgba(var(--accent-rgb), 0.42) transparent;
}
File diff suppressed because it is too large Load Diff
+86
View File
@@ -0,0 +1,86 @@
:root {
color-scheme: dark;
--bg-base: #0d0d0f;
--bg-page: var(--bg-base);
--bg-shell: #0d0d0f;
--bg-surface: #151719;
--bg-panel: #151719;
--bg-elevated: #181b1d;
--bg-elevated-rgb: 24, 27, 29;
--bg-inset: #101214;
--bg-hover: #202527;
--bg-active: #243129;
--border-weak: #242a2c;
--border-subtle: #2a3032;
--border-default: #394044;
--border-accent: #00ff88;
--fg-body: #f3f5f2;
--fg-muted: #aeb8b1;
--fg-soft: #7e8983;
--fg-dim: #5f6a64;
--accent: #00ff88;
--accent-rgb: 0, 255, 136;
--accent-dim: #00d874;
--accent-hover: #58ffac;
--accent-muted: #183527;
--accent-glow: none;
--accent-cyan: #7be7ff;
--accent-gold: #d9f99d;
--success: #26d06e;
--warning: #f3aa26;
--error: #ff5a5f;
--radius-xs: 8px;
--radius-sm: 10px;
--radius-md: 14px;
--radius-lg: 18px;
--shadow-panel: 0 0 0 1px rgba(255, 255, 255, 0.06);
--shadow-tight: 0 0 0 1px rgba(255, 255, 255, 0.04);
--shadow-glow: 0 0 26px rgba(45, 212, 191, 0.18);
/* Motion tokens */
--transition-fast: 140ms ease;
--transition-base: 200ms ease;
--transition-slow: 320ms ease;
--ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
--ease-spring: cubic-bezier(0.34, 1.2, 0.64, 1);
--font-sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
"Microsoft YaHei", sans-serif;
/* Semantic aliases used by the layered stylesheet structure. */
--surface-canvas: var(--bg-base);
--surface-shell: var(--bg-shell);
--surface-panel: var(--bg-panel);
--surface-elevated: var(--bg-elevated);
--surface-muted: var(--bg-inset);
--surface-hover: var(--bg-hover);
--text-primary: var(--fg-body);
--text-muted: var(--fg-muted);
--text-subtle: var(--fg-soft);
--text-disabled: var(--fg-dim);
--border-soft: var(--border-weak);
--border-normal: var(--border-subtle);
--border-strong: var(--border-default);
--radius-control: var(--radius-sm);
--radius-panel: var(--radius-lg);
--shadow-surface: var(--shadow-tight);
--shadow-elevated: var(--shadow-panel);
--accent-primary: var(--accent);
--accent-primary-rgb: var(--accent-rgb);
/* Legacy aliases used by the first web preview. */
--page-bg: var(--bg-base);
--page-bg-soft: var(--bg-shell);
--surface: var(--bg-panel);
--surface-strong: var(--bg-elevated);
--line: var(--border-subtle);
--line-strong: var(--border-default);
--text: var(--fg-body);
--text-soft: var(--fg-soft);
--cyan: var(--accent-cyan);
--cyan-strong: #5eead4;
--gold: var(--accent-gold);
--green: var(--success);
--danger: var(--error);
--shadow-soft: var(--shadow-panel);
}