/* 内测邀请码（js/beta-gate.js）：一块锁屏。设计稿「小手机 内测输码页」。
   卡片 = 桌面小组件的毛玻璃（frost），解锁键 = 亮白玻璃；颜色全部跟主题变量走，深色自动跟随。
   z-index 1090：盖住锁屏/桌面（≤1050），低于 toast（1100）。 */
.beta-gate{
  --g-a:rgb(255 255 255/58%);--g-b:rgb(220 230 238/30%);--g-c:rgb(255 255 255/46%);--g-line:rgb(255 255 255/78%);
  --g-shadow:0 18px 40px -14px rgb(40 58 84/30%);--g-hi:.45;
  --cell:rgb(255 255 255/34%);--cell-line:rgb(255 255 255/70%);--cell-in:inset 0 2px 6px rgb(70 90 115/10%);
  --clock-a:color-mix(in srgb,var(--pri-deep) 66%,transparent);--clock-b:color-mix(in srgb,var(--pri-deep) 40%,transparent);
  --blob1:color-mix(in srgb,var(--pri) 40%,var(--bg));--blob2:color-mix(in srgb,#B4A9D6 38%,var(--bg));
  --blob3:color-mix(in srgb,#A6CDC5 38%,var(--bg));--blob4:color-mix(in srgb,#FFFFFF 55%,var(--bg));
  position:fixed;inset:0;z-index:1090;overflow:hidden;display:flex;flex-direction:column;align-items:center;
  padding:0 16px calc(24px + var(--sab,0px));box-sizing:border-box;
  background:var(--bg);color:var(--ink);font-family:var(--font-body);
  box-shadow:0 18px 40px rgb(46 62 80/18%);animation:bgGateIn .35s ease both}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) .beta-gate{
  --g-a:rgb(255 255 255/12%);--g-b:rgb(255 255 255/4%);--g-c:rgb(255 255 255/9%);--g-line:rgb(255 255 255/16%);
  --g-shadow:0 18px 40px -14px rgb(0 0 0/60%);--g-hi:.12;
  --cell:rgb(255 255 255/6%);--cell-line:rgb(255 255 255/14%);--cell-in:inset 0 2px 6px rgb(0 0 0/35%);
  --blob1:color-mix(in srgb,var(--pri) 30%,var(--bg));--blob2:color-mix(in srgb,#6E5E9E 30%,var(--bg));
  --blob3:color-mix(in srgb,#3F6E68 30%,var(--bg));--blob4:color-mix(in srgb,var(--pri) 14%,var(--bg))}}
:root[data-theme="dark"] .beta-gate{
  --g-a:rgb(255 255 255/12%);--g-b:rgb(255 255 255/4%);--g-c:rgb(255 255 255/9%);--g-line:rgb(255 255 255/16%);
  --g-shadow:0 18px 40px -14px rgb(0 0 0/60%);--g-hi:.12;
  --cell:rgb(255 255 255/6%);--cell-line:rgb(255 255 255/14%);--cell-in:inset 0 2px 6px rgb(0 0 0/35%);
  --blob1:color-mix(in srgb,var(--pri) 30%,var(--bg));--blob2:color-mix(in srgb,#6E5E9E 30%,var(--bg));
  --blob3:color-mix(in srgb,#3F6E68 30%,var(--bg));--blob4:color-mix(in srgb,var(--pri) 14%,var(--bg))}
@keyframes bgGateIn{from{opacity:0}to{opacity:1}}
/* 成功：整页像锁屏一样上滑 */
.beta-gate.leaving{animation:bgGateUp .62s cubic-bezier(.55,0,.25,1) both}
@keyframes bgGateUp{to{transform:translateY(-102%)}}

/* 底：有壁纸铺壁纸，没有就是四团慢慢漂的雾色柔光 */
.beta-gate .bg-wall{position:absolute;inset:0;z-index:0;pointer-events:none}
.beta-gate .bg-wall i{position:absolute;border-radius:50%;filter:blur(46px);opacity:.95;will-change:transform}
.beta-gate .bg-wall .b1{width:340px;height:340px;left:-120px;top:-40px;background:var(--blob1);animation:bgDrift1 18s ease-in-out infinite alternate}
.beta-gate .bg-wall .b2{width:300px;height:300px;right:-110px;top:30%;background:var(--blob2);animation:bgDrift2 22s ease-in-out infinite alternate}
.beta-gate .bg-wall .b3{width:320px;height:320px;left:-60px;bottom:-90px;background:var(--blob3);animation:bgDrift3 20s ease-in-out infinite alternate}
.beta-gate .bg-wall .b4{width:220px;height:220px;right:-30px;top:-60px;background:var(--blob4);animation:bgDrift2 26s ease-in-out infinite alternate-reverse}
@keyframes bgDrift1{to{transform:translate(60px,70px) scale(1.08)}}
@keyframes bgDrift2{to{transform:translate(-50px,40px) scale(.94)}}
@keyframes bgDrift3{to{transform:translate(70px,-50px) scale(1.06)}}
.beta-gate.has-wall .bg-wall{background:var(--bg-wall) center/cover no-repeat}
.beta-gate.has-wall .bg-wall i{display:none}
.beta-gate.has-wall{--g-a:rgb(255 255 255/50%);--g-b:rgb(225 236 247/22%);--g-c:rgb(255 255 255/40%);--cell:rgb(255 255 255/30%);
  --clock-a:rgb(255 255 255/98%);--clock-b:rgb(255 255 255/78%)}

/* 时钟 + 日期：桌面那种玻璃字 */
.beta-gate .bg-clock{position:relative;z-index:1;margin-top:clamp(48px,11vh,96px);
  font-family:var(--clock-font,ui-serif,'Fraunces',var(--font-display));font-weight:600;font-size:clamp(68px,22vw,88px);letter-spacing:-.025em;line-height:1;
  font-variant-numeric:tabular-nums;background:linear-gradient(175deg,var(--clock-a),var(--clock-b));-webkit-background-clip:text;background-clip:text;color:transparent;
  filter:drop-shadow(0 1px 0 rgb(255 255 255/55%))}
.beta-gate.has-wall .bg-clock{filter:drop-shadow(0 2px 5px rgb(70 95 130/28%)) drop-shadow(0 0 1px rgb(70 95 130/20%))}
.beta-gate .bg-date{position:relative;z-index:1;margin-top:10px;font-size:14px;letter-spacing:.06em;color:var(--ink2)}

/* 卡片：桌面小组件的毛玻璃 */
.beta-gate .bg-card-wrap{position:relative;z-index:1;margin-top:clamp(28px,6vh,52px);width:100%;max-width:322px;perspective:900px;animation:bgCardIn .7s cubic-bezier(.25,1.3,.5,1) .1s both}
.beta-gate .bg-card{position:relative;box-sizing:border-box;width:100%;padding:24px 22px 18px;border-radius:28px;
  background:linear-gradient(155deg,var(--g-a) 0%,var(--g-b) 58%,var(--g-c) 100%);
  border:1px solid var(--g-line);box-shadow:inset 0 1.5px 0 rgb(255 255 255/75%),var(--g-shadow);
  -webkit-backdrop-filter:blur(22px) saturate(140%);backdrop-filter:blur(22px) saturate(140%);
  display:flex;flex-direction:column;align-items:center}
.beta-gate .bg-card::before{content:"";position:absolute;left:9%;right:9%;top:1px;height:22%;border-radius:50% 50% 45% 45%/75% 75% 25% 25%;
  background:linear-gradient(180deg,rgb(255 255 255/75%),rgb(255 255 255/0%));opacity:var(--g-hi);pointer-events:none}
@keyframes bgCardIn{from{opacity:0;transform:translateY(26px) scale(.94)}to{opacity:1;transform:none}}
.beta-gate .bg-card.shake-a{animation:bgShakeA .42s cubic-bezier(.36,.07,.19,.97) both}
.beta-gate .bg-card.shake-b{animation:bgShakeB .42s cubic-bezier(.36,.07,.19,.97) both}
@keyframes bgShakeA{10%,90%{transform:translateX(-2px)}20%,80%{transform:translateX(4px)}30%,50%,70%{transform:translateX(-7px)}40%,60%{transform:translateX(7px)}}
@keyframes bgShakeB{10%,90%{transform:translateX(-2px)}20%,80%{transform:translateX(4px)}30%,50%,70%{transform:translateX(-7px)}40%,60%{transform:translateX(7px)}}
.beta-gate .bg-card.flip-out{animation:bgFlipOut .22s cubic-bezier(.5,0,.75,0) both}
.beta-gate .bg-card.flip-in{animation:bgFlipIn .5s cubic-bezier(.25,1.4,.5,1) both}
.beta-gate .bg-card.flip-out-back{animation:bgFlipOutBack .22s cubic-bezier(.5,0,.75,0) both}
.beta-gate .bg-card.flip-in-back{animation:bgFlipInBack .5s cubic-bezier(.25,1.4,.5,1) both}
@keyframes bgFlipOut{to{transform:rotateY(88deg) scale(.96);opacity:.6}}
@keyframes bgFlipIn{from{transform:rotateY(-88deg) scale(.96);opacity:.6}to{transform:none;opacity:1}}
@keyframes bgFlipOutBack{to{transform:rotateY(-88deg) scale(.96);opacity:.6}}
@keyframes bgFlipInBack{from{transform:rotateY(88deg) scale(.96);opacity:.6}to{transform:none;opacity:1}}
.beta-gate .bg-card.is-ok{animation:bgCardOk .55s cubic-bezier(.3,1.4,.5,1) both}
@keyframes bgCardOk{50%{transform:scale(1.03)}to{transform:scale(1)}}

.beta-gate .bg-chip{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 11px;border-radius:999px;font-size:12px;letter-spacing:.08em;
  color:var(--pri-deep);background:rgb(255 255 255/40%);border:1px solid var(--g-line)}
.beta-gate .bg-chip svg{width:13px;height:13px;display:block}
.beta-gate .bg-chip.warn{color:var(--coral-text);background:color-mix(in srgb,var(--coral) 16%,transparent)}
.beta-gate .bg-title{margin:14px 0 0;font-family:var(--font-display);font-size:22px;font-weight:600;letter-spacing:.04em;color:var(--ink)}
.beta-gate .bg-sub{margin:8px 0 0;font-size:13.5px;line-height:1.6;color:var(--ink2);text-align:center}

/* 8 个玻璃小格；真正的输入框透明地盖在上面 */
.beta-gate .bg-cells{position:relative;margin-top:20px;display:flex;align-items:center;gap:5px}
.beta-gate .bg-group{display:flex;gap:5px}
.beta-gate .bg-dash{width:7px;height:2px;border-radius:1px;background:var(--ink2-soft);opacity:.6}
.beta-gate .bg-cell{position:relative;width:28px;height:40px;border-radius:11px;background:var(--cell);border:1px solid var(--cell-line);box-shadow:var(--cell-in);
  display:flex;align-items:center;justify-content:center;font-family:var(--clock-font,ui-serif,'Fraunces',var(--font-display));font-weight:600;font-size:20px;color:var(--ink);
  transition:border-color .2s,background .2s,color .2s}
.beta-gate .bg-cell.filled{animation:bgCharIn .32s cubic-bezier(.3,1.6,.5,1) both}
@keyframes bgCharIn{from{transform:scale(.7)}to{transform:scale(1)}}
.beta-gate .bg-cell.active{border-color:var(--pri);box-shadow:var(--cell-in),0 0 0 3px color-mix(in srgb,var(--pri) 22%,transparent)}
.beta-gate .bg-cell.active::after{content:"";width:1.5px;height:20px;border-radius:1px;background:var(--pri-deep);animation:bgCaret 1s steps(1) infinite}
@keyframes bgCaret{50%{opacity:0}}
.beta-gate .bg-card.is-bad .bg-cell:not(:empty){border-color:color-mix(in srgb,var(--coral) 70%,transparent);background:color-mix(in srgb,var(--coral) 16%,transparent);color:color-mix(in srgb,var(--coral) 65%,var(--coral-text))}
.beta-gate .bg-cell.good{animation:bgSweep .5s ease both;border-color:color-mix(in srgb,var(--pri) 70%,transparent)}
@keyframes bgSweep{45%{background:color-mix(in srgb,var(--pri) 30%,rgb(255 255 255/60%));transform:translateY(-3px)}100%{transform:none}}
.beta-gate .bg-code{position:absolute;inset:-6px;width:calc(100% + 12px);height:calc(100% + 12px);margin:0;padding:0;border:0;opacity:0;
  font-size:16px;color:transparent;caret-color:transparent;background:transparent;cursor:text}

.beta-gate .bg-error{min-height:20px;margin:12px 0 0;font-size:12.5px;line-height:1.5;color:color-mix(in srgb,var(--coral) 65%,var(--coral-text));text-align:center}

/* 解锁键：亮白玻璃，放在什么壁纸、什么主题色上都不冲突 */
.beta-gate .bg-primary{position:relative;overflow:hidden;margin-top:10px;width:100%;height:48px;border-radius:999px;cursor:pointer;
  font:600 15.5px var(--font-body);letter-spacing:.32em;text-indent:.32em;color:var(--pri-deep);border:1px solid #FFFFFF;
  background:linear-gradient(180deg,rgb(255 255 255/96%) 0%,rgb(255 255 255/82%) 52%,rgb(255 255 255/90%) 100%);
  box-shadow:inset 0 1.5px 0 #FFFFFF,inset 0 -6px 14px rgb(255 255 255/60%),0 0 0 1px rgb(255 255 255/35%),0 12px 26px -10px rgb(60 85 120/32%),0 0 22px -4px rgb(255 255 255/75%);
  -webkit-backdrop-filter:blur(12px) saturate(160%);backdrop-filter:blur(12px) saturate(160%);
  transition:transform .18s cubic-bezier(.3,1.5,.5,1),box-shadow .25s,background .25s,color .25s}
.beta-gate .bg-primary::before{content:"";position:absolute;left:10%;right:10%;top:2px;height:40%;border-radius:999px;background:linear-gradient(180deg,#FFFFFF,rgb(255 255 255/0%));pointer-events:none}
.beta-gate .bg-primary:hover{box-shadow:inset 0 1.5px 0 #FFFFFF,inset 0 -6px 14px rgb(255 255 255/60%),0 0 0 1px rgb(255 255 255/45%),0 14px 30px -10px rgb(60 85 120/38%),0 0 28px -2px rgb(255 255 255/90%)}
.beta-gate .bg-primary:active{transform:scale(.97)}
.beta-gate .bg-primary:disabled{cursor:default;color:color-mix(in srgb,var(--pri-deep) 55%,transparent);border-color:rgb(255 255 255/70%);
  background:linear-gradient(180deg,rgb(255 255 255/40%),rgb(255 255 255/22%));box-shadow:inset 0 1px 0 rgb(255 255 255/80%),0 6px 16px -12px rgb(40 58 84/25%)}
.beta-gate .bg-primary:disabled::before{opacity:.5}
.beta-gate .bg-dots{display:inline-flex;gap:5px;text-indent:0;letter-spacing:0;vertical-align:middle}
.beta-gate .bg-dots i{width:6px;height:6px;border-radius:50%;background:currentColor;animation:bgDot 1s ease-in-out infinite}
.beta-gate .bg-dots i:nth-child(2){animation-delay:.15s}.beta-gate .bg-dots i:nth-child(3){animation-delay:.3s}
@keyframes bgDot{0%,80%,100%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) .beta-gate .bg-primary:not(:disabled){color:#FFFFFF;border-color:rgb(255 255 255/55%);
  background:linear-gradient(180deg,rgb(255 255 255/30%),rgb(255 255 255/16%) 52%,rgb(255 255 255/24%));box-shadow:inset 0 1px 0 rgb(255 255 255/60%),0 12px 26px -10px rgb(0 0 0/60%),0 0 22px -6px rgb(255 255 255/35%)}
  :root:not([data-theme="light"]) .beta-gate .bg-primary:disabled{color:rgb(255 255 255/50%);border-color:rgb(255 255 255/18%);background:linear-gradient(180deg,rgb(255 255 255/10%),rgb(255 255 255/4%));box-shadow:inset 0 1px 0 rgb(255 255 255/15%)}
  :root:not([data-theme="light"]) .beta-gate .bg-primary::before{opacity:.35}
  :root:not([data-theme="light"]) .beta-gate .bg-primary:disabled::before{opacity:.12}}
:root[data-theme="dark"] .beta-gate .bg-primary:not(:disabled){color:#FFFFFF;border-color:rgb(255 255 255/55%);
  background:linear-gradient(180deg,rgb(255 255 255/30%),rgb(255 255 255/16%) 52%,rgb(255 255 255/24%));box-shadow:inset 0 1px 0 rgb(255 255 255/60%),0 12px 26px -10px rgb(0 0 0/60%),0 0 22px -6px rgb(255 255 255/35%)}
:root[data-theme="dark"] .beta-gate .bg-primary:disabled{color:rgb(255 255 255/50%);border-color:rgb(255 255 255/18%);background:linear-gradient(180deg,rgb(255 255 255/10%),rgb(255 255 255/4%));box-shadow:inset 0 1px 0 rgb(255 255 255/15%)}
:root[data-theme="dark"] .beta-gate .bg-primary::before{opacity:.35}
:root[data-theme="dark"] .beta-gate .bg-primary:disabled::before{opacity:.12}

.beta-gate .bg-link{margin-top:6px;min-height:44px;padding:0 8px;border:0;background:none;cursor:pointer;display:inline-flex;align-items:center;gap:4px;
  font:13.5px var(--font-body);color:var(--accent-text)}
.beta-gate .bg-link svg{width:14px;height:14px}
.beta-gate .bg-link:disabled{opacity:.5;cursor:default}
.beta-gate .bg-primary:focus-visible,.beta-gate .bg-link:focus-visible{outline:2px solid var(--focus-ring,var(--pri));outline-offset:2px}
.beta-gate .bg-cells:focus-within .bg-cell.active{box-shadow:var(--cell-in),0 0 0 3px var(--focus-ring,color-mix(in srgb,var(--pri) 30%,transparent))}

.beta-gate .bg-field{width:100%;margin-top:12px;display:flex;flex-direction:column;gap:6px;font-size:12.5px;color:var(--ink2)}
.beta-gate .bg-field input{box-sizing:border-box;width:100%;height:46px;border-radius:14px;border:1px solid var(--cell-line);background:var(--cell);box-shadow:var(--cell-in);
  padding:0 14px;font:15px var(--font-body);color:var(--ink);outline:none}
.beta-gate .bg-field input:focus{border-color:var(--pri);box-shadow:var(--cell-in),0 0 0 3px color-mix(in srgb,var(--pri) 22%,transparent)}

.beta-gate .bg-foot{position:absolute;left:0;right:0;bottom:calc(30px + var(--sab,0px));z-index:1;margin:0;padding:0 44px;font-size:11.5px;line-height:1.7;color:var(--ink2);text-align:center}
.beta-gate .bg-lockbar{position:absolute;left:50%;bottom:calc(12px + var(--sab,0px));z-index:1;width:120px;height:5px;margin-left:-60px;border-radius:3px;background:var(--ink2-soft);opacity:.35}
@media(max-height:680px){.beta-gate .bg-foot{display:none}}

@media(prefers-reduced-motion:reduce){
  .beta-gate,.beta-gate .bg-wall i,.beta-gate .bg-card-wrap,.beta-gate .bg-card,.beta-gate .bg-cell.filled,.beta-gate .bg-cell.good{animation:none!important}
}
