4e98a81aae
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>
3854 lines
69 KiB
CSS
3854 lines
69 KiB
CSS
@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;
|
||
}
|
||
}
|