Files
2026-08-03 16:04:46 -05:00

99 lines
4.3 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover">
<title>tilt — spike 1</title>
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><text y='13' font-size='13'>&#127954;</text></svg>">
<style>
html, body { margin:0; padding:0; height:100%; overflow:hidden; background:#0a0e14;
font-family:'SF Mono', ui-monospace, Menlo, monospace;
/* A thumb on the canvas orbits the camera — it must never scroll or zoom
the page, or fire pull-to-refresh instead. */
touch-action:none; overscroll-behavior:none; -webkit-user-select:none; user-select:none;
-webkit-tap-highlight-color:transparent; }
/* width/height are not redundant with inset:0. A canvas is a replaced
element, so `width:auto` resolves to its intrinsic (drawing buffer) size
rather than stretching between left and right — which at DPR 2 makes the
element twice the window. three.js sets these inline too; this is the
safety net if that ever regresses. */
#stage { position:absolute; inset:0; width:100%; height:100%; display:block; touch-action:none; }
#hud { position:absolute; left:14px; top:12px; color:#8fb4d4; font-size:12px;
line-height:1.5; white-space:pre; pointer-events:none; text-shadow:0 1px 2px #000; }
#boot { position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
color:#6ea8dc; letter-spacing:5px; font-size:13px; background:#0a0e14; z-index:20; }
#menu {
position:absolute; inset:0; z-index:15;
display:flex; flex-direction:column; align-items:center; justify-content:center;
background:radial-gradient(ellipse at 50% 35%, #121a26 0%, #0a0e14 70%);
color:#c8dcea; pointer-events:auto;
}
#menu[hidden] { display:none; }
#menu .brand {
letter-spacing:0.55em; font-size:13px; color:#6ea8dc; margin:0 0 10px;
text-indent:0.55em;
}
#menu h1 {
margin:0 0 8px; font-size:42px; font-weight:600; letter-spacing:0.08em;
color:#e8f2fa; text-shadow:0 2px 24px rgba(80,140,200,0.35);
}
#menu .tag {
margin:0 0 36px; font-size:12px; color:#6a849c; letter-spacing:0.12em;
}
#menu .choices {
display:flex; flex-direction:column; gap:12px; width:min(360px, 86vw);
}
#menu button.choice {
appearance:none; border:1px solid #2a4058; background:#121c28;
color:#d4e6f5; font:inherit; font-size:15px; letter-spacing:0.06em;
padding:16px 20px; text-align:left; cursor:pointer;
border-radius:4px; transition:border-color .12s, background .12s, transform .08s;
}
#menu button.choice:hover, #menu button.choice:focus-visible {
outline:none; border-color:#5a9fd4; background:#172433;
}
#menu button.choice:active { transform:scale(0.99); }
#menu button.choice .label {
display:block; font-size:16px; color:#eef6fc; margin-bottom:4px;
}
#menu button.choice .hint {
display:block; font-size:11px; color:#6a849c; letter-spacing:0.04em;
}
#menu button.choice .key {
float:right; margin-top:2px; color:#5a9fd4; font-size:12px;
border:1px solid #2a5070; border-radius:3px; padding:2px 7px;
}
#menu .foot {
margin-top:28px; font-size:11px; color:#4a6074; letter-spacing:0.08em;
}
#menu .studio-link { margin-top:14px; color:#6a849c; font-size:11px; text-decoration:none; }
#menu .studio-link:hover { color:#9fc6e5; }
</style>
</head>
<body>
<canvas id="stage"></canvas>
<div id="hud"></div>
<div id="menu" hidden>
<div class="brand">TILT</div>
<h1>HOCKEY</h1>
<p class="tag">pick a mode</p>
<div class="choices">
<button type="button" class="choice" data-mode="1v1" id="mode-1v1">
<span class="key">1</span>
<span class="label">1-on-1</span>
<span class="hint">Shootout — one shooter, one goalie, alternating ends</span>
</button>
<button type="button" class="choice" data-mode="3v3" id="mode-3v3">
<span class="key">2</span>
<span class="label">3-on-3</span>
<span class="hint">Full ice — nets, goalies, hits, pass, shoot for a score</span>
</button>
</div>
<p class="foot">Esc returns here · pad or keyboard once you&rsquo;re in</p>
<a class="studio-link" href="/animation.html">Open animation studio →</a>
</div>
<div id="boot">TILT&hellip;</div>
<script type="module" src="/src/main.js"></script>
</body>
</html>