在桌面登录门户品牌空白带加入红绿小K线角色,支持焦点、密码遮挡、登录反馈和减少动态效果,且不移动原有文案与行情图。 Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: multica-agent <github@multica.ai>
163 lines
10 KiB
HTML
163 lines
10 KiB
HTML
<!doctype html>
|
|
<html lang="zh-CN">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<meta name="color-scheme" content="light dark">
|
|
<title>登录 · 小白复盘</title>
|
|
<script>
|
|
(() => {
|
|
let theme = "light";
|
|
try {
|
|
const stored = localStorage.getItem("xiaobaiTheme");
|
|
if (stored === "dark" || stored === "light") theme = stored;
|
|
else if (window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches) theme = "dark";
|
|
} catch (_error) {
|
|
theme = "light";
|
|
}
|
|
document.documentElement.dataset.theme = theme;
|
|
document.documentElement.style.colorScheme = theme;
|
|
})();
|
|
</script>
|
|
<link rel="stylesheet" href="/shared/tokens.css?v=20260829-hel251">
|
|
<link rel="stylesheet" href="/shared/base.css?v=20260806-1">
|
|
<link rel="stylesheet" href="/shared/auth.css?v=20260829-hel251">
|
|
<link rel="stylesheet" href="/shared/components/controls.css?v=20260820-2">
|
|
</head>
|
|
<body class="login-portal">
|
|
<aside class="login-brand" aria-hidden="true">
|
|
<div class="login-brand-header">
|
|
<div class="login-brand-mark"><span class="login-brand-glyph">复</span></div>
|
|
<div class="login-brand-identity">
|
|
<p class="login-brand-name">小白复盘</p>
|
|
<p class="login-brand-subtitle">A股个人复盘工作台</p>
|
|
</div>
|
|
</div>
|
|
<div class="login-mascots" id="loginMascots" aria-hidden="true" data-mood="idle">
|
|
<div class="login-mascots-stage">
|
|
<div class="login-mascot is-red">
|
|
<div class="login-mascot-breathe">
|
|
<div class="login-mascot-lean">
|
|
<svg class="login-mascot-figure" viewBox="0 0 96 210" focusable="false">
|
|
<ellipse class="login-mascot-shadow" cx="48" cy="200" rx="26" ry="5.5"></ellipse>
|
|
<line class="login-mascot-wick" x1="48" y1="10" x2="48" y2="50"></line>
|
|
<rect class="login-mascot-body" x="16" y="50" width="64" height="126" rx="14"></rect>
|
|
<line class="login-mascot-wick" x1="48" y1="176" x2="48" y2="190"></line>
|
|
<g class="login-mascot-face">
|
|
<circle class="login-mascot-eye" cx="36" cy="94" r="10"></circle>
|
|
<circle class="login-mascot-eye" cx="60" cy="94" r="10"></circle>
|
|
<circle class="login-mascot-pupil" cx="36" cy="94" r="4.2"></circle>
|
|
<circle class="login-mascot-pupil" cx="60" cy="94" r="4.2"></circle>
|
|
<rect class="login-mascot-lid" x="24" y="82" width="48" height="24" rx="10"></rect>
|
|
<path class="login-mascot-happy" d="M28 96 Q36 88 44 96"></path>
|
|
<path class="login-mascot-happy" d="M52 96 Q60 88 68 96"></path>
|
|
<circle class="login-mascot-sad" cx="36" cy="96" r="2.2"></circle>
|
|
<circle class="login-mascot-sad" cx="60" cy="96" r="2.2"></circle>
|
|
</g>
|
|
<ellipse class="login-mascot-arm is-left" cx="16" cy="128" rx="8" ry="5.5"></ellipse>
|
|
<ellipse class="login-mascot-arm is-right" cx="80" cy="128" rx="8" ry="5.5"></ellipse>
|
|
<ellipse class="login-mascot-hand is-left" cx="16" cy="128" rx="9" ry="7"></ellipse>
|
|
<ellipse class="login-mascot-hand is-right" cx="80" cy="128" rx="9" ry="7"></ellipse>
|
|
</svg>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="login-mascot is-green">
|
|
<div class="login-mascot-breathe">
|
|
<div class="login-mascot-lean">
|
|
<div class="login-mascot-figure">
|
|
<svg class="login-mascot-front" viewBox="0 0 84 175" focusable="false">
|
|
<ellipse class="login-mascot-shadow" cx="42" cy="166" rx="22" ry="4.5"></ellipse>
|
|
<line class="login-mascot-wick" x1="42" y1="8" x2="42" y2="42"></line>
|
|
<rect class="login-mascot-body" x="15" y="42" width="54" height="104" rx="12"></rect>
|
|
<line class="login-mascot-wick" x1="42" y1="146" x2="42" y2="158"></line>
|
|
<g class="login-mascot-face">
|
|
<circle class="login-mascot-eye" cx="32" cy="76" r="8.5"></circle>
|
|
<circle class="login-mascot-eye" cx="52" cy="76" r="8.5"></circle>
|
|
<circle class="login-mascot-pupil" cx="32" cy="76" r="3.6"></circle>
|
|
<circle class="login-mascot-pupil" cx="52" cy="76" r="3.6"></circle>
|
|
<rect class="login-mascot-lid" x="22" y="66" width="40" height="20" rx="8"></rect>
|
|
<path class="login-mascot-happy" d="M25 78 Q32 71 39 78"></path>
|
|
<path class="login-mascot-happy" d="M45 78 Q52 71 59 78"></path>
|
|
<circle class="login-mascot-sad" cx="32" cy="78" r="1.9"></circle>
|
|
<circle class="login-mascot-sad" cx="52" cy="78" r="1.9"></circle>
|
|
</g>
|
|
<ellipse class="login-mascot-arm is-left" cx="15" cy="108" rx="7" ry="4.5"></ellipse>
|
|
<ellipse class="login-mascot-arm is-right" cx="69" cy="108" rx="7" ry="4.5"></ellipse>
|
|
</svg>
|
|
<svg class="login-mascot-back" viewBox="0 0 84 175" focusable="false">
|
|
<ellipse class="login-mascot-shadow" cx="42" cy="166" rx="22" ry="4.5"></ellipse>
|
|
<line class="login-mascot-wick" x1="42" y1="8" x2="42" y2="42"></line>
|
|
<rect class="login-mascot-body" x="15" y="42" width="54" height="104" rx="12"></rect>
|
|
<line class="login-mascot-wick" x1="42" y1="146" x2="42" y2="158"></line>
|
|
<rect class="login-mascot-slit" x="40.5" y="58" width="3" height="72" rx="1.5"></rect>
|
|
<ellipse class="login-mascot-arm is-left" cx="15" cy="108" rx="7" ry="4.5"></ellipse>
|
|
<ellipse class="login-mascot-arm is-right" cx="69" cy="108" rx="7" ry="4.5"></ellipse>
|
|
</svg>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="login-brand-copy">
|
|
<p class="login-brand-kicker">收盘之后 · 复盘开始</p>
|
|
<h1 class="login-brand-title">看懂情绪周期,把复盘变成下一次的先手。</h1>
|
|
<p class="login-brand-lead">情绪周期、涨停梯队、主题轮动、竞价、龙虎榜、人气榜、交易复盘,集中在一个安静的复盘空间。</p>
|
|
</div>
|
|
<div class="login-brand-market">
|
|
<svg class="login-brand-chart" viewBox="0 0 480 168" focusable="false">
|
|
<defs>
|
|
<linearGradient id="loginChartFade" x1="0" x2="0" y1="0" y2="1">
|
|
<stop offset="0%" stop-color="#d7e4ff" stop-opacity="0.18"></stop>
|
|
<stop offset="100%" stop-color="#d7e4ff" stop-opacity="0"></stop>
|
|
</linearGradient>
|
|
</defs>
|
|
<path class="login-chart-area" d="M8 118 C 52 108, 78 96, 112 102 S 168 128, 204 112 S 268 78, 312 86 S 372 118, 428 92 L 472 84 L 472 168 L 8 168 Z"></path>
|
|
<g class="login-candles">
|
|
<g class="is-up" transform="translate(36 0)"><line x1="8" y1="58" x2="8" y2="128"></line><rect x="2" y="72" width="12" height="40"></rect></g>
|
|
<g class="is-down" transform="translate(68 0)"><line x1="8" y1="64" x2="8" y2="132"></line><rect x="2" y="86" width="12" height="28"></rect></g>
|
|
<g class="is-up" transform="translate(100 0)"><line x1="8" y1="48" x2="8" y2="118"></line><rect x="2" y="60" width="12" height="44"></rect></g>
|
|
<g class="is-down" transform="translate(132 0)"><line x1="8" y1="70" x2="8" y2="136"></line><rect x="2" y="92" width="12" height="26"></rect></g>
|
|
<g class="is-up" transform="translate(164 0)"><line x1="8" y1="42" x2="8" y2="110"></line><rect x="2" y="54" width="12" height="38"></rect></g>
|
|
<g class="is-up" transform="translate(196 0)"><line x1="8" y1="36" x2="8" y2="98"></line><rect x="2" y="48" width="12" height="32"></rect></g>
|
|
<g class="is-down" transform="translate(228 0)"><line x1="8" y1="58" x2="8" y2="128"></line><rect x="2" y="78" width="12" height="36"></rect></g>
|
|
<g class="is-up" transform="translate(260 0)"><line x1="8" y1="40" x2="8" y2="104"></line><rect x="2" y="52" width="12" height="36"></rect></g>
|
|
<g class="is-down" transform="translate(292 0)"><line x1="8" y1="66" x2="8" y2="134"></line><rect x="2" y="88" width="12" height="30"></rect></g>
|
|
<g class="is-up" transform="translate(324 0)"><line x1="8" y1="44" x2="8" y2="112"></line><rect x="2" y="58" width="12" height="40"></rect></g>
|
|
<g class="is-down" transform="translate(356 0)"><line x1="8" y1="72" x2="8" y2="138"></line><rect x="2" y="96" width="12" height="24"></rect></g>
|
|
<g class="is-up" transform="translate(388 0)"><line x1="8" y1="38" x2="8" y2="108"></line><rect x="2" y="50" width="12" height="42"></rect></g>
|
|
<g class="is-up" transform="translate(420 0)"><line x1="8" y1="32" x2="8" y2="96"></line><rect x="2" y="44" width="12" height="34"></rect></g>
|
|
</g>
|
|
<path class="login-chart-line" d="M8 118 C 52 108, 78 96, 112 102 S 168 128, 204 112 S 268 78, 312 86 S 372 118, 428 92 L 472 84"></path>
|
|
</svg>
|
|
<dl class="login-brand-stats">
|
|
<div class="login-stat">
|
|
<dt>市场情绪</dt>
|
|
<dd>72 <span class="login-stat-tag">高热</span></dd>
|
|
</div>
|
|
<div class="login-stat">
|
|
<dt>涨停</dt>
|
|
<dd>63</dd>
|
|
</div>
|
|
<div class="login-stat">
|
|
<dt>跌停</dt>
|
|
<dd>4</dd>
|
|
</div>
|
|
<div class="login-stat login-stat-wide">
|
|
<dt>两市成交</dt>
|
|
<dd>1.02万亿</dd>
|
|
</div>
|
|
</dl>
|
|
</div>
|
|
<p class="login-brand-disclaimer">股市有风险,投资需谨慎 · 本工具仅供个人复盘学习使用</p>
|
|
</aside>
|
|
<main class="login-stage">
|
|
<button id="loginThemeToggle" class="login-theme-toggle" type="button">🌙 夜间</button>
|
|
<section class="login-card" id="loginCard" aria-live="polite"></section>
|
|
</main>
|
|
<script src="/shared/api.js?v=20260803-2"></script>
|
|
<script src="/login/page.js?v=20260829-hel251"></script>
|
|
</body>
|
|
</html>
|