:root{--paper:#f4f3ef;--surface:#fcfbf8;--ink:#292c28;--muted:#606359;--line:#dddcd4;--jade:#2c6a5d;--jade-dark:#1f4c43;--accent:#9b4437;--sans:'PingFang TC','Microsoft JhengHei',sans-serif;--serif:'Songti TC','Noto Serif CJK TC','PMingLiU',serif}
*{box-sizing:border-box}
body{margin:0;min-height:100vh;display:grid;place-items:center;padding:24px 16px;background:var(--jade-dark);color:var(--ink);font:16px/1.65 var(--sans)}
.auth-card{width:100%;max-width:400px;background:var(--surface);border-radius:12px;padding:28px 26px 20px;box-shadow:0 20px 50px #0003}
.auth-brand{display:flex;align-items:center;gap:14px;margin-bottom:22px}
.auth-brand img{border-radius:50%}
.auth-brand h1{margin:0;font:600 26px/1.3 var(--serif);color:var(--jade-dark);letter-spacing:.06em}
.auth-brand p{margin:0;color:var(--muted);font-size:14px}
h2{margin:0 0 12px;font:600 20px/1.4 var(--serif)}
label{display:block;font-size:15px;margin:0 0 6px}
input{width:100%;font:inherit;padding:11px 12px;border:1px solid #aeb2a2;border-radius:6px;background:#fff;margin-bottom:16px}
input:focus-visible,button:focus-visible{outline:2px solid #365e87;outline-offset:3px}
button[type=submit]{width:100%;font:600 16px var(--sans);padding:12px;border:0;border-radius:6px;background:var(--jade);color:#fff;cursor:pointer;min-height:46px}
button[type=submit]:hover{background:var(--jade-dark)}
button:disabled{opacity:.6;cursor:default}
.auth-error{color:var(--accent);font-size:15px;margin:0 0 12px}
.auth-error:empty{display:none}
.auth-note{color:var(--muted);font-size:14px;margin:12px 0 0}
.auth-language{display:block;margin:20px auto 0;background:none;border:0;color:var(--jade);font:600 14px var(--sans);cursor:pointer;padding:6px}
.passkey-button{width:100%;font:600 16px var(--sans);padding:12px;border:1px solid var(--jade);border-radius:6px;background:#fff;color:var(--jade-dark);cursor:pointer;min-height:46px}
.passkey-button:hover{background:#eef4f1}
.passkey-button.primary{background:var(--jade);color:#fff;border-color:var(--jade)}
.passkey-button.primary:hover{background:var(--jade-dark)}
.auth-or{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:14px;margin:16px 0 12px}
.auth-or::before,.auth-or::after{content:'';flex:1;border-top:1px solid var(--line)}
#passkey-offer .auth-note{margin-bottom:16px}
.auth-link{background:none;border:0;padding:0;color:var(--jade);font:600 14px var(--sans);cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.auth-done{color:var(--jade-dark);font-size:15px;margin:0 0 12px}
.auth-done:empty{display:none}
