Spaces:
Running
Running
| <html lang="en"> | |
| <head> | |
| <meta charset="utf-8" /> | |
| <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" /> | |
| <title>MiniCPM-V 4.6 · Demo</title> | |
| <meta name="color-scheme" content="dark light" /> | |
| <meta name="description" content="A Pocket-Sized MLLM for Ultra-Efficient Image and Video Understanding on Your Phone." /> | |
| <link rel="preconnect" href="https://fonts.googleapis.com" /> | |
| <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> | |
| <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@500&display=swap" rel="stylesheet" /> | |
| <style> | |
| :root { | |
| --bg-0: #07080d; | |
| --fg: #e7e9f0; | |
| --fg-dim: #9ba2b6; | |
| --fg-faint: #6b7180; | |
| --accent: #7c8cff; | |
| --accent-soft: rgba(124, 140, 255, 0.18); | |
| --card-bg: rgba(255, 255, 255, 0.03); | |
| --card-bd: rgba(255, 255, 255, 0.08); | |
| --card-bd-hover: rgba(255, 255, 255, 0.2); | |
| --shadow: 0 20px 60px rgba(0, 0, 0, 0.45); | |
| } | |
| * { box-sizing: border-box; } | |
| html, body { margin: 0; padding: 0; min-height: 100%; } | |
| body { | |
| font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; | |
| color: var(--fg); | |
| background: radial-gradient(1200px 800px at 15% 0%, #1a1f37 0%, transparent 60%), | |
| radial-gradient(900px 700px at 85% 100%, #251735 0%, transparent 60%), | |
| var(--bg-0); | |
| min-height: 100vh; | |
| display: flex; | |
| flex-direction: column; | |
| overflow-x: hidden; | |
| -webkit-font-smoothing: antialiased; | |
| -moz-osx-font-smoothing: grayscale; | |
| } | |
| body::before { | |
| content: ""; | |
| position: fixed; | |
| inset: 0; | |
| background: | |
| linear-gradient(transparent 95%, rgba(255, 255, 255, 0.04) 95%) 0 0 / 100% 32px, | |
| linear-gradient(90deg, transparent 95%, rgba(255, 255, 255, 0.04) 95%) 0 0 / 32px 100%; | |
| mask-image: radial-gradient(ellipse at center, black 30%, transparent 75%); | |
| -webkit-mask-image: radial-gradient(ellipse at center, black 30%, transparent 75%); | |
| pointer-events: none; | |
| z-index: 0; | |
| } | |
| main { | |
| position: relative; | |
| z-index: 1; | |
| flex: 1; | |
| width: 100%; | |
| max-width: 920px; | |
| margin: 0 auto; | |
| padding: clamp(52px, 9vw, 108px) clamp(20px, 5vw, 48px); | |
| display: flex; | |
| flex-direction: column; | |
| justify-content: center; | |
| gap: clamp(36px, 5vw, 56px); | |
| } | |
| header.brand { display: flex; flex-direction: column; gap: 18px; } | |
| .badge { | |
| align-self: flex-start; | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 8px; | |
| padding: 6px 14px; | |
| border: 1px solid var(--card-bd); | |
| border-radius: 999px; | |
| background: var(--card-bg); | |
| font-size: 12px; | |
| color: var(--fg-dim); | |
| letter-spacing: 0.08em; | |
| text-transform: uppercase; | |
| backdrop-filter: blur(12px); | |
| -webkit-backdrop-filter: blur(12px); | |
| } | |
| .badge .dot { | |
| width: 6px; | |
| height: 6px; | |
| border-radius: 50%; | |
| background: #4ade80; | |
| box-shadow: 0 0 10px #4ade80; | |
| } | |
| h1 { | |
| margin: 0; | |
| font-size: clamp(44px, 7vw, 72px); | |
| font-weight: 700; | |
| letter-spacing: -0.02em; | |
| line-height: 1.05; | |
| background: linear-gradient(135deg, #ffffff 0%, #aab2c8 100%); | |
| -webkit-background-clip: text; | |
| background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| } | |
| h1 .v { | |
| font-family: "JetBrains Mono", ui-monospace, monospace; | |
| font-size: 0.55em; | |
| font-weight: 500; | |
| color: var(--fg-faint); | |
| -webkit-text-fill-color: var(--fg-faint); | |
| margin-left: 0.4em; | |
| letter-spacing: 0; | |
| } | |
| .lead { | |
| margin: 0; | |
| font-size: clamp(15px, 1.6vw, 18px); | |
| font-weight: 700; | |
| color: var(--fg-dim); | |
| max-width: 62ch; | |
| line-height: 1.65; | |
| } | |
| .card { | |
| position: relative; | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| gap: 28px; | |
| padding: clamp(24px, 3.2vw, 34px); | |
| border: 1px solid var(--card-bd); | |
| border-radius: 22px; | |
| background: var(--card-bg); | |
| backdrop-filter: blur(14px); | |
| -webkit-backdrop-filter: blur(14px); | |
| color: inherit; | |
| text-decoration: none; | |
| overflow: hidden; | |
| box-shadow: var(--shadow); | |
| transition: transform 0.25s ease, border-color 0.25s ease, background 0.25s ease; | |
| } | |
| .card::before { | |
| content: ""; | |
| position: absolute; | |
| inset: -2px; | |
| border-radius: inherit; | |
| background: var(--accent-soft); | |
| filter: blur(40px); | |
| opacity: 0.65; | |
| z-index: -1; | |
| transition: opacity 0.25s ease; | |
| } | |
| .card:hover { | |
| transform: translateY(-4px); | |
| border-color: var(--card-bd-hover); | |
| background: rgba(255, 255, 255, 0.045); | |
| } | |
| .card:hover::before { opacity: 0.9; } | |
| .card:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; } | |
| .card-copy { display: flex; flex-direction: column; gap: 9px; } | |
| .card-title { | |
| font-size: clamp(24px, 3vw, 32px); | |
| font-weight: 650; | |
| letter-spacing: -0.015em; | |
| line-height: 1.2; | |
| } | |
| .card-sub { font-size: 15px; color: var(--fg-dim); line-height: 1.6; } | |
| .arrow { | |
| flex: 0 0 auto; | |
| width: 46px; | |
| height: 46px; | |
| border-radius: 50%; | |
| background: rgba(255, 255, 255, 0.07); | |
| border: 1px solid var(--card-bd); | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| transition: transform 0.25s ease, background 0.25s ease, border-color 0.25s ease; | |
| } | |
| .card:hover .arrow { | |
| transform: translate(4px, -4px); | |
| background: var(--accent); | |
| border-color: var(--accent); | |
| } | |
| .arrow svg { stroke: var(--fg); transition: stroke 0.25s ease; } | |
| .card:hover .arrow svg { stroke: #080a12; } | |
| footer { | |
| position: relative; | |
| z-index: 1; | |
| padding: 24px clamp(20px, 5vw, 48px) 28px; | |
| text-align: center; | |
| color: var(--fg-faint); | |
| font-size: 12px; | |
| letter-spacing: 0.04em; | |
| } | |
| @media (max-width: 640px) { | |
| .card { align-items: flex-start; flex-direction: column; } | |
| } | |
| @media (prefers-reduced-motion: reduce) { | |
| .card, .card .arrow, .card::before { transition: none; } | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <main> | |
| <header class="brand"> | |
| <span class="badge"><span class="dot"></span>Live Demo</span> | |
| <h1>MiniCPM-V<span class="v">4.6</span></h1> | |
| <p class="lead">A Pocket-Sized MLLM for Ultra-Efficient Image and Video Understanding on Your Phone.</p> | |
| </header> | |
| <a class="card" href="http://82.157.64.212:9443/" target="_blank" rel="noopener noreferrer" aria-label="Launch MiniCPM-V 4.6 demo"> | |
| <div class="card-copy"> | |
| <div class="card-title">Launch MiniCPM-V 4.6 Demo</div> | |
| <div class="card-sub">Try MiniCPM-V 4.6 in an interactive environment.</div> | |
| </div> | |
| <span class="arrow" aria-hidden="true"> | |
| <svg width="16" height="16" viewBox="0 0 14 14" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 11L11 3"/><path d="M5 3h6v6"/></svg> | |
| </span> | |
| </a> | |
| </main> | |
| <footer>MiniCPM-V 4.6</footer> | |
| </body> | |
| </html> | |