@import "tailwindcss"; :root { --font-display: "Bahnschrift", "Segoe UI", "PingFang SC", sans-serif; --font-body: "Microsoft YaHei UI", "PingFang SC", "Noto Sans SC", sans-serif; --bg: #090b12; --bg-soft: #101521; --bg-elevated: #171d2d; --surface: rgba(17, 22, 35, 0.88); --surface-strong: rgba(24, 31, 48, 0.98); --surface-muted: rgba(13, 17, 27, 0.92); --ink: #f5f7fb; --muted: #97a3bb; --line: rgba(151, 163, 187, 0.16); --line-strong: rgba(135, 196, 255, 0.32); --accent: #4ea9ff; --accent-strong: #7fd6ff; --accent-soft: rgba(78, 169, 255, 0.14); --success: #68d391; --warn: #f0b354; --danger: #f07f7f; --shadow: 0 28px 90px rgba(0, 0, 0, 0.4); } .app-fonts { font-family: var(--font-body); } * { box-sizing: border-box; } html, body { min-height: 100%; } body { margin: 0; color: var(--ink); font-family: var(--font-body), sans-serif; background: radial-gradient(circle at top left, rgba(53, 112, 255, 0.18), transparent 26%), radial-gradient(circle at top right, rgba(12, 132, 92, 0.12), transparent 24%), radial-gradient(circle at bottom center, rgba(92, 51, 174, 0.12), transparent 30%), linear-gradient(180deg, #0a0d15 0%, #080a10 100%); } a { color: inherit; text-decoration: none; } button, input, select, textarea { font: inherit; } button:disabled { cursor: not-allowed; opacity: 0.62; } input::placeholder, textarea::placeholder { color: rgba(151, 163, 187, 0.74); } .spin { animation: spin 1s linear infinite; } @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .fullscreen-shell { min-height: 100vh; display: grid; place-items: center; padding: 24px; } .auth-grid { min-height: 100vh; display: grid; grid-template-columns: 1.12fr 0.88fr; background: linear-gradient(160deg, rgba(10, 13, 21, 0.98) 0%, rgba(8, 10, 16, 0.98) 100%); } .auth-hero { padding: 56px; display: flex; flex-direction: column; justify-content: space-between; } .auth-card { width: min(460px, calc(100vw - 32px)); margin: auto; padding: 32px; border: 1px solid var(--line); border-radius: 28px; background: rgba(16, 21, 33, 0.94); box-shadow: var(--shadow); } .eyebrow, .brand-kicker, .header-kicker { letter-spacing: 0.18em; text-transform: uppercase; color: var(--accent-strong); font-size: 12px; } .headline { margin: 10px 0 14px; font-size: clamp(36px, 5vw, 70px); line-height: 0.96; font-family: var(--font-display), sans-serif; } .subcopy { max-width: 560px; line-height: 1.7; color: var(--muted); } .form-stack { display: grid; gap: 16px; margin-top: 20px; } .field-label { display: grid; gap: 8px; color: var(--muted); font-size: 14px; } .field-label input, .field-label select, .field-label textarea, .prompt-editor, .library-search input { width: 100%; padding: 14px 16px; border: 1px solid var(--line); border-radius: 16px; color: var(--ink); background: rgba(10, 14, 23, 0.88); outline: none; transition: border-color 0.2s ease, background 0.2s ease; } .field-label input:focus, .field-label select:focus, .field-label textarea:focus, .prompt-editor:focus, .library-search input:focus { border-color: var(--line-strong); background: rgba(16, 21, 33, 0.96); } .field-label textarea, .prompt-editor { min-height: 150px; resize: vertical; } .primary-button, .ghost-button, .danger-button { border: 0; border-radius: 16px; padding: 14px 18px; display: inline-flex; align-items: center; justify-content: center; gap: 10px; cursor: pointer; transition: transform 0.18s ease, opacity 0.18s ease, background 0.18s ease; } .primary-button:hover, .ghost-button:hover, .danger-button:hover { transform: translateY(-1px); } .primary-button { background: linear-gradient(135deg, #2f86ff 0%, #59c7ff 100%); color: white; box-shadow: 0 16px 40px rgba(47, 134, 255, 0.28); } .ghost-button { background: rgba(255, 255, 255, 0.05); border: 1px solid var(--line); color: var(--ink); } .danger-button { background: rgba(240, 127, 127, 0.12); border: 1px solid rgba(240, 127, 127, 0.22); color: var(--danger); } .compact-button { min-height: 40px; padding: 10px 14px; font-size: 13px; } .shell-grid { min-height: 100vh; display: grid; grid-template-columns: 320px 1fr; } .shell-sidebar { padding: 28px 22px; border-right: 1px solid var(--line); background: linear-gradient(180deg, rgba(14, 18, 29, 0.98) 0%, rgba(9, 12, 20, 0.98) 100%); display: flex; flex-direction: column; gap: 22px; position: sticky; top: 0; min-height: 100vh; } .brand-block { padding: 18px; border-radius: 28px; border: 1px solid rgba(127, 214, 255, 0.1); background: linear-gradient(145deg, rgba(27, 38, 61, 0.96) 0%, rgba(12, 17, 28, 0.98) 100%); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04); } .brand-block h1 { margin: 8px 0 10px; font-size: 34px; font-family: var(--font-display), sans-serif; } .brand-block p { margin: 0; line-height: 1.7; color: var(--muted); } .brand-status { margin-top: 18px; display: inline-flex; align-items: center; gap: 10px; padding: 10px 14px; border-radius: 999px; background: rgba(255, 255, 255, 0.04); color: var(--ink); font-size: 13px; } .status-dot { width: 8px; height: 8px; border-radius: 999px; background: var(--success); box-shadow: 0 0 0 6px rgba(104, 211, 145, 0.12); } .sidebar-nav { display: grid; gap: 10px; } .nav-item { display: flex; align-items: flex-start; gap: 12px; padding: 14px 16px; border-radius: 18px; color: var(--muted); border: 1px solid transparent; transition: background 0.18s ease, border-color 0.18s ease, color 0.18s ease; } .nav-item svg { margin-top: 2px; } .nav-item span { display: block; font-weight: 700; color: var(--ink); } .nav-item small { display: block; margin-top: 4px; color: var(--muted); line-height: 1.45; } .nav-item.active { background: linear-gradient(135deg, rgba(47, 134, 255, 0.16), rgba(89, 199, 255, 0.08)); border-color: rgba(127, 214, 255, 0.18); } .profile-card, .panel, .stat-card, .pulse-card { border: 1px solid var(--line); border-radius: 26px; background: var(--surface); backdrop-filter: blur(16px); box-shadow: var(--shadow); } .profile-card { padding: 18px; margin-top: auto; display: grid; gap: 16px; } .profile-card-main { display: grid; gap: 10px; } .profile-avatar { width: 48px; height: 48px; display: grid; place-items: center; border-radius: 18px; background: linear-gradient(135deg, rgba(47, 134, 255, 0.28), rgba(89, 199, 255, 0.16)); border: 1px solid rgba(127, 214, 255, 0.16); font-weight: 800; letter-spacing: 0.06em; } .profile-avatar-large { width: 64px; height: 64px; } .profile-name { font-weight: 800; } .profile-meta { color: var(--muted); font-size: 14px; } .shell-main { padding: 24px; } .shell-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; } .shell-header h2 { margin: 6px 0 8px; font-size: 34px; font-family: var(--font-display), sans-serif; } .shell-header-copy { margin: 0; max-width: 620px; color: var(--muted); line-height: 1.65; } .shell-header-meta { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; } .header-chip { padding: 10px 14px; border-radius: 999px; display: inline-flex; align-items: center; gap: 8px; background: rgba(255, 255, 255, 0.05); border: 1px solid var(--line); color: var(--muted); font-size: 13px; } .header-chip-success { color: #baf5cf; background: rgba(104, 211, 145, 0.1); border-color: rgba(104, 211, 145, 0.16); } .shell-content { margin-top: 22px; display: grid; gap: 18px; } .panel, .stat-card, .pulse-card { padding: 22px; } .panel-grid, .stats-grid, .two-col-grid, .workbench-grid, .studio-summary-grid, .studio-control-grid, .media-slot-grid { display: grid; gap: 18px; } .panel-grid { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); } .stats-grid { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); } .two-col-grid { grid-template-columns: 1.05fr 0.95fr; } .workbench-grid { grid-template-columns: minmax(0, 1.08fr) minmax(360px, 0.92fr); align-items: start; } .studio-summary-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } .studio-control-grid, .media-slot-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } .panel h3, .stat-card h3, .library-header h3, .workbench-header h3 { margin: 0 0 12px; font-size: 24px; font-family: var(--font-display), sans-serif; } .stat-card .value { font-size: 34px; font-family: var(--font-display), sans-serif; } .muted { color: var(--muted); } .row, .toolbar { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; } .toolbar { justify-content: space-between; } .list-grid { display: grid; gap: 12px; } .list-item { padding: 16px; border-radius: 18px; border: 1px solid var(--line); background: rgba(255, 255, 255, 0.04); } .list-item strong { display: block; margin-bottom: 6px; } .mini-grid { display: grid; gap: 12px; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); } .status-badge { display: inline-flex; align-items: center; padding: 6px 10px; border-radius: 999px; font-size: 12px; font-weight: 700; text-transform: uppercase; } .tone-soft { background: rgba(151, 163, 187, 0.12); color: #ced8ea; } .tone-success { background: rgba(104, 211, 145, 0.14); color: var(--success); } .tone-warn { background: rgba(240, 179, 84, 0.14); color: var(--warn); } .tone-danger { background: rgba(240, 127, 127, 0.14); color: var(--danger); } .tone-ghost { background: rgba(151, 163, 187, 0.08); color: var(--muted); } .media-preview { width: 100%; border-radius: 18px; border: 1px solid var(--line); background: #06080c; } .code-block { margin: 0; padding: 16px; border-radius: 18px; background: #080b12; border: 1px solid var(--line); color: #d7e1ff; overflow: auto; font-size: 13px; } .studio-panel, .library-panel, .asset-management-shell { overflow: hidden; } .workbench-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; margin-bottom: 20px; } .studio-stat { padding: 18px; border-radius: 22px; border: 1px solid var(--line); background: linear-gradient(160deg, rgba(31, 41, 64, 0.88), rgba(15, 20, 32, 0.94)); } .studio-stat span, .studio-stat small { display: block; } .studio-stat span, .mini-note { color: var(--muted); font-size: 13px; } .studio-stat strong { display: block; margin: 14px 0 10px; font-size: 30px; font-family: var(--font-display), sans-serif; } .control-block { padding: 18px; border-radius: 22px; border: 1px solid var(--line); background: rgba(255, 255, 255, 0.03); } .control-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; margin-bottom: 14px; } .block-title { font-weight: 800; font-size: 15px; } .model-card-grid { display: grid; gap: 12px; } .model-card { width: 100%; border: 1px solid var(--line); border-radius: 20px; padding: 16px; background: linear-gradient(160deg, rgba(12, 17, 28, 0.96), rgba(25, 34, 53, 0.88)); color: var(--ink); text-align: left; cursor: pointer; } .model-card.active { border-color: rgba(127, 214, 255, 0.32); background: linear-gradient(160deg, rgba(29, 63, 116, 0.92), rgba(18, 29, 52, 0.96)); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06); } .model-card-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; } .model-card-head strong, .asset-card-title-row strong { display: block; font-size: 16px; } .model-card-head span { display: block; margin-top: 4px; font-size: 12px; color: var(--muted); } .model-card p { margin: 14px 0; color: var(--muted); line-height: 1.6; } .model-card-metrics { display: flex; gap: 8px; flex-wrap: wrap; } .model-card-metrics span { padding: 6px 10px; border-radius: 999px; background: rgba(255, 255, 255, 0.06); color: #d4ebff; font-size: 12px; } .prompt-editor { min-height: 180px; } .segmented-group { display: flex; gap: 10px; flex-wrap: wrap; } .segmented-button { min-height: 40px; border: 1px solid var(--line); border-radius: 14px; padding: 10px 14px; background: rgba(255, 255, 255, 0.03); color: var(--muted); cursor: pointer; } .segmented-button.active { background: linear-gradient(135deg, rgba(47, 134, 255, 0.18), rgba(89, 199, 255, 0.12)); border-color: rgba(127, 214, 255, 0.22); color: white; } .media-slot { padding: 16px; border-radius: 20px; border: 1px solid var(--line); background: rgba(8, 11, 18, 0.7); } .media-slot-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; } .media-slot-body { margin-top: 14px; display: flex; gap: 10px; flex-wrap: wrap; } .selection-placeholder { color: var(--muted); line-height: 1.6; font-size: 13px; } .selected-asset-chip { display: grid; gap: 4px; min-width: 0; border: 1px solid rgba(127, 214, 255, 0.16); border-radius: 14px; padding: 10px 12px; background: rgba(47, 134, 255, 0.08); color: var(--ink); cursor: pointer; text-align: left; } .selected-asset-chip span, .selected-asset-chip small { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .selected-asset-chip small { color: var(--muted); } .text-button { border: 0; padding: 0; background: none; color: var(--accent-strong); cursor: pointer; } .toggle-card { display: flex; align-items: center; gap: 14px; padding: 18px; border-radius: 22px; border: 1px solid var(--line); background: rgba(255, 255, 255, 0.03); } .toggle-card input { width: 18px; height: 18px; accent-color: var(--accent); } .toggle-card span { display: block; font-weight: 700; } .toggle-card small { display: block; margin-top: 4px; color: var(--muted); } .inline-feedback { padding: 14px 16px; border-radius: 16px; background: rgba(255, 255, 255, 0.04); border: 1px solid var(--line); color: var(--muted); } .inline-feedback.is-success { border-color: rgba(104, 211, 145, 0.18); background: rgba(104, 211, 145, 0.08); color: #c8f3d5; } .inline-feedback.is-error { border-color: rgba(240, 127, 127, 0.18); background: rgba(240, 127, 127, 0.08); color: #ffd7d7; } .composer-footer { display: grid; gap: 14px; } .primary-button-wide { width: 100%; } .library-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; margin-bottom: 20px; } .workspace-tabs { display: flex; gap: 10px; flex-wrap: wrap; } .tab-chip { padding: 10px 14px; border-radius: 14px; border: 1px solid var(--line); background: rgba(255, 255, 255, 0.03); color: var(--muted); font-size: 13px; } .tab-chip.active { background: rgba(47, 134, 255, 0.16); color: white; border-color: rgba(127, 214, 255, 0.2); } .asset-upload-panel, .recent-task-strip { margin-bottom: 18px; padding: 18px; border-radius: 22px; border: 1px solid var(--line); background: rgba(255, 255, 255, 0.03); } .upload-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px; margin-top: 14px; } .file-picker { min-height: 52px; display: flex; align-items: center; gap: 12px; padding: 0 16px; border-radius: 16px; border: 1px dashed rgba(127, 214, 255, 0.22); background: rgba(10, 14, 23, 0.7); color: var(--muted); cursor: pointer; } .file-picker input { display: none; } .file-picker span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .library-toolbar { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 18px; flex-wrap: wrap; } .library-search { min-width: min(100%, 280px); display: flex; align-items: center; gap: 10px; padding-left: 14px; border-radius: 16px; border: 1px solid var(--line); background: rgba(10, 14, 23, 0.8); } .library-search input { border: 0; background: transparent; } .asset-gallery { display: grid; gap: 14px; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); } .asset-library-card { overflow: hidden; border-radius: 22px; border: 1px solid var(--line); background: linear-gradient(160deg, rgba(12, 17, 28, 0.96), rgba(18, 24, 36, 0.92)); } .asset-library-card.selected { border-color: rgba(127, 214, 255, 0.26); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04); } .asset-thumb { position: relative; height: 152px; display: grid; place-items: center; overflow: hidden; background: rgba(255, 255, 255, 0.04); } .asset-thumb-image { background-position: center; background-size: cover; background-repeat: no-repeat; } .asset-thumb-video video { width: 100%; height: 100%; object-fit: cover; } .asset-thumb-audio { gap: 10px; color: var(--accent-strong); background: radial-gradient(circle at top, rgba(47, 134, 255, 0.2), transparent 52%), rgba(8, 11, 18, 0.96); } .asset-media-badge { position: absolute; top: 12px; left: 12px; padding: 6px 10px; border-radius: 999px; background: rgba(9, 12, 20, 0.8); border: 1px solid rgba(127, 214, 255, 0.18); font-size: 12px; } .asset-card-body { padding: 16px; } .asset-card-title-row { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; } .asset-card-title-row strong { margin: 0; line-height: 1.5; word-break: break-word; } .asset-card-meta { margin-top: 8px; color: var(--muted); font-size: 13px; } .asset-selected-mark { display: inline-flex; align-items: center; gap: 4px; color: #c7eeff; font-size: 12px; white-space: nowrap; } .recent-task-strip h4 { margin: 0 0 8px; font-size: 18px; } .compact-list { margin-top: 14px; } .task-mini-card { display: grid; gap: 12px; padding: 16px; border-radius: 18px; border: 1px solid var(--line); background: rgba(255, 255, 255, 0.04); } .task-mini-meta { display: flex; gap: 14px; flex-wrap: wrap; color: var(--muted); font-size: 13px; } .task-mini-meta span { display: inline-flex; align-items: center; gap: 6px; } .empty-state { padding: 24px; border-radius: 18px; border: 1px dashed rgba(151, 163, 187, 0.2); background: rgba(255, 255, 255, 0.03); color: var(--muted); text-align: center; } .profile-overview-card { display: flex; align-items: center; gap: 14px; } @media (max-width: 1320px) { .workbench-grid, .two-col-grid, .studio-control-grid, .media-slot-grid { grid-template-columns: 1fr; } .studio-summary-grid { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); } } @media (max-width: 1100px) { .auth-grid, .shell-grid { grid-template-columns: 1fr; } .shell-sidebar { position: static; min-height: auto; border-right: 0; border-bottom: 1px solid var(--line); } .shell-main { padding: 18px; } } @media (max-width: 720px) { .auth-hero, .shell-sidebar, .shell-main, .panel, .stat-card, .pulse-card { padding: 18px; } .workbench-header, .library-header, .shell-header { flex-direction: column; } .upload-row { grid-template-columns: 1fr; } .asset-gallery { grid-template-columns: 1fr; } }