*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#111612;color:#eeefe2;font-family:Inter,"PingFang SC","Microsoft YaHei",sans-serif}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible{outline:2px solid #e7d78b;outline-offset:5px}button:disabled{cursor:wait;opacity:.5}[hidden]{display:none!important}#world{display:block;width:100%;height:100%;outline:0;touch-action:none}#grain{position:fixed;inset:0;pointer-events:none;opacity:.07;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23fff' filter='url(%23n)' opacity='.4' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}#fade{position:fixed;inset:0;background:#060a08;opacity:0;transition:opacity .65s;pointer-events:none;z-index:20}#fade.black{opacity:1}.overlay{position:fixed;inset:0;z-index:5}#intro{background:linear-gradient(90deg,rgba(9,16,13,.83),rgba(9,16,13,.30) 55%,rgba(9,16,13,.20));padding:36px 5vw;display:flex;flex-direction:column;justify-content:space-between}.intro-top,.intro-bottom{display:flex;justify-content:space-between;font-size:11px;letter-spacing:.16em;color:#c2c5b5}.intro-top{padding-bottom:20px;border-bottom:1px solid #dce2c32b}.intro-content{margin-top:-30px}.eyebrow{display:flex;align-items:center;gap:10px;font-size:10px;letter-spacing:.24em;color:#b9c2aa}.eyebrow span{width:6px;height:6px;background:#d6c781;display:block}h1{font-family:"Songti SC","Noto Serif SC",serif;font-size:clamp(58px,7.8vw,112px);font-weight:400;letter-spacing:.15em;margin:22px 0 26px;line-height:1.16}h1 span{display:block}h1 small{display:block;font-family:Arial,sans-serif;font-size:11px;letter-spacing:.42em;margin-top:24px;color:#d1d3c3}.intro-copy{font-size:14px;letter-spacing:.15em;color:#d0d2c0;margin:30px 0}.start-button{width:250px;display:flex;align-items:center;justify-content:space-between;background:#e5d9a2;color:#20291e;border:0;padding:18px 22px;text-align:left;font-size:14px;letter-spacing:.12em;transition:background .2s}.start-button:hover{background:#f5e8b0}.start-button>span:last-child{font-size:24px;line-height:18px}.intro-meta{font-size:10px;color:#9baf9c;letter-spacing:.1em;margin-top:16px}.rule-card{position:absolute;right:5vw;bottom:110px;width:290px;padding:24px 0 0 24px;border-left:1px solid #c7c8ad55;text-shadow:0 1px 12px #000;background:linear-gradient(90deg,#111a1422,transparent)}.rule-kicker{font-size:10px;letter-spacing:.16em;color:#d4c78c}.rule-card p{font-size:13px;margin:23px 0;color:#e0e0d1}.rule-card b{font-size:10px;font-weight:400;margin-right:14px;color:#a9b19d}.rule-card>div{font-size:11px;color:#bcc2ad;margin-top:26px;letter-spacing:.05em}.rule-card strong{color:#eee2aa;font-weight:400}.intro-bottom{border-top:1px solid #dce2c326;padding-top:19px}#hud{position:fixed;top:0;left:0;right:0;padding:25px 32px;display:flex;align-items:center;justify-content:space-between;background:linear-gradient(#07100c88,transparent);pointer-events:none;z-index:3}.hud-brand{display:flex;gap:12px;align-items:center;font-size:13px;letter-spacing:.13em;text-shadow:0 1px 8px #000}.symbol{font-size:32px;color:#e6d99d}.hud-brand small{display:block;font-size:9px;margin-top:6px;letter-spacing:.18em;color:#bac6b9}.progress-wrap{position:absolute;left:50%;transform:translateX(-50%);text-align:center}#progress{font-size:23px;font-variant-numeric:tabular-nums;letter-spacing:.12em}#progress i{font-size:11px;font-style:normal;color:#b5c0ae}#ticks{display:flex;gap:5px;margin-top:9px}#ticks span{width:12px;height:2px;background:#aab5a74d}#ticks span.on{background:#e4d99c}.tools{display:flex;gap:10px;pointer-events:auto}.tools button{background:#0d19134d;border:1px solid #d6dcc12b;padding:9px 11px;color:#d4dbc9;font-size:11px;backdrop-filter:blur(8px)}#crosshair{position:fixed;top:50%;left:50%;width:3px;height:3px;border-radius:50%;background:#eef7d5b3;box-shadow:0 0 3px #000;pointer-events:none}#walk-hint{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);text-align:center;pointer-events:none;width:90%;text-shadow:0 2px 10px #000;z-index:2}#hint-copy{font-size:12px;letter-spacing:.09em}#walk-hint small{display:block;font-size:9px;color:#b9c2b2;margin-top:10px;letter-spacing:.1em}#message{position:fixed;left:50%;top:27%;transform:translate(-50%,-10px);text-align:center;font-size:16px;line-height:1.8;letter-spacing:.08em;opacity:0;transition:.5s;pointer-events:none;z-index:23;width:85%;text-shadow:0 2px 20px #000}#message.visible{opacity:1;transform:translate(-50%,0)}#message small{display:block;font-size:11px;color:#c5c7b5;margin-top:10px}.modal-overlay{background:#07110ccb;backdrop-filter:blur(12px);display:grid;place-items:center;text-align:center}.pause-card{max-width:440px;padding:32px}.pause-card .eyebrow{justify-content:center}.pause-card h2{font-family:"Songti SC",serif;font-size:33px;font-weight:400;letter-spacing:.08em;margin:25px 0}.pause-card p:not(.eyebrow){font-size:13px;color:#c2c9b7;line-height:2.1;margin:24px 0 32px}.pause-card .start-button{margin:0 auto}.pause-card small{display:block;color:#8fa38f;font-size:10px;line-height:2.1;margin-top:24px}.text-button{background:none;border:0;font-size:11px;margin-top:20px;color:#b0bea9;padding:6px}#error{position:fixed;inset:0;display:grid;place-items:center;padding:40px;background:#112018;z-index:50;line-height:2}#touch-controls{position:fixed;inset:0;pointer-events:none;z-index:4}#joystick{position:absolute;left:30px;bottom:56px;width:106px;height:106px;border:1px solid #e7efd343;border-radius:50%;background:#07110c22;pointer-events:auto;touch-action:none;display:grid;place-items:center}#stick{width:42px;height:42px;border-radius:50%;background:#d7e1c735}#joystick>span{position:absolute;bottom:-22px;font-size:10px;color:#c6d2b8}#turn{position:absolute;right:30px;bottom:70px;width:62px;height:62px;border-radius:50%;background:#101e1655;border:1px solid #e7efd343;pointer-events:auto;font-size:25px}#turn small{display:block;font-size:9px}body.touch #walk-hint{bottom:20px}body.touch #walk-hint small{display:none}@media(max-width:700px){#intro{padding:24px}.intro-top{font-size:9px;letter-spacing:.04em}.intro-top span:last-child{display:none}h1{font-size:66px;margin:20px 0}.intro-content{margin-top:0}.intro-copy{font-size:12px}.rule-card{right:24px;bottom:80px;width:220px;display:none}.intro-bottom{font-size:9px;letter-spacing:.03em}.intro-bottom span:last-child{display:none}#hud{padding:18px}.hud-brand{font-size:11px;gap:7px}.hud-brand small{font-size:8px}.tools{gap:5px}.tools button{padding:8px;font-size:10px}.symbol{font-size:24px}.progress-wrap{top:76px}.pause-card h2{font-size:28px}#walk-hint{bottom:25px}#hint-copy{font-size:10px}}@media(max-height:600px){#intro{padding-top:20px;padding-bottom:20px}h1{font-size:52px;margin:14px 0}h1 span{display:inline}h1 small{margin-top:12px}.intro-copy{margin:20px 0}.intro-content{margin-top:10px}.rule-card{bottom:90px}.intro-meta{margin-top:10px}.intro-top{padding-bottom:12px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}

.mobile-rule{display:none}@media(max-width:700px){.mobile-rule{display:block;color:#c3cbb8;font-size:11px;line-height:2;letter-spacing:.04em;margin-top:24px}}

/* Touch controls remain reachable around the device's safe areas. */
body{overscroll-behavior:none;-webkit-user-select:none;user-select:none}button,input,select{touch-action:manipulation}button{min-height:44px}#hud{padding-top:max(18px,env(safe-area-inset-top));padding-left:max(24px,env(safe-area-inset-left));padding-right:max(24px,env(safe-area-inset-right))}.tools button{min-width:44px}.intro-meta{margin-bottom:0}#intro-settings{margin-top:5px;padding-left:0;text-align:left}.intro-content .mobile-rule{margin-top:8px}.pause-card .text-button{margin:12px 8px 0}.settings-note{font-size:12px;line-height:1.8;color:#b0bda9;margin:0 0 20px}#settings{color:#e7ebda;background:#15221e;border:1px solid #74857266;border-radius:4px;width:min(560px,calc(100% - 28px));max-height:calc(100dvh - 28px - env(safe-area-inset-top) - env(safe-area-inset-bottom));padding:26px 30px;overflow-y:auto;overscroll-behavior:contain;box-shadow:0 30px 100px #0009}#settings::backdrop{background:#07110cb8;backdrop-filter:blur(9px)}.settings-heading{display:flex;justify-content:space-between;align-items:center;gap:12px}.settings-heading h2{font-family:'Songti SC',serif;font-size:28px;font-weight:400;margin:8px 0 16px;letter-spacing:.08em}.settings-heading .eyebrow{font-size:8px;letter-spacing:.17em;margin:0}.settings-heading button{background:none;border:1px solid #c1cfb833;width:44px;flex-shrink:0}fieldset{border:0;border-top:1px solid #b0c4a82e;padding:14px 0 20px;margin:0}legend{font-size:11px;letter-spacing:.12em;color:#dbc98d;padding-right:12px}.setting-row{display:flex;justify-content:space-between;align-items:center;gap:18px;min-height:48px;font-size:12px}.setting-row>span{flex:1}.setting-row output{color:#98ad97;font-size:10px;margin-left:5px}.setting-row input[type=range]{width:45%;height:30px;accent-color:#d7c78b}.setting-row input[type=checkbox]{width:21px;height:21px;accent-color:#d7c78b;cursor:pointer}.setting-row select{font:inherit;border:1px solid #a3b69b55;color:#e3ead8;background:#24372d;border-radius:2px;min-height:44px;padding:7px;max-width:65%}.setting-help{font-size:10px;line-height:1.9;color:#91a48f;margin:7px 0 12px}.voice-test{display:flex;align-items:center;gap:16px}.voice-test .text-button{margin:0;padding:0;color:#ddd09e}.voice-test small{font-size:9px;color:#9caf98}#settings-done{width:100%;margin:0}.setting-row input:focus-visible,.setting-row select:focus-visible{outline:2px solid #e7d78b;outline-offset:4px}#joystick{left:max(26px,env(safe-area-inset-left));bottom:calc(56px + env(safe-area-inset-bottom));width:116px;height:116px;transform:scale(var(--control-scale,1));transform-origin:bottom left;background:#101e164d;backdrop-filter:blur(3px)}#touch-actions{position:absolute;right:max(22px,env(safe-area-inset-right));bottom:calc(50px + env(safe-area-inset-bottom));transform:scale(var(--control-scale,1));transform-origin:bottom right;pointer-events:none}.action-keys,.look-keys{display:flex;gap:8px;margin-top:8px}.look-keys button,.action-keys button,#virtual-keys button{position:static;width:56px;height:56px;min-height:56px;pointer-events:auto;touch-action:none;border:1px solid #dbe7c94d;background:#10201677;border-radius:8px;font-size:20px;backdrop-filter:blur(4px);padding:7px}#touch-controls small{display:block;font-size:9px;font-weight:400;color:#bdcdb0;margin-top:2px}#virtual-keys{position:absolute;left:max(22px,env(safe-area-inset-left));bottom:calc(50px + env(safe-area-inset-bottom));display:grid;grid-template-columns:repeat(3,56px);gap:7px;transform:scale(var(--control-scale,1));transform-origin:bottom left}#virtual-keys button:first-child{grid-column:2}#virtual-keys button:nth-child(2){grid-column:1}#touch-controls button.pressed{background:#d8d49a66;border-color:#ede6b6}body.has-controls #walk-hint{bottom:calc(14px + env(safe-area-inset-bottom))}body.has-controls #walk-hint small{display:none}#broadcast{position:fixed;bottom:calc(74px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:min(540px,80%);pointer-events:none;background:#0d1b12ba;border-left:2px solid #d4c17f;padding:10px 16px;z-index:24;text-shadow:0 1px 3px #000}#broadcast>span{font-size:8px;letter-spacing:.2em;color:#d5c68d}#broadcast p{font-size:12px;line-height:1.7;margin:4px 0 0}body.has-controls #broadcast{bottom:calc(230px + env(safe-area-inset-bottom));width:min(480px,86%)}body.settings-open #broadcast{bottom:18px;z-index:100}#message{top:24%}
@media(max-width:700px){#hud{padding:12px 14px;padding-top:max(12px,env(safe-area-inset-top))}.hud-brand small{display:none}.hud-brand{font-size:10px;gap:4px}.hud-brand .symbol{font-size:22px}.tools{gap:4px}.tools button{padding:7px;font-size:10px}.progress-wrap{top:76px}#intro{padding-top:max(24px,env(safe-area-inset-top));padding-bottom:max(20px,env(safe-area-inset-bottom))}#settings{padding:23px 20px}#walk-hint{bottom:calc(18px + env(safe-area-inset-bottom))}.setting-row{gap:10px}.voice-test{gap:10px}#broadcast p{font-size:11px}#message{top:25%}.pause-card{padding:22px}.pause-card p:not(.eyebrow){margin:16px 0 24px}#joystick{left:22px}}
@media(max-width:370px){#virtual-keys{left:12px}#touch-actions{right:12px}.hud-brand{font-size:9px}.symbol{display:none}#settings{padding:18px 16px}.setting-row{font-size:11px}.setting-row output{margin-left:2px}.voice-test{display:block}.voice-test small{display:block}}
@media(max-height:550px){#intro{padding:16px 24px}.intro-content{margin-top:4px}h1{font-size:46px;margin:8px 0}h1 small{margin-top:10px}.intro-copy{margin:14px 0}.intro-meta{margin:8px 0 0}.intro-bottom{padding-top:10px}.intro-content .mobile-rule{display:none}.rule-card{display:block;right:24px;bottom:70px;width:250px;padding-left:18px}.rule-card p{margin:15px 0}.rule-card>div{margin-top:16px}.progress-wrap{top:14px}#hud{padding-top:10px}#walk-hint{bottom:10px;width:50%;line-height:1.7}#joystick{bottom:35px}#touch-actions,#virtual-keys{bottom:28px}body.has-controls #broadcast{bottom:auto;top:75px;width:48%}#message{top:30%}.pause-card{padding:18px}.pause-card h2{font-size:25px;margin:12px 0}.pause-card p:not(.eyebrow){margin:10px 0 14px}.pause-card small{margin-top:10px}.pause-card .text-button{margin-top:4px}}
@media(max-height:550px) and (max-width:600px){.rule-card{display:none}.intro-content .mobile-rule{display:block;font-size:10px;line-height:1.6;margin-top:4px}h1{font-size:36px}.intro-top{display:none}}

#touch-actions #turn{position:static;width:56px;height:56px;border-radius:8px;font-size:24px}#voice-caption{border-left:2px solid #d5c68d;background:#0b160e88;padding:10px 12px;color:#dbe3cc;font-size:11px;line-height:1.8}
