Files
yingqing/core/frontend/src/omni-create-page.css
T
2026-09-22 11:46:22 +08:00

1995 lines
36 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* 全能创作 · 从影擎 HTML 设计稿转写(首页 + 创作历史) */
.omni-create-page,
.omni-history-page {
--black: #101012;
--text: #17181a;
--muted: #6f747c;
font-size: 14px;
}
@keyframes omniMessageIn {
from { opacity: 0; transform: translateY(4px); }
to { opacity: 1; transform: translateY(0); }
}
.omni-home-page {
min-height: calc(100vh - var(--topbar-height) - 64px);
}
.omni-home-shell {
width: min(1180px, 100%);
margin: 0 auto;
padding-bottom: 28px;
}
.omni-home-hero {
position: relative;
display: flex;
flex-direction: column;
align-items: center;
padding: 24px 20px 20px;
text-align: center;
}
.omni-home-history {
position: absolute;
top: 20px;
right: 0;
height: 40px;
display: inline-flex;
align-items: center;
gap: 8px;
padding: 0 14px;
border: 1.5px solid rgba(16, 16, 18, .22);
border-radius: 12px;
color: var(--black);
background: #fff;
font-size: 13px;
font-weight: 650;
box-shadow: 0 4px 12px rgba(16, 16, 18, .08);
cursor: pointer;
}
.omni-home-history:hover {
border-color: var(--black);
background: #f7f7f8;
}
.omni-home-history svg {
width: 16px;
height: 16px;
}
.omni-home-kicker {
display: inline-flex;
align-items: center;
gap: 7px;
margin-bottom: 12px;
color: var(--klein);
font-size: 12px;
font-weight: 750;
letter-spacing: .13em;
}
.omni-home-kicker svg {
width: 14px;
height: 14px;
}
.omni-home-hero h1 {
margin: 0;
color: var(--black);
font-size: clamp(30px, 3vw, 44px);
line-height: 1.15;
letter-spacing: -.035em;
font-weight: 700;
}
.omni-home-hero > p {
margin: 10px 0 17px;
color: #747b86;
font-size: 14px;
}
.omni-output-switch {
display: inline-flex;
gap: 4px;
padding: 4px;
border: 1px solid rgba(34, 42, 54, .10);
border-radius: 999px;
background: rgba(255, 255, 255, .78);
box-shadow: 0 7px 18px rgba(20, 27, 38, .06);
}
.omni-output-switch button {
height: 31px;
padding: 0 16px;
border-radius: 999px;
color: #6d737c;
background: transparent;
font-size: 12px;
font-weight: 650;
cursor: pointer;
}
.omni-output-switch button.active {
color: #fff;
background: var(--black);
}
.omni-start-composer {
position: relative;
z-index: 5;
width: min(920px, 100%);
margin: 0 auto 46px;
padding: 16px 17px 13px;
border: 1px solid rgba(34, 42, 54, .10);
border-top: 3px solid var(--klein);
border-radius: 19px;
background: rgba(255, 255, 255, .98);
box-shadow: 0 22px 54px rgba(21, 29, 42, .12), 0 0 0 5px rgba(255, 255, 255, .42);
transition: border-color 160ms ease, box-shadow 160ms ease, opacity 180ms ease, transform 180ms ease;
}
.omni-start-composer:focus-within {
border-color: rgba(0, 47, 167, .33);
box-shadow: 0 24px 58px rgba(21, 29, 42, .14), 0 0 0 4px rgba(0, 47, 167, .055);
}
.omni-start-context {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 7px;
margin-bottom: 10px;
}
.omni-start-context[hidden] {
display: none;
}
.omni-selected-case {
width: fit-content;
max-width: 100%;
height: 36px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 6px;
margin: 0;
padding: 0 5px 0 11px;
border: 1px solid rgba(0, 47, 167, .13);
border-radius: 8px;
background: #edf5ff;
}
.omni-selected-case[hidden] {
display: none;
}
.omni-selected-case > span {
display: inline-flex;
align-items: center;
gap: 7px;
color: var(--klein);
font-size: 12px;
}
.omni-selected-case svg,
.omni-selected-case button svg {
width: 14px;
height: 14px;
}
.omni-selected-case button {
width: 23px;
height: 23px;
display: grid;
place-items: center;
border-radius: 8px;
color: #7b818a;
background: #f4f5f7;
cursor: pointer;
}
.omni-selected-case button:hover {
color: var(--klein);
background: #dcecff;
}
.omni-start-attachments {
display: flex;
flex-wrap: wrap;
gap: 7px;
margin: 0;
}
.omni-start-attachments:empty {
display: none;
}
.omni-attachment-chip {
max-width: 270px;
height: 36px;
display: inline-flex;
align-items: center;
gap: 6px;
padding: 0 5px 0 11px;
border: 1px solid rgba(0, 47, 167, .12);
border-radius: 8px;
color: #344159;
background: rgba(0, 47, 167, .045);
font-size: 12px;
font-weight: 600;
}
.omni-attachment-chip svg,
.omni-attachment-chip img {
width: 18px;
height: 18px;
flex: 0 0 auto;
color: var(--klein);
}
.omni-attachment-chip img {
border-radius: 4px;
object-fit: cover;
background: #eef1f5;
}
.omni-attachment-chip span {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.omni-attachment-remove {
width: 23px;
height: 23px;
display: grid;
place-items: center;
flex: 0 0 auto;
border-radius: 6px;
color: #777e88;
background: rgba(255, 255, 255, .76);
cursor: pointer;
}
.omni-attachment-remove:hover {
color: var(--klein);
background: #dcecff;
}
.omni-attachment-remove svg {
width: 12px;
height: 12px;
}
#omniStartPrompt {
width: 100%;
min-height: 92px;
max-height: 190px;
padding: 15px 3px 10px;
resize: vertical;
border: 0;
outline: 0;
color: var(--text);
background: transparent;
font-size: 15px;
line-height: 1.7;
}
#omniStartPrompt::placeholder,
#omniSessionPrompt::placeholder {
color: #a2a7af;
}
.omni-start-toolbar {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
}
.omni-start-tools,
.omni-session-composer-tools,
.omni-session-composer-tools > div {
display: flex;
align-items: center;
gap: 6px;
min-width: 0;
}
.omni-icon-tool {
width: 34px;
height: 34px;
display: grid;
place-items: center;
flex: 0 0 auto;
border: 1px solid rgba(34, 42, 54, .09);
border-radius: 9px;
color: #353b45;
background: #f8f9fa;
font-size: 15px;
font-weight: 700;
cursor: pointer;
transition: color 150ms ease, border-color 150ms ease, background-color 150ms ease;
}
.omni-icon-tool:hover {
border-color: rgba(0, 47, 167, .24);
color: var(--klein);
background: rgba(0, 47, 167, .045);
}
.omni-icon-tool svg {
width: 15px;
height: 15px;
}
.omni-icon-tool.is-uploading {
color: var(--black-alpha-56);
background: var(--background-lighter);
border-color: var(--border-faint);
cursor: wait;
}
.omni-icon-tool.is-uploading svg,
.omni-upload-status svg {
animation: omni-upload-spin .8s linear infinite;
}
.omni-upload-status {
height: 34px;
display: inline-flex;
align-items: center;
gap: 6px;
padding: 0 4px;
color: var(--black-alpha-56);
font-size: 12px;
font-variant-numeric: tabular-nums;
white-space: nowrap;
}
.omni-upload-status svg {
width: 14px;
height: 14px;
}
@keyframes omni-upload-spin {
to { transform: rotate(360deg); }
}
.omni-mention-wrap {
position: relative;
}
.omni-upload-wrap {
position: relative;
}
.omni-upload-menu {
position: absolute;
bottom: calc(100% + 10px);
left: 0;
z-index: 20;
width: 268px;
padding: 8px;
border: 1px solid rgba(34, 42, 54, .10);
border-radius: 13px;
background: #fff;
box-shadow: 0 18px 38px rgba(20, 27, 38, .15);
}
.omni-upload-menu[hidden] {
display: none;
}
.omni-upload-menu > strong {
display: block;
padding: 5px 8px 7px;
color: #8b919a;
font-size: 11px;
}
.omni-upload-menu button {
width: 100%;
display: grid;
grid-template-columns: 34px minmax(0, 1fr);
align-items: center;
gap: 9px;
padding: 8px;
border-radius: 9px;
color: #303641;
background: transparent;
text-align: left;
cursor: pointer;
}
.omni-upload-menu button:hover {
color: var(--klein);
background: #edf5ff;
}
.omni-upload-menu button > svg {
width: 34px;
height: 34px;
padding: 8px;
border-radius: 9px;
color: var(--klein);
background: #edf5ff;
}
.omni-upload-menu button span,
.omni-upload-menu button small {
display: block;
}
.omni-upload-menu button span {
font-size: 12px;
font-weight: 650;
}
.omni-upload-menu button small {
margin-top: 3px;
color: #9298a1;
font-size: 11px;
font-weight: 400;
}
.omni-mention-menu {
position: absolute;
bottom: calc(100% + 10px);
left: 0;
z-index: 12;
width: 246px;
padding: 8px;
border: 1px solid rgba(34, 42, 54, .10);
border-radius: 13px;
background: #fff;
box-shadow: 0 18px 38px rgba(20, 27, 38, .15);
}
.omni-mention-menu[hidden] {
display: none;
}
.omni-mention-menu > strong {
display: block;
padding: 5px 8px 7px;
color: #8b919a;
font-size: 11px;
font-weight: 650;
}
.omni-mention-group + .omni-mention-group {
margin-top: 6px;
padding-top: 6px;
border-top: 1px solid rgba(34, 42, 54, .07);
}
.omni-mention-group > strong {
display: block;
padding: 5px 8px 7px;
color: #8b919a;
font-size: 11px;
font-weight: 650;
}
.omni-mention-menu button {
width: 100%;
display: grid;
grid-template-columns: 30px minmax(0, 1fr);
align-items: center;
gap: 8px;
padding: 7px 8px;
border-radius: 9px;
color: var(--text);
background: transparent;
text-align: left;
cursor: pointer;
}
.omni-mention-menu button:hover {
background: #f4f6f9;
}
.omni-mention-menu button > svg {
width: 30px;
height: 30px;
padding: 7px;
border-radius: 8px;
color: var(--klein);
background: rgba(0, 47, 167, .055);
}
.omni-mention-menu button > img,
.omni-mention-menu button > video {
width: 30px;
height: 30px;
display: block;
border-radius: 8px;
object-fit: cover;
background: #edf0f4;
}
.omni-mention-menu button span,
.omni-mention-menu button small {
display: block;
}
.omni-mention-menu button span {
font-size: 12px;
font-weight: 650;
}
.omni-mention-menu button small {
margin-top: 2px;
color: #8b919a;
font-size: 11px;
font-weight: 400;
}
.omni-parameter {
width: 112px;
height: 36px;
display: inline-flex;
align-items: center;
gap: 4px;
padding: 0;
border: 0;
border-radius: 10px;
color: #59606b;
background: transparent;
}
.omni-parameter-model {
width: 158px;
}
.omni-parameter-duration {
width: 118px;
}
.omni-parameter.is-hidden {
display: none;
}
.omni-parameter:has(.custom-select-shell.open) {
position: relative;
z-index: 180;
}
.omni-parameter svg {
display: none;
}
.omni-parameter .custom-select-shell {
width: 100%;
}
.omni-parameter .custom-select-trigger {
height: 36px;
padding: 0 10px;
border-color: rgba(34, 42, 54, .11);
border-radius: 10px;
background: #f8f9fa;
font-size: 12px;
font-weight: 650;
}
.omni-parameter .custom-select-trigger:hover,
.omni-parameter .custom-select-shell.open .custom-select-trigger {
border-color: rgba(0, 47, 167, .36);
background: #fff;
}
.omni-parameter .custom-select-trigger svg {
display: block;
width: 13px;
height: 13px;
}
.omni-parameter .custom-select-menu {
min-width: 100%;
max-height: 286px;
overflow-y: auto;
border-radius: 10px;
scrollbar-width: thin;
}
.omni-parameter .custom-select-option {
min-height: 34px;
font-size: 12px;
}
.omni-duration-control {
position: relative;
width: 118px;
flex: 0 0 auto;
}
.omni-duration-control:has(.omni-duration-menu:not([hidden])) {
/* 最外层:盖过会话确认卡、sticky 输入框等 */
z-index: 400;
}
.omni-duration-trigger {
width: 100%;
height: 36px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
padding: 0 10px;
border: 1px solid rgba(34, 42, 54, .11);
border-radius: 10px;
color: #373d46;
background: #f8f9fa;
font-size: 12px;
font-weight: 650;
cursor: pointer;
}
.omni-duration-trigger:disabled {
opacity: .55;
cursor: not-allowed;
}
.omni-duration-trigger:hover,
.omni-duration-trigger[aria-expanded="true"] {
border-color: rgba(0, 47, 167, .36);
background: #fff;
box-shadow: 0 0 0 3px rgba(0, 47, 167, .07);
}
.omni-duration-trigger svg {
width: 13px;
height: 13px;
color: #787f89;
transition: transform 160ms ease;
}
.omni-duration-trigger[aria-expanded="true"] svg {
transform: rotate(180deg);
}
.omni-duration-menu {
position: absolute;
top: calc(100% + 8px);
right: 0;
z-index: 400;
width: 330px;
padding: 16px;
border: 1px solid rgba(34, 42, 54, .10);
border-radius: 16px;
background: #fff;
box-shadow: 0 18px 38px rgba(20, 27, 38, .15);
}
.omni-duration-menu[hidden] {
display: none;
}
.omni-duration-menu.is-up {
top: auto;
bottom: calc(100% + 8px);
}
.omni-duration-title {
display: block;
margin-bottom: 10px;
color: #7d838d;
font-size: 12px;
}
.omni-duration-modes {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 8px;
}
.omni-duration-modes button {
height: 38px;
display: flex;
align-items: center;
justify-content: center;
gap: 7px;
border: 1px solid rgba(34, 42, 54, .08);
border-radius: 10px;
color: #626974;
background: #f7f8fa;
font-size: 12px;
cursor: pointer;
}
.omni-duration-modes button.active {
border-color: rgba(0, 47, 167, .18);
color: var(--klein);
background: #edf5ff;
font-weight: 650;
}
.omni-duration-modes button svg {
width: 13px;
height: 13px;
}
.omni-duration-values {
display: grid;
grid-template-columns: 1fr;
gap: 3px;
max-height: 212px;
overflow-y: auto;
margin-top: 12px;
padding-top: 12px;
border-top: 1px solid rgba(34, 42, 54, .08);
scrollbar-width: thin;
}
.omni-duration-values[hidden] {
display: none;
}
.omni-duration-values button {
height: 34px;
padding: 0 10px;
border: 0;
border-radius: 8px;
color: #575e69;
background: #fff;
font-size: 12px;
text-align: left;
cursor: pointer;
}
.omni-duration-control.is-image-count .omni-duration-modes {
display: none;
}
.omni-duration-control.is-image-count .omni-duration-values {
margin-top: 0;
padding-top: 0;
border-top: 0;
}
.omni-duration-values button:hover,
.omni-duration-values button.active {
border-color: rgba(0, 47, 167, .28);
color: var(--klein);
background: #edf5ff;
font-weight: 650;
}
.omni-start-generate {
min-width: 88px;
height: 38px;
display: inline-flex;
align-items: center;
justify-content: center;
flex: 0 0 auto;
padding: 0 14px;
border-radius: 10px;
color: #fff;
background: var(--klein);
font-size: 12px;
font-weight: 650;
cursor: pointer;
box-shadow: 0 9px 18px rgba(0, 47, 167, .17);
}
.omni-start-generate:disabled {
opacity: .42;
cursor: not-allowed;
box-shadow: none;
}
.omni-case-library {
padding: 0 4px;
transition: opacity 180ms ease, transform 180ms ease;
}
.omni-home-shell.is-mode-switching .omni-start-composer,
.omni-home-shell.is-mode-switching .omni-case-library {
opacity: 0;
transform: translateY(7px);
}
.omni-case-grid {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 14px;
}
/* 图片预设不需要分类筛选,直接用更舒展的画幅呈现风格本身。 */
.omni-case-library.is-image-presets .omni-case-grid {
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 14px;
}
.omni-preset-intro {
margin: 0 0 14px;
text-align: center;
}
.omni-preset-intro strong,
.omni-preset-intro span {
display: block;
}
.omni-preset-intro strong {
color: var(--accent-black);
font-size: 16px;
font-weight: 500;
line-height: 1.4;
}
.omni-preset-intro span {
margin-top: 4px;
color: var(--black-alpha-56);
font-size: 13px;
line-height: 1.8;
}
.omni-case-card {
position: relative;
min-width: 0;
overflow: hidden;
padding: 7px 7px 0;
border: 1px solid rgba(34, 42, 54, .09);
border-radius: 16px;
color: var(--text);
background: rgba(255, 255, 255, .96);
text-align: left;
cursor: pointer;
box-shadow: 0 8px 22px rgba(20, 27, 38, .055);
transition: transform 180ms ease, border-color 180ms ease, box-shadow 180ms ease;
}
.omni-case-card:hover,
.omni-case-card.active {
transform: translateY(-2px);
border-color: rgba(0, 47, 167, .42);
box-shadow: 0 14px 28px rgba(20, 27, 38, .10);
}
.omni-case-card.active {
box-shadow: 0 0 0 2px rgba(0, 47, 167, .075), 0 14px 28px rgba(20, 27, 38, .10);
}
.omni-case-visual {
position: relative;
height: 138px;
display: block;
overflow: hidden;
border-radius: 11px;
background: #edf0f4;
}
/* 视频样片本身是竖版,按竖构图展示,避免横向裁切掉人物和商品。 */
.omni-case-card[data-mode="video"] .omni-case-visual {
height: auto;
aspect-ratio: 9 / 15;
}
.omni-case-visual img,
.omni-case-visual video {
width: 100%;
height: 100%;
display: block;
object-fit: cover;
}
.omni-case-visual img {
transition: transform 260ms ease;
}
/* 预览视频叠在封面上。播不起来时保持透明,封面继续可见。
不要给 video 加 scaleSafari 里变换过的 video 会直接画成空白。 */
.omni-case-visual video {
position: absolute;
inset: 0;
opacity: 0;
transform: translateZ(0);
}
.omni-case-visual video.is-playing {
opacity: 1;
}
.omni-case-card:hover .omni-case-visual img,
.omni-case-card.active .omni-case-visual img {
transform: scale(1.035);
}
.omni-case-play {
position: absolute;
right: 10px;
bottom: 10px;
width: 28px;
height: 28px;
display: grid;
place-items: center;
border: 1px solid rgba(255, 255, 255, .55);
border-radius: 50%;
color: #fff;
background: rgba(8, 12, 20, .58);
backdrop-filter: blur(8px);
}
.omni-case-play svg {
width: 12px;
height: 12px;
}
.omni-case-play .lucide-play {
fill: currentColor;
}
.omni-case-card[data-mode="image"] .omni-case-play {
display: none;
}
.omni-case-card[data-mode="image"] .omni-case-visual {
height: auto;
aspect-ratio: 4 / 3;
}
.omni-card-use {
position: absolute;
right: 10px;
bottom: 14px;
z-index: 3;
height: 30px;
display: inline-flex;
align-items: center;
justify-content: center;
padding: 0 12px;
border: 1px solid rgba(255, 255, 255, .14);
border-radius: 8px;
color: #fff;
background: #111318;
box-shadow: 0 8px 18px rgba(0, 0, 0, .18);
font-size: 12px;
font-weight: 700;
cursor: pointer;
opacity: 0;
pointer-events: none;
transform: translateY(4px);
transition: opacity 150ms ease, transform 150ms ease, background-color 150ms ease;
}
.omni-case-card:hover .omni-card-use,
.omni-case-card:focus-visible .omni-card-use {
opacity: 1;
pointer-events: auto;
transform: translateY(0);
}
.omni-card-use:hover {
background: #2b3039;
}
.omni-preset-modal {
position: fixed;
inset: 0;
z-index: 460;
display: grid;
place-items: center;
padding: 24px;
}
.omni-preset-modal[hidden] {
display: none;
}
.omni-preset-scrim {
position: absolute;
inset: 0;
border: 0;
background: rgba(10, 14, 22, .28);
backdrop-filter: blur(7px);
}
.omni-preset-dialog {
position: relative;
z-index: 1;
width: min(1040px, 100%);
display: grid;
grid-template-columns: 440px minmax(0, 1fr);
gap: 42px;
padding: 30px;
border: 1px solid rgba(34, 42, 54, .10);
border-top: 3px solid var(--klein);
border-radius: 20px;
background: #fff;
box-shadow: 0 28px 70px rgba(10, 17, 30, .22);
animation: omniMessageIn 180ms ease both;
}
.omni-preset-close {
position: absolute;
top: 16px;
right: 16px;
z-index: 3;
width: 34px;
height: 34px;
display: grid;
place-items: center;
border-radius: 9px;
color: #6e7580;
background: #f3f5f7;
cursor: pointer;
}
.omni-preset-close:hover {
color: var(--klein);
background: #dcecff;
}
.omni-preset-close svg {
width: 16px;
height: 16px;
}
.omni-preset-media-frame {
position: relative;
width: 100%;
aspect-ratio: 1;
overflow: hidden;
border: 1px solid rgba(34, 42, 54, .08);
border-radius: 16px;
background: #eef1f5;
}
.omni-preset-media-frame img,
.omni-preset-media-frame video {
width: 100%;
height: 100%;
display: block;
object-fit: contain;
object-position: center;
background: #eef1f5;
}
.omni-preset-media-frame [hidden] {
display: none;
}
.omni-preset-video-mark {
position: absolute;
left: 16px;
bottom: 16px;
width: 40px;
height: 40px;
display: grid;
place-items: center;
border-radius: 50%;
color: #fff;
background: rgba(8, 12, 20, .62);
backdrop-filter: blur(8px);
}
.omni-preset-video-mark svg {
width: 16px;
height: 16px;
fill: currentColor;
}
.omni-preset-detail {
min-width: 0;
display: flex;
flex-direction: column;
justify-content: center;
padding: 26px 20px 10px 0;
}
.omni-preset-kind {
width: fit-content;
padding: 6px 10px;
border-radius: 999px;
color: var(--klein);
background: #edf5ff;
font-size: 12px;
font-weight: 700;
}
.omni-preset-detail h2 {
margin: 16px 0 10px;
font-size: 28px;
}
.omni-preset-detail > p {
margin: 0;
color: #737a84;
font-size: 14px;
line-height: 1.85;
}
.omni-preset-default {
margin-top: 22px;
padding: 16px;
border-radius: 12px;
background: #f6f8fb;
}
.omni-preset-default span {
color: #8a9099;
font-size: 12px;
}
.omni-preset-default p {
margin: 7px 0 0;
color: #3e4653;
font-size: 13px;
line-height: 1.7;
}
.omni-preset-actions {
display: flex;
justify-content: flex-end;
gap: 10px;
margin-top: 24px;
}
.omni-preset-actions button {
height: 42px;
padding: 0 18px;
border: 1px solid rgba(34, 42, 54, .10);
border-radius: 10px;
color: #616873;
background: #fff;
font-size: 13px;
cursor: pointer;
}
.omni-preset-actions button.primary {
border-color: var(--klein);
color: #fff;
background: var(--klein);
}
.omni-case-copy {
min-height: 76px;
display: block;
padding: 12px 68px 14px 9px;
}
.omni-case-copy strong,
.omni-case-copy small {
display: block;
}
.omni-case-copy strong {
margin-bottom: 6px;
font-size: 14px;
}
.omni-case-copy small {
display: -webkit-box;
overflow: hidden;
color: #858b94;
font-size: 12px;
line-height: 1.5;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
}
/* 图片预设只展示风格标题,去掉说明后同步收紧卡片底部留白。 */
.omni-case-card[data-mode="image"] .omni-case-copy {
min-height: 52px;
display: flex;
align-items: center;
padding-top: 10px;
padding-bottom: 10px;
}
.omni-case-card[data-mode="image"] .omni-case-copy strong {
margin-bottom: 0;
}
.omni-history-page {
width: min(1320px, 100%);
margin: 0 auto;
}
.omni-history-header {
display: flex;
align-items: flex-end;
justify-content: space-between;
gap: 24px;
margin-bottom: 24px;
}
.omni-history-header span,
.omni-history-header h1,
.omni-history-header p {
margin: 0;
}
.omni-history-heading > span {
color: var(--klein);
font-size: 11px;
font-weight: 750;
letter-spacing: .13em;
}
.omni-history-title {
display: flex;
align-items: center;
gap: 12px;
margin-top: 5px;
}
.omni-history-back {
width: 36px;
height: 36px;
display: grid;
place-items: center;
flex: 0 0 auto;
border: 1px solid rgba(34, 42, 54, .10);
border-radius: 10px;
color: #414750;
background: #fff;
cursor: pointer;
}
.omni-history-back svg {
width: 16px;
height: 16px;
}
.omni-history-header h1 {
font-size: 30px;
}
.omni-history-header p {
margin-top: 7px;
color: #858b94;
font-size: 12px;
}
.omni-history-tools {
display: flex;
align-items: center;
gap: 10px;
margin-bottom: 2px;
}
.omni-history-toolbar {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 5px;
border: 1px solid rgba(34, 42, 54, .09);
border-radius: 12px;
background: rgba(255, 255, 255, .94);
box-shadow: 0 8px 22px rgba(20, 27, 38, .04);
}
.omni-history-new {
height: 48px;
display: inline-flex;
align-items: center;
gap: 6px;
padding: 0 16px;
border-radius: 12px;
color: #fff;
background: var(--klein);
font-size: 13px;
font-weight: 650;
cursor: pointer;
}
.omni-history-new svg {
width: 14px;
height: 14px;
}
.omni-history-toolbar button {
min-width: 76px;
height: 38px;
padding: 0 16px;
border-radius: 9px;
color: #707681;
background: transparent;
font-size: 13px;
font-weight: 650;
cursor: pointer;
}
.omni-history-toolbar button.active {
color: #fff;
background: var(--black);
}
.omni-history-list {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 18px;
}
.omni-history-item {
min-width: 0;
display: grid;
grid-template-columns: 150px minmax(0, 1fr) 70px;
align-items: center;
gap: 20px;
padding: 17px;
border: 1px solid rgba(34, 42, 54, .09);
border-radius: 19px;
background: rgba(255, 255, 255, .96);
cursor: pointer;
box-shadow: 0 8px 22px rgba(20, 27, 38, .05);
transition: transform 170ms ease, border-color 170ms ease, box-shadow 170ms ease;
}
.omni-history-item:hover {
transform: translateY(-2px);
border-color: rgba(0, 47, 167, .30);
box-shadow: 0 13px 26px rgba(20, 27, 38, .09);
}
.omni-history-item > img {
width: 150px;
height: 112px;
display: block;
border-radius: 13px;
object-fit: cover;
background: #edf0f4;
}
.omni-history-item > div {
min-width: 0;
}
.omni-history-item h2,
.omni-history-item p,
.omni-history-item small {
overflow: hidden;
margin: 0;
text-overflow: ellipsis;
white-space: nowrap;
}
.omni-history-item h2 {
margin: 8px 0 7px;
font-size: 17px;
line-height: 1.35;
}
.omni-history-item p,
.omni-history-item small {
color: #858b94;
font-size: 14px;
line-height: 1.45;
}
.omni-history-item small {
display: block;
margin-top: 9px;
}
.omni-history-actions {
display: flex;
align-items: center;
justify-content: flex-end;
gap: 6px;
}
.omni-history-actions > svg,
.omni-history-actions button svg {
width: 18px;
height: 18px;
}
.omni-history-actions > svg {
color: #a0a5ad;
}
.omni-history-actions button {
width: 36px;
height: 36px;
display: grid;
place-items: center;
border-radius: 8px;
color: #858b94;
background: #f4f5f7;
cursor: pointer;
}
.omni-history-actions button:hover {
color: #c43838;
background: #fff0f0;
}
.omni-delete-confirm {
position: fixed;
inset: 0;
z-index: 480;
display: grid;
place-items: center;
padding: 24px;
}
.omni-delete-confirm[hidden] {
display: none;
}
.omni-delete-scrim {
position: absolute;
inset: 0;
border: 0;
background: rgba(10, 14, 22, .28);
backdrop-filter: blur(7px);
}
.omni-delete-dialog {
position: relative;
z-index: 1;
width: min(390px, 100%);
padding: 26px;
border: 1px solid rgba(34, 42, 54, .10);
border-radius: 17px;
background: #fff;
text-align: center;
box-shadow: 0 26px 64px rgba(10, 17, 30, .22);
animation: omniMessageIn 180ms ease both;
}
.omni-delete-icon {
width: 46px;
height: 46px;
display: grid;
place-items: center;
margin: 0 auto 14px;
border-radius: 13px;
color: #c43838;
background: #fff0f0;
}
.omni-delete-icon svg {
width: 20px;
height: 20px;
}
.omni-delete-dialog h2 {
margin: 0;
font-size: 18px;
}
.omni-delete-dialog p {
margin: 8px 0 20px;
color: #7d838d;
font-size: 12px;
}
.omni-delete-dialog > div {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 9px;
}
.omni-delete-dialog button:not(.omni-delete-scrim) {
height: 38px;
border: 1px solid rgba(34, 42, 54, .10);
border-radius: 9px;
color: #5e6570;
background: #fff;
font-size: 12px;
font-weight: 650;
cursor: pointer;
}
.omni-delete-dialog button.danger {
border-color: #c43838;
color: #fff;
background: #c43838;
}
.omni-history-status {
display: inline-flex;
align-items: center;
gap: 5px;
color: #a86a00;
font-size: 13px;
font-weight: 650;
}
.omni-history-status::before {
content: "";
width: 7px;
height: 7px;
border-radius: 50%;
background: #f0a22e;
}
.omni-history-status.completed {
color: var(--klein);
}
.omni-history-status.completed::before {
background: var(--klein);
}
.omni-history-status.generating {
color: #1a6bb5;
}
.omni-history-status.generating::before {
background: #2f8fef;
box-shadow: 0 0 0 3px rgba(47, 143, 239, 0.22);
animation: omni-history-pulse 1.2s ease-in-out infinite;
}
@keyframes omni-history-pulse {
0%, 100% { opacity: 1; transform: scale(1); }
50% { opacity: 0.55; transform: scale(0.85); }
}
/* CustomSelect 对齐稿里的 custom-select-trigger */
.omni-parameter .rs-select {
width: 100%;
min-width: 0;
}
.omni-parameter .rs-select-btn {
height: 36px;
padding: 0 10px;
border-color: rgba(34, 42, 54, .11);
border-radius: 10px;
background: #f8f9fa;
font-size: 12px;
font-weight: 650;
}
.omni-parameter .rs-select-btn:hover,
.omni-parameter .rs-select.open .rs-select-btn {
border-color: rgba(0, 47, 167, .36);
background: #fff;
}
.omni-parameter .rs-select-btn svg {
display: block;
width: 13px;
height: 13px;
}
.omni-history-empty {
grid-column: 1 / -1;
min-height: 220px;
display: grid;
place-items: center;
gap: 10px;
padding: 48px 24px;
border: 1px solid rgba(34, 42, 54, .09);
border-radius: 19px;
color: #858b94;
background: rgba(255, 255, 255, .96);
text-align: center;
}
.omni-history-empty p {
margin: 0;
font-size: 14px;
}
.omni-history-empty button {
height: 36px;
display: inline-flex;
align-items: center;
gap: 4px;
padding: 0 16px;
border-radius: 10px;
color: #fff;
background: var(--klein);
font-size: 13px;
font-weight: 650;
}
@media (max-width: 1320px) {
.omni-start-tools {
flex-wrap: wrap;
}
.omni-case-visual {
height: 122px;
}
}
@media (max-width: 1120px) {
.omni-preset-dialog {
width: min(920px, 100%);
grid-template-columns: 360px minmax(0, 1fr);
gap: 26px;
padding: 24px;
}
.omni-case-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.omni-case-library.is-image-presets .omni-case-grid {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.omni-start-toolbar {
align-items: flex-end;
}
.omni-history-list {
grid-template-columns: 1fr;
}
}
@media (max-width: 720px) {
.omni-case-library.is-image-presets .omni-case-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.omni-preset-modal {
padding: 12px;
}
.omni-preset-dialog {
width: 100%;
grid-template-columns: 1fr;
gap: 18px;
max-height: calc(100vh - 24px);
overflow-y: auto;
padding: 20px;
}
.omni-preset-media-frame {
max-width: 360px;
margin: 0 auto;
}
.omni-preset-detail {
padding: 0;
}
.omni-preset-detail h2 {
font-size: 24px;
}
.omni-history-header {
align-items: flex-start;
flex-direction: column;
gap: 16px;
}
.omni-history-tools {
align-self: stretch;
flex-wrap: wrap;
}
.omni-history-toolbar {
flex: 1;
}
.omni-history-new {
margin-left: auto;
}
.omni-history-toolbar button {
flex: 1;
}
.omni-history-item {
grid-template-columns: 112px minmax(0, 1fr) 42px;
gap: 13px;
padding: 13px;
}
.omni-history-item > img {
width: 112px;
height: 84px;
}
}
/* 没有成图的会话(还没生成过 / 只聊到一半)在历史页的占位块。
设计稿默认每条都有封面,真数据里「进行中」的会话大多还没有。 */
.omni-history-placeholder {
width: 92px;
height: 92px;
display: grid;
flex: 0 0 auto;
place-items: center;
border-radius: 12px;
color: #a8adb5;
background: #f2f4f7;
}
.omni-history-placeholder svg {
width: 22px;
height: 22px;
}
/* 全能创作 · 结构化引用槽位 */
.omni-composer-main-wrap {
display: grid;
grid-template-columns: max-content minmax(0, 1fr);
gap: 20px;
align-items: stretch;
padding: 4px 0 12px;
}
.omni-composer-slots {
width: max-content;
max-width: 300px;
min-width: 0;
display: flex;
height: 164px;
min-height: 164px;
max-height: 164px;
flex-direction: column;
gap: 10px;
overflow: hidden;
padding: 2px 16px 2px 2px;
border-right: 1px solid var(--border-faint);
}
.omni-slots-grid {
width: max-content;
max-width: 280px;
min-height: 0;
flex: 1 1 auto;
display: grid;
grid-auto-rows: auto;
align-content: start;
gap: 8px;
overflow-x: hidden;
overflow-y: auto;
overscroll-behavior: contain;
padding: 0 2px 2px 0;
}
.omni-slots-grid.is-columns-1 {
grid-template-columns: 88px;
}
.omni-slots-grid.is-columns-2 {
grid-template-columns: repeat(2, 88px);
}
.omni-slots-grid.is-columns-3 {
grid-template-columns: repeat(3, 88px);
}
.omni-slots-grid.is-columns-4 {
grid-template-columns: repeat(4, 64px);
}
.omni-slots-grid:focus-within {
scrollbar-color: var(--black-alpha-12) transparent;
}
.omni-slot-box {
position: relative;
width: 100%;
height: auto;
aspect-ratio: 11 / 12;
overflow: hidden;
padding: 0;
border: 0;
border-radius: var(--r-md);
color: var(--black-alpha-56);
background: var(--surface);
box-shadow: inset 0 0 0 1px var(--border-faint);
user-select: none;
}
.omni-slot-box.is-empty {
display: grid;
place-items: center;
border: 1px dashed var(--border-faint);
border-style: dashed;
background: var(--background-lighter);
box-shadow: none;
cursor: pointer;
transition: background var(--t-base), border-color var(--t-base), color var(--t-base);
}
.omni-slot-box.is-empty:hover {
border-color: var(--heat-40);
color: var(--heat);
background: var(--heat-12);
}
.omni-slot-box:focus-visible {
outline: none;
box-shadow: 0 0 0 2px var(--surface), 0 0 0 4px var(--heat-40);
}
.omni-slot-tag {
position: absolute;
top: 5px;
left: 5px;
z-index: 2;
min-height: 17px;
display: inline-flex;
align-items: center;
max-width: calc(100% - 10px);
overflow: hidden;
padding: 0 6px;
border-radius: var(--r-pill);
color: var(--surface);
background: var(--accent-black);
font-size: 9.5px;
font-weight: 500;
line-height: 1;
pointer-events: none;
text-overflow: ellipsis;
white-space: nowrap;
}
.omni-slot-plus {
display: grid;
place-items: center;
}
.omni-slot-plus svg {
width: 16px;
height: 16px;
}
.omni-slot-box.is-filled {
background: var(--black-alpha-4);
}
.omni-slot-img,
.omni-slot-img-placeholder {
width: 100%;
height: 100%;
display: block;
}
.omni-slot-preview {
width: 100%;
height: 100%;
display: block;
padding: 0;
border: 0;
border-radius: var(--r-md);
overflow: hidden;
background: var(--black-alpha-4);
cursor: zoom-in;
}
.omni-slot-preview:focus-visible {
outline: none;
box-shadow: inset 0 0 0 2px var(--heat-40);
}
.omni-slot-img {
object-fit: cover;
}
.omni-slot-img-placeholder {
display: grid;
place-items: center;
color: var(--black-alpha-32);
background: var(--black-alpha-4);
}
.omni-slot-img-placeholder svg {
width: 22px;
height: 22px;
}
.omni-slot-remove,
.omni-slot-at-btn {
position: absolute;
z-index: 3;
display: grid;
place-items: center;
padding: 0;
cursor: pointer;
transition: color var(--t-base), background var(--t-base), opacity var(--t-base);
}
.omni-slot-remove {
top: 4px;
right: 4px;
width: 17px;
height: 17px;
border: 0;
border-radius: var(--r-sm);
color: var(--black-alpha-48);
background: var(--surface);
opacity: 0;
}
.omni-slot-box:hover .omni-slot-remove,
.omni-slot-remove:focus-visible {
opacity: 1;
}
.omni-slot-remove:hover {
color: var(--accent-crimson);
background: var(--crimson-bg);
}
.omni-slot-at-btn {
right: 5px;
bottom: 5px;
width: 20px;
height: 20px;
border: 0;
border-radius: var(--r-md);
color: var(--accent-black);
background: var(--surface);
box-shadow: inset 0 0 0 1px var(--border-faint);
}
.omni-slot-at-btn:hover {
color: var(--heat);
background: var(--heat-12);
box-shadow: inset 0 0 0 1px var(--heat-40);
}
.omni-slot-at-char {
font-family: var(--font-inter);
font-size: 11px;
font-weight: 600;
line-height: 1;
}
.omni-slots-counter {
flex: 0 0 auto;
margin: auto 0 0;
color: var(--black-alpha-48);
font-family: var(--font-mono);
font-size: 10.5px;
font-variant-numeric: tabular-nums;
white-space: nowrap;
}
.omni-composer-editor {
position: relative;
min-width: 0;
}
.omni-composer-editor #omniStartPrompt {
min-height: 164px;
max-height: 190px;
padding: 8px 2px;
}
@media (max-width: 760px) {
.omni-composer-main-wrap {
grid-template-columns: 1fr;
gap: 12px;
}
.omni-composer-slots {
width: 100%;
max-width: 100%;
height: auto;
min-height: 88px;
max-height: none;
padding: 0 2px 12px;
border-right: 0;
border-bottom: 1px solid var(--border-faint);
}
.omni-slots-grid,
.omni-slots-grid.is-columns-1,
.omni-slots-grid.is-columns-2,
.omni-slots-grid.is-columns-3,
.omni-slots-grid.is-columns-4 {
width: 100%;
max-width: 100%;
grid-template-columns: repeat(auto-fit, minmax(64px, 88px));
grid-auto-rows: auto;
max-height: 200px;
}
.omni-slot-remove {
opacity: 1;
}
}