/* Hallmark · macrostructure: Split Studio · tone: Midnight · anchor hue: citron
 * Authentication-only presentation. No shared module tokens are overridden. */
.sidebar-brand .logo.jl-brand-mark{background:transparent;box-shadow:none;color:#f8ea21;color:oklch(92% .19 105)}
.sidebar-brand .logo.jl-brand-mark svg{width:32px;height:32px}
/* 颜色回退：oklch()/color-mix() 在 Safari<15.4、Chrome<111 上不被支持。
 * 变量里的非法颜色不会在解析期报错，要等到 var() 计算时才失效（invalid at computed-value time），
 * 届时整条声明退回 unset —— 同属性写两遍是兜不住的，必须在「变量定义」这一层给 sRGB 回退，
 * 再用 @supports 让支持广色域的浏览器覆盖回 oklch 原值。改色请两处同步改。 */
#authGate{--jl-paper:#050403;--jl-panel:#0a0906;--jl-ink:#f1efe3;--jl-muted:#919085;--jl-rule:#2a2922;--jl-accent:#fff12f;background:var(--jl-paper);color:var(--jl-ink);overflow:auto;padding:16px;align-items:stretch;display:flex;font-family:"Microsoft YaHei UI","PingFang SC",system-ui,sans-serif}
@supports (color:oklch(0% 0 0)){#authGate{--jl-paper:oklch(11% .008 100);--jl-panel:oklch(14% .009 100);--jl-ink:oklch(95% .016 100);--jl-muted:oklch(65% .016 100);--jl-rule:oklch(28% .012 100);--jl-accent:oklch(94% .19 105)}}
#authGate{align-items:flex-start}
#authGate .auth-shell{overflow:visible;align-self:flex-start}
#authGate.hidden{display:none!important}
#authGate *{box-sizing:border-box}
#authGate .auth-shell{display:grid;grid-template-columns:minmax(0,.98fr) minmax(0,1.02fr);width:100%;max-width:none;min-height:calc(100vh - 32px);min-height:calc(100dvh - 32px);height:auto;background:transparent;border:0;box-shadow:none;border-radius:0;margin:0;flex-shrink:0}
#authGate .auth-hero{position:relative;isolation:isolate;overflow:hidden;min-height:740px;padding:0;border:0;border-radius:20px;background:var(--jl-panel);color:var(--jl-ink);display:block}
#authGate .auth-hero:before,#authGate .auth-hero:after{display:none}
#authGate .jl-wave-lines{position:absolute;inset:0;width:100%;height:100%;fill:none;pointer-events:none;stroke-width:1}
#authGate .wave-line{stroke:#312f13;stroke:color-mix(in oklch,var(--jl-accent) 20%,var(--jl-panel))}
#authGate .wave-line-accent{stroke:#6b6620;stroke:color-mix(in oklch,var(--jl-accent) 45%,var(--jl-panel))}
#authGate .jl-wave-ribbon{transform-origin:center;animation:jl-auth-curtain 16s ease-in-out infinite alternate;animation-play-state:paused}
#authGate [data-hm-motion=running] .jl-wave-ribbon{animation-play-state:running}
#authGate .jl-login-brand{position:absolute;left:40px;top:40px;display:flex;align-items:center;gap:12px;color:var(--jl-ink);text-decoration:none}
#authGate .jl-login-brand svg{width:36px;height:36px;color:var(--jl-accent)}
#authGate .jl-login-brand strong{font-size:24px;letter-spacing:-.04em}
#authGate .jl-login-brand>span{font-size:12px;color:var(--jl-muted);border-left:1px solid var(--jl-rule);padding-left:12px}
#authGate .jl-login-equation{position:absolute;inset:22% 24px auto;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:24px;font-size:clamp(54px,6vw,112px);font-weight:650;letter-spacing:-.05em;line-height:1.2}
#authGate .jl-login-equation>span{font-weight:300;color:var(--jl-accent);font-size:.7em}
#authGate .jl-login-equation small{width:100%;text-align:center;font-size:11px;letter-spacing:.24em;font-weight:400;color:var(--jl-muted);margin-top:20px}
#authGate .jl-login-caption{position:absolute;inset:auto 40px 40px;background:transparent}
#authGate .jl-login-caption h1{font-size:clamp(25px,2.45vw,44px);font-weight:650;letter-spacing:-.04em;line-height:1.65;margin:0}
#authGate .jl-login-caption em{font-style:normal;color:var(--jl-accent)}
#authGate .jl-login-caption p{font-size:13px;color:var(--jl-muted);margin:18px 0 0}
#authGate .jl-login-credit{display:flex;justify-content:space-between;gap:16px;border-top:1px solid var(--jl-rule);padding-top:24px;margin-top:32px;font-size:11px;letter-spacing:.06em;color:var(--jl-muted)}
#authGate .auth-card{position:relative;width:min(400px,calc(100% - 80px));max-width:400px;margin:auto;padding:104px 0 72px;border:0;border-radius:0;background:transparent;box-shadow:none;color:var(--jl-ink)}
#authGate .jl-back-home{position:absolute;top:32px;left:0;color:var(--jl-muted);font-size:13px;text-decoration:none;min-height:44px;display:flex;align-items:center}
#authGate .jl-welcome-mark{display:block;width:40px;height:40px;color:var(--jl-accent);margin-bottom:24px}
#authGate .jl-welcome-mark svg{width:100%;height:100%}
#authGate #authTitle{font-size:32px;line-height:1.4;font-weight:650;color:var(--jl-ink);margin:0}
#authGate .auth-sub{font-size:13px;line-height:1.8;color:var(--jl-muted);margin:10px 0 26px}
#authGate .auth-tabs{display:flex;gap:24px;background:transparent;border:0;border-bottom:1px solid var(--jl-rule);border-radius:0;padding:0;margin:0 0 28px}
#authGate .auth-tab{position:relative;min-height:48px;flex:0 0 auto;padding:8px 4px;background:transparent;border:0;border-radius:0;box-shadow:none;color:var(--jl-muted);font-size:14px}
#authGate .auth-tab.active{color:var(--jl-ink)}
#authGate .auth-tab.active:after{content:"";position:absolute;inset:auto 0 -1px;height:2px;background:var(--jl-accent)}
#authGate input{display:block;width:100%;min-height:54px;border:1px solid var(--jl-rule);border-radius:7px;background:var(--jl-panel);color:var(--jl-ink);padding:14px 16px;font:inherit;font-size:14px;margin:0 0 16px;box-shadow:none;outline:none}
#authGate input::placeholder{color:var(--jl-muted)}
#authGate input:-webkit-autofill{-webkit-text-fill-color:var(--jl-ink);box-shadow:0 0 0 1000px var(--jl-panel) inset}
#authGate input.hidden{display:none!important}
#authGate .code-row{display:flex;gap:12px;margin-bottom:16px}
#authGate .code-row input{flex:1;min-width:0;margin:0}
#authGate .btn-code{flex:0 0 118px;border:1px solid var(--jl-rule);border-radius:7px;background:var(--jl-panel);color:var(--jl-accent);font:inherit;font-size:13px;cursor:pointer}
#authGate .auth-submit{width:100%;min-height:54px;border:0;border-radius:7px;background:var(--jl-accent);color:var(--jl-paper);font-size:14px;font-weight:650;box-shadow:none;margin-top:12px;cursor:pointer}
#authGate .auth-foot{display:flex;justify-content:flex-end;font-size:13px;margin-top:18px}
#authGate .auth-foot a{color:var(--jl-muted);cursor:pointer}
#authGate #authSmsNotice{font-size:12px;line-height:1.8;color:var(--jl-muted);margin:0 0 12px}
#authGate .auth-err{color:#ff9685;color:oklch(78% .13 30);font-size:13px;line-height:1.7;min-height:22px}
#authGate button:disabled{opacity:.5;cursor:not-allowed}
#authGate :is(input,button,a):focus-visible{outline:2px solid var(--jl-accent);outline-offset:4px}
#authGate :is(a,button):hover:not(:disabled){filter:brightness(1.1)}
@keyframes jl-auth-curtain{from{transform:translate(-4%,-2%) rotate(-5deg);opacity:.65}to{transform:translate(4%,2%) rotate(4deg);opacity:1}}
@media(max-width:1000px){#authGate .auth-card{width:calc(100% - 48px)}#authGate .jl-login-brand{left:24px;top:24px}#authGate .jl-login-caption{inset:auto 24px 32px}#authGate .jl-login-caption h1{font-size:28px}#authGate .jl-login-equation{font-size:58px;gap:16px}}
@media(max-width:720px){#authGate{padding:12px}#authGate .auth-shell{grid-template-columns:minmax(0,1fr)}#authGate .auth-hero{min-height:300px}#authGate .jl-login-equation{display:none}#authGate .jl-login-caption{inset:auto 24px 24px}#authGate .jl-login-caption h1{font-size:22px;line-height:1.6}#authGate .jl-login-caption p,#authGate .jl-login-credit{display:none}#authGate .jl-login-brand{top:20px}#authGate .jl-login-brand strong{font-size:21px}#authGate .auth-card{padding:88px 0 40px;width:calc(100% - 32px)}#authGate .jl-welcome-mark{display:none}#authGate #authTitle{font-size:28px}}
@media(prefers-reduced-motion:reduce){#authGate .jl-wave-ribbon{animation:none!important;transform:none}}
