@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; } }