/* auth.css —— 登录/注册页样式。依赖 design-tokens.css 先加载。 */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%}
body{background:var(--c-bg);color:var(--c-text);font-family:var(--font-sans);
-webkit-font-smoothing:antialiased;display:flex;align-items:center;justify-content:center;
min-height:100vh;padding:var(--sp-5);overflow-x:hidden;position:relative}

.ambient{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none}
.orb{position:absolute;border-radius:50%;filter:blur(90px);opacity:.5;animation:float 18s var(--ease) infinite alternate}
.orb-1{width:520px;height:520px;background:radial-gradient(circle,#00E5A0,transparent 70%);top:-180px;left:-120px}
.orb-2{width:460px;height:460px;background:radial-gradient(circle,#3B9EFF,transparent 70%);bottom:-160px;right:-100px;animation-delay:-6s}
.orb-3{width:360px;height:360px;background:radial-gradient(circle,#B87FFF,transparent 70%);top:40%;right:18%;opacity:.32;animation-delay:-11s}
@keyframes float{from{transform:translate(0,0) scale(1)}to{transform:translate(40px,-30px) scale(1.12)}}
.grid-overlay{position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.4;
background-image:linear-gradient(var(--c-border) 1px,transparent 1px),linear-gradient(90deg,var(--c-border) 1px,transparent 1px);
background-size:64px 64px;
-webkit-mask-image:radial-gradient(ellipse 80% 60% at 50% 40%,#000 30%,transparent 75%);
mask-image:radial-gradient(ellipse 80% 60% at 50% 40%,#000 30%,transparent 75%)}

.topbar{position:fixed;top:0;left:0;right:0;z-index:20;height:64px;display:flex;align-items:center;justify-content:space-between;padding:0 var(--sp-6)}
.brand{font-family:var(--font-mono);font-size:15px;font-weight:700;color:var(--c-accent);letter-spacing:.5px;display:flex;align-items:center;gap:8px;text-decoration:none}
.brand .dot{width:7px;height:7px;border-radius:50%;background:var(--c-accent);box-shadow:0 0 10px var(--c-accent);animation:pulse 2.4s var(--ease) infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
.brand em{color:var(--c-text-3);font-style:normal;font-weight:400;font-size:12px;font-family:var(--font-sans)}
.lang-switch{display:flex;gap:2px;background:var(--c-surface-2);border:1px solid var(--c-border);border-radius:var(--r-full);padding:3px}
.lang-btn{border:none;background:none;color:var(--c-text-3);font-size:11px;font-family:var(--font-mono);padding:5px 13px;border-radius:var(--r-full);cursor:pointer;text-decoration:none;transition:all var(--dur-fast) var(--ease)}
.lang-btn.active{background:var(--c-accent);color:#061013;font-weight:700}
.lang-btn:not(.active):hover{color:var(--c-text)}

.auth-card{position:relative;z-index:10;width:100%;max-width:420px;background:var(--glass-bg);
backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);
border:1px solid var(--glass-border);border-radius:var(--r-xl);box-shadow:var(--sh-3);
padding:var(--sp-7) var(--sp-6) var(--sp-6);animation:cardIn .6s var(--ease-out) both}
@keyframes cardIn{from{opacity:0;transform:translateY(20px) scale(.98)}to{opacity:1;transform:none}}
.auth-card::before{content:"";position:absolute;inset:0;border-radius:var(--r-xl);padding:1px;
background:linear-gradient(135deg,rgba(0,229,160,.35),transparent 40%);
-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}

.card-head{text-align:center;margin-bottom:var(--sp-6)}
.card-head h1{font-size:24px;font-weight:700;letter-spacing:-.3px;margin-bottom:6px}
.card-head p{font-size:13px;color:var(--c-text-2);line-height:1.5}

.seg{position:relative;display:flex;background:var(--c-surface-2);border:1px solid var(--c-border);border-radius:var(--r-md);padding:4px;margin-bottom:var(--sp-6)}
.seg-ind{position:absolute;top:4px;bottom:4px;left:4px;width:calc(50% - 4px);background:var(--c-surface-1);border:1px solid var(--c-border-hi);border-radius:var(--r-sm);box-shadow:var(--sh-2);transition:transform var(--dur) var(--ease-out)}
.seg[data-mode="register"] .seg-ind{transform:translateX(100%)}
.seg-btn{flex:1;position:relative;z-index:1;background:none;border:none;color:var(--c-text-3);font-size:13px;font-weight:600;font-family:var(--font-sans);padding:9px 0;cursor:pointer;text-decoration:none;text-align:center;transition:color var(--dur) var(--ease)}
.seg-btn.active{color:var(--c-text)}

.field{margin-bottom:var(--sp-4);position:relative}
.field label{display:block;font-size:11px;color:var(--c-text-2);font-weight:500;margin-bottom:7px;letter-spacing:.2px}
.input-wrap{position:relative}
.input-wrap .icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--c-text-3);pointer-events:none;transition:color var(--dur) var(--ease)}
.field input{width:100%;background:var(--c-surface-2);border:1px solid var(--c-border);color:var(--c-text);padding:12px 14px 12px 42px;border-radius:var(--r-md);font-size:14px;font-family:var(--font-sans);outline:none;transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),background var(--dur) var(--ease)}
.field input::placeholder{color:var(--c-text-3)}
.field input:focus{border-color:var(--c-accent);background:var(--c-surface-1);box-shadow:0 0 0 3px var(--c-accent-soft)}
.field input:focus ~ .icon{color:var(--c-accent)}
.field .hint{font-size:10px;color:var(--c-text-3);margin-top:6px}

.row-between{display:flex;justify-content:space-between;align-items:center;margin:-4px 0 var(--sp-5)}
.link{color:var(--c-accent);font-size:12px;text-decoration:none;font-weight:500;transition:opacity var(--dur-fast) var(--ease)}
.link:hover{opacity:.75;text-decoration:underline}

.btn-cta{width:100%;background:linear-gradient(135deg,var(--c-accent),var(--c-accent-h));color:#061013;font-weight:700;font-size:14px;font-family:var(--font-sans);padding:13px;border:none;border-radius:var(--r-md);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;transition:transform var(--dur-fast) var(--ease-out),box-shadow var(--dur) var(--ease)}
.btn-cta:hover{transform:translateY(-1px);box-shadow:var(--sh-glow)}
.btn-cta:active{transform:translateY(0) scale(.985)}
.btn-cta:focus-visible{outline:2px solid var(--c-accent);outline-offset:3px}
.btn-cta svg{width:16px;height:16px;transition:transform var(--dur) var(--ease)}
.btn-cta:hover svg{transform:translateX(3px)}

.cf-turnstile{display:flex;justify-content:center;margin-bottom:var(--sp-5)}

.divider{display:flex;align-items:center;gap:12px;margin:var(--sp-5) 0;color:var(--c-text-3);font-size:11px}
.divider::before,.divider::after{content:"";flex:1;height:1px;background:var(--c-border)}
.alt-actions{display:flex;gap:10px}
.btn-ghost{flex:1;background:var(--c-surface-2);border:1px solid var(--c-border);color:var(--c-text-2);font-size:12px;font-weight:600;padding:11px;border-radius:var(--r-md);cursor:pointer;text-align:center;text-decoration:none;display:flex;align-items:center;justify-content:center;transition:all var(--dur) var(--ease)}
.btn-ghost:hover{border-color:var(--c-border-hi);color:var(--c-text);transform:translateY(-1px)}

.card-foot{text-align:center;margin-top:var(--sp-5);font-size:12px;color:var(--c-text-3);display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap}

.alert{font-size:12px;padding:10px 14px;border-radius:var(--r-md);margin-bottom:var(--sp-5);line-height:1.5}
.alert-err{background:rgba(255,77,94,.1);border:1px solid rgba(255,77,94,.28);color:var(--c-down)}
.alert-warn{background:rgba(245,197,66,.1);border:1px solid rgba(245,197,66,.28);color:#F5C542}
.alert-ok{background:rgba(0,229,160,.1);border:1px solid rgba(0,229,160,.28);color:var(--c-accent)}
.pending-badge{display:inline-block;background:var(--c-accent-soft);color:var(--c-accent);padding:3px 10px;border-radius:var(--r-full);font-size:11px;font-family:var(--font-mono);margin-bottom:var(--sp-4);text-align:center;width:100%}

@media(max-width:480px){
body{padding:var(--sp-3)}
.topbar{padding:0 var(--sp-4);height:56px}
.auth-card{padding:var(--sp-6) var(--sp-4) var(--sp-5);border-radius:var(--r-lg)}
.card-head h1{font-size:21px}.brand em{display:none}
}

/* ── 转化页:套餐卡 + 双态 ── */
.plan{background:var(--c-surface-2);border:1px solid var(--c-border);border-radius:var(--r-lg);
padding:var(--sp-5);margin-bottom:var(--sp-5);position:relative;overflow:hidden}
.plan::before{content:"";position:absolute;top:0;left:0;right:0;height:2px;
background:linear-gradient(90deg,var(--c-accent),transparent)}
.plan-name{font-size:11px;color:var(--c-text-3);font-family:var(--font-mono);
letter-spacing:1px;text-transform:uppercase;margin-bottom:8px}
.plan-price{font-size:36px;font-weight:800;letter-spacing:-1px;line-height:1}
.plan-price small{font-size:14px;font-weight:400;color:var(--c-text-3);letter-spacing:0}
.plan-desc{font-size:12px;color:var(--c-text-2);margin-top:6px}
.plan-feats{list-style:none;margin:var(--sp-5) 0 0;display:flex;flex-direction:column;gap:10px}
.plan-feats li{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--c-text-2)}
.plan-feats li svg{width:16px;height:16px;color:var(--c-accent);flex-shrink:0}

.pay-note{background:rgba(245,197,66,.08);border:1px solid rgba(245,197,66,.22);
border-radius:var(--r-md);padding:12px 16px;font-size:12px;color:var(--c-text-2);
line-height:1.6;margin-bottom:var(--sp-5)}
.pay-note strong{color:var(--c-warn)}

.user-badge{background:var(--c-accent-soft);border:1px solid rgba(0,229,160,.25);
border-radius:var(--r-md);padding:10px 14px;font-size:12px;color:var(--c-accent);
font-family:var(--font-mono);margin-bottom:var(--sp-5);text-align:center}
.guest-fields{display:none}
body[data-logged-in="0"] .guest-fields{display:block}
.section-label{font-size:10px;color:var(--c-text-3);font-family:var(--font-mono);
letter-spacing:1px;text-transform:uppercase;margin:var(--sp-5) 0 var(--sp-3);
padding-bottom:8px;border-bottom:1px solid var(--c-border)}

#redeem-code{text-transform:uppercase;letter-spacing:2px;font-family:var(--font-mono)}
.notice{display:none;font-size:12px;padding:10px 14px;border-radius:var(--r-md);margin-bottom:var(--sp-4);line-height:1.5}
.notice.show{display:block}
.notice.err{background:rgba(255,77,94,.1);border:1px solid rgba(255,77,94,.28);color:var(--c-down)}
.notice.ok{background:rgba(0,229,160,.1);border:1px solid rgba(0,229,160,.28);color:var(--c-accent)}

/* 移动端性能优化:禁用环境光动画+降级模糊 */
@media(max-width:860px){
  .orb{animation:none!important;filter:blur(60px)!important;opacity:.3!important}
  .grid-overlay{display:none}
  .auth-card{backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
}
@media(max-width:480px){
  .orb{display:none}
  .auth-card::before{display:none}
}
