:root{font-family:"PingFang SC","Microsoft YaHei",sans-serif;color:#36443d;background:#ece8e0;font-synthesis:none}
*{box-sizing:border-box}html,body,main{height:100%;margin:0;overflow:hidden}main{position:relative}
#scene{height:100svh;width:100vw}#scene canvas{display:block;width:100%;height:100%}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%)}
.toy-hit{position:absolute;display:block;margin:0;padding:0;background:transparent;border:0;border-radius:10px;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.toy-hit:disabled{cursor:default}.toy-hit:focus-visible{outline:2px dashed #496852;outline-offset:5px}
.journey-active .toy-hit{display:none}
.journey-back{position:absolute;right:24px;top:24px;z-index:5;border:1px solid #ded1ae;border-radius:24px;background:#fff8e7;color:#36523f;font:inherit;padding:12px 20px;cursor:pointer;box-shadow:0 4px 18px #153a2422}
.journey-back:focus-visible{outline:3px solid #bb903c;outline-offset:3px}
.status{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:#fffaf0;padding:18px 22px;border-radius:10px;max-width:90%;font-size:14px}[hidden]{display:none!important}

dialog{border:1px solid #d5c7a7;border-radius:20px;background:#fff9ed;color:#364b3c;padding:32px;width:min(580px,92vw);max-height:88svh;overflow:auto;box-shadow:0 20px 80px #12241955;text-align:center}
dialog::backdrop{background:#14291d88}dialog h2{font-size:24px;margin:8px 20px 16px}dialog p{font-size:14px;line-height:1.7;color:#61705f}
.dialog-close{position:absolute;right:12px;top:8px;border:0;background:transparent;color:#36523f;font-size:30px;cursor:pointer;padding:4px 10px}.founders{display:flex;gap:20px;justify-content:center;margin:24px 0}.founders figure{margin:0;flex:1;min-width:0}.founders img{display:block;width:100%;background:white;border-radius:10px}.founders figcaption{font-size:14px;margin-top:12px}.mini-code{display:block;width:min(258px,100%);margin:20px auto}.website-link{display:inline-block;color:#fffaf0;background:#365c47;padding:12px 22px;border-radius:24px;text-decoration:none}dialog button:focus-visible,dialog a:focus-visible{outline:3px solid #bb903c;outline-offset:3px}
@media(max-width:420px){dialog{padding:28px 16px}.founders{gap:12px}.founders figcaption{font-size:12px}}

.usage-link{position:absolute;right:18px;bottom:12px;z-index:4;font-size:12px;color:#344b3e;background:#fff9eddd;padding:6px 10px;border-radius:12px;text-decoration:none}
.usage-link:focus-visible{outline:3px solid #365c47;outline-offset:2px}.journey-active .usage-link{display:none}
.usage-document,.usage-document body{height:auto;min-height:100%;overflow:auto;background:#f5efdf}
.usage-document .usage-page{height:auto;overflow:visible;max-width:740px;margin:32px auto;padding:32px;background:#fffaf0;border-radius:20px;color:#344b3e}
.usage-page h1{font-size:28px;margin:28px 0 12px}.usage-page h2{font-size:18px;margin:28px 0 8px}.usage-page p{font-size:15px;line-height:1.85;margin:8px 0}.usage-back{color:#365c47}.usage-intro{color:#61705f}.usage-page .usage-footnote{border-top:1px solid #d5c7a7;margin-top:28px;padding-top:18px;font-size:13px;color:#61705f}
@media(max-width:600px){.usage-document .usage-page{margin:12px;padding:22px}.usage-page h1{font-size:24px}}

/* Present before any WebGL or image work; no external art needed for the loader. */
body.desk-loading{background:#29443d}body.desk-loading main{visibility:hidden}
.desk-loader{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;overflow:hidden;background:radial-gradient(ellipse at 50% 40%,#405d50 0%,#2f4b42 48%,#253e38 100%);color:#fff0cf;text-align:center;opacity:1;transition:opacity .5s ease}
.desk-loader::before{content:"";position:absolute;inset:22px;border:1px solid #d8bf8130;border-radius:4px;pointer-events:none}
.loader-content{width:min(360px,calc(100vw - 64px));padding:36px 0 60px}
.loader-emblem{width:112px;height:112px;margin:0 auto 28px;border:1px solid #ddc48d44;border-radius:50%;display:grid;place-items:center;background:#eee0b908;box-shadow:0 0 70px #dfcd9520;color:#e8cc91}
.loader-emblem svg{width:78px;height:78px;animation:loader-breathe 3s ease-in-out infinite}
.loader-brand{font-size:13px;letter-spacing:.35em;margin:0 0 14px;color:#dac69d}
.desk-loader h1{font-family:"Songti SC","Noto Serif CJK SC",serif;font-size:clamp(26px,4vw,34px);font-weight:500;letter-spacing:.09em;margin:0 0 22px}
.loader-message{font-size:14px;line-height:1.8;color:#e0e4d5;margin:0 0 26px;min-height:26px}
.loader-progress{display:flex;align-items:center;gap:16px;width:100%;margin:auto}
.loader-progress progress{appearance:none;-webkit-appearance:none;border:0;border-radius:8px;overflow:hidden;height:6px;flex:1;min-width:0;background:#f4e7c521;color:#e4c68a}
.loader-progress progress::-webkit-progress-bar{background:#f4e7c521;border-radius:8px}
.loader-progress progress::-webkit-progress-value{background:linear-gradient(90deg,#b79458,#f3d99c);border-radius:8px;transition:width .35s ease}
.loader-progress progress::-moz-progress-bar{background:#e4c68a;border-radius:8px}
#loading-percent{width:38px;text-align:right;font-size:12px;font-variant-numeric:tabular-nums;color:#e4d5b7}
#loading-retry{font:inherit;font-size:14px;margin-top:24px;padding:10px 24px;color:#fff0cf;background:transparent;border:1px solid #ddc48d80;border-radius:24px;cursor:pointer}
#loading-retry:hover{background:#fff0cf12}#loading-retry:focus-visible{outline:2px solid #f3d99c;outline-offset:4px}
.loader-footnote{position:absolute;bottom:max(28px,env(safe-area-inset-bottom));left:24px;right:24px;margin:0;color:#d2d8c5;font-size:12px;letter-spacing:.18em}
.desk-loader.is-leaving{opacity:0;pointer-events:none}
@keyframes loader-breathe{50%{transform:translateY(-3px);opacity:.7}}
@media(max-height:480px){.loader-content{padding:20px 0 40px}.loader-emblem{width:72px;height:72px;margin-bottom:12px}.loader-emblem svg{width:56px;height:56px}.loader-message{margin-bottom:16px}.loader-footnote{bottom:16px}.desk-loader h1{margin-bottom:12px}}
@media(prefers-reduced-motion:reduce){.loader-emblem svg{animation:none}.desk-loader,.loader-progress progress::-webkit-progress-value{transition:none}}
