:root { color-scheme: light; font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", "Segoe UI", sans-serif; --bg: #f5f5f7; --surface: rgba(255, 255, 255, 0.78); --surface-strong: #ffffff; --surface-muted: #f0f1f5; --line-soft: rgba(15, 23, 42, 0.08); --line-strong: rgba(15, 23, 42, 0.12); --ink-0: #111111; --ink-1: #3b3b3f; --ink-2: #6c7078; --accent: #0071e3; --accent-soft: rgba(0, 113, 227, 0.12); --success: #34c759; --danger: #ff3b30; --shadow-lg: 0 24px 80px rgba(16, 24, 40, 0.08); --shadow-sm: 0 12px 36px rgba(16, 24, 40, 0.05); background: radial-gradient( circle at top left, rgba(0, 113, 227, 0.11), transparent 26% ), radial-gradient( circle at top right, rgba(255, 45, 85, 0.1), transparent 24% ), linear-gradient(180deg, #fafafc 0%, #f4f5f8 100%); } * { box-sizing: border-box; } html, body { min-height: 100%; } body { margin: 0; min-width: 320px; color: var(--ink-0); background: transparent; } button, textarea, input { font: inherit; } button { cursor: pointer; } textarea { width: 100%; resize: vertical; min-height: 220px; border: 1px solid var(--line-soft); border-radius: 26px; padding: 22px 24px; background: rgba(255, 255, 255, 0.74); color: var(--ink-0); outline: none; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.45); transition: border-color 160ms ease, box-shadow 160ms ease, background 160ms ease; } textarea:focus { border-color: rgba(0, 113, 227, 0.26); background: rgba(255, 255, 255, 0.92); box-shadow: 0 0 0 4px rgba(0, 113, 227, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.55); } textarea::placeholder { color: #9096a0; } kbd { display: inline-flex; align-items: center; justify-content: center; min-width: 24px; padding: 0 8px; border-radius: 8px; border: 1px solid var(--line-soft); background: rgba(255, 255, 255, 0.9); box-shadow: inset 0 -1px 0 rgba(15, 23, 42, 0.05); } .app-shell { width: min(1440px, calc(100% - 40px)); margin: 0 auto; padding: 28px 0 44px; display: grid; grid-template-columns: 300px minmax(0, 1fr); gap: 24px; } .panel { border-radius: 32px; border: 1px solid var(--line-soft); background: var(--surface); backdrop-filter: blur(18px); box-shadow: var(--shadow-lg); } .sidebar { padding: 28px 22px; display: grid; gap: 18px; align-content: start; } .brand-lockup { display: flex; gap: 14px; align-items: center; padding-bottom: 6px; } .brand-mark { width: 18px; height: 18px; border-radius: 50%; background: linear-gradient(135deg, #0a84ff 0%, #5ac8fa 45%, #ff375f 100%); box-shadow: 0 8px 18px rgba(10, 132, 255, 0.22); } .eyebrow, .section-kicker, .sidebar-label { margin: 0; color: var(--ink-2); font-size: 0.8rem; font-weight: 600; letter-spacing: 0.02em; } .sidebar h1, .hero h2, .composer h3, .processing-panel h3, .result-panel h3 { margin: 0; letter-spacing: -0.03em; } .sidebar h1 { font-size: 1.18rem; } .sidebar-section { padding: 18px; border-radius: 24px; border: 1px solid var(--line-soft); background: rgba(255, 255, 255, 0.62); box-shadow: var(--shadow-sm); } .sidebar-section strong { display: block; margin-top: 6px; font-size: 1rem; } .sidebar-copy { margin: 10px 0 0; color: var(--ink-2); line-height: 1.55; } .sidebar-list { margin: 10px 0 0; padding-left: 1.1rem; color: var(--ink-1); line-height: 1.65; } .workspace { display: grid; gap: 24px; } .hero, .composer, .processing-panel, .result-panel { padding: 28px; } .hero { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(220px, 0.7fr); gap: 24px; align-items: center; overflow: hidden; } .hero h2 { font-size: clamp(2rem, 4vw, 3.4rem); line-height: 0.96; max-width: 12ch; } .hero-copy { margin: 14px 0 0; color: var(--ink-1); max-width: 58ch; line-height: 1.65; } .hero-orbital { position: relative; min-height: 220px; } .orb { position: absolute; border-radius: 50%; filter: blur(2px); } .orb-blue { inset: 18px auto auto 12px; width: 160px; height: 160px; background: radial-gradient( circle, rgba(90, 200, 250, 0.9), rgba(0, 113, 227, 0.08) 72% ); } .orb-pink { inset: auto 18px 8px auto; width: 190px; height: 190px; background: radial-gradient( circle, rgba(255, 55, 95, 0.5), rgba(255, 255, 255, 0) 72% ); } .orb-silver { inset: 66px auto auto 76px; width: 164px; height: 164px; background: radial-gradient( circle at 30% 30%, rgba(255, 255, 255, 0.98), rgba(214, 217, 223, 0.66) 58%, rgba(255, 255, 255, 0.14) 100% ); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.8); } .section-heading { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; margin-bottom: 18px; } .section-heading h3 { margin-top: 4px; font-size: 1.48rem; } .prompt-label { display: inline-block; margin-bottom: 12px; color: var(--ink-1); font-weight: 600; } .composer-meta, .composer-footer, .example-strip { display: flex; justify-content: space-between; align-items: center; gap: 16px; } .composer-meta { margin-top: 14px; color: var(--ink-2); } .muted { color: var(--ink-2); } .example-strip { margin-top: 18px; align-items: flex-start; } .example-label { margin-top: 10px; color: var(--ink-2); font-size: 0.94rem; white-space: nowrap; } .example-list { display: flex; flex-wrap: wrap; gap: 10px; } .example-chip, .secondary-button, .primary-button { border-radius: 999px; min-height: 44px; border: 1px solid var(--line-strong); transition: transform 160ms ease, background 160ms ease, box-shadow 160ms ease, opacity 160ms ease; } .example-chip, .secondary-button { background: rgba(255, 255, 255, 0.72); color: var(--ink-1); } .example-chip { padding: 0.8rem 1rem; max-width: 100%; box-shadow: var(--shadow-sm); } .primary-button { padding: 0.85rem 1.35rem; background: linear-gradient(180deg, #1482f0 0%, #0071e3 100%); color: #ffffff; border-color: transparent; box-shadow: 0 14px 26px rgba(0, 113, 227, 0.24); font-weight: 700; } .secondary-button { padding: 0.8rem 1.15rem; box-shadow: var(--shadow-sm); } .example-chip:hover, .primary-button:hover, .secondary-button:hover { transform: translateY(-1px); } .primary-button:disabled, .secondary-button:disabled { opacity: 0.5; cursor: not-allowed; transform: none; } .composer-footer { margin-top: 22px; } .meta-pills { display: flex; flex-wrap: wrap; gap: 10px; } .meta-pills span, .status-badge { display: inline-flex; align-items: center; min-height: 34px; padding: 0.45rem 0.85rem; border-radius: 999px; background: rgba(0, 113, 227, 0.08); border: 1px solid rgba(0, 113, 227, 0.12); color: #0f4c9a; font-size: 0.94rem; } .dashboard-grid { display: grid; grid-template-columns: minmax(320px, 0.9fr) minmax(420px, 1.1fr); gap: 24px; } .processing-lead { margin: 0 0 20px; color: var(--ink-1); line-height: 1.6; } .progress-track { height: 10px; border-radius: 999px; background: #e7ebf1; overflow: hidden; } .progress-fill { width: 0; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #5ac8fa 0%, #0071e3 100%); transition: width 180ms ease; } .processing-steps { list-style: none; margin: 22px 0 0; padding: 0; display: grid; gap: 14px; } .processing-step { display: grid; grid-template-columns: 14px minmax(0, 1fr); gap: 14px; align-items: start; } .processing-step strong { display: block; font-size: 0.98rem; } .processing-step p { margin: 6px 0 0; color: var(--ink-2); line-height: 1.55; } .step-dot { width: 14px; height: 14px; border-radius: 50%; margin-top: 4px; border: 1px solid #d0d5dc; background: #ffffff; } .processing-step-done .step-dot { background: var(--success); border-color: transparent; } .processing-step-active .step-dot { background: var(--accent); border-color: transparent; box-shadow: 0 0 0 6px rgba(0, 113, 227, 0.12); } .request-meta { margin: 0; color: var(--ink-2); line-height: 1.6; } .error-banner { margin-top: 16px; padding: 14px 16px; border-radius: 20px; border: 1px solid rgba(255, 59, 48, 0.16); background: rgba(255, 59, 48, 0.08); color: #b42318; } .result-stage { margin-top: 18px; padding: 18px; border-radius: 28px; border: 1px solid var(--line-soft); background: rgba(255, 255, 255, 0.76); box-shadow: var(--shadow-sm); } .loading-state, .empty-state { min-height: 520px; display: grid; place-items: center; text-align: center; } .result-skeleton { width: min(100%, 480px); } .skeleton-art, .skeleton-line { background: linear-gradient( 90deg, rgba(238, 241, 246, 1) 20%, rgba(247, 248, 250, 1) 50%, rgba(238, 241, 246, 1) 80% ); background-size: 220% 100%; animation: shimmer 1.6s linear infinite; } .skeleton-art { width: 100%; aspect-ratio: 1 / 1; border-radius: 28px; } .skeleton-line { height: 14px; margin-top: 16px; border-radius: 999px; } .skeleton-line-wide { width: 78%; } .skeleton-line:not(.skeleton-line-wide) { width: 56%; } .empty-illustration { width: 180px; height: 180px; border-radius: 36px; background: radial-gradient( circle at 30% 30%, rgba(90, 200, 250, 0.95), rgba(0, 113, 227, 0.08) 72% ), linear-gradient( 180deg, rgba(255, 255, 255, 0.82), rgba(239, 241, 246, 0.82) ); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.8); } .empty-state h4 { margin: 18px 0 10px; font-size: 1.16rem; } .empty-state p { margin: 0; color: var(--ink-2); max-width: 36ch; line-height: 1.6; } .image-frame { overflow: hidden; border-radius: 24px; background: linear-gradient(180deg, #eef2f7 0%, #f7f9fc 100%); } .image-frame img { display: block; width: 100%; aspect-ratio: 1 / 1; object-fit: cover; } .result-copy { margin-top: 16px; } .result-caption { color: var(--ink-2); font-size: 0.9rem; } .result-copy p { margin: 8px 0 0; color: var(--ink-1); line-height: 1.65; white-space: pre-wrap; word-break: break-word; } @keyframes shimmer { 0% { background-position: 200% 0; } 100% { background-position: -20% 0; } } @media (max-width: 1120px) { .app-shell, .dashboard-grid, .hero { grid-template-columns: 1fr; } .hero h2 { max-width: none; } } @media (max-width: 720px) { .app-shell { width: min(100% - 20px, 100%); padding-top: 14px; gap: 18px; } .sidebar, .hero, .composer, .processing-panel, .result-panel { padding: 22px; border-radius: 28px; } .section-heading, .composer-meta, .composer-footer, .example-strip { flex-direction: column; align-items: flex-start; } .example-list { width: 100%; } .example-chip { width: 100%; text-align: left; } }