Emberveil sourcemobile/public/index.html
<!doctype html>
<html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover"><title>Emberveil · Mobile test</title>
<meta name="theme-color" content="#211014"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-title" content="Emberveil"><link rel="manifest" href="manifest.webmanifest"><link rel="apple-touch-icon" href="emberveil-180.png"><link rel="icon" href="emberveil-icon.svg" type="image/svg+xml">
<link rel="stylesheet" href="mobile.css?v=20261018-touch2"><script src="https://cjrtnc.leaningtech.com/4.3/loader.js" defer></script><script type="module" src="mobile.js?v=20261018-touch2"></script></head>
<body><header><strong>Emberveil</strong><span>Mobile test build</span><button id="fullscreen" type="button">Fullscreen</button></header>
<main><div id="status" role="status" aria-live="polite">A browser version of your Emberveil client. This build is still being tested.</div>
<button id="start" type="button">Load game</button>
<button id="home-shortcut" type="button" aria-expanded="false" aria-controls="home-help">Add to Home Screen</button><p id="home-help" hidden></p>
<form id="login" hidden autocomplete="on" novalidate><p id="login-help">New player? Choose a game username and password, then tap Sign in to create your account. Use your game login here, not your email.</p><label>Game username<input id="username" name="username" autocomplete="username" maxlength="40" spellcheck="false" autocapitalize="none" autocorrect="off" aria-describedby="login-help" required></label><label>Password<input id="password" name="password" type="password" autocomplete="current-password" maxlength="100" autocapitalize="none" autocorrect="off" required></label><button id="login-button" type="submit">Sign in</button></form>
<div id="viewport"><div id="surface"><div id="display"></div><div id="touch" aria-label="Game touch controls" hidden></div></div></div>
<form id="typing" hidden><input id="text" aria-label="Chat or game prompt" placeholder="Say something…" maxlength="80" autocomplete="off" autocapitalize="sentences" enterkeyhint="send" spellcheck="false"><button id="chat-send" type="submit">Send</button><button id="chat-close" type="button" aria-label="Close keyboard">×</button><span id="chat-status" role="status"></span></form>
<div id="controls" hidden><button id="left" type="button" aria-label="Turn camera left">↶</button><button id="right" type="button" aria-label="Turn camera right">↷</button><button id="closer" type="button" aria-label="Zoom in">+</button><button id="farther" type="button" aria-label="Zoom out">−</button><button id="keyboard" type="button" aria-expanded="false" aria-controls="typing">Chat</button><button id="options" type="button" aria-label="Next tap opens item options" aria-pressed="false">Options</button></div>
<p class="hint">Tap to interact · Hold for options · Drag the scene to turn · Pinch to zoom · Tap the game chat line or Chat to type. Landscape gives you more room.</p></main>
<footer>Java runtime by <a href="https://cheerpj.com/" target="_blank" rel="noopener">CheerpJ</a>. Independent Emberveil test build.</footer></body></html>