:root{font-family:'Segoe UI','PingFang SC','Microsoft YaHei',sans-serif;color:#2c4b55;background:#f0f5fa;font-synthesis:none}*{box-sizing:border-box}body{margin:0}.landing{min-height:100svh;display:grid;grid-template-columns:minmax(280px,30%) minmax(0,70%);max-width:1800px;margin:auto;background:radial-gradient(ellipse at 70% 45%,#e3f2f5 0%,#eff2fb 50%,#f5f3f5 100%)}.words{position:relative;padding:clamp(38px,6vh,80px) 0 40px 14%;z-index:2;align-self:center}h1{font-family:'Songti SC','Noto Serif CJK SC','SimSun',serif;font-weight:500;font-size:clamp(38px,3.7vw,65px);line-height:1.45;letter-spacing:3px;margin:0 0 22px;color:#24424b}.statement{max-width:340px;font-size:16px;line-height:2;letter-spacing:.6px;color:#587079;margin:0 0 32px;padding-right:16px}.login-card{width:min(310px,100%);background:#ffffffc7;border:1px solid #fff;border-radius:22px;padding:25px 28px;box-shadow:0 18px 60px #668c9a13;backdrop-filter:blur(16px)}h2{font-size:18px;font-weight:500;margin:0 0 20px;letter-spacing:3px}form{display:grid;gap:9px}label{font-size:13px;color:#6d858b}input{font:inherit;font-size:15px;padding:12px 14px;border:1px solid #d9e4e7;border-radius:10px;min-width:0;width:100%;background:#fbfdfdbd;color:#758a90}input:focus{outline:2px solid #91c5c7;outline-offset:2px}input#username{margin-bottom:7px}button{font:inherit;font-size:15px;border:0;border-radius:12px;padding:13px 20px;margin-top:10px;background:#b7d7d2;color:#42656b;letter-spacing:5px}button:disabled{cursor:default}#login-note{font-size:11px;line-height:1.7;margin:6px 0 0;color:#7c9298}.world{position:relative;height:100svh;min-height:620px;overflow:hidden}canvas{display:block;width:100%;height:100%;touch-action:pan-y;cursor:grab}canvas:focus-visible{outline:2px solid #77b8bc;outline-offset:-8px;border-radius:24px}canvas:active{cursor:grabbing}#poster{position:absolute;width:100%;height:100%;object-fit:contain}#poster[hidden]{display:none}#loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;background:#edf3f8;font-size:14px;color:#6b838b}#loading[hidden]{display:none}.spinner{width:40px;height:40px;border:2px solid #cee4e6;border-top-color:#e8b5aa;border-radius:50%;animation:spin 1.5s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}#loading.failed{inset:auto 12% 16%;padding:18px;border-radius:18px;background:#ffffffe8;border:1px solid #e3e8ef;text-align:center}.hint{position:absolute;bottom:40px;left:0;right:0;text-align:center;color:#69858d;font-size:13px;letter-spacing:1px;pointer-events:none}.sr-only{position:absolute;clip-path:inset(50%);width:1px;height:1px;overflow:hidden;white-space:nowrap}@media(max-width:850px){.landing{display:flex;flex-direction:column}.words{padding:34px 7% 0;align-self:stretch}.words h1{font-size:36px;line-height:1.4;margin-bottom:15px}.words h1 br{display:none}.statement{max-width:620px;margin-bottom:22px;padding:0;font-size:16px;line-height:1.9}.login-card{width:100%;max-width:420px;margin:0 auto;padding:20px 24px}.world{height:58svh;min-height:430px;order:-1}.words{padding-top:0;padding-bottom:32px}.hint{bottom:12px}h2{margin-bottom:12px}#login-note{font-size:12px}}@media(prefers-reduced-motion:reduce){.spinner{animation:none}}

canvas[hidden]{display:none}

.login-trigger{position:relative;min-width:126px;min-height:52px;padding:14px 30px;margin-top:0;border:1px solid #ebfffa;border-radius:18px;background:linear-gradient(160deg,#e6fff4 0%,#b5e5d8 48%,#8acabb 100%);color:#244c49;font-weight:600;font-size:16px;letter-spacing:4px;box-shadow:0 7px 0 #6fa698,0 13px 24px #628f8c35,inset 0 2px 2px #ffffff;cursor:pointer;transition:transform .15s,box-shadow .15s}
.login-trigger:hover{transform:translateY(-2px);box-shadow:0 9px 0 #6fa698,0 16px 26px #628f8c40,inset 0 2px 2px #fff}
.login-trigger:active{transform:translateY(5px);box-shadow:0 2px 0 #6fa698,0 5px 12px #628f8c30,inset 0 2px 2px #fff}
.login-trigger:focus-visible,.dialog-close:focus-visible{outline:3px solid #527e88;outline-offset:5px}
#login-dialog{padding:0;border:1px solid #fff;border-radius:24px;width:min(370px,calc(100vw - 36px));max-height:calc(100svh - 40px);overflow:auto;background:#f7fcfc;box-shadow:0 30px 100px #36586f38;color:#2c4b55}
#login-dialog::backdrop{background:#2d465958;backdrop-filter:blur(6px)}
#login-dialog:not([open]){display:none}
#login-dialog .login-card{width:100%;max-width:none;padding:34px 30px 28px;border:0;background:transparent;box-shadow:none}
#login-dialog h2{padding-right:40px;margin-bottom:22px}
#login-dialog .dialog-close{position:absolute;right:12px;top:10px;width:44px;height:44px;padding:0;margin:0;font-size:28px;line-height:1;letter-spacing:0;color:#536e77;background:transparent;cursor:pointer;z-index:1}
#login-dialog label{font-size:14px}#login-dialog #login-note{font-size:13px}
@media(prefers-reduced-motion:reduce){.login-trigger{transition:none}}
.scene-reset{position:absolute;right:24px;bottom:26px;min-height:44px;padding:8px 15px;margin:0;letter-spacing:1px;font-size:14px;border:1px solid #a7bdc7;background:#f4fbffe8;color:#3d606c;cursor:pointer;box-shadow:0 3px 8px #49687915}.scene-reset:focus-visible{outline:2px solid #4c7d8d;outline-offset:3px}@media(max-width:850px){.scene-reset{right:12px;bottom:10px}.world .hint{padding:0 82px 0 12px;font-size:12px}}
.scene-tools{position:absolute;top:16px;right:16px;display:flex;gap:8px;z-index:2}.scene-tools .scene-reset{position:static;margin:0}.scene-focus{min-height:44px;padding:8px 15px;margin:0;font-size:14px;letter-spacing:1px;border:1px solid #a7bdc7;background:#e6f5f2eb;color:#355c64;cursor:pointer}.scene-focus:focus-visible{outline:2px solid #4c7d8d;outline-offset:3px}.scene-tools~.hint{padding:0 12px}@media(max-width:850px){.scene-tools{top:10px;right:10px}.world .hint{padding:0 12px}}
/* Release contrast pass: retain the macaron palette with legible helper text. */
#login-note{color:#526870}.hint{color:#4f6b76}label{color:#526870}
.scene-tools[hidden]{display:none}
#loading{background:#edf3f866}#loading:not(.failed) p{padding:10px 16px;border-radius:12px;background:#ffffffeb;color:#36545f}
