| :root { |
| color-scheme: light; |
| font-family: |
| "Space Grotesk", |
| "Avenir Next", |
| "Segoe UI", |
| sans-serif; |
| line-height: 1.5; |
| font-weight: 400; |
| --paper: #f4f4f2; |
| --ink: #171717; |
| --muted: #666666; |
| --panel: rgba(250, 250, 248, 0.96); |
| --panel-strong: #ffffff; |
| --border: rgba(23, 23, 23, 0.14); |
| --accent: #2a2a2a; |
| --accent-strong: #111111; |
| --error: #8a1f1f; |
| background: |
| radial-gradient(circle at top, rgba(0, 0, 0, 0.04), transparent 42%), |
| linear-gradient(180deg, #fbfbfa 0%, #f0f0ed 100%); |
| color: var(--ink); |
| } |
|
|
| * { |
| box-sizing: border-box; |
| } |
|
|
| html, |
| body, |
| #app { |
| min-height: 100%; |
| } |
|
|
| body { |
| margin: 0; |
| } |
|
|
| button, |
| input { |
| font: inherit; |
| } |
|
|
| img { |
| display: block; |
| max-width: 100%; |
| } |
|
|
| .sr-only { |
| position: absolute; |
| width: 1px; |
| height: 1px; |
| padding: 0; |
| margin: -1px; |
| overflow: hidden; |
| clip: rect(0, 0, 0, 0); |
| white-space: nowrap; |
| border: 0; |
| } |
|
|
| .shell { |
| display: grid; |
| min-height: 100vh; |
| grid-template-columns: minmax(320px, 420px) minmax(0, 1fr); |
| gap: 18px; |
| padding: 18px; |
| align-items: start; |
| } |
|
|
| .compare-panel { |
| background: var(--panel); |
| border: 1px solid var(--border); |
| border-radius: 28px; |
| box-shadow: 0 18px 48px rgba(0, 0, 0, 0.06); |
| } |
|
|
| .hero { |
| display: flex; |
| flex-direction: column; |
| gap: 14px; |
| padding: 10px 8px; |
| } |
|
|
| .hero h1 { |
| margin: 0; |
| font-size: clamp(2.05rem, 2.8vw, 3.2rem); |
| line-height: 0.96; |
| letter-spacing: -0.06em; |
| } |
|
|
| .lede { |
| margin: 0; |
| max-width: 30rem; |
| color: var(--muted); |
| } |
|
|
| .status-card { |
| display: grid; |
| gap: 10px 20px; |
| grid-template-columns: repeat(2, minmax(0, 1fr)); |
| padding-block: 10px 12px; |
| border-block: 1px solid var(--border); |
| } |
|
|
| .status-card > div:last-child { |
| grid-column: 1 / -1; |
| } |
|
|
| .label { |
| margin: 0 0 4px; |
| font-size: 0.8rem; |
| font-weight: 700; |
| letter-spacing: 0.1em; |
| text-transform: uppercase; |
| color: var(--muted); |
| } |
|
|
| .value, |
| .status-text { |
| margin: 0; |
| } |
|
|
| .model-picker { |
| display: grid; |
| gap: 8px; |
| padding-block: 4px 10px; |
| } |
|
|
| .model-title { |
| margin: 0; |
| font-size: 1.05rem; |
| font-weight: 700; |
| color: var(--ink); |
| } |
|
|
| .model-meta { |
| color: var(--muted); |
| font-size: 0.9rem; |
| } |
|
|
| .dropzone { |
| display: grid; |
| place-items: center; |
| gap: 8px; |
| min-height: 180px; |
| padding: 20px; |
| border: 1.5px dashed rgba(23, 23, 23, 0.22); |
| border-radius: 24px; |
| background: linear-gradient(180deg, rgba(255, 255, 255, 0.86), rgba(245, 245, 243, 0.96)); |
| text-align: center; |
| cursor: pointer; |
| transition: |
| transform 180ms ease, |
| border-color 180ms ease, |
| box-shadow 180ms ease; |
| } |
|
|
| .dropzone-active { |
| border-color: rgba(23, 23, 23, 0.38); |
| box-shadow: 0 14px 28px rgba(0, 0, 0, 0.07); |
| } |
|
|
| .dropzone-title { |
| margin: 0; |
| font-size: 1.15rem; |
| font-weight: 700; |
| } |
|
|
| .dropzone-copy { |
| margin: 0; |
| color: var(--muted); |
| } |
|
|
| .actions { |
| display: grid; |
| gap: 12px; |
| } |
|
|
| .button { |
| border: 1px solid transparent; |
| border-radius: 999px; |
| padding: 14px 20px; |
| font-weight: 700; |
| cursor: pointer; |
| transition: |
| transform 180ms ease, |
| opacity 180ms ease, |
| background 180ms ease; |
| } |
|
|
| .button:disabled { |
| cursor: not-allowed; |
| opacity: 0.5; |
| } |
|
|
| .button:not(:disabled):hover { |
| transform: translateY(-1px); |
| } |
|
|
| .button-primary { |
| background: linear-gradient(180deg, #2a2a2a, #111111); |
| color: white; |
| border-color: rgba(0, 0, 0, 0.4); |
| } |
|
|
| .button-secondary { |
| background: rgba(255, 255, 255, 0.92); |
| border: 1px solid rgba(23, 23, 23, 0.18); |
| color: var(--ink); |
| } |
|
|
| .error-text { |
| margin: 0; |
| color: var(--error); |
| } |
|
|
| .workspace { |
| display: grid; |
| grid-template-columns: minmax(0, 1fr); |
| gap: 18px; |
| align-self: start; |
| position: sticky; |
| top: 18px; |
| } |
|
|
| .stage { |
| display: grid; |
| flex: 1; |
| place-items: center; |
| position: relative; |
| overflow: hidden; |
| min-height: 360px; |
| border-radius: 20px; |
| background: |
| radial-gradient(circle at center, rgba(0, 0, 0, 0.035), transparent 56%), |
| rgba(255, 255, 255, 0.82); |
| } |
|
|
| .checkerboard { |
| background-color: #f7f7f7; |
| background-image: |
| linear-gradient(45deg, #e6e6e6 25%, transparent 25%), |
| linear-gradient(-45deg, #e6e6e6 25%, transparent 25%), |
| linear-gradient(45deg, transparent 75%, #e6e6e6 75%), |
| linear-gradient(-45deg, transparent 75%, #e6e6e6 75%); |
| background-position: |
| 0 0, |
| 0 10px, |
| 10px -10px, |
| -10px 0; |
| background-size: 20px 20px; |
| } |
|
|
| .stage img { |
| width: 100%; |
| height: 100%; |
| object-fit: contain; |
| } |
|
|
| .compare-panel { |
| display: flex; |
| flex-direction: column; |
| height: calc(100vh - 36px); |
| gap: 12px; |
| padding: 12px; |
| } |
|
|
| .compare-stage { |
| cursor: col-resize; |
| flex: 1; |
| min-height: 0; |
| user-select: none; |
| } |
|
|
| .compare-image { |
| position: absolute; |
| inset: 0; |
| width: 100%; |
| height: 100%; |
| } |
|
|
| .compare-divider { |
| position: absolute; |
| inset-block: 0; |
| width: 2px; |
| background: linear-gradient(180deg, transparent, rgba(24, 34, 37, 0.8), transparent); |
| box-shadow: |
| 0 0 0 1px rgba(255, 255, 255, 0.55), |
| 0 0 18px rgba(24, 34, 37, 0.24); |
| } |
|
|
| .compare-handle { |
| position: absolute; |
| top: 50%; |
| left: 50%; |
| display: flex; |
| gap: 4px; |
| align-items: center; |
| justify-content: center; |
| width: 42px; |
| height: 42px; |
| border: 1px solid rgba(23, 23, 23, 0.14); |
| border-radius: 999px; |
| background: rgba(255, 255, 255, 0.96); |
| box-shadow: 0 10px 24px rgba(0, 0, 0, 0.12); |
| transform: translate(-50%, -50%); |
| } |
|
|
| .compare-handle span { |
| width: 2px; |
| height: 14px; |
| border-radius: 999px; |
| background: rgba(24, 34, 37, 0.72); |
| } |
|
|
| .stage-badge { |
| position: absolute; |
| top: 16px; |
| display: grid; |
| gap: 2px; |
| padding: 10px 12px; |
| border: 1px solid rgba(23, 23, 23, 0.12); |
| border-radius: 14px; |
| background: rgba(255, 255, 255, 0.9); |
| box-shadow: 0 8px 18px rgba(0, 0, 0, 0.06); |
| color: var(--muted); |
| font-size: 0.88rem; |
| } |
|
|
| .stage-badge-left { |
| left: 16px; |
| } |
|
|
| .stage-badge-right { |
| right: 16px; |
| text-align: right; |
| } |
|
|
| .stage-badge-title { |
| color: var(--ink); |
| font-size: 0.75rem; |
| font-weight: 700; |
| letter-spacing: 0.08em; |
| text-transform: uppercase; |
| } |
|
|
| .empty { |
| margin: 0; |
| max-width: 16rem; |
| text-align: center; |
| color: var(--muted); |
| } |
|
|
| @media (max-width: 1180px) { |
| .shell { |
| grid-template-columns: 1fr; |
| } |
|
|
| .workspace { |
| grid-template-columns: 1fr; |
| position: static; |
| } |
|
|
| .compare-panel { |
| height: auto; |
| } |
|
|
| .stage { |
| min-height: 320px; |
| } |
|
|
| .compare-stage { |
| min-height: 380px; |
| } |
| } |
|
|