feat: 大门v3官方身份重排——删光湖字样与报上编号说辞;舱顶品牌=HoloLake主标+光湖语言系统·通用人工智能操作平台+GH-AIOS角标(软著版权名);湖底五玉改沉湖星子(语言宇宙·星系意象);编号框placeholder改例子编号ICE-GL∞
This commit is contained in:
parent
2d20170ac7
commit
c624a72124
2 changed files with 33 additions and 15 deletions
|
|
@ -946,18 +946,23 @@ function HoloLakeApp() {
|
|||
return <div className="app-shell">
|
||||
<div className={`gate-lake${loginRising ? ' sinking' : ''}`} style={{ '--lake-img': `url(${nightLake})` } as React.CSSProperties}>
|
||||
<i className="lake-mist" aria-hidden="true"/>
|
||||
<div className="lake-jades" aria-hidden="true">{[1, 2, 3, 4, 5].map((n) => <span key={n} className={`jade j${n}${(gateRising || loginRising) && n === 5 ? ' rising' : ''}`}/>)}</div>
|
||||
<div className="lake-lights" aria-hidden="true">{[1, 2, 3, 4, 5].map((n) => <span key={n} className={`lake-light l${n}${(gateRising || loginRising) && n === 5 ? ' rising' : ''}`}/>)}</div>
|
||||
{gateRising ? (
|
||||
<section className="gate-rise" role="status">
|
||||
<span className="gate-rise-jade" aria-hidden="true"><i/></span>
|
||||
<span className="gate-rise-star" aria-hidden="true"><i/></span>
|
||||
<h1>第五域 · 光之湖</h1>
|
||||
<p>欢迎回来 · {gateNumber}</p>
|
||||
</section>
|
||||
) : gateStage === 'number' ? (
|
||||
<section className={`gate-pod${loginRising ? ' fade-out' : ''}`} role="dialog">
|
||||
<span className="gate-pod-mark">光湖</span>
|
||||
<header className="gate-brand">
|
||||
<span className="gate-emblem" aria-hidden="true"><i/></span>
|
||||
<b className="gate-product">HoloLake</b>
|
||||
<small className="gate-techname">光湖语言系统 · 通用人工智能操作平台</small>
|
||||
<small className="gate-abbr">GH-AIOS · GuangHu AI Operating System</small>
|
||||
</header>
|
||||
<div className="gate-pod-row">
|
||||
<input id="gate-number" aria-label="编号" autoFocus maxLength={48} value={gateNumber} placeholder="报上编号" onChange={(event) => onGateInput(event.target.value)} onKeyDown={(event) => { if (event.key === 'Enter' && gateNumber) { event.preventDefault(); void gateVerifyNumber() } }}/>
|
||||
<input id="gate-number" aria-label="编号" autoFocus maxLength={48} value={gateNumber} placeholder="如 ICE-GL∞" onChange={(event) => onGateInput(event.target.value)} onKeyDown={(event) => { if (event.key === 'Enter' && gateNumber) { event.preventDefault(); void gateVerifyNumber() } }}/>
|
||||
<button type="button" className={`gate-inf${gateInf ? ' on' : ''}`} title="编号里带无限符号就点一下点亮" aria-pressed={gateInf} onClick={() => setGateInf((v) => !v)}>∞</button>
|
||||
</div>
|
||||
<button className="gate-submit" disabled={gateBusy || !gateNumber} onClick={() => void gateVerifyNumber()}>{gateBusy ? '查验中…' : '提交'}</button>
|
||||
|
|
@ -965,7 +970,12 @@ function HoloLakeApp() {
|
|||
</section>
|
||||
) : (
|
||||
<section className={`gate-pod gate-pod-key${loginRising ? ' fade-out' : ''}`} role="dialog">
|
||||
<span className="gate-pod-mark">光湖</span>
|
||||
<header className="gate-brand">
|
||||
<span className="gate-emblem" aria-hidden="true"><i/></span>
|
||||
<b className="gate-product">HoloLake</b>
|
||||
<small className="gate-techname">光湖语言系统 · 通用人工智能操作平台</small>
|
||||
<small className="gate-abbr">GH-AIOS · GuangHu AI Operating System</small>
|
||||
</header>
|
||||
<form onSubmit={(event) => void performRepoLogin(event)}>
|
||||
<input id="repo-login-username" aria-label="账号" autoFocus maxLength={40} value={loginUsername} placeholder="账号" onChange={(event) => setLoginUsername(event.target.value)}/>
|
||||
<input id="repo-login-password" aria-label="密码" type="password" maxLength={512} value={loginPassword} placeholder="密码" onChange={(event) => setLoginPassword(event.target.value)}/>
|
||||
|
|
|
|||
|
|
@ -443,19 +443,27 @@ svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-lineca
|
|||
.lake-mist { position: absolute; inset: 0; pointer-events: none; background: radial-gradient(60% 34% at 50% 68%, color-mix(in srgb, var(--primitive-cool-glow) 13%, transparent), transparent 72%); animation: mist-drift 11s ease-in-out infinite; }
|
||||
@keyframes mist-drift { 0%, 100% { opacity: .55; transform: translateX(0); } 50% { opacity: .95; transform: translateX(2.4%); } }
|
||||
|
||||
/* 沉底五玉:只露一点尖,轻微起伏 */
|
||||
.lake-jades { position: absolute; left: 0; right: 0; bottom: 20%; display: flex; align-items: flex-end; justify-content: center; gap: clamp(46px, 9vw, 150px); pointer-events: none; }
|
||||
.jade { position: relative; width: 44px; height: 34px; transform: translateY(64%); clip-path: polygon(50% 0, 90% 72%, 100% 100%, 0 100%, 10% 72%); background: linear-gradient(165deg, color-mix(in srgb, #8fe6c3 62%, transparent), color-mix(in srgb, #3f8f7c 40%, transparent) 58%, color-mix(in srgb, #123c36 30%, transparent)); opacity: .4; filter: blur(.5px); animation: jade-bob 7.5s ease-in-out infinite; transition: transform 1.2s cubic-bezier(.3, .7, .35, 1), opacity 1.2s ease, filter 1.2s ease; }
|
||||
.jade::after { content: ''; position: absolute; left: 12%; right: 12%; top: 8%; height: 34%; background: linear-gradient(180deg, rgba(255, 255, 255, .34), transparent); clip-path: inherit; }
|
||||
.jade.j1 { animation-delay: .2s; } .jade.j2 { animation-delay: 1.6s; } .jade.j3 { animation-delay: 3s; } .jade.j4 { animation-delay: 1s; } .jade.j5 { animation-delay: 2.2s; width: 56px; height: 44px; transform: translateY(58%); background: linear-gradient(165deg, color-mix(in srgb, var(--primitive-warm-glow) 74%, transparent), color-mix(in srgb, var(--primitive-warm-glow) 34%, transparent) 56%, color-mix(in srgb, #4a3210 32%, transparent)); opacity: .62; box-shadow: 0 -8px 46px color-mix(in srgb, var(--primitive-warm-glow) 26%, transparent); }
|
||||
.jade.rising { transform: translateY(-150%) scale(1.5); opacity: 1; filter: blur(0) drop-shadow(0 0 34px color-mix(in srgb, var(--primitive-warm-glow) 58%, transparent)); animation: none; }
|
||||
@keyframes jade-bob { 0%, 100% { translate: 0 0; } 50% { translate: 0 -7px; } }
|
||||
/* 沉湖星子:光湖是语言宇宙·星系——五点微光沉在水下,轻微起伏 */
|
||||
.lake-lights { position: absolute; left: 0; right: 0; bottom: 21%; display: flex; align-items: flex-end; justify-content: center; gap: clamp(46px, 9vw, 150px); pointer-events: none; }
|
||||
.lake-light { position: relative; width: 42px; height: 42px; border-radius: 50%; transform: translateY(52%); background: radial-gradient(circle at 50% 36%, color-mix(in srgb, var(--primitive-cool-glow) 82%, transparent), color-mix(in srgb, var(--primitive-cool-glow) 28%, transparent) 50%, transparent 74%); filter: blur(.8px); opacity: .42; animation: light-bob 7.5s ease-in-out infinite; transition: transform 1.2s cubic-bezier(.3, .7, .35, 1), opacity 1.2s ease, filter 1.2s ease; }
|
||||
.lake-light.l1 { animation-delay: .2s; } .lake-light.l2 { animation-delay: 1.6s; width: 34px; height: 34px; } .lake-light.l3 { animation-delay: 3s; } .lake-light.l4 { animation-delay: 1s; width: 36px; height: 36px; }
|
||||
.lake-light.l5 { animation-delay: 2.2s; width: 58px; height: 58px; transform: translateY(46%); background: radial-gradient(circle at 50% 36%, color-mix(in srgb, var(--primitive-warm-glow) 92%, #fff), color-mix(in srgb, var(--primitive-warm-glow) 36%, transparent) 48%, transparent 74%); opacity: .68; filter: blur(.4px) drop-shadow(0 -6px 34px color-mix(in srgb, var(--primitive-warm-glow) 34%, transparent)); }
|
||||
.lake-light.rising { transform: translateY(-150%) scale(1.5); opacity: 1; filter: blur(0) drop-shadow(0 0 42px color-mix(in srgb, var(--primitive-warm-glow) 62%, transparent)); animation: none; }
|
||||
@keyframes light-bob { 0%, 100% { translate: 0 0; } 50% { translate: 0 -7px; } }
|
||||
|
||||
/* 编号舱:湖面正中一只悬浮玻璃舱,只装编号 */
|
||||
.gate-pod { position: relative; z-index: 3; width: min(400px, 88vw); padding: 38px 32px 32px; text-align: center; border: 1px solid color-mix(in srgb, var(--accent-light) 22%, transparent); border-radius: 24px; background: color-mix(in srgb, var(--panel-bg) 62%, transparent); backdrop-filter: blur(26px) saturate(1.15); box-shadow: 0 34px 90px rgba(0, 0, 0, .5), 0 0 70px color-mix(in srgb, var(--primitive-warm-glow) 9%, transparent), inset 0 1px 0 rgba(255, 255, 255, .07); animation: pod-float 6.5s ease-in-out infinite; transition: opacity .7s ease, transform .7s ease; }
|
||||
.gate-pod.fade-out { opacity: 0; transform: translateY(18px) scale(.985); }
|
||||
@keyframes pod-float { 0%, 100% { translate: 0 0; } 50% { translate: 0 -9px; } }
|
||||
.gate-pod-mark { display: grid; place-items: center; width: 58px; height: 58px; margin: 0 auto 26px; border: 1px solid color-mix(in srgb, var(--primitive-warm-glow) 44%, transparent); border-radius: 18px; color: var(--accent-light); font-family: "Songti SC", serif; font-size: 17px; box-shadow: 0 0 34px color-mix(in srgb, var(--primitive-warm-glow) 24%, transparent), inset 0 0 18px color-mix(in srgb, var(--primitive-warm-glow) 12%, transparent); }
|
||||
.gate-brand { display: grid; justify-items: center; gap: 7px; margin-bottom: 28px; }
|
||||
.gate-emblem { position: relative; width: 46px; height: 46px; margin-bottom: 8px; }
|
||||
.gate-emblem::before { content: ''; position: absolute; inset: 0; border: 1px solid color-mix(in srgb, var(--accent-light) 30%, transparent); border-radius: 50%; box-shadow: 0 0 22px color-mix(in srgb, var(--primitive-warm-glow) 12%, transparent); }
|
||||
.gate-emblem::after { content: ''; position: absolute; left: 50%; top: 50%; width: 9px; height: 9px; transform: translate(-50%, -50%); border-radius: 50%; background: var(--primitive-warm-glow); box-shadow: 0 0 18px color-mix(in srgb, var(--primitive-warm-glow) 82%, transparent); animation: emblem-star 4s ease-in-out infinite; }
|
||||
.gate-emblem i { position: absolute; left: -22%; right: -22%; top: 64%; height: 1px; background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--accent-light) 52%, transparent), transparent); }
|
||||
@keyframes emblem-star { 0%, 100% { opacity: .75; } 50% { opacity: 1; } }
|
||||
.gate-product { color: var(--content-primary); font-size: 27px; font-weight: 620; letter-spacing: .16em; text-indent: .16em; }
|
||||
.gate-techname { color: var(--content-secondary); font-size: 12.5px; letter-spacing: .16em; text-indent: .16em; }
|
||||
.gate-abbr { color: var(--content-faint); font-size: 10.5px; letter-spacing: .2em; text-indent: .2em; text-transform: uppercase; }
|
||||
.gate-pod-row { display: flex; gap: 10px; }
|
||||
.gate-pod input { flex: 1; height: 52px; padding: 0 16px; border: 1px solid color-mix(in srgb, var(--accent-light) 24%, transparent); border-radius: 14px; outline: 0; color: var(--content-primary); background: rgba(0, 0, 0, .22); font-size: 17px; letter-spacing: .08em; text-align: center; transition: border-color .3s ease, box-shadow .3s ease; }
|
||||
.gate-pod input:focus { border-color: color-mix(in srgb, var(--primitive-warm-glow) 58%, transparent); box-shadow: 0 0 22px color-mix(in srgb, var(--primitive-warm-glow) 18%, transparent); }
|
||||
|
|
@ -473,8 +481,8 @@ svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-lineca
|
|||
|
||||
/* 过关:玉自湖面升起 → 欢迎语浮现 */
|
||||
.gate-rise { position: relative; z-index: 3; display: grid; place-items: center; text-align: center; }
|
||||
.gate-rise-jade { display: block; margin-bottom: 26px; animation: gate-jade-rise 2.3s cubic-bezier(.28, .68, .32, 1) both; }
|
||||
.gate-rise-jade i { display: block; width: 84px; height: 66px; clip-path: polygon(50% 0, 90% 72%, 100% 100%, 0 100%, 10% 72%); background: linear-gradient(165deg, color-mix(in srgb, var(--primitive-warm-glow) 88%, #fff), color-mix(in srgb, var(--primitive-warm-glow) 46%, transparent) 56%, color-mix(in srgb, #4a3210 40%, transparent)); filter: drop-shadow(0 0 46px color-mix(in srgb, var(--primitive-warm-glow) 62%, transparent)); }
|
||||
.gate-rise-star { display: block; margin-bottom: 26px; animation: gate-jade-rise 2.3s cubic-bezier(.28, .68, .32, 1) both; }
|
||||
.gate-rise-star i { display: block; width: 88px; height: 88px; border-radius: 50%; background: radial-gradient(circle at 50% 38%, #fff8e6, color-mix(in srgb, var(--primitive-warm-glow) 88%, transparent) 32%, color-mix(in srgb, var(--primitive-warm-glow) 30%, transparent) 60%, transparent 78%); filter: drop-shadow(0 0 60px color-mix(in srgb, var(--primitive-warm-glow) 64%, transparent)); }
|
||||
@keyframes gate-jade-rise { 0% { transform: translateY(46vh) scale(.55); opacity: 0; } 30% { opacity: 1; } 100% { transform: translateY(0) scale(1); opacity: 1; } }
|
||||
.gate-rise h1 { margin: 0; color: var(--content-primary); font-size: clamp(30px, 4.4vw, 42px); font-weight: 650; letter-spacing: .1em; text-shadow: 0 0 46px color-mix(in srgb, var(--primitive-warm-glow) 36%, transparent); animation: gate-text-in 1s ease 1s both; }
|
||||
.gate-rise p { margin: 14px 0 0; color: var(--content-muted); font-size: 14.5px; letter-spacing: .14em; animation: gate-text-in 1s ease 1.5s both; }
|
||||
|
|
|
|||
Loading…
Reference in a new issue