Spaces:
Runtime error
Runtime error
| .content-layout { | |
| max-width: 860px; | |
| margin: 0 auto; | |
| padding: 0 var(--spacing-3); | |
| box-sizing: border-box; | |
| } | |
| .model-selector-wrap { | |
| display: flex; | |
| justify-content: flex-end; | |
| margin-top: 14px; | |
| } | |
| .logo { | |
| display: flex; | |
| align-items: center; | |
| gap: 24px; | |
| color: var(--color-fg-default); | |
| cursor: default; | |
| user-select: none; | |
| } | |
| .logo-icon { | |
| width: 96px; | |
| height: 96px; | |
| border-radius: 50%; | |
| background-color: #ffffff; | |
| padding: 12px; | |
| box-sizing: border-box; | |
| animation: logo-spin 10s linear infinite; | |
| display: block; | |
| } | |
| @keyframes logo-spin { | |
| from { transform: rotate(0deg); } | |
| to { transform: rotate(360deg); } | |
| } | |
| .logo-text { | |
| font-size: 96px; | |
| font-weight: 600; | |
| letter-spacing: -0.03em; | |
| color: var(--color-fg-default); | |
| } | |
| /* ─── Model selector ─────────────────────────────────────── */ | |
| .model-select { | |
| appearance: none; | |
| background: var(--color-canvas-subtle); | |
| border: 1px solid var(--color-border-default); | |
| border-radius: 6px; | |
| color: var(--color-fg-default); | |
| font-size: 13px; | |
| font-family: inherit; | |
| padding: 5px 26px 5px 10px; | |
| cursor: pointer; | |
| transition: border-color 0.2s, box-shadow 0.2s; | |
| background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); | |
| background-repeat: no-repeat; | |
| background-position: right 8px center; | |
| } | |
| .model-select:hover { border-color: var(--color-border-default); } | |
| .model-select:focus { | |
| outline: none; | |
| border-color: var(--color-accent-emphasis); | |
| box-shadow: 0 0 0 2px rgba(31, 111, 235, 0.2); | |
| } | |
| .model-select:disabled { opacity: 0.4; cursor: not-allowed; } | |
| .model-select--ready { | |
| border-color: rgba(46, 160, 67, 0.6) ; | |
| box-shadow: 0 0 0 2px rgba(46, 160, 67, 0.1); | |
| } | |
| .model-select--warming { | |
| border-color: rgba(210, 153, 34, 0.6) ; | |
| box-shadow: 0 0 0 2px rgba(210, 153, 34, 0.08); | |
| } | |
| /* Hero */ | |
| .main { | |
| flex: 1; | |
| padding: var(--spacing-6) 0 var(--spacing-5); | |
| } | |
| /* Hero */ | |
| .hero { | |
| margin-bottom: var(--spacing-4); | |
| text-align: left; | |
| } | |
| .hero-logo { | |
| justify-content: flex-start; | |
| } | |
| /* ─── Card ───────────────────────────────────────────────── */ | |
| .card-wrap { | |
| background-color: var(--color-canvas-subtle); | |
| border: 1px solid var(--color-border-default); | |
| border-radius: 14px; | |
| overflow: hidden; | |
| box-shadow: 0 4px 24px rgba(0, 0, 0, 0.3); | |
| } | |
| /* ─── Segmented control ──────────────────────────────────── */ | |
| .seg-control { | |
| display: flex; | |
| gap: 6px; | |
| padding: 18px 32px 0; | |
| border-bottom: 1px solid var(--color-border-muted); | |
| } | |
| .seg-btn { | |
| position: relative; | |
| padding: 8px 24px; | |
| font-size: 14px; | |
| font-weight: 500; | |
| color: var(--color-fg-muted); | |
| background: transparent; | |
| border: none; | |
| border-radius: 6px 6px 0 0; | |
| cursor: pointer; | |
| transition: color 0.15s; | |
| margin-bottom: -1px; | |
| border-bottom: 2px solid transparent; | |
| } | |
| .seg-btn:hover { | |
| color: var(--color-fg-default); | |
| } | |
| .seg-btn--active { | |
| color: var(--color-fg-default); | |
| border-bottom-color: var(--color-accent-fg); | |
| } | |
| /* ─── Dropzone ───────────────────────────────────────────── */ | |
| /* (styles in index.css for .dropzone base) */ | |
| .dropzone-label { | |
| font-size: 11px; | |
| font-weight: 600; | |
| letter-spacing: 0.08em; | |
| text-transform: uppercase; | |
| color: var(--color-fg-subtle); | |
| background: var(--color-canvas-default); | |
| border: 1px solid var(--color-border-muted); | |
| border-radius: var(--radius-full); | |
| padding: 2px 10px; | |
| pointer-events: none; | |
| user-select: none; | |
| } | |
| .panels { | |
| padding: 32px 32px 0; | |
| } | |
| .panel { | |
| display: none; | |
| } | |
| .panel--active { | |
| display: block; | |
| animation: fadeUp 0.18s ease-out both; | |
| } | |
| @keyframes fadeUp { | |
| from { opacity: 0; transform: translateY(6px); } | |
| to { opacity: 1; transform: translateY(0); } | |
| } | |
| /* ─── Fields ─────────────────────────────────────────────── */ | |
| .field { | |
| margin-bottom: var(--spacing-3); | |
| } | |
| .field-label { | |
| display: block; | |
| font-size: 12px; | |
| font-weight: 600; | |
| letter-spacing: 0.04em; | |
| text-transform: uppercase; | |
| color: var(--color-fg-muted); | |
| margin-bottom: 8px; | |
| } | |
| .field-label-hint { | |
| font-weight: 400; | |
| text-transform: none; | |
| letter-spacing: 0; | |
| color: var(--color-fg-subtle); | |
| } | |
| /* ─── Input overrides ────────────────────────────────────── */ | |
| .input--lg { | |
| padding: 14px 16px; | |
| font-size: 16px; | |
| border-radius: 8px; | |
| } | |
| /* ─── File chip ──────────────────────────────────────────── */ | |
| .file-chip { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 6px; | |
| margin-top: 10px; | |
| padding: 5px 10px 5px 8px; | |
| background: var(--color-canvas-inset); | |
| border: 1px solid var(--color-border-default); | |
| border-radius: var(--radius-full); | |
| font-size: 13px; | |
| color: var(--color-fg-default); | |
| } | |
| .file-chip svg { color: var(--color-fg-muted); flex-shrink: 0; } | |
| .file-chip__name { | |
| max-width: 260px; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .file-chip__size { | |
| color: var(--color-fg-subtle); | |
| font-size: 11px; | |
| flex-shrink: 0; | |
| } | |
| .file-chip__remove { | |
| display: flex; | |
| align-items: center; | |
| padding: 2px; | |
| background: transparent; | |
| border: none; | |
| color: var(--color-fg-subtle); | |
| cursor: pointer; | |
| border-radius: 50%; | |
| transition: color 0.12s, background-color 0.12s; | |
| margin-left: 2px; | |
| } | |
| .file-chip__remove:hover { | |
| color: var(--color-danger-fg); | |
| background-color: rgba(248, 81, 73, 0.12); | |
| } | |
| /* ─── Action row ─────────────────────────────────────────── */ | |
| .action-row { | |
| display: flex; | |
| align-items: center; | |
| justify-content: flex-end; | |
| gap: 12px; | |
| padding: 12px 24px; | |
| border-top: 1px solid var(--color-border-muted); | |
| margin-top: var(--spacing-3); | |
| } | |
| .generate-wrapper { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| gap: 4px; | |
| } | |
| .btn-generate { | |
| padding: 8px 20px; | |
| font-size: 14px; | |
| border-radius: 8px; | |
| gap: 7px; | |
| } | |
| .action-hint { | |
| font-size: 10px; | |
| color: var(--color-fg-subtle); | |
| margin: 0; | |
| } | |
| .action-hint kbd { | |
| font-family: inherit; | |
| font-size: 9px; | |
| background: var(--color-canvas-inset); | |
| border: 1px solid var(--color-border-muted); | |
| border-radius: 4px; | |
| padding: 0 4px; | |
| color: var(--color-fg-muted); | |
| } | |
| /* ─── Cancel button ──────────────────────────────────────── */ | |
| .btn-cancel { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 5px; | |
| padding: 7px 14px; | |
| font-size: 13px; | |
| font-weight: 500; | |
| border-radius: 8px; | |
| border: 1px solid rgba(248, 81, 73, 0.35); | |
| background-color: rgba(248, 81, 73, 0.07); | |
| color: var(--color-danger-fg); | |
| cursor: pointer; | |
| transition: background-color 0.15s, border-color 0.15s; | |
| } | |
| .btn-cancel:hover { | |
| background-color: rgba(248, 81, 73, 0.14); | |
| border-color: rgba(248, 81, 73, 0.55); | |
| } | |
| /* ─── Loading ────────────────────────────────────────────── */ | |
| .loading-spinner { | |
| width: 20px; | |
| height: 20px; | |
| border: 2px solid var(--color-border-default); | |
| border-top-color: var(--color-accent-fg); | |
| border-radius: 50%; | |
| animation: spin 0.7s linear infinite; | |
| flex-shrink: 0; | |
| } | |
| @keyframes spin { to { transform: rotate(360deg); } } | |
| /* ─── Inline result ──────────────────────────────────────── */ | |
| .inline-result { | |
| margin: var(--spacing-2) 0 var(--spacing-3); | |
| border-radius: 8px; | |
| font-size: 13px; | |
| line-height: 1.6; | |
| border: 1px solid transparent; | |
| overflow: hidden; | |
| } | |
| .inline-result--error { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| padding: 10px 14px; | |
| background-color: rgba(248, 81, 73, 0.07); | |
| border-color: rgba(248, 81, 73, 0.25); | |
| color: var(--color-danger-fg); | |
| } | |
| .inline-result--loading, | |
| .inline-result--streaming { | |
| background-color: var(--color-canvas-inset); | |
| border-color: var(--color-border-muted); | |
| } | |
| .inline-result--streaming { | |
| border-color: rgba(31, 111, 235, 0.35); | |
| } | |
| .inline-result--success { | |
| background-color: rgba(22, 27, 34, 0.6); | |
| border-color: var(--color-border-muted); | |
| border-left: 3px solid var(--color-accent-emphasis); | |
| } | |
| .inline-result__label { | |
| display: flex; | |
| align-items: center; | |
| gap: 6px; | |
| padding: 8px 12px; | |
| font-size: 11px; | |
| font-weight: 600; | |
| letter-spacing: 0.04em; | |
| text-transform: uppercase; | |
| border-bottom: 1px solid var(--color-border-muted); | |
| } | |
| .inline-result--success .inline-result__label { | |
| color: var(--color-accent-fg); | |
| } | |
| .inline-result--streaming .inline-result__label { | |
| color: var(--color-fg-muted); | |
| } | |
| .inline-result__text { | |
| padding: 12px 14px; | |
| font-size: 14px; | |
| line-height: 1.75; | |
| color: var(--color-fg-default); | |
| } | |
| /* ── Prose ──────────────────────────────────────────────── */ | |
| .inline-result__text p { margin: 0 0 0.6em; } | |
| .inline-result__text p:last-child { margin-bottom: 0; } | |
| .inline-result__text h1, | |
| .inline-result__text h2, | |
| .inline-result__text h3, | |
| .inline-result__text h4, | |
| .inline-result__text h5, | |
| .inline-result__text h6 { | |
| font-weight: 600; | |
| line-height: 1.3; | |
| margin: 0.9em 0 0.35em; | |
| color: var(--color-fg-default); | |
| } | |
| .inline-result__text h1 { font-size: 1.35em; } | |
| .inline-result__text h2 { font-size: 1.2em; } | |
| .inline-result__text h3 { font-size: 1.08em; } | |
| .inline-result__text h4, | |
| .inline-result__text h5, | |
| .inline-result__text h6 { font-size: 1em; } | |
| .inline-result__text h1:first-child, | |
| .inline-result__text h2:first-child, | |
| .inline-result__text h3:first-child { margin-top: 0; } | |
| .inline-result__text ul, | |
| .inline-result__text ol { margin: 0.4em 0 0.6em; padding-left: 1.5em; } | |
| .inline-result__text ul { list-style-type: disc; } | |
| .inline-result__text ol { list-style-type: decimal; } | |
| .inline-result__text ul ul, .inline-result__text ol ul { list-style-type: circle; } | |
| .inline-result__text ul ol, .inline-result__text ol ol { list-style-type: lower-alpha; } | |
| .inline-result__text ul ul, .inline-result__text ol ul, | |
| .inline-result__text ul ol, .inline-result__text ol ol { margin: 0.15em 0; padding-left: 1.4em; } | |
| .inline-result__text ul ul ul, .inline-result__text ol ul ul { list-style-type: square; } | |
| .inline-result__text li { margin: 0.2em 0; } | |
| .inline-result__text li > p { margin: 0; } | |
| .inline-result__text strong { font-weight: 600; } | |
| .inline-result__text em { font-style: italic; } | |
| .inline-result__text blockquote { | |
| margin: 0.6em 0; | |
| padding: 0.3em 0 0.3em 0.9em; | |
| border-left: 3px solid var(--color-border-default); | |
| color: var(--color-fg-muted); | |
| font-style: italic; | |
| } | |
| .inline-result__text code { | |
| font-family: var(--font-mono); | |
| font-size: 12px; | |
| background-color: var(--color-canvas-inset); | |
| border: 1px solid var(--color-border-muted); | |
| border-radius: 3px; | |
| padding: 0.1em 0.35em; | |
| } | |
| .inline-result__text pre { | |
| background-color: var(--color-canvas-inset); | |
| border: 1px solid var(--color-border-muted); | |
| border-radius: 6px; | |
| padding: 0.75em 1em; | |
| margin: 0.6em 0; | |
| overflow-x: auto; | |
| font-size: 12px; | |
| line-height: 1.6; | |
| } | |
| .inline-result__text pre code { background: none; border: none; padding: 0; font-size: inherit; } | |
| .inline-result__text hr { border: none; border-top: 1px solid var(--color-border-muted); margin: 0.8em 0; } | |
| /* ─── Response badge ─────────────────────────────────────── */ | |
| .response-badge { | |
| font-size: 10px; | |
| font-weight: 500; | |
| padding: 1px 7px; | |
| border-radius: var(--radius-full); | |
| background-color: var(--color-canvas-default); | |
| border: 1px solid var(--color-border-muted); | |
| color: var(--color-fg-subtle); | |
| letter-spacing: 0; | |
| text-transform: none; | |
| } | |
| /* ─── Streaming cursor ───────────────────────────────────── */ | |
| .streaming-cursor { | |
| display: inline-block; | |
| animation: blink 0.75s step-end infinite; | |
| color: var(--color-accent-fg); | |
| margin-left: 1px; | |
| } | |
| @keyframes blink { 50% { opacity: 0; } } | |
| .streaming-placeholder { | |
| color: var(--color-fg-subtle); | |
| font-style: italic; | |
| font-size: 13px; | |
| } | |
| /* ─── Footer ─────────────────────────────────────────────── */ | |
| .footer { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 10px; | |
| padding: var(--spacing-3); | |
| font-size: 12px; | |
| color: var(--color-fg-subtle); | |
| border-top: 1px solid var(--color-border-muted); | |
| } | |
| .footer-sep { opacity: 0.4; } | |
| .footer a { | |
| color: var(--color-fg-subtle); | |
| text-decoration: none; | |
| transition: color 0.12s; | |
| } | |
| .footer a:hover { color: var(--color-fg-muted); } | |
| /* Fade-in */ | |
| .fade-in { animation: fadeUp 0.25s ease-out both; } | |
| /* Tooltips (Desktop Only) */ | |
| @media (hover: hover) and (min-width: 769px) { | |
| [data-tooltip] { | |
| position: relative; | |
| } | |
| [data-tooltip]::after { | |
| content: attr(data-tooltip); | |
| position: absolute; | |
| bottom: 125%; | |
| left: 50%; | |
| transform: translateX(-50%) translateY(4px); | |
| background-color: #24292f; | |
| color: #ffffff; | |
| font-size: 11px; | |
| font-family: var(--font-family-sans); | |
| font-weight: 500; | |
| padding: 5px 8px; | |
| border-radius: 6px; | |
| border: 1px solid #30363d; | |
| box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); | |
| white-space: nowrap; | |
| opacity: 0; | |
| pointer-events: none; | |
| transition: opacity 0.12s ease, transform 0.12s ease; | |
| z-index: 100; | |
| } | |
| [data-tooltip]::before { | |
| content: ""; | |
| position: absolute; | |
| bottom: 115%; | |
| left: 50%; | |
| transform: translateX(-50%) translateY(4px); | |
| border-width: 5px; | |
| border-style: solid; | |
| border-color: #24292f transparent transparent transparent; | |
| opacity: 0; | |
| pointer-events: none; | |
| transition: opacity 0.12s ease, transform 0.12s ease; | |
| z-index: 100; | |
| } | |
| [data-tooltip]:hover::after, | |
| [data-tooltip]:hover::before { | |
| opacity: 1; | |
| transform: translateX(-50%) translateY(0); | |
| } | |
| /* Align Generate tooltip to the right edge to prevent card overflow clipping */ | |
| .btn-generate[data-tooltip]::after { | |
| left: auto; | |
| right: 0; | |
| transform: translateY(4px); | |
| } | |
| .btn-generate[data-tooltip]::before { | |
| left: auto; | |
| right: 20px; | |
| transform: translateY(4px); | |
| } | |
| .btn-generate[data-tooltip]:hover::after, | |
| .btn-generate[data-tooltip]:hover::before { | |
| transform: translateY(0); | |
| } | |
| } | |
| /* Media Queries (Mobile Friendly) */ | |
| @media (max-width: 768px) { | |
| .logo { | |
| gap: 16px; | |
| } | |
| .logo-icon { | |
| width: 64px; | |
| height: 64px; | |
| padding: 8px; | |
| } | |
| .logo-text { | |
| font-size: 56px; | |
| } | |
| .seg-control { | |
| padding: 14px 20px 0; | |
| } | |
| .seg-btn { | |
| padding: 8px 16px; | |
| font-size: 13px; | |
| } | |
| .panels { | |
| padding: 24px 20px 0; | |
| } | |
| .action-row { | |
| padding: 16px 20px; | |
| } | |
| .action-hint { | |
| display: none; | |
| } | |
| } | |
| @media (max-width: 480px) { | |
| .logo { | |
| gap: 12px; | |
| } | |
| .logo-icon { | |
| width: 48px; | |
| height: 48px; | |
| padding: 6px; | |
| } | |
| .logo-text { | |
| font-size: 36px; | |
| } | |
| .seg-control { | |
| padding: 12px 12px 0; | |
| justify-content: space-between; | |
| } | |
| .seg-btn { | |
| flex: 1; | |
| text-align: center; | |
| padding: 8px 8px; | |
| } | |
| .panels { | |
| padding: 20px 12px 0; | |
| } | |
| .action-row { | |
| flex-direction: column; | |
| gap: 10px; | |
| padding: 16px 12px; | |
| } | |
| .action-row .btn { | |
| width: 100%; | |
| justify-content: center; | |
| } | |
| .model-selector-wrap { | |
| justify-content: center; | |
| margin-top: 16px; | |
| } | |
| .model-select { | |
| width: 100%; | |
| } | |
| } |