:root { color-scheme: light; font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", "Segoe UI", sans-serif; --bg: #f5f5f7; --bg-accent: #eef2f7; --surface: #ffffff; --surface-muted: #f7f8fb; --surface-strong: #eef3fb; --line-soft: rgba(15, 23, 42, 0.08); --line-strong: rgba(15, 23, 42, 0.12); --ink-0: #101114; --ink-1: #30343b; --ink-2: #69707d; --accent: #0071e3; --accent-soft: rgba(0, 113, 227, 0.1); --success: #2eb872; --danger: #d92d20; --shadow-lg: 0 24px 56px rgba(15, 23, 42, 0.07); --shadow-sm: 0 12px 28px rgba(15, 23, 42, 0.05); background: radial-gradient( circle at top left, rgba(0, 113, 227, 0.08), transparent 25% ), radial-gradient( circle at top right, rgba(255, 55, 95, 0.08), transparent 24% ), linear-gradient(180deg, #fafbfc 0%, #f4f5f7 100%); } * { box-sizing: border-box; } html, body { min-height: 100%; } body { margin: 0; color: var(--ink-0); background: transparent; } a { color: inherit; text-decoration: none; } button, input, textarea, select { font: inherit; } button { cursor: pointer; } input, textarea, select { width: 100%; border-radius: 20px; border: 1px solid var(--line-soft); background: #fff; color: var(--ink-0); padding: 0.95rem 1rem; outline: none; transition: border-color 140ms ease, box-shadow 140ms ease, transform 140ms ease; } input:focus, textarea:focus, select:focus { border-color: rgba(0, 113, 227, 0.22); box-shadow: 0 0 0 4px rgba(0, 113, 227, 0.08); } textarea { resize: vertical; min-height: 240px; } .eyebrow, .section-kicker, .sidebar-label { margin: 0; color: var(--ink-2); font-size: 0.78rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; } .login-page { min-height: 100vh; display: grid; place-items: center; padding: 32px 16px; } .login-panel, .card, .page-hero, .dashboard-sidebar { border-radius: 30px; border: 1px solid var(--line-soft); background: rgba(255, 255, 255, 0.92); box-shadow: var(--shadow-lg); } .login-panel { width: min(100%, 560px); padding: 28px; } .login-form { display: grid; gap: 18px; } .login-copy h1 { margin: 6px 0 10px; font-size: clamp(2rem, 5vw, 3.2rem); line-height: 0.96; letter-spacing: -0.04em; } .login-copy p:last-child { margin: 0; color: var(--ink-2); line-height: 1.6; } .field { display: grid; gap: 10px; } .field span { color: var(--ink-1); font-size: 0.95rem; font-weight: 600; } .dashboard-shell { width: min(1480px, calc(100% - 32px)); margin: 0 auto; padding: 22px 0 40px; display: grid; grid-template-columns: 300px minmax(0, 1fr); gap: 22px; } .dashboard-sidebar { position: sticky; top: 22px; height: fit-content; padding: 22px; display: grid; gap: 18px; } .brand-lockup { display: flex; align-items: center; gap: 14px; } .brand-mark { width: 18px; height: 18px; border-radius: 50%; background: linear-gradient(135deg, #0a84ff 0%, #5ac8fa 46%, #ff375f 100%); box-shadow: 0 10px 18px rgba(10, 132, 255, 0.18); } .brand-lockup h1, .page-hero h2, .section-heading h3 { margin: 4px 0 0; letter-spacing: -0.03em; } .brand-lockup h1 { font-size: 1.16rem; } .sidebar-card { padding: 18px; border-radius: 24px; background: var(--surface-muted); border: 1px solid var(--line-soft); } .sidebar-card strong { display: block; margin-top: 8px; } .sidebar-copy { margin: 10px 0 0; color: var(--ink-2); line-height: 1.55; } .sidebar-nav { display: grid; gap: 10px; } .sidebar-link { display: grid; gap: 4px; padding: 14px 16px; border-radius: 20px; border: 1px solid transparent; color: var(--ink-1); background: transparent; transition: transform 140ms ease, border-color 140ms ease, background 140ms ease; } .sidebar-link:hover, .sidebar-link-active { background: var(--surface-muted); border-color: var(--line-soft); transform: translateY(-1px); } .sidebar-link strong { font-size: 0.98rem; } .sidebar-link span { color: var(--ink-2); font-size: 0.88rem; } .sidebar-actions { margin-top: 6px; } .dashboard-main { display: grid; gap: 22px; } .page-hero { overflow: hidden; display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(220px, 0.8fr); gap: 20px; padding: 26px; } .page-hero h2 { font-size: clamp(2rem, 4vw, 3.2rem); line-height: 0.96; max-width: 12ch; } .hero-copy, .block-copy { margin: 12px 0 0; color: var(--ink-1); line-height: 1.65; } .hero-orbs { position: relative; min-height: 220px; } .hero-orb { position: absolute; border-radius: 50%; } .hero-orb-blue { left: 16px; top: 20px; width: 160px; height: 160px; background: radial-gradient( circle, rgba(90, 200, 250, 0.9), rgba(0, 113, 227, 0.06) 72% ); } .hero-orb-pink { right: 18px; bottom: 10px; width: 180px; height: 180px; background: radial-gradient( circle, rgba(255, 55, 95, 0.38), rgba(255, 55, 95, 0) 72% ); } .hero-orb-silver { left: 78px; top: 70px; width: 158px; height: 158px; background: radial-gradient( circle at 30% 30%, rgba(255, 255, 255, 1), rgba(220, 225, 232, 0.7) 56%, rgba(255, 255, 255, 0.15) 100% ); } .page-content, .studio-grid, .admin-grid, .history-grid, .history-overview-grid, .history-gallery-list { display: grid; gap: 22px; } .studio-grid { grid-template-columns: minmax(0, 1.05fr) minmax(320px, 0.8fr); } .admin-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .history-overview-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .card { padding: 24px; content-visibility: auto; } .composer-card { display: grid; gap: 18px; } .result-card, .user-table-card { grid-column: 1 / -1; } .section-heading { display: flex; justify-content: space-between; gap: 16px; align-items: flex-start; margin-bottom: 18px; } .section-heading h3 { font-size: 1.46rem; } .composer-card .section-heading { margin-bottom: 0; } .subtle-pill, .meta-pills span { display: inline-flex; align-items: center; min-height: 34px; padding: 0.45rem 0.85rem; border-radius: 999px; background: var(--accent-soft); border: 1px solid rgba(0, 113, 227, 0.12); color: #0b5cab; font-size: 0.92rem; } .composer-meta, .composer-actions { display: flex; justify-content: space-between; gap: 14px; align-items: center; } .composer-meta { margin-top: 14px; color: var(--ink-2); } .quick-prompt-list, .meta-pills, .form-grid { display: flex; flex-wrap: wrap; gap: 10px; } .quick-prompt-list { margin-top: 18px; } .form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin-bottom: 14px; } .composer-actions { margin-top: 20px; } .pwa-panel { display: grid; gap: 16px; padding: 18px; border-radius: 24px; border: 1px solid rgba(0, 113, 227, 0.12); background: linear-gradient(180deg, rgba(255, 255, 255, 0.94) 0%, #f6f9fe 100%), radial-gradient(circle at top right, rgba(90, 200, 250, 0.18), transparent 40%); } .pwa-panel h4 { margin: 4px 0 0; font-size: 1.16rem; letter-spacing: -0.02em; } .pwa-panel .block-copy { margin-top: 10px; } .pwa-status-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; } .pwa-status-card { padding: 14px 16px; border-radius: 20px; border: 1px solid var(--line-soft); background: rgba(255, 255, 255, 0.8); } .pwa-status-card span { display: block; color: var(--ink-2); font-size: 0.8rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; } .pwa-status-card strong { display: block; margin-top: 8px; color: var(--ink-0); line-height: 1.45; } .pwa-actions { display: flex; flex-wrap: wrap; gap: 10px; } .primary-button, .ghost-button, .ghost-chip { min-height: 44px; border-radius: 999px; transition: transform 140ms ease, opacity 140ms ease, background 140ms ease; } .primary-button { border: none; padding: 0.88rem 1.3rem; background: linear-gradient(180deg, #1482f0 0%, #0071e3 100%); color: #fff; box-shadow: 0 14px 30px rgba(0, 113, 227, 0.2); font-weight: 700; } .ghost-button, .ghost-chip { border: 1px solid var(--line-soft); background: var(--surface-muted); color: var(--ink-1); } .ghost-button { padding: 0.82rem 1.1rem; } .ghost-chip { padding: 0.8rem 1rem; text-align: left; } .primary-button:hover, .ghost-button:hover, .ghost-chip:hover { transform: translateY(-1px); } .primary-button:disabled, .ghost-button:disabled { opacity: 0.5; cursor: not-allowed; transform: none; } .muted { color: var(--ink-2); } .progress-track { margin-top: 18px; height: 10px; border-radius: 999px; background: #e8ecf3; overflow: hidden; } .progress-fill { height: 100%; border-radius: inherit; background: linear-gradient(90deg, #5ac8fa 0%, #0071e3 100%); transition: width 180ms linear; } .processing-list { list-style: none; margin: 20px 0 0; padding: 0; display: grid; gap: 12px; } .processing-item { display: flex; align-items: center; gap: 12px; color: var(--ink-2); } .processing-item-done, .processing-item-active { color: var(--ink-1); } .step-dot { width: 12px; height: 12px; border-radius: 50%; border: 1px solid #c7d0dd; background: #fff; } .processing-item-done .step-dot { background: var(--success); border-color: transparent; } .processing-item-active .step-dot { background: var(--accent); border-color: transparent; box-shadow: 0 0 0 6px rgba(0, 113, 227, 0.1); } .image-frame { overflow: hidden; border-radius: 24px; background: linear-gradient(180deg, #eff3f8 0%, #f7f9fb 100%); } .image-frame img { display: block; width: 100%; height: auto; aspect-ratio: 1 / 1; object-fit: cover; } .result-stack { display: grid; gap: 16px; } .result-copy { padding: 16px 18px; border-radius: 22px; background: var(--surface-muted); border: 1px solid var(--line-soft); } .result-caption { color: var(--ink-2); font-size: 0.88rem; } .result-copy p { margin: 8px 0 0; color: var(--ink-1); line-height: 1.65; white-space: pre-wrap; } .result-placeholder { min-height: 460px; display: grid; place-items: center; text-align: center; } .placeholder-orb { width: 160px; height: 160px; border-radius: 32px; background: radial-gradient( circle at 30% 30%, rgba(90, 200, 250, 0.95), rgba(0, 113, 227, 0.06) 72% ), linear-gradient(180deg, #ffffff 0%, #eef2f7 100%); } .result-placeholder h4 { margin: 18px 0 10px; font-size: 1.12rem; } .result-placeholder p { margin: 0; color: var(--ink-2); max-width: 34ch; line-height: 1.6; } .history-overview-card-muted { background: linear-gradient(180deg, #fbfcfe 0%, #f6f8fb 100%); } .history-stat-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; } .history-stat-card, .history-meta-list div { padding: 16px; border-radius: 22px; border: 1px solid var(--line-soft); background: var(--surface-muted); } .history-stat-card span, .history-meta-list span { display: block; color: var(--ink-2); font-size: 0.82rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; } .history-stat-card strong, .history-meta-list strong { display: block; margin-top: 8px; font-size: 1.08rem; color: var(--ink-0); line-height: 1.35; } .history-info-pills { margin-top: 20px; } .history-empty-card { min-height: 480px; display: grid; place-items: center; text-align: center; } .history-empty-card h4 { margin: 18px 0 10px; font-size: 1.18rem; } .history-empty-card p { margin: 0; max-width: 34ch; color: var(--ink-2); line-height: 1.65; } .history-gallery-list { grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); } .history-card { padding: 18px; display: grid; gap: 16px; } .history-card-media { overflow: hidden; border-radius: 24px; aspect-ratio: 1 / 1; background: linear-gradient(180deg, #eff3f8 0%, #f7f9fb 100%); } .history-card-media img { display: block; width: 100%; height: 100%; object-fit: cover; } .history-card-header { display: flex; justify-content: space-between; gap: 14px; align-items: flex-start; } .history-card-header h4 { margin: 0; font-size: 1.04rem; line-height: 1.35; word-break: break-word; } .history-card-header p { margin: 8px 0 0; } .history-owner-pill { white-space: nowrap; } .history-meta-pills { gap: 8px; } .history-meta-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; } .history-disclosure { padding: 16px 18px; border-radius: 22px; border: 1px solid var(--line-soft); background: var(--surface-muted); } .history-disclosure summary { cursor: pointer; color: var(--ink-1); font-weight: 700; list-style: none; } .history-disclosure summary::-webkit-details-marker { display: none; } .history-disclosure p { margin: 12px 0 0; color: var(--ink-1); line-height: 1.68; white-space: pre-wrap; } .history-actions { display: flex; gap: 12px; } .history-actions a { flex: 1; display: inline-flex; align-items: center; justify-content: center; text-align: center; } .history-download-button { display: inline-flex; align-items: center; } .success-banner, .error-banner { padding: 14px 16px; border-radius: 20px; border: 1px solid var(--line-soft); } .success-banner { background: rgba(46, 184, 114, 0.09); color: #0c7b44; } .error-banner { background: rgba(217, 45, 32, 0.08); color: var(--danger); } .user-table { display: grid; gap: 12px; } .user-table-head, .user-table-row { display: grid; grid-template-columns: 1.2fr 0.9fr 0.9fr 0.8fr 0.8fr 1fr 0.7fr; gap: 12px; align-items: center; } .user-table-head { padding: 0 8px; color: var(--ink-2); font-size: 0.86rem; } .user-table-row { padding: 12px; border-radius: 22px; background: var(--surface-muted); border: 1px solid var(--line-soft); } .user-cell-name { display: grid; } .user-cell-name strong { font-size: 0.98rem; } .user-cell-name small { color: var(--ink-2); } @media (max-width: 1180px) { .dashboard-shell, .studio-grid, .admin-grid, .history-overview-grid, .page-hero { grid-template-columns: 1fr; } .dashboard-sidebar { position: static; } .page-hero h2 { max-width: none; } } @media (max-width: 880px) { .dashboard-shell { width: min(100% - 20px, 100%); } .section-heading, .composer-meta, .composer-actions, .history-card-header, .history-actions { flex-direction: column; align-items: flex-start; } .form-grid, .pwa-status-grid, .history-stat-grid, .history-meta-list, .user-table-head, .user-table-row { grid-template-columns: 1fr; } .user-table-head { display: none; } .history-actions a { width: 100%; } }