Back to Crossfire
SOURCE / PINNED RELEASE

Made of little things.

Crossfire

Release
9614abe48623
Author-recorded commit
6f6c8299e2fb…
License
LICENSE
Author’s source reference
nostr://npub1n8ga89w8h6tvwamxusfyzexw8gjy84yxu9rxgnmk955cxtml4ujswzxydd/wss%3A%2F%2Fgit.napplet.soy%2F/n-347ab685aef

Archive hash verified: 34d5295141b419db. The source-to-build association is the author’s claim; it has not been independently rebuilt.

src/styles.css
:root{--bg:#101b22;--fg:#e6f1ed;--primary:#96f5bd;--line:color-mix(in srgb,var(--fg) 14%,var(--bg));--muted:color-mix(in srgb,var(--fg) 58%,var(--bg));font:13px/1.4 ui-monospace,SFMono-Regular,Consolas,monospace;color-scheme:dark light}*{box-sizing:border-box}html,body,#app{height:100%;margin:0;background:var(--bg);color:var(--fg)}body{user-select:none;overflow:hidden}#app{display:grid;grid-template-rows:40px minmax(0,1fr);container-type:inline-size}.toolbar{display:flex;align-items:center;gap:8px;padding:4px 12px;border-bottom:1px solid var(--line)}.signal{width:6px;height:6px;border-radius:50%;background:var(--primary)}#status{flex:1;min-width:0;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;font-size:11px}#score{font-weight:700;letter-spacing:1px;font-size:11px;white-space:nowrap}button{font:inherit;min-height:30px;border:1px solid var(--line);background:var(--bg);color:var(--fg);border-radius:5px;padding:4px 12px;cursor:pointer}button:hover{border-color:var(--primary)}button:focus-visible,canvas:focus-visible{outline:2px solid var(--primary);outline-offset:-2px}button:disabled{opacity:.5;cursor:wait}#arena{position:relative;min-height:0;overflow:hidden}canvas{width:100%;height:100%;display:block;touch-action:none}#menu{position:absolute;inset:0;display:grid;place-items:center;background:color-mix(in srgb,var(--bg) 70%,transparent)}#menu[hidden],[hidden]{display:none!important}.menu-copy{padding:12px;text-align:center;display:grid;gap:8px;width:min(280px,100%)}.crosshair{font-size:42px;color:var(--primary);line-height:1}p{margin:4px 0 12px}.menu-copy p{font-size:16px;line-height:1.6}.menu-copy strong{font-weight:500;color:var(--muted)}.primary{background:var(--primary);color:var(--bg);font-weight:750;display:flex;justify-content:space-between;align-items:center;min-height:40px}.menu-copy small{color:var(--muted);font-size:10px;margin-top:8px;line-height:1.8}#notice{position:absolute;top:20%;left:8px;right:8px;text-align:center;font-size:20px;font-weight:700;pointer-events:none;text-shadow:0 2px 5px var(--bg)}#health{position:absolute;bottom:16px;left:16px;font-size:28px;font-weight:800;pointer-events:none}#health small{font-size:11px;color:var(--muted)}#hint{position:absolute;bottom:20px;right:16px;font-size:10px;color:var(--muted)}.sticks{display:none;position:absolute;bottom:32px;inset-inline:16px;justify-content:space-between;pointer-events:none}.stick{width:88px;height:88px;border-radius:50%;border:1px solid var(--line);background:color-mix(in srgb,var(--bg) 65%,transparent);position:relative;touch-action:none;pointer-events:auto}.stick i{position:absolute;width:34px;height:34px;left:26px;top:26px;border-radius:50%;border:1px solid var(--primary);background:color-mix(in srgb,var(--primary) 25%,transparent)}.stick span{position:absolute;top:92px;left:0;right:0;text-align:center;font-size:9px;color:var(--muted)}.too-small{display:none}body.playing #menu{display:none}body:not(.playing) #health,body:not(.playing) #hint{display:none}@media(pointer:coarse){body.playing .sticks{display:flex}#health{top:8px;bottom:auto;font-size:22px}#hint{display:none}button{min-height:44px}}@media(max-width:479px){.toolbar{padding-inline:8px}#score{font-size:10px}.menu-copy p{font-size:14px}}@media(max-width:279px),(max-height:239px){body.playing .too-small{display:grid;position:absolute;inset:0;place-content:center;text-align:center;background:var(--bg);padding:8px;z-index:5}.crosshair,.menu-copy small,.menu-copy p,#score{display:none}.menu-copy{gap:4px;padding:8px}#app{grid-template-rows:32px minmax(0,1fr)}}@media(min-width:900px){#health{font-size:36px}#hint{font-size:12px}}
#app{min-width:0;overflow:hidden}.toolbar,#arena{min-width:0}.toolbar button{flex-shrink:0}canvas{min-width:0}#health{font-variant-numeric:tabular-nums}

#menu{display:flex;flex-direction:column;align-items:stretch;justify-content:start;background:var(--bg);padding:8px;gap:8px;overflow:hidden}.lobby-actions{display:flex;gap:4px;flex-wrap:wrap}.lobby-actions .primary{min-height:30px}#rooms{flex:1;min-height:0;overflow:auto;display:grid;grid-template-columns:1fr;align-content:start;gap:4px;color:var(--muted)}.room-row{display:flex;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line);color:var(--fg);min-width:0}.room-row>span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.room-row small{color:var(--muted)}.room-row button{flex-shrink:0}.lobby-help{color:var(--muted);font-size:10px}.lobby-actions #practice{margin-left:auto}@media(min-width:900px){#rooms{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));column-gap:24px}}@media(max-width:239px),(max-height:239px){.lobby-help{display:none}.lobby-actions #practice{font-size:10px;padding-inline:4px}.lobby-actions button{padding-inline:6px}.lobby-actions{flex-wrap:nowrap}#menu{gap:4px;padding:4px}}@media(pointer:coarse){.lobby-actions .primary{min-height:44px}}

.host-name{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.host-name label{color:var(--muted)}.host-name input{font:inherit;color:var(--fg);background:var(--bg);border:1px solid var(--line);border-radius:5px;padding:6px 8px;min-width:0;flex:1;user-select:text}.host-name input:focus{outline:1px solid var(--primary)}#player-name{font-size:11px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:40%}@media(max-width:479px){#player-name{display:none}}@media(max-width:239px),(max-height:239px){.host-name label{display:none}.host-name input{padding:3px 6px}}