Files
moteva/frontend/src/ui/styles.css
T
root 4e98a81aae feat(ui): path-based app-router routes with 404 and project auth preview
Resolve routes from pathname (and legacy hash), add a notFound route with
a dedicated 404 page, and show a blurred workspace preview for
unauthenticated project visits. Wire up Next.js app-router entry files and
listen for popstate so history navigation updates the route.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-08 12:07:13 +08:00

3854 lines
69 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.
@import "./components/ProjectThumb/index.css";
@import "./components/ProjectCard/index.css";
@import "./pages/ProjectsPage/index.css";
@import "./components/DeleteProjectDialog/index.css";
@import "./components/AccountManagementDialog/index.css";
@import "./components/WorkspaceTitle/index.css";
@import "./components/CanvasAgentComposer/index.css";
@import "./components/ImageGeneratorFloatingComposer/index.css";
@import "./components/PromptComposer/index.css";
@import "./components/TextStyleToolbar/index.css";
:root {
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
color: #111827;
background: #fafafa;
font-synthesis: none;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
--surface: #ffffff;
--surface-soft: #f6f7f9;
--surface-muted: #eef0f3;
--border: #e3e6eb;
--border-strong: #cfd5de;
--text: #111827;
--muted: #6b7280;
--faint: #9ca3af;
--blue: #2563eb;
--blue-soft: #dbeafe;
--black: #050505;
--shadow-sm: 0 2px 8px rgba(17, 24, 39, 0.06);
--shadow-md: 0 12px 30px rgba(17, 24, 39, 0.08);
}
* {
box-sizing: border-box;
}
body {
margin: 0;
min-width: 320px;
min-height: 100vh;
}
button,
textarea {
font: inherit;
}
button {
border: 0;
cursor: pointer;
}
button:disabled {
cursor: not-allowed;
opacity: 0.65;
}
.spin {
animation: spin 0.8s linear infinite;
}
@keyframes spin {
to {
transform: rotate(360deg);
}
}
.home-shell {
min-height: 100vh;
background: #fafafa;
}
.home-main {
width: min(1180px, calc(100% - 168px));
margin: 0 auto;
padding: 64px 0 130px 86px;
}
.hero-section {
min-height: 620px;
display: grid;
justify-items: center;
align-content: center;
gap: 30px;
}
.hero-copy {
text-align: center;
}
.hero-copy h1 {
margin: 0;
color: #050505;
font-size: clamp(36px, 5vw, 54px);
line-height: 1.12;
font-weight: 850;
letter-spacing: 0;
}
.hero-copy p {
margin: 18px 0 0;
color: #9aa0ab;
font-size: 16px;
font-weight: 700;
}
.prompt-card {
width: min(790px, 100%);
min-height: 226px;
display: flex;
flex-direction: column;
padding: 28px;
border: 1px solid var(--border);
border-radius: 8px;
background: #fff;
box-shadow: 0 24px 62px rgba(17, 24, 39, 0.08);
}
.prompt-rich-editor {
position: relative;
width: 100%;
min-height: 118px;
border: 0;
outline: 0;
resize: none;
color: var(--text);
background: transparent;
font-size: 16px;
line-height: 1.65;
font-weight: 700;
white-space: pre-wrap;
word-break: break-word;
}
.prompt-rich-editor[data-dragging-reference="true"] {
cursor: text;
}
.prompt-rich-editor.home-prompt-editor {
color: #1f2937;
font-size: 20px;
line-height: 1.55;
font-weight: 600;
}
.prompt-rich-editor[data-empty="true"]::before {
position: absolute;
top: 0;
left: 0;
color: #9aa0ab;
content: attr(data-placeholder);
pointer-events: none;
}
.prompt-rich-editor.home-prompt-editor[data-empty="true"]::before {
color: #b5b7bc;
}
.prompt-card.has-references .prompt-rich-editor {
min-height: 118px;
}
.prompt-actions {
display: flex;
align-items: center;
gap: 10px;
margin-top: auto;
}
.prompt-status {
min-width: 0;
display: flex;
flex-wrap: wrap;
gap: 8px;
}
.prompt-status > span {
display: inline-flex;
align-items: center;
gap: 6px;
max-width: 180px;
height: 28px;
padding: 0 10px;
overflow: hidden;
border-radius: 999px;
color: #41526b;
background: #eef4ff;
font-size: 11px;
font-weight: 850;
text-overflow: ellipsis;
white-space: nowrap;
}
.prompt-spacer {
flex: 1;
}
.icon-button,
.round-icon,
.text-button {
display: inline-grid;
place-items: center;
color: #747b89;
background: #fff;
}
.icon-button {
width: 42px;
height: 42px;
border-radius: 999px;
}
.icon-button:hover,
.round-icon:hover,
.text-button:hover {
color: #050505;
background: var(--surface-soft);
}
.icon-button.bordered {
border: 1px solid var(--border);
}
.icon-button.active {
color: #fff;
border-color: #050505;
background: #050505;
}
.model-popover {
z-index: 45;
width: min(560px, calc(100vw - 36px));
max-height: min(620px, calc(100vh - 120px));
display: grid;
grid-template-rows: auto auto minmax(0, 1fr);
gap: 14px;
padding: 22px;
overflow: hidden;
border: 1px solid var(--border);
border-radius: 8px;
background: #fff;
box-shadow: 0 24px 64px rgba(17, 24, 39, 0.18);
}
.ui-popover-content {
z-index: 90;
border: 1px solid #dde1e8;
background: #fff;
color: #20242c;
box-shadow: 0 22px 58px rgba(17, 24, 39, 0.18);
outline: none;
}
.ui-dropdown-menu-content {
z-index: 90;
border: 1px solid #dde1e8;
border-radius: 14px;
background: #fff;
color: #20242c;
box-shadow: 0 22px 58px rgba(17, 24, 39, 0.18);
outline: none;
}
.ui-dropdown-menu-item {
outline: none;
}
.model-popover-header {
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
}
.model-popover-header h3 {
margin: 0;
color: #303846;
font-size: 28px;
line-height: 1.1;
}
.model-auto {
display: inline-flex;
align-items: center;
gap: 12px;
color: #4b5563;
font-size: 16px;
font-weight: 850;
cursor: pointer;
}
.ui-switch {
position: relative;
width: 46px;
height: 26px;
border: 0;
border-radius: 999px;
background: #d7dce4;
}
.ui-switch[data-state="checked"] {
background: #303846;
}
.ui-switch-thumb {
display: block;
width: 18px;
height: 18px;
transform: translateX(4px);
border-radius: 999px;
background: #fff;
transition: transform 0.18s ease;
}
.ui-switch[data-state="checked"] .ui-switch-thumb {
transform: translateX(24px);
}
.model-tabs {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 4px;
padding: 4px;
border-radius: 8px;
background: #eef0f3;
}
.model-tabs .ui-tabs-trigger {
height: 44px;
border-radius: 7px;
color: #111827;
background: transparent;
font-size: 16px;
font-weight: 850;
}
.model-tabs .ui-tabs-trigger[data-state="active"] {
background: #fff;
box-shadow: var(--shadow-sm);
}
.model-tabs .ui-tabs-trigger:disabled {
color: #9aa1ad;
opacity: 1;
}
.model-list {
min-height: 0;
display: grid;
align-content: start;
gap: 8px;
overflow: auto;
padding-right: 8px;
}
.ui-scroll-area-viewport {
width: 100%;
height: 100%;
}
.ui-scroll-area-scrollbar {
width: 8px;
padding: 1px;
}
.ui-scroll-area-thumb {
border-radius: 999px;
background: #c1c5cc;
}
.ui-tabs-content {
outline: none;
}
.model-option {
width: 100%;
display: grid;
grid-template-columns: 34px minmax(0, 1fr) 30px;
align-items: start;
gap: 12px;
min-height: 112px;
padding: 12px 8px;
border-radius: 8px;
color: #303846;
background: #fff;
text-align: left;
}
.model-option:hover {
background: #f6f7f9;
}
.model-option > svg {
margin-top: 4px;
}
.model-option span {
min-width: 0;
display: grid;
gap: 8px;
}
.model-option strong {
color: #2f3746;
font-size: 20px;
line-height: 1.2;
}
.model-option small {
color: #5f6877;
font-size: 14px;
line-height: 1.45;
}
.model-option em {
width: fit-content;
padding: 3px 7px;
border-radius: 7px;
color: #465061;
background: #f0f2f5;
font-style: normal;
font-size: 13px;
font-weight: 800;
}
.model-option b {
width: 24px;
height: 24px;
display: grid;
place-items: center;
margin-top: 32px;
border-radius: 7px;
color: #fff;
background: #d9dde5;
}
.model-empty {
min-height: 180px;
display: grid;
place-items: center;
color: #7d8492;
font-size: 14px;
font-weight: 800;
}
.send-button {
width: 50px;
height: 50px;
display: inline-grid;
place-items: center;
border-radius: 8px;
color: #fff;
background: #050505;
box-shadow: 0 14px 22px rgba(0, 0, 0, 0.18);
}
.send-button:disabled {
color: #a5a9b0;
background: #efefef;
box-shadow: none;
opacity: 1;
}
.send-button.small {
width: 42px;
height: 42px;
border-radius: 999px;
}
.inline-error,
.panel-error {
margin: 0;
color: #b42318;
font-size: 13px;
font-weight: 700;
}
.quick-actions {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 12px;
}
.quick-actions button {
display: inline-flex;
align-items: center;
gap: 9px;
min-height: 42px;
padding: 0 18px;
border: 1px solid var(--border);
border-radius: 999px;
color: #1f2937;
background: #fff;
box-shadow: var(--shadow-sm);
font-size: 14px;
font-weight: 800;
}
.quick-actions button.active,
.quick-actions button:hover {
color: #fff;
background: #050505;
}
.prompt-examples {
width: min(790px, 100%);
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 10px;
margin-top: -12px;
}
.prompt-examples strong,
.prompt-examples button {
min-height: 32px;
display: inline-flex;
align-items: center;
border-radius: 999px;
font-size: 12px;
font-weight: 800;
}
.prompt-examples strong {
padding: 0 8px;
color: #8a93a1;
}
.prompt-examples button {
max-width: 230px;
padding: 0 13px;
overflow: hidden;
color: #465061;
background: #f0f2f5;
text-overflow: ellipsis;
white-space: nowrap;
}
.prompt-examples button:hover {
color: #050505;
background: #fff;
box-shadow: var(--shadow-sm);
}
.content-section {
margin-bottom: 92px;
}
.inspiration-tabs {
position: sticky;
top: 64px;
z-index: 10;
display: flex;
gap: 12px;
margin: -10px 0 24px;
padding: 12px 0;
overflow-x: auto;
background: rgba(250, 250, 250, 0.86);
backdrop-filter: blur(14px);
}
.inspiration-tabs button {
flex: 0 0 auto;
height: 32px;
padding: 0 15px;
border-radius: 8px;
color: #5f6877;
background: transparent;
font-size: 13px;
font-weight: 850;
}
.inspiration-tabs button.active,
.inspiration-tabs button:hover {
color: #050505;
background: #fff;
box-shadow: var(--shadow-sm);
}
.inspiration-grid {
column-count: 4;
column-gap: 24px;
}
.inspiration-card {
position: relative;
overflow: hidden;
display: inline-grid;
align-content: end;
width: 100%;
min-height: var(--card-height);
margin: 0 0 24px;
padding: 0;
break-inside: avoid;
border: 1px solid var(--border);
border-radius: 8px;
color: #fff;
text-align: left;
background: color-mix(in srgb, var(--accent), #111827 28%);
box-shadow: var(--shadow-sm);
transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.inspiration-card:hover {
transform: translateY(-4px);
box-shadow: var(--shadow-md);
}
.inspiration-body {
position: relative;
z-index: 2;
display: grid;
gap: 8px;
padding: 24px;
background: linear-gradient(180deg, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.55));
}
.inspiration-card small {
color: rgba(255, 255, 255, 0.68);
font-size: 11px;
font-weight: 850;
text-transform: uppercase;
}
.inspiration-card h3 {
margin: 0;
font-size: 22px;
line-height: 1.18;
}
.inspiration-card p {
display: -webkit-box;
max-width: 360px;
margin: 0;
overflow: hidden;
color: rgba(255, 255, 255, 0.8);
font-size: 13px;
line-height: 1.55;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
}
.inspiration-meta {
position: relative;
z-index: 2;
display: flex;
align-items: center;
gap: 10px;
padding: 0 24px 20px;
color: rgba(255, 255, 255, 0.72);
font-size: 12px;
font-weight: 800;
}
.inspiration-meta span:first-child {
min-width: 0;
margin-right: auto;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.inspiration-meta span:not(:first-child) {
display: inline-flex;
align-items: center;
gap: 4px;
}
.inspiration-art,
.modal-art {
position: absolute;
inset: 0;
opacity: 0.84;
}
.inspiration-art::before,
.modal-art::before {
content: "";
position: absolute;
inset: 0;
background:
radial-gradient(circle at 18% 18%, rgba(255, 255, 255, 0.28), transparent 28%),
linear-gradient(135deg, rgba(255, 255, 255, 0.16), transparent 44%);
}
.inspiration-art span,
.modal-art span {
position: absolute;
display: block;
border: 1px solid rgba(255, 255, 255, 0.26);
background: rgba(255, 255, 255, 0.12);
}
.inspiration-art span:nth-child(1),
.modal-art span:nth-child(1) {
width: 48%;
height: 42%;
right: 8%;
top: 10%;
}
.inspiration-art span:nth-child(2),
.modal-art span:nth-child(2) {
width: 24%;
height: 22%;
right: 36%;
top: 38%;
}
.inspiration-art span:nth-child(3),
.modal-art span:nth-child(3) {
width: 58%;
height: 1px;
left: 10%;
top: 28%;
}
.inspiration-card.tone-water .inspiration-art::before,
.modal-art.tone-water::before {
background:
radial-gradient(circle at 72% 20%, rgba(255, 255, 255, 0.34), transparent 25%),
repeating-linear-gradient(145deg, rgba(255, 255, 255, 0.14) 0 8px, transparent 8px 20px);
}
.inspiration-card.tone-paper .inspiration-art span,
.modal-art.tone-paper span {
border-radius: 0;
transform: rotate(-4deg);
}
.inspiration-card.tone-electric .inspiration-art::before,
.modal-art.tone-electric::before {
background:
linear-gradient(90deg, rgba(255, 255, 255, 0.18) 1px, transparent 1px),
linear-gradient(rgba(255, 255, 255, 0.18) 1px, transparent 1px);
background-size: 28px 28px;
}
.inspiration-card.tone-blueprint .inspiration-art span,
.modal-art.tone-blueprint span {
border-radius: 999px;
}
.load-more {
width: fit-content;
display: flex;
align-items: center;
gap: 8px;
height: 40px;
margin: 6px auto 0;
padding: 0 18px;
border: 1px solid var(--border);
border-radius: 999px;
color: #303846;
background: #fff;
font-size: 13px;
font-weight: 850;
box-shadow: var(--shadow-sm);
}
.load-more:hover {
color: #fff;
border-color: #050505;
background: #050505;
}
.inspiration-modal-backdrop {
position: fixed;
inset: 0;
z-index: 80;
display: grid;
place-items: center;
padding: 24px;
background: rgba(15, 23, 42, 0.38);
backdrop-filter: blur(10px);
}
.inspiration-modal {
position: relative;
overflow: hidden;
width: min(920px, 100%);
min-height: 520px;
display: grid;
grid-template-columns: minmax(280px, 0.92fr) minmax(320px, 1fr);
border-radius: 8px;
background: #fff;
box-shadow: 0 28px 80px rgba(0, 0, 0, 0.24);
}
.modal-close {
position: absolute;
right: 14px;
top: 14px;
z-index: 4;
width: 34px;
height: 34px;
display: grid;
place-items: center;
border-radius: 999px;
color: #586070;
background: rgba(255, 255, 255, 0.84);
}
.modal-art {
position: relative;
min-height: 520px;
background: color-mix(in srgb, var(--accent), #111827 24%);
}
.modal-copy {
display: grid;
align-content: center;
gap: 16px;
padding: 52px 42px;
}
.modal-copy small {
color: #7d8492;
font-size: 11px;
font-weight: 850;
text-transform: uppercase;
}
.modal-copy h3 {
margin: 0;
color: #050505;
font-size: 34px;
line-height: 1.08;
}
.modal-copy p {
margin: 0;
color: #465061;
font-size: 15px;
line-height: 1.7;
}
.modal-meta {
display: flex;
flex-wrap: wrap;
gap: 8px;
}
.modal-meta span {
padding: 6px 10px;
border-radius: 999px;
color: #596274;
background: #f1f3f6;
font-size: 12px;
font-weight: 800;
}
.modal-actions {
display: flex;
flex-wrap: wrap;
gap: 10px;
margin-top: 8px;
}
.modal-actions button {
min-height: 42px;
display: inline-flex;
align-items: center;
gap: 8px;
padding: 0 16px;
border: 1px solid var(--border);
border-radius: 999px;
color: #111827;
background: #fff;
font-size: 13px;
font-weight: 850;
}
.modal-actions button.primary {
color: #fff;
border-color: #050505;
background: #050505;
}
.workspace-loading {
min-height: 100vh;
display: grid;
place-items: center;
gap: 12px;
color: #727987;
background: #fafafa;
font-weight: 800;
}
.not-found-shell {
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
padding: 48px 24px;
color: #101827;
background: #fff;
}
.not-found-content {
width: min(520px, 100%);
display: grid;
justify-items: center;
text-align: center;
}
.not-found-mark {
width: min(280px, 72vw);
height: auto;
margin-bottom: 57px;
}
.not-found-content h1 {
margin: 0;
color: #111827;
font-size: 32px;
line-height: 1.25;
font-weight: 800;
letter-spacing: 0;
}
.not-found-content p {
margin: 16px 0 32px;
color: #6b7280;
font-size: 14px;
line-height: 1.5;
font-weight: 500;
}
.not-found-content button {
min-width: 128px;
height: 42px;
padding: 0 26px;
border-radius: 12px;
color: #fff;
background: #030303;
font-size: 16px;
font-weight: 700;
line-height: 1;
transition: transform 0.16s ease, background 0.16s ease;
}
.not-found-content button:hover {
background: #171717;
transform: translateY(-1px);
}
.project-auth-shell {
width: 100vw;
height: 100vh;
overflow: hidden;
background: #f7f7f4;
}
.project-auth-blur {
width: 100%;
height: 100%;
overflow: hidden;
filter: blur(18px);
opacity: 0.66;
transform: scale(1.04);
transform-origin: center;
pointer-events: none;
user-select: none;
}
.project-auth-topbar {
height: 48px;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 14px;
border-bottom: 1px solid #eceef1;
background: rgba(255, 255, 255, 0.86);
}
.project-auth-title,
.project-auth-top-actions,
.project-auth-panel-head,
.project-auth-toolbar,
.project-auth-composer div {
display: flex;
align-items: center;
}
.project-auth-title {
gap: 10px;
}
.project-auth-mark {
width: 18px;
height: 26px;
color: #151515;
}
.project-auth-title span,
.project-auth-thread b,
.project-auth-thread span,
.project-auth-composer span {
display: block;
border-radius: 999px;
background: #e1e3e6;
}
.project-auth-title span {
width: 168px;
height: 14px;
}
.project-auth-top-actions {
gap: 8px;
}
.project-auth-top-actions i,
.project-auth-panel-head i,
.project-auth-toolbar i,
.project-auth-composer i {
display: block;
border-radius: 999px;
background: #e3e5e8;
}
.project-auth-top-actions i {
width: 28px;
height: 28px;
}
.project-auth-top-actions b {
width: 24px;
height: 24px;
display: block;
border-radius: 999px;
background: #151515;
}
.project-auth-main {
height: calc(100vh - 48px);
display: grid;
grid-template-columns: minmax(0, 1fr) 400px;
}
.project-auth-stage {
position: relative;
min-width: 0;
overflow: hidden;
background: #f7f7f4;
}
.project-auth-grid {
position: absolute;
inset: 0;
background-image:
linear-gradient(rgba(38, 45, 57, 0.055) 1px, transparent 1px),
linear-gradient(90deg, rgba(38, 45, 57, 0.055) 1px, transparent 1px);
background-size: 38px 38px;
}
.project-auth-frame {
position: absolute;
border: 1px solid rgba(189, 193, 201, 0.9);
border-radius: 8px;
background: rgba(255, 255, 255, 0.8);
box-shadow: 0 18px 58px rgba(17, 24, 39, 0.08);
}
.project-auth-frame.primary {
left: 18%;
top: 20%;
width: 260px;
height: 180px;
}
.project-auth-frame.secondary {
left: 48%;
top: 34%;
width: 220px;
height: 150px;
}
.project-auth-frame.tertiary {
left: 31%;
top: 58%;
width: 180px;
height: 118px;
}
.project-auth-toolbar {
position: absolute;
left: 50%;
bottom: 28px;
gap: 10px;
padding: 9px 12px;
border: 1px solid #e5e7eb;
border-radius: 16px;
background: rgba(255, 255, 255, 0.9);
transform: translateX(-50%);
box-shadow: 0 18px 48px rgba(17, 24, 39, 0.1);
}
.project-auth-toolbar i {
width: 26px;
height: 26px;
}
.project-auth-panel {
min-width: 0;
display: flex;
flex-direction: column;
border-left: 1px solid #eceef1;
background: rgba(255, 255, 255, 0.88);
}
.project-auth-panel-head {
height: 56px;
gap: 10px;
padding: 0 18px;
}
.project-auth-panel-head span {
width: 184px;
height: 16px;
display: block;
margin-right: auto;
border-radius: 999px;
background: #dfe2e6;
}
.project-auth-panel-head i {
width: 24px;
height: 24px;
}
.project-auth-thread {
display: flex;
flex-direction: column;
gap: 14px;
padding: 28px 22px;
}
.project-auth-thread b {
width: 62%;
height: 18px;
}
.project-auth-thread span {
height: 12px;
}
.project-auth-thread span:nth-child(2) {
width: 86%;
}
.project-auth-thread span:nth-child(3) {
width: 72%;
}
.project-auth-thread span:nth-child(4) {
width: 48%;
}
.project-auth-composer {
margin: auto 18px 20px;
padding: 18px;
border: 1px solid #e3e5e9;
border-radius: 18px;
background: #fff;
box-shadow: 0 20px 60px rgba(17, 24, 39, 0.08);
}
.project-auth-composer span {
width: 72%;
height: 14px;
margin-bottom: 42px;
}
.project-auth-composer div {
justify-content: space-between;
}
.project-auth-composer i {
width: 28px;
height: 28px;
}
@media (max-width: 760px) {
.project-auth-main {
grid-template-columns: minmax(0, 1fr);
}
.project-auth-panel {
display: none;
}
.project-auth-title span {
width: 112px;
}
.project-auth-frame.primary {
left: 14%;
top: 23%;
width: 190px;
height: 138px;
}
.project-auth-frame.secondary {
left: 42%;
top: 48%;
width: 150px;
height: 108px;
}
.project-auth-frame.tertiary {
display: none;
}
.not-found-shell {
padding: 44px 22px;
}
.not-found-mark {
margin-bottom: 44px;
}
.not-found-content h1 {
font-size: 28px;
}
.not-found-content p {
margin: 14px 0 28px;
font-size: 14px;
}
.not-found-content button {
min-width: 120px;
height: 40px;
border-radius: 12px;
font-size: 15px;
}
}
.workspace-shell {
width: 100vw;
height: 100vh;
overflow: hidden;
background: #f7f7f4;
}
.workspace-topbar {
position: fixed;
inset: 0 0 auto;
z-index: 40;
height: 48px;
display: flex;
align-items: center;
justify-content: center;
padding: 0 8px;
border-bottom: 1px solid #f0f1f2;
background: rgba(255, 255, 255, 0.82);
backdrop-filter: blur(18px);
}
.workspace-countdown {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 4px;
color: #1f2329;
font-size: 12px;
white-space: nowrap;
}
.workspace-countdown > span {
min-width: 20px;
height: 24px;
display: inline-grid;
place-items: center;
border-radius: 8px;
background: #fff;
box-shadow: 0 1px 3px rgba(17, 24, 39, 0.08);
font-weight: 850;
}
.workspace-countdown i {
color: #8e9299;
font-style: normal;
font-weight: 850;
}
.workspace-countdown div {
display: inline-flex;
align-items: center;
gap: 9px;
margin-left: 10px;
}
.workspace-countdown b {
color: #4c5159;
font-size: 12px;
font-weight: 650;
}
.workspace-countdown .workspace-upgrade-copy {
padding: 0;
color: #191b1f;
background: transparent;
font-size: 12px;
font-weight: 850;
text-decoration: underline;
text-underline-offset: 2px;
}
.workspace-actions {
justify-self: end;
display: flex;
align-items: center;
gap: 6px;
}
.credit-count {
color: #5d6470;
font-size: 12px;
font-weight: 800;
}
.blue-badge {
width: 24px;
height: 24px;
display: grid;
place-items: center;
border-radius: 999px;
color: #fff;
background: #3b82f6;
}
.text-button {
width: 26px;
height: 26px;
display: grid;
place-items: center;
border-radius: 999px;
color: #4b5563;
background: transparent;
}
.text-button:hover {
background: #f2f4f7;
}
.workspace-main {
height: calc(100vh - 48px);
margin-top: 48px;
min-height: 0;
display: grid;
grid-template-columns: minmax(0, 1fr) 400px;
}
.assistant-panel-collapsed .workspace-main {
grid-template-columns: minmax(0, 1fr);
}
.workspace-stage-title {
position: absolute;
top: 0;
left: 8px;
z-index: 45;
height: 48px;
display: flex;
align-items: center;
pointer-events: auto;
}
.canvas-account-controls {
height: 40px;
display: inline-flex;
align-items: center;
gap: 6px;
pointer-events: auto;
}
.canvas-collapsed-controls {
position: absolute;
top: 4px;
right: 4px;
z-index: 45;
padding: 4px 4px 4px 8px;
border-radius: 14px;
background: #f7f7f4;
}
.canvas-open-account-controls {
position: absolute;
top: 0;
right: 12px;
z-index: 45;
height: 48px;
padding: 0;
background: transparent;
}
.canvas-collapsed-credit {
height: 24px;
display: inline-flex;
align-items: center;
gap: 3px;
padding: 0 6px 0 2px;
color: #666a72;
font-size: 13px;
font-weight: 650;
line-height: 16px;
white-space: nowrap;
}
.canvas-collapsed-credit svg {
color: currentColor;
fill: currentColor;
}
.canvas-account-wrap {
position: relative;
}
.canvas-account-avatar {
width: 24px;
height: 24px;
display: grid;
place-items: center;
padding: 0;
overflow: hidden;
border-radius: 999px;
color: #fff;
background: #141414;
font-size: 10px;
font-weight: 850;
text-transform: uppercase;
}
.canvas-account-avatar img,
.canvas-account-menu-avatar img {
width: 100%;
height: 100%;
display: block;
object-fit: cover;
}
.canvas-collapsed-separator {
width: 1px;
height: 10px;
background: #d8dade;
}
.canvas-conversation-button {
min-width: 60px;
height: 32px;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 4px;
padding: 0 10px;
border-radius: 10px;
color: #202124;
background: #ececed;
font-size: 14px;
font-weight: 500;
transition: background 0.15s ease;
}
.canvas-conversation-button:hover,
.canvas-conversation-button:active {
background: #e0e0e2;
}
.canvas-account-menu {
position: absolute;
top: calc(100% + 12px);
right: -74px;
z-index: 90;
width: 225px;
display: flex;
flex-direction: column;
align-items: stretch;
padding: 4px;
border: 1px solid #e4e7ec;
border-radius: 12px;
background: #fff;
box-shadow: 0 24px 58px rgba(17, 24, 39, 0.16);
}
.canvas-open-account-controls .canvas-account-menu {
right: 0;
}
.canvas-account-menu-profile {
min-width: 0;
display: flex;
align-items: center;
gap: 10px;
padding: 8px;
}
.canvas-account-menu-avatar {
width: 24px;
height: 24px;
flex: 0 0 auto;
display: grid;
place-items: center;
overflow: hidden;
border-radius: 999px;
color: #fff;
background: #050505;
font-size: 10px;
font-weight: 900;
}
.canvas-account-menu-profile span:last-child {
min-width: 0;
display: flex;
flex-direction: column;
}
.canvas-account-menu-profile strong,
.canvas-account-menu-profile small {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.canvas-account-menu-profile strong {
color: #171b24;
font-size: 13px;
line-height: 20px;
}
.canvas-account-menu-profile small {
color: #8a90a0;
font-size: 11px;
line-height: 16px;
}
.canvas-account-menu-separator {
height: 1px;
margin: 4px 8px;
background: #eceff3;
}
.canvas-account-menu-plan {
display: flex;
flex-direction: column;
gap: 10px;
padding: 7px 8px;
}
.canvas-account-menu-plan > button:first-child,
.canvas-account-menu > button {
min-height: 32px;
display: flex;
align-items: center;
gap: 8px;
padding: 6px 8px;
border-radius: 8px;
color: #20242c;
background: transparent;
font-size: 13px;
text-align: left;
}
.canvas-account-menu-plan > button:first-child {
justify-content: space-between;
padding: 0;
}
.canvas-account-menu-plan > button:first-child b {
display: inline-flex;
align-items: center;
gap: 3px;
color: #616978;
font-weight: 700;
}
.canvas-account-menu-upgrade {
min-height: 28px;
display: inline-flex;
align-items: center;
justify-content: center;
border-radius: 8px;
color: #fff;
background: #050505;
font-size: 13px;
font-weight: 750;
}
.canvas-account-menu-upgrade:hover {
background: #242424;
}
.canvas-account-menu > button:hover {
background: #f4f5f7;
}
.canvas-stage {
position: relative;
min-height: 0;
overflow: hidden;
background: var(--canvas-background, #f7f7f4);
cursor: default;
user-select: none;
}
.canvas-stage:active {
cursor: default;
}
.canvas-stage.dragging-upload {
box-shadow: inset 0 0 0 2px rgba(47, 128, 255, 0.72);
}
.canvas-stage.is-pan-tool,
.canvas-stage.is-pan-tool .canvas-world,
.canvas-stage.is-pan-tool .canvas-node,
.canvas-stage.is-pan-tool .artboard-image,
.canvas-stage.is-pan-tool .artboard-preview {
cursor: grab;
}
.canvas-stage.is-pan-tool:active,
.canvas-stage.is-pan-tool:active .canvas-world,
.canvas-stage.is-pan-tool:active .canvas-node,
.canvas-stage.is-pan-tool:active .artboard-image,
.canvas-stage.is-pan-tool:active .artboard-preview,
.canvas-stage.is-panning,
.canvas-stage.is-panning .canvas-world,
.canvas-stage.is-panning .canvas-node,
.canvas-stage.is-panning .artboard-image,
.canvas-stage.is-panning .artboard-preview {
cursor: grabbing;
}
.canvas-stage.is-frame-tool,
.canvas-stage.is-frame-tool .canvas-world,
.canvas-stage.is-shape-tool,
.canvas-stage.is-shape-tool .canvas-world,
.canvas-stage.is-shape-tool .canvas-node {
cursor: crosshair;
}
.canvas-stage.is-pen-tool,
.canvas-stage.is-pen-tool .canvas-world,
.canvas-stage.is-pen-tool .canvas-node {
cursor: crosshair;
}
.canvas-stage.is-text-tool,
.canvas-stage.is-text-tool .canvas-world,
.canvas-stage.is-text-tool .canvas-node,
.canvas-stage.is-text-tool .artboard-image,
.canvas-stage.is-text-tool .artboard-preview {
cursor: text;
}
.canvas-grid {
position: absolute;
inset: 0;
pointer-events: none;
opacity: 0.66;
background-image:
linear-gradient(rgba(17, 24, 39, 0.045) 1px, transparent 1px),
linear-gradient(90deg, rgba(17, 24, 39, 0.045) 1px, transparent 1px);
}
.canvas-world {
position: absolute;
left: 0;
top: 0;
transform-origin: 0 0;
}
.canvas-node {
position: absolute;
overflow: hidden;
border: 0;
border-radius: 2px;
background: #fff;
box-shadow: 0 2px 10px rgba(17, 24, 39, 0.08);
cursor: default;
}
.canvas-node.note-node {
display: flex;
flex-direction: column;
border: 1px solid rgba(17, 24, 39, 0.1);
border-radius: 8px;
box-shadow: 0 10px 24px rgba(17, 24, 39, 0.08);
}
.canvas-node.text-overlay-node {
overflow: visible;
border-radius: 0;
background: transparent;
box-shadow: none;
}
.canvas-node.manual-frame-node,
.canvas-node.pen-stroke-node {
background: transparent;
box-shadow: none;
}
.canvas-node.tone-mockup-print {
background: transparent;
box-shadow: none;
}
.canvas-node.tone-transparent-image {
background: transparent;
box-shadow: none;
}
.canvas-node.tone-mockup-print .artboard-image {
mix-blend-mode: multiply;
}
.canvas-node.tone-mockup-print .node-content-layer {
mix-blend-mode: multiply;
opacity: 0.88;
}
.canvas-node.tone-image-generator {
overflow: visible;
background: transparent;
box-shadow: none;
}
.canvas-node.tone-merge-layer {
background: transparent;
box-shadow: none;
pointer-events: none;
}
.canvas-node.tone-merge-layer.selected {
outline: 2px solid #2f80ff;
outline-offset: 0;
}
.canvas-node.selected {
overflow: visible;
outline: 0;
}
.canvas-node.is-mockup-dragging {
z-index: 26;
}
.canvas-selection-marquee {
position: absolute;
z-index: 16;
pointer-events: none;
border: 2px solid #e0442f;
background: rgba(224, 68, 47, 0.04);
}
.pen-draft-overlay {
position: absolute;
inset: 0;
z-index: 24;
width: 100%;
height: 100%;
overflow: visible;
pointer-events: none;
}
.frame-draft-overlay {
position: absolute;
z-index: 17;
min-width: 1px;
min-height: 1px;
border: 2px solid #2f80ff;
background: rgba(47, 128, 255, 0.04);
pointer-events: none;
}
.frame-draft-overlay span,
.frame-draft-overlay strong {
position: absolute;
top: -28px;
color: #2f80ff;
background: rgba(247, 247, 244, 0.9);
font-size: 15px;
font-weight: 560;
line-height: 22px;
white-space: nowrap;
}
.frame-draft-overlay span {
left: 0;
}
.frame-draft-overlay strong {
right: 0;
}
.canvas-alignment-guide {
position: absolute;
z-index: 37;
pointer-events: none;
background: #ff4d43;
}
.canvas-alignment-guide.horizontal {
height: 1px;
transform: translateY(-0.5px);
}
.canvas-alignment-guide.vertical {
width: 1px;
transform: translateX(-0.5px);
}
.canvas-alignment-guide::before,
.canvas-alignment-guide::after {
position: absolute;
color: #ff4d43;
content: "×";
font-size: 13px;
font-weight: 800;
line-height: 10px;
}
.canvas-alignment-guide.horizontal::before {
left: -4px;
top: -5px;
}
.canvas-alignment-guide.horizontal::after {
right: -4px;
top: -5px;
}
.canvas-alignment-guide.vertical::before {
left: -4px;
top: -5px;
}
.canvas-alignment-guide.vertical::after {
left: -4px;
bottom: -5px;
}
.canvas-annotation-layer {
position: absolute;
inset: 0;
z-index: 18;
pointer-events: none;
}
.canvas-annotation-marker {
position: absolute;
width: 32px;
height: 32px;
display: grid;
place-items: center;
transform: translate(-50%, -50%);
filter: drop-shadow(0 7px 12px rgba(47, 128, 255, 0.26));
}
.canvas-annotation-marker::before {
position: absolute;
inset: 2px;
border: 2px solid rgba(47, 128, 255, 0.24);
border-radius: 999px;
content: "";
transform: scale(1.45);
}
.canvas-annotation-marker b {
position: relative;
width: 25px;
height: 25px;
display: grid;
place-items: center;
border: 2px solid #fff;
border-radius: 999px;
color: #fff;
background: #2f80ff;
box-shadow: 0 2px 7px rgba(17, 24, 39, 0.2);
font-size: 12px;
font-weight: 900;
line-height: 1;
}
.annotation-preview-popover {
position: fixed;
z-index: 130;
overflow: hidden;
border: 1px solid rgba(226, 232, 240, 0.72);
border-radius: 14px;
background: #fff;
box-shadow: 0 18px 48px rgba(17, 24, 39, 0.18);
pointer-events: none;
animation: annotation-preview-pop 0.14s ease-out both;
}
.annotation-preview-stage {
position: relative;
width: 100%;
height: 100%;
overflow: hidden;
background: #f8fafc;
}
.annotation-preview-scene {
position: relative;
width: 100%;
height: 100%;
transform-origin: 0 0;
animation: annotation-preview-zoom 1.15s cubic-bezier(0.2, 0.82, 0.2, 1) 0.08s both;
}
.annotation-preview-scene img,
.annotation-preview-fallback {
width: 100%;
height: 100%;
}
.annotation-preview-scene img {
display: block;
object-fit: cover;
}
.annotation-preview-fallback {
display: grid;
place-items: center;
align-content: center;
gap: 8px;
padding: 18px;
color: #1f2937;
background: linear-gradient(135deg, #f8fafc, #e5edf8);
text-align: center;
}
.annotation-preview-fallback strong {
max-width: 100%;
overflow: hidden;
font-size: 15px;
font-weight: 850;
text-overflow: ellipsis;
white-space: nowrap;
}
.annotation-preview-fallback span {
max-height: 54px;
overflow: hidden;
color: #64748b;
font-size: 12px;
line-height: 1.5;
}
.annotation-preview-pin {
position: absolute;
left: var(--annotation-preview-point-x);
top: var(--annotation-preview-point-y);
width: 30px;
height: 34px;
display: grid;
place-items: start center;
transform: translate(-50%, -78%);
filter: drop-shadow(0 3px 7px rgba(37, 99, 235, 0.22));
animation: annotation-preview-pin-track 1.15s cubic-bezier(0.2, 0.82, 0.2, 1) 0.08s both;
}
.annotation-preview-pin::after {
width: 10px;
height: 10px;
margin-top: -4px;
border: 2px solid #fff;
border-top: 0;
border-left: 0;
border-radius: 0 0 4px 0;
background: #2f80ff;
content: "";
transform: rotate(45deg);
}
.annotation-preview-pin b {
position: relative;
z-index: 1;
width: 26px;
height: 26px;
display: grid;
place-items: center;
border: 2px solid #fff;
border-radius: 999px;
color: #fff;
background: #2f80ff;
box-shadow: 0 2px 6px rgba(15, 23, 42, 0.2);
font-size: 12px;
font-weight: 900;
line-height: 1;
}
@keyframes annotation-preview-pop {
from {
opacity: 0;
transform: translateY(6px) scale(0.98);
}
to {
opacity: 1;
transform: translateY(0) scale(1);
}
}
@keyframes annotation-preview-zoom {
0%,
32% {
transform: translate(0, 0) scale(1);
}
100% {
transform: translate(var(--annotation-preview-pan-x), var(--annotation-preview-pan-y)) scale(var(--annotation-preview-zoom));
}
}
@keyframes annotation-preview-pin-track {
0%,
32% {
left: var(--annotation-preview-point-x);
top: var(--annotation-preview-point-y);
}
100% {
left: 50%;
top: 50%;
}
}
.multi-selection-box {
position: absolute;
z-index: 15;
pointer-events: none;
border: 2px solid #2f80ff;
}
.multi-selection-box.grouped {
border-style: solid;
border-width: 2px;
}
.multi-selection-corner {
position: absolute;
width: 13px;
height: 13px;
border: 2px solid #2f80ff;
background: #fff;
box-shadow: 0 1px 5px rgba(17, 24, 39, 0.16);
}
.multi-selection-toolbar {
position: absolute;
z-index: 38;
display: flex;
align-items: center;
gap: 4px;
min-height: 56px;
padding: 8px 10px;
overflow-x: auto;
border: 1px solid rgba(214, 218, 226, 0.78);
border-radius: 22px;
background: rgba(255, 255, 255, 0.95);
box-shadow: 0 9px 24px rgba(17, 24, 39, 0.12), 0 1px 0 rgba(255, 255, 255, 0.9) inset;
backdrop-filter: blur(18px);
transform: translateX(-50%);
scrollbar-width: none;
}
.multi-selection-toolbar::-webkit-scrollbar {
display: none;
}
.multi-selection-toolbar button {
height: 40px;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 9px;
padding: 0 13px;
border: 0;
border-radius: 13px;
color: #252a31;
background: transparent;
font-size: 15px;
font-weight: 720;
letter-spacing: 0;
white-space: nowrap;
cursor: default;
}
.multi-selection-toolbar svg {
stroke-width: 2.1;
}
.multi-selection-toolbar .multi-toolbar-action {
padding-inline: 12px 14px;
}
.multi-selection-toolbar .multi-toolbar-trigger {
min-width: 64px;
gap: 8px;
padding: 0 10px;
}
.multi-selection-toolbar .multi-toolbar-trigger.is-open {
background: #eff0f2;
}
.multi-selection-toolbar button:hover:not(:disabled) {
background: #f2f3f5;
}
.multi-selection-toolbar button:disabled {
color: #9aa0a9;
cursor: not-allowed;
}
.multi-toolbar-separator {
width: 1px;
height: 34px;
margin: 0 7px;
background: #e3e6eb;
}
.multi-toolbar-popover {
z-index: 90;
display: flex;
align-items: center;
gap: 8px;
min-height: 58px;
padding: 9px 11px;
border: 1px solid rgba(214, 218, 226, 0.78);
border-radius: 20px;
background: rgba(255, 255, 255, 0.96);
box-shadow: 0 10px 28px rgba(17, 24, 39, 0.14);
backdrop-filter: blur(18px);
}
.alignment-popover {
min-width: 370px;
}
.compact-popover {
min-width: 196px;
}
.export-popover {
min-width: 152px;
display: grid;
gap: 4px;
padding: 8px;
}
.multi-toolbar-popover-button {
position: relative;
width: 42px;
height: 42px;
display: grid;
place-items: center;
border: 0;
border-radius: 13px;
color: #252a31;
background: transparent;
cursor: default;
}
.multi-toolbar-popover-button:hover,
.multi-toolbar-popover-button:focus-visible {
background: #eff0f2;
}
.multi-toolbar-popover-button::before {
position: absolute;
left: 50%;
bottom: calc(100% + 10px);
z-index: 2;
min-width: max-content;
padding: 8px 10px;
border-radius: 8px;
color: #fff;
background: #303030;
box-shadow: 0 8px 20px rgba(17, 24, 39, 0.2);
content: attr(data-tooltip);
font-size: 13px;
font-weight: 650;
line-height: 1;
opacity: 0;
pointer-events: none;
transform: translate(-50%, 4px);
transition: opacity 0.14s ease, transform 0.14s ease;
}
.multi-toolbar-popover-button:hover::before,
.multi-toolbar-popover-button:focus-visible::before {
opacity: 1;
transform: translate(-50%, 0);
}
.multi-toolbar-export-button {
height: 34px;
justify-content: flex-start;
padding: 0 12px;
border: 0;
border-radius: 9px;
color: #252a31;
background: transparent;
font-size: 13px;
font-weight: 760;
text-align: left;
cursor: default;
}
.multi-toolbar-export-button:hover,
.multi-toolbar-export-button:focus-visible {
background: #eff0f2;
}
.canvas-node.is-hidden {
border-color: transparent;
background: transparent;
box-shadow: none;
}
.canvas-node.is-hidden:not(.selected) {
pointer-events: none;
}
.canvas-node.is-hidden .node-content-layer,
.canvas-node.is-hidden .node-lock-badge {
visibility: hidden;
}
.canvas-node.is-locked {
cursor: default;
}
.node-content-layer {
width: 100%;
height: 100%;
transform-origin: center;
}
.node-title {
height: 38px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: 0 14px;
border-bottom: 1px solid rgba(17, 24, 39, 0.08);
background: rgba(255, 255, 255, 0.85);
}
.node-title span {
overflow: hidden;
font-size: 13px;
font-weight: 850;
text-overflow: ellipsis;
white-space: nowrap;
}
.node-title small {
color: var(--muted);
font-size: 10px;
font-weight: 800;
text-transform: uppercase;
}
.canvas-node p {
flex: 1;
margin: 0;
padding: 16px;
overflow: hidden;
color: #384152;
font-size: 14px;
line-height: 1.55;
white-space: pre-wrap;
}
.tone-technical {
background: #101827;
}
.tone-technical .node-title {
color: #eaf2ff;
background: rgba(15, 23, 42, 0.86);
border-color: rgba(255, 255, 255, 0.12);
}
.tone-technical p {
color: #c5d4e8;
}
.tone-natural {
background: #fbf8ef;
}
.tone-luxury {
background: #12100d;
}
.tone-luxury .node-title,
.tone-luxury p {
color: #f6ead8;
}
.tone-luxury .node-title {
background: rgba(18, 16, 13, 0.82);
border-color: rgba(255, 255, 255, 0.12);
}
.moteva-selection-frame {
--selection-scale: 1;
position: absolute;
z-index: 5;
inset: calc(-2px / var(--selection-scale));
border: calc(2px / var(--selection-scale)) solid #2f80ff;
pointer-events: none;
}
.text-overlay-node .moteva-selection-frame {
inset: 0;
}
.text-overlay-node .moteva-selection-meta {
display: none;
}
.moteva-selection-meta {
position: absolute;
left: 0;
right: 0;
top: calc(-26px / var(--selection-scale));
display: block;
color: #2f80ff;
font-size: calc(13px / var(--selection-scale));
font-weight: 520;
line-height: calc(18px / var(--selection-scale));
letter-spacing: 0;
pointer-events: none;
white-space: nowrap;
}
.moteva-selection-meta .moteva-selection-title-wrap,
.moteva-selection-meta strong {
position: absolute;
top: 0;
display: inline-flex;
align-items: center;
min-width: 0;
background: rgba(247, 247, 244, 0.86);
}
.moteva-selection-meta .moteva-selection-title-wrap {
left: 0;
gap: calc(5px / var(--selection-scale));
max-width: none;
overflow: visible;
padding-right: calc(6px / var(--selection-scale));
text-overflow: clip;
}
.moteva-selection-title-text,
.moteva-selection-title-button {
min-width: 0;
max-width: calc(280px / var(--selection-scale));
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.moteva-selection-title-button {
display: inline-block;
padding: 0;
border: 0;
color: inherit;
background: transparent;
font: inherit;
letter-spacing: 0;
text-align: left;
pointer-events: auto;
cursor: text;
}
.moteva-selection-title-input {
width: calc(220px / var(--selection-scale));
height: calc(24px / var(--selection-scale));
min-width: calc(96px / var(--selection-scale));
padding: 0 calc(5px / var(--selection-scale));
border: calc(1px / var(--selection-scale)) solid #2f80ff;
border-radius: calc(6px / var(--selection-scale));
outline: calc(2px / var(--selection-scale)) solid rgba(47, 128, 255, 0.22);
color: #2b3038;
background: #fff;
box-shadow: 0 1px 5px rgba(47, 128, 255, 0.16);
font: inherit;
line-height: calc(22px / var(--selection-scale));
letter-spacing: 0;
pointer-events: auto;
user-select: text;
}
.moteva-selection-meta svg {
width: calc(13px / var(--selection-scale));
height: calc(13px / var(--selection-scale));
flex: 0 0 auto;
}
.moteva-selection-meta strong {
right: 0;
flex: 0 0 auto;
padding-left: calc(6px / var(--selection-scale));
font: inherit;
}
.frame-selection-frame .moteva-selection-meta span {
left: calc(-1px / var(--selection-scale));
}
.frame-selection-frame .moteva-selection-meta strong {
right: calc(10px / var(--selection-scale));
}
.pen-stroke-selection-frame .moteva-selection-meta {
display: none;
}
.node-resize-handle {
position: absolute;
z-index: 6;
border: 0;
border-radius: 0;
background: transparent;
pointer-events: auto;
}
.node-resize-handle.handle-top-left,
.node-resize-handle.handle-top-right,
.node-resize-handle.handle-bottom-left,
.node-resize-handle.handle-bottom-right {
width: calc(9px / var(--selection-scale));
height: calc(9px / var(--selection-scale));
border: calc(1.5px / var(--selection-scale)) solid #2f80ff;
border-radius: 1px;
background: #fff;
box-shadow: 0 1px 4px rgba(17, 24, 39, 0.14);
}
.node-resize-handle.handle-top-left {
top: calc(-5px / var(--selection-scale));
left: calc(-5px / var(--selection-scale));
cursor: nwse-resize;
}
.node-resize-handle.handle-top {
top: calc(-9px / var(--selection-scale));
left: calc(12px / var(--selection-scale));
right: calc(12px / var(--selection-scale));
height: calc(18px / var(--selection-scale));
cursor: ns-resize;
}
.node-resize-handle.handle-top-right {
top: calc(-5px / var(--selection-scale));
right: calc(-5px / var(--selection-scale));
cursor: nesw-resize;
}
.node-resize-handle.handle-right {
top: calc(12px / var(--selection-scale));
right: calc(-9px / var(--selection-scale));
bottom: calc(12px / var(--selection-scale));
width: calc(18px / var(--selection-scale));
cursor: ew-resize;
}
.node-resize-handle.handle-bottom-right {
right: calc(-5px / var(--selection-scale));
bottom: calc(-5px / var(--selection-scale));
cursor: nwse-resize;
}
.node-resize-handle.handle-bottom {
right: calc(12px / var(--selection-scale));
bottom: calc(-9px / var(--selection-scale));
left: calc(12px / var(--selection-scale));
height: calc(18px / var(--selection-scale));
cursor: ns-resize;
}
.node-resize-handle.handle-bottom-left {
bottom: calc(-5px / var(--selection-scale));
left: calc(-5px / var(--selection-scale));
cursor: nesw-resize;
}
.node-resize-handle.handle-left {
top: calc(12px / var(--selection-scale));
bottom: calc(12px / var(--selection-scale));
left: calc(-9px / var(--selection-scale));
width: calc(18px / var(--selection-scale));
cursor: ew-resize;
}
.node-lock-badge {
position: absolute;
right: 8px;
top: 8px;
z-index: 4;
width: 24px;
height: 24px;
display: grid;
place-items: center;
border: 1px solid rgba(47, 128, 255, 0.42);
border-radius: 999px;
color: #2f80ff;
background: rgba(255, 255, 255, 0.88);
box-shadow: 0 5px 14px rgba(17, 24, 39, 0.12);
}
.node-text-editor {
flex: 1;
width: 100%;
min-height: 0;
padding: 16px;
border: 0;
outline: 0;
resize: none;
color: #384152;
background: transparent;
font-size: 14px;
line-height: 1.55;
}
.node-text-overlay,
.node-text-overlay-editor {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
border: 0;
outline: 0;
background: transparent;
line-height: 1.08;
letter-spacing: 0;
white-space: pre-wrap;
overflow: hidden;
}
.node-text-overlay {
display: block;
user-select: none;
}
.node-text-overlay-editor {
display: block;
resize: none;
cursor: text;
user-select: text;
}
.canvas-layer-panel {
--layer-panel-width: 274px;
position: absolute;
z-index: 44;
left: 0;
top: 0;
bottom: 0;
width: var(--layer-panel-width);
display: grid;
grid-template-rows: 56px 158px minmax(0, 1fr);
border-right: 1px solid #eceef2;
background: rgba(255, 255, 255, 0.97);
box-shadow: 8px 0 28px rgba(17, 24, 39, 0.06);
backdrop-filter: blur(18px);
}
.canvas-layer-panel header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 16px;
}
.canvas-layer-panel header strong {
color: #2b3038;
font-size: 16px;
font-weight: 760;
}
.canvas-layer-panel header button,
.layer-history-section > button,
.layer-control {
display: grid;
place-items: center;
border: 0;
color: #6b7280;
background: transparent;
}
.canvas-layer-panel header button {
width: 28px;
height: 28px;
border-radius: 8px;
}
.canvas-layer-panel header button:hover,
.layer-control:hover {
color: #20242b;
background: #f1f3f6;
}
.layer-history-section {
display: grid;
grid-template-rows: 42px 1fr;
border-bottom: 1px solid #eceef2;
}
.layer-history-section > button {
grid-template-columns: minmax(0, 1fr) auto;
align-items: center;
justify-items: stretch;
padding: 0 16px;
color: #30343b;
font-size: 14px;
font-weight: 760;
text-align: left;
}
.layer-history-section > button span {
min-width: 0;
}
.layer-history-empty {
display: grid;
place-items: center;
align-content: center;
gap: 6px;
color: #c7cbd3;
font-size: 13px;
font-weight: 560;
}
.layer-history-empty svg {
fill: #e1e4ea;
stroke: #e1e4ea;
}
.layer-list {
min-height: 0;
display: grid;
align-content: start;
gap: 6px;
padding: 12px 8px;
overflow-y: auto;
}
.layer-list-empty {
display: grid;
place-items: center;
min-height: 90px;
color: #a8adb6;
font-size: 13px;
font-weight: 650;
}
.layer-row {
height: 46px;
display: grid;
grid-template-columns: 32px minmax(0, 1fr) 26px 26px;
align-items: center;
gap: 7px;
padding: 4px 6px;
border-radius: 8px;
color: #2d333d;
cursor: default;
}
.layer-row:hover,
.layer-row.selected {
background: #edf0f4;
}
.layer-row.layer-group-row {
margin-top: 2px;
color: #252a31;
font-weight: 760;
}
.layer-row.boolean-layer-group-row {
grid-template-columns: 14px 32px minmax(0, 1fr) 26px 26px;
}
.layer-row.nested {
grid-template-columns: 20px 28px minmax(0, 1fr) 24px 24px;
padding-left: 12px;
}
.layer-row.nested::before {
width: 14px;
height: 1px;
background: #d6dae2;
content: "";
}
.layer-row.is-hidden {
opacity: 0.58;
}
.layer-thumb {
width: 30px;
height: 30px;
display: grid;
place-items: center;
overflow: hidden;
border: 1px solid #e1e5ec;
border-radius: 6px;
color: #7c8592;
background: #fff;
}
.layer-thumb img {
width: 100%;
height: 100%;
display: block;
object-fit: cover;
}
.layer-thumb .shape-node-preview {
width: 100%;
height: 100%;
padding: 3px;
}
.group-thumb {
color: #3b82f6;
background: #eef5ff;
}
.boolean-group-thumb {
color: #7c8592;
background: #fff;
}
.layer-name {
min-width: 0;
display: grid;
gap: 2px;
padding: 0;
border: 0;
color: inherit;
background: transparent;
text-align: left;
}
.layer-name strong,
.layer-name small {
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.layer-name strong {
font-size: 13px;
font-weight: 720;
}
.layer-name-editing {
display: flex;
align-items: center;
}
.layer-name-editing input {
min-width: 0;
width: 100%;
height: 28px;
padding: 0 6px;
border: 1px solid #2f80ff;
border-radius: 6px;
outline: 2px solid rgba(47, 128, 255, 0.2);
color: #2d333d;
background: #fff;
box-shadow: 0 1px 5px rgba(47, 128, 255, 0.12);
font: inherit;
font-size: 13px;
font-weight: 720;
line-height: 26px;
letter-spacing: 0;
user-select: text;
}
.layer-name small {
color: #9aa1ad;
font-size: 10px;
font-weight: 650;
}
.layer-control {
width: 24px;
height: 24px;
border-radius: 7px;
opacity: 0.62;
}
.layer-row:hover .layer-control,
.layer-row.selected .layer-control,
.layer-control.active {
opacity: 1;
}
.layer-control.active {
color: #6f7682;
}
.layer-controls-placeholder {
grid-column: span 2;
width: 52px;
height: 24px;
}
.canvas-generated-files-panel {
--generated-files-panel-width: 408px;
position: absolute;
z-index: 44;
left: 0;
top: 0;
bottom: 0;
width: var(--generated-files-panel-width);
display: grid;
grid-template-rows: 72px minmax(0, 1fr);
border-right: 1px solid #eceef2;
background: rgba(255, 255, 255, 0.98);
box-shadow: 8px 0 28px rgba(17, 24, 39, 0.06);
backdrop-filter: blur(18px);
font-size: 14px;
}
.canvas-generated-files-panel header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 20px 0 14px;
}
.canvas-generated-files-panel header strong {
color: #252a31;
font-size: 16px;
font-weight: 820;
letter-spacing: 0;
}
.canvas-generated-files-panel header button {
width: 30px;
height: 30px;
display: grid;
place-items: center;
border-radius: 9px;
color: #5f6671;
background: transparent;
}
.canvas-generated-files-panel header button:hover {
color: #20242b;
background: #f1f3f6;
}
.generated-files-list {
min-height: 0;
display: grid;
align-content: start;
gap: 10px;
padding: 2px 14px 22px;
overflow-y: auto;
}
.generated-file-row {
min-height: 74px;
display: grid;
grid-template-columns: 72px minmax(0, 1fr) 32px;
align-items: center;
gap: 18px;
padding: 4px 0;
border-radius: 10px;
color: #262b33;
cursor: pointer;
}
.generated-file-row:hover,
.generated-file-row.selected {
background: #f4f6f8;
}
.generated-file-thumb {
width: 72px;
height: 72px;
display: block;
overflow: hidden;
border-radius: 10px;
background: #f2f3f5;
box-shadow: inset 0 0 0 1px rgba(17, 24, 39, 0.06);
}
.generated-file-thumb img {
width: 100%;
height: 100%;
display: block;
object-fit: cover;
}
.generated-file-name {
min-width: 0;
overflow: hidden;
color: #2c3138;
font-size: 14px;
font-weight: 520;
letter-spacing: 0;
text-overflow: ellipsis;
white-space: nowrap;
}
.generated-file-download {
width: 32px;
height: 32px;
display: grid;
place-items: center;
border-radius: 9px;
color: #535a64;
background: transparent;
}
.generated-file-download:hover {
color: #111827;
background: #eceff3;
}
.generated-files-empty {
min-height: 220px;
display: grid;
place-items: center;
align-content: center;
gap: 10px;
color: #a9afb8;
font-size: 14px;
font-weight: 650;
}
.generated-files-empty svg {
color: #d7dbe2;
}
.generated-files-end {
padding: 16px 0 0;
color: #a4a9b1;
font-size: 14px;
font-weight: 560;
text-align: center;
}
.canvas-bottom-left {
position: absolute;
left: 8px;
bottom: 10px;
display: grid;
gap: 8px;
}
.canvas-bottom-left.is-offset-by-files-panel {
left: 424px;
}
.canvas-bottom-left.is-offset-by-layers-panel {
left: 290px;
}
.canvas-statusbar,
.workspace-toolbar {
position: absolute;
display: flex;
align-items: center;
border: 1px solid #e5e7eb;
border-radius: 9px;
background: rgba(255, 255, 255, 0.94);
box-shadow: 0 2px 10px rgba(17, 24, 39, 0.07);
}
.canvas-statusbar {
position: relative;
gap: 2px;
width: max-content;
height: 26px;
padding: 0 4px;
}
.canvas-statusbar button,
.workspace-toolbar button {
display: grid;
place-items: center;
color: #6b7280;
background: transparent;
}
.canvas-statusbar button {
box-sizing: border-box;
width: 22px;
height: 22px;
padding: 0;
border-radius: 6px;
line-height: 0;
}
.canvas-statusbar .canvas-zoom-trigger {
width: auto;
min-width: 46px;
height: 24px;
border-radius: 6px;
}
.canvas-statusbar button svg {
display: block;
}
.canvas-background-trigger svg {
color: var(--canvas-background, #f7f7f4);
fill: var(--canvas-background, #f7f7f4);
filter: drop-shadow(0 0 0.8px #6b7280);
}
.canvas-statusbar button:hover {
background: #f2f4f7;
}
.canvas-statusbar button.active {
color: #fff;
background: #303030;
}
.canvas-statusbar span {
min-width: 34px;
text-align: center;
color: #687080;
font-size: 12px;
font-weight: 800;
}
.canvas-statusbar .canvas-statusbar-separator {
width: 1px;
min-width: 1px;
height: 18px;
margin: 0 6px;
background: #e2e5eb;
}
.workspace-toolbar {
left: 50%;
bottom: 14px;
gap: 4px;
height: 44px;
padding: 5px;
transform: translateX(-50%);
}
.workspace-toolbar.is-offset-by-files-panel {
left: calc(408px + (100% - 408px) / 2);
}
.workspace-toolbar.is-offset-by-layers-panel {
left: calc(274px + (100% - 274px) / 2);
}
.workspace-toolbar button {
position: relative;
width: 32px;
height: 32px;
border-radius: 7px;
}
.workspace-toolbar-separator {
width: 1px;
height: 28px;
margin: 0 5px;
background: #e6e8ee;
}
.workspace-toolbar button.active,
.workspace-toolbar button:hover {
color: #fff;
background: #050505;
}
.toolbar-image-sparkle-icon {
position: relative;
width: 22px;
height: 22px;
display: grid;
place-items: center;
}
.toolbar-image-sparkle-icon svg:first-child {
width: 18px;
height: 18px;
}
.toolbar-image-sparkle-icon svg:last-child {
position: absolute;
right: -1px;
top: -1px;
width: 9px;
height: 9px;
stroke-width: 2.5;
}
.pen-tool-controls {
position: absolute;
left: 50%;
bottom: 66px;
z-index: 34;
height: 52px;
display: flex;
align-items: center;
gap: 12px;
padding: 7px 13px;
border: 1px solid rgba(229, 231, 235, 0.96);
border-radius: 16px;
background: rgba(255, 255, 255, 0.96);
box-shadow: 0 12px 28px rgba(17, 24, 39, 0.12);
backdrop-filter: blur(18px);
transform: translateX(-50%);
}
.pen-tool-controls.is-offset-by-files-panel {
left: calc(408px + (100% - 408px) / 2);
}
.pen-tool-controls.is-offset-by-layers-panel {
left: calc(274px + (100% - 274px) / 2);
}
.pen-color-trigger {
width: 36px;
height: 36px;
display: grid;
place-items: center;
border: 0;
border-radius: 11px;
background: #f2f3f5;
}
.pen-color-trigger span {
width: 24px;
height: 24px;
border: 1px solid #dfe3ea;
border-radius: 999px;
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.62);
}
.pen-tool-separator {
width: 1px;
height: 30px;
background: #e3e6eb;
}
.pen-tool-controls svg {
color: #252a31;
}
.pen-tool-controls input {
width: 34px;
border: 0;
outline: 0;
color: #20242b;
background: transparent;
font-size: 17px;
font-weight: 650;
text-align: right;
}
.pen-tool-controls > span:last-child {
color: #717782;
font-size: 17px;
font-weight: 580;
}
.canvas-tool-popover {
z-index: 80;
display: grid;
gap: 10px;
width: 236px;
padding: 14px;
border: 1px solid rgba(220, 224, 231, 0.9);
border-radius: 22px;
background: rgba(255, 255, 255, 0.96);
box-shadow: 0 14px 34px rgba(17, 24, 39, 0.14);
backdrop-filter: blur(18px);
}
.canvas-tool-popover button {
min-height: 48px;
display: grid;
grid-template-columns: 36px minmax(0, 1fr) auto;
align-items: center;
gap: 10px;
padding: 0 10px 0 4px;
border: 0;
border-radius: 14px;
color: #22272f;
background: transparent;
font-size: 19px;
font-weight: 520;
letter-spacing: 0;
text-align: left;
cursor: default;
}
.canvas-tool-popover button:hover,
.canvas-tool-popover button.active {
background: #f4f5f7;
}
.canvas-tool-popover button svg {
width: 36px;
height: 36px;
padding: 6px;
border-radius: 11px;
color: #252a31;
}
.canvas-tool-popover button.active svg {
color: #fff;
background: #303030;
}
.canvas-tool-popover button span {
min-width: 0;
}
.canvas-tool-popover button kbd {
color: #a6a8ad;
font-size: 18px;
font-weight: 500;
font-family: inherit;
}
.frame-color-popover {
z-index: 95;
width: 330px;
padding: 0;
overflow: hidden;
border: 1px solid rgba(224, 228, 235, 0.94);
border-radius: 18px;
background: rgba(255, 255, 255, 0.98);
box-shadow: 0 18px 42px rgba(17, 24, 39, 0.14);
backdrop-filter: blur(18px);
}
.frame-popover-title {
height: 58px;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 18px;
border-bottom: 1px solid #e7e9ee;
}
.frame-popover-title strong {
color: #1f2329;
font-size: 17px;
font-weight: 760;
}
.frame-popover-title button {
width: 34px;
height: 34px;
display: grid;
place-items: center;
border: 0;
border-radius: 10px;
color: #22272f;
background: transparent;
}
.frame-popover-title button:hover {
background: #f2f3f5;
}
.frame-color-plane {
position: relative;
height: 172px;
margin: 18px 18px 14px;
overflow: hidden;
border-radius: 10px;
background:
linear-gradient(180deg, transparent, #000),
linear-gradient(90deg, #fff, transparent),
#f00;
cursor: crosshair;
touch-action: none;
}
.frame-color-plane span {
position: absolute;
width: 18px;
height: 18px;
border: 4px solid #fff;
border-radius: 999px;
box-shadow: 0 1px 8px rgba(17, 24, 39, 0.24);
transform: translate(-50%, -50%);
}
.frame-hue-slider,
.frame-alpha-slider {
position: relative;
height: 14px;
margin: 0 18px 12px;
border-radius: 999px;
cursor: pointer;
touch-action: none;
}
.frame-hue-slider {
background: linear-gradient(90deg, #f00, #ff0, #0f0, #0ff, #00f, #f0f, #f00);
}
.frame-alpha-slider {
background:
linear-gradient(45deg, #d9dee7 25%, transparent 25%) 0 0 / 12px 12px,
linear-gradient(-45deg, #d9dee7 25%, transparent 25%) 0 6px / 12px 12px,
linear-gradient(45deg, transparent 75%, #d9dee7 75%) 6px -6px / 12px 12px,
linear-gradient(-45deg, transparent 75%, #d9dee7 75%) -6px 0 / 12px 12px,
linear-gradient(90deg, transparent, #050505);
}
.frame-hue-slider span,
.frame-alpha-slider span {
position: absolute;
top: 50%;
width: 22px;
height: 22px;
border: 4px solid #fff;
border-radius: 999px;
background: #f00;
box-shadow: 0 2px 9px rgba(17, 24, 39, 0.18);
transform: translate(-50%, -50%);
}
.frame-color-swatches {
display: flex;
justify-content: space-between;
gap: 0;
padding: 8px 24px 14px;
}
.frame-color-swatches button {
width: 44px;
height: 44px;
display: grid;
place-items: center;
border: 0;
border-radius: 999px;
background: transparent;
}
.frame-color-swatches button span {
width: 30px;
height: 30px;
border: 1px solid #e1e5ec;
border-radius: 999px;
}
.frame-color-swatches button.active span {
outline: 3px solid #2f80ff;
outline-offset: 4px;
box-shadow: 0 0 0 2px #fff;
}
.frame-color-swatches button.transparent span {
background:
linear-gradient(45deg, #d9dee7 25%, transparent 25%) 0 0 / 10px 10px,
linear-gradient(-45deg, #d9dee7 25%, transparent 25%) 0 5px / 10px 10px,
linear-gradient(45deg, transparent 75%, #d9dee7 75%) 5px -5px / 10px 10px,
linear-gradient(-45deg, transparent 75%, #d9dee7 75%) -5px 0 / 10px 10px,
#fff;
}
.frame-color-inputs {
display: grid;
grid-template-columns: minmax(0, 1fr) 112px;
gap: 10px;
padding: 0 18px 18px;
}
.frame-color-inputs.single {
grid-template-columns: 1fr;
}
.frame-color-inputs label,
.stroke-width-row {
height: 40px;
display: flex;
align-items: center;
gap: 8px;
min-width: 0;
padding: 0 10px;
border-radius: 10px;
background: #f3f4f6;
color: #4b5563;
font-size: 15px;
font-weight: 620;
}
.frame-color-inputs input,
.stroke-width-row input {
min-width: 0;
flex: 1;
border: 0;
outline: 0;
color: #1f2937;
background: transparent;
font: inherit;
}
.frame-color-inputs label:last-child {
gap: 6px;
}
.frame-color-inputs label:last-child span {
flex: 0 0 auto;
}
.frame-color-inputs input[type="number"] {
text-align: right;
appearance: textfield;
-moz-appearance: textfield;
}
.frame-color-inputs input[type="number"]::-webkit-outer-spin-button,
.frame-color-inputs input[type="number"]::-webkit-inner-spin-button {
margin: 0;
appearance: none;
-webkit-appearance: none;
}
.assistant-panel {
position: relative;
width: 400px;
max-width: 400px;
min-width: 0;
min-height: 0;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
overflow: hidden;
padding-bottom: 8px;
border-left: 1px solid #eceff3;
background: #fff;
}
.assistant-header {
width: 100%;
flex: 0 0 48px;
min-width: 0;
min-height: 48px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 0;
padding: 0;
background: #fff;
border-bottom: 0;
}
.assistant-header-title {
min-width: 0;
flex: 1 1 auto;
display: flex;
align-items: center;
height: 48px;
padding-left: 16px;
overflow: hidden;
}
.assistant-header-title strong {
display: block;
width: 100%;
max-width: calc(100% - 20px);
overflow: hidden;
color: #141414;
font-size: 14px;
font-weight: 600;
line-height: 20px;
text-overflow: ellipsis;
white-space: nowrap;
}
.assistant-header-actions {
width: auto;
height: 28px;
flex: 0 0 auto;
display: flex;
align-items: center;
justify-content: flex-end;
gap: 6px;
padding: 0 10px 0 8px;
color: #363636;
}
.assistant-header-icon {
width: 26px;
min-width: 26px;
height: 26px;
display: inline-flex;
align-items: center;
justify-content: center;
padding: 0 5px;
border-radius: 8px;
color: #363636;
background: transparent;
transition: background 0.15s ease, color 0.15s ease;
}
.assistant-header-icon:hover {
background: rgba(82, 109, 135, 0.1);
}
.assistant-header-icon:disabled,
.assistant-header-icon:disabled:hover {
color: #b8bcc4;
background: transparent;
opacity: 1;
cursor: default;
}
.assistant-header-icon:active {
background: rgba(82, 109, 135, 0.15);
}
.assistant-history-trigger {
width: 18px;
min-width: 18px;
padding: 0 1px;
background: transparent;
}
.assistant-history-trigger:hover,
.assistant-history-trigger.active {
background: rgba(82, 109, 135, 0.1);
}
.assistant-header-separator {
display: none;
}
.agent-history-popover {
width: 288px;
display: flex;
flex-direction: column;
gap: 8px;
padding: 12px 0 0;
border: 1px solid #e3e5e9;
border-radius: 12px;
background: #fff;
box-shadow: 0 16px 40px rgba(17, 24, 39, 0.14);
}
.agent-history-title {
margin-bottom: 4px;
padding: 0 12px;
color: #1f2329;
font-size: 16px;
font-weight: 750;
line-height: 24px;
}
.agent-history-search {
height: 32px;
display: flex;
align-items: center;
margin: 0 12px;
overflow: hidden;
border: 1px solid #e1e4e8;
border-radius: 8px;
color: #a1a7b0;
background: #fff;
}
.agent-history-search svg {
flex: 0 0 auto;
margin: 0 8px 0 10px;
}
.agent-history-search input {
min-width: 0;
flex: 1;
height: 100%;
padding: 4px 12px 4px 0;
border: 0;
outline: 0;
color: #1f2329;
background: transparent;
font-size: 14px;
line-height: 20px;
}
.agent-history-search input::placeholder {
color: #a5a9b1;
}
.agent-history-list {
max-height: 310px;
display: flex;
flex-direction: column;
gap: 2px;
overflow: auto;
padding: 0 12px 12px;
}
.agent-history-item {
width: 100%;
min-height: 32px;
display: flex;
align-items: center;
overflow: hidden;
padding: 6px 8px;
border-radius: 8px;
color: #1f2329;
background: transparent;
cursor: pointer;
}
.agent-history-item:hover,
.agent-history-item.active {
background: #f0f0f1;
}
.agent-history-item span {
min-width: 0;
flex: 1;
overflow: hidden;
font-size: 14px;
font-weight: 400;
line-height: 20px;
text-overflow: ellipsis;
white-space: nowrap;
}
.agent-history-delete {
width: 18px;
height: 18px;
flex: 0 0 auto;
display: grid;
place-items: center;
margin-left: 12px;
border-radius: 4px;
color: #6f747c;
background: transparent;
opacity: 0;
transition: opacity 0.15s ease, color 0.15s ease;
}
.agent-history-item:hover .agent-history-delete,
.agent-history-delete:focus-visible {
opacity: 1;
}
.agent-history-delete:hover {
color: #1f2329;
}
.agent-history-empty {
min-height: 32px;
display: grid;
place-items: center;
color: #8a9099;
font-size: 13px;
}
.assistant-feed {
position: relative;
width: 100%;
max-width: 720px;
flex: 1 1 auto;
min-width: 0;
min-height: 0;
display: flex;
flex-direction: column;
gap: 32px;
overflow-y: auto;
overflow-x: hidden;
padding: 24px 16px 40px;
color: #141414;
font-size: 14px;
scrollbar-gutter: stable;
scroll-behavior: smooth;
scrollbar-width: thin;
scrollbar-color: #dfe0e2 transparent;
}
.assistant-feed::-webkit-scrollbar {
width: 8px;
}
.assistant-feed::-webkit-scrollbar-track {
background: transparent;
}
.assistant-feed::-webkit-scrollbar-thumb {
border: 2px solid #fff;
border-radius: 999px;
background: #dfe0e2;
}
.generated-preview-card {
display: grid;
gap: 10px;
color: #31343a;
}
.generated-preview-card small {
display: inline-flex;
align-items: center;
gap: 8px;
color: #777b83;
font-size: 16px;
font-weight: 560;
}
.generated-preview-card small::before {
content: "";
width: 17px;
height: 17px;
display: inline-block;
border-radius: 4px;
background:
linear-gradient(#fff, #fff) padding-box,
linear-gradient(135deg, #a7adb7, #d7dbe2) border-box;
border: 1.5px solid transparent;
}
.generated-preview-thumb {
overflow: hidden;
width: 100%;
aspect-ratio: 16 / 10;
border-radius: 4px;
background: #f4f4f2;
}
.generated-preview-card p {
margin: 0;
color: #424751;
font-size: 13px;
line-height: 1.62;
}
.panel-error {
padding: 0 14px 8px;
}
.canvas-model-popover {
width: 348px;
}
@media (max-width: 980px) {
.home-main {
width: min(100% - 32px, 760px);
padding-left: 0;
}
.inspiration-grid {
column-count: 2;
}
.inspiration-modal {
max-height: calc(100vh - 36px);
grid-template-columns: 1fr;
overflow: auto;
}
.modal-art {
min-height: 300px;
}
.workspace-main {
grid-template-columns: 1fr;
}
.assistant-panel {
display: none;
}
.promo-strip {
display: none;
}
}
@media (max-width: 640px) {
.hero-section {
min-height: 560px;
}
.prompt-card {
padding: 18px;
}
.prompt-actions {
flex-wrap: wrap;
}
.prompt-status {
width: 100%;
order: 3;
}
.prompt-examples {
justify-content: flex-start;
}
.prompt-examples button {
max-width: 100%;
}
.inspiration-grid {
column-count: 1;
}
.inspiration-tabs {
top: 64px;
}
.modal-copy {
padding: 36px 22px;
}
.model-popover {
width: calc(100vw - 28px);
max-height: calc(100vh - 36px);
}
.workspace-topbar {
grid-template-columns: 1fr auto;
}
.workspace-actions .text-button {
display: none;
}
}