From 9934bc4e75cedc05321e9db78428126019533bb0 Mon Sep 17 00:00:00 2001 From: John Coffey Date: Wed, 14 Oct 2026 10:46:35 -0700 Subject: [PATCH] Landing: the arcade look, to match games.jcoffey.dev MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The page before the table now matches its cabinet on the arcade floor: an ‹ Arcade bar back to games.jcoffey.dev, a neon pixel title and headings in this game's marquee color, arcade buttons for the picker and for start, and the room's glow and scanlines behind it. All of it is scoped to .landing, so the table is untouched; the rules keep their readable font. Press Start 2P (OFL) is credited in NOTICE.md. --- NOTICE.md | 7 ++ src/arcade.css | 124 ++++++++++++++++++++ src/assets/fonts/OFL-PressStart2P.txt | 93 +++++++++++++++ src/assets/fonts/PressStart2P-Regular.woff2 | Bin 0 -> 29796 bytes src/components/Landing.tsx | 5 + 5 files changed, 229 insertions(+) create mode 100644 src/arcade.css create mode 100644 src/assets/fonts/OFL-PressStart2P.txt create mode 100644 src/assets/fonts/PressStart2P-Regular.woff2 diff --git a/NOTICE.md b/NOTICE.md index c2f97ab..fc14218 100644 --- a/NOTICE.md +++ b/NOTICE.md @@ -84,3 +84,10 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. *None of the above is legal advice.* + +## The arcade font + +The headings and buttons on the landing page are set in **Press Start 2P**, +in `src/assets/fonts/`: Copyright 2012 The Press Start 2P Project Authors, +under the SIL Open Font License 1.1, whose text is beside it as +`OFL-PressStart2P.txt`. diff --git a/src/arcade.css b/src/arcade.css new file mode 100644 index 0000000..6849980 --- /dev/null +++ b/src/arcade.css @@ -0,0 +1,124 @@ +/* The arcade look for the page before the table, to match the cabinets on + games.jcoffey.dev. Everything is scoped to .landing, so the table itself + keeps its own look. --neon is this game's marquee color on the arcade floor. */ +@font-face { + font-family: "Press Start 2P"; + src: url("./assets/fonts/PressStart2P-Regular.woff2") format("woff2"); + font-display: swap; +} + +div.landing { + --neon: #4d8dff; + --pixel: "Press Start 2P", ui-monospace, monospace; + --cyan: #22e5ff; + --edge: #2a1d4d; +} +/* The room: dark, lit from above in pink and cyan, and a tube over it all. */ +div.landing::before, +div.landing::after { + content: ""; + position: fixed; + inset: 0; + pointer-events: none; +} +div.landing::before { + z-index: -1; + background: + radial-gradient(60% 40% at 50% 0%, rgba(255, 43, 214, 0.18), transparent 70%), + radial-gradient(50% 35% at 85% 15%, rgba(34, 229, 255, 0.1), transparent 70%), + #07040f; +} +div.landing::after { + z-index: 10; + background: + repeating-linear-gradient(0deg, rgba(0, 0, 0, 0.16) 0 1px, transparent 1px 3px), + radial-gradient(120% 90% at 50% 50%, transparent 62%, rgba(0, 0, 0, 0.5) 100%); +} + +/* ‹ ARCADE, back to the floor, and the credit counter. */ +div.landing .arcade-bar { + display: flex; + justify-content: space-between; + gap: 16px; + margin-bottom: 28px; + font-family: var(--pixel); + font-size: 0.62rem; + letter-spacing: 0.06em; + text-transform: uppercase; +} +div.landing .arcade-bar a { color: var(--cyan); text-decoration: none; } +div.landing .arcade-bar a:hover { color: #ffd23d; } +div.landing .arcade-bar span { color: #ff3b3b; } + +div.landing h1 { + font-family: var(--pixel); + font-weight: 400; + font-size: clamp(1.5rem, 5.5vw, 3rem); + line-height: 1.25; + margin: 0 0 12px; + color: #fff; + text-shadow: + 0 0 6px #fff, + 0 0 16px var(--neon), + 0 0 36px var(--neon), + 5px 5px 0 #24103a; + animation: arcade-flicker 7s infinite; +} +div.landing h2 { + font-family: var(--pixel); + font-weight: 400; + font-size: 0.68rem; + line-height: 1.7; + letter-spacing: 0.04em; + text-transform: uppercase; + color: var(--neon); + text-shadow: 0 0 8px color-mix(in srgb, var(--neon) 60%, transparent); +} +div.landing a { color: var(--cyan); } + +/* The pickers, as rows of arcade buttons. */ +div.landing .choose li button { + font-family: var(--pixel); + font-size: 0.55rem; + text-transform: uppercase; + border-radius: 0; + border: 2px solid var(--edge); + background: #0b0716; + color: #e9e4ff; +} +div.landing .choose li button.on { + background: #0b0716; + border-color: var(--neon); + box-shadow: 0 0 14px color-mix(in srgb, var(--neon) 55%, transparent); +} + +/* 1P START. */ +div.landing .choose .start { + font-family: var(--pixel); + font-weight: 400; + font-size: 0.85rem; + letter-spacing: 0.06em; + text-transform: uppercase; + color: #120a22; + background: var(--neon); + border-radius: 0; + padding: 14px 22px; + box-shadow: 0 0 22px color-mix(in srgb, var(--neon) 60%, transparent), inset 0 -4px 0 rgba(0, 0, 0, 0.25); +} +div.landing .choose .start::before { content: "▶ "; } +div.landing .choose .start:hover, +div.landing .choose .start:focus-visible { + box-shadow: 0 0 36px color-mix(in srgb, var(--neon) 85%, transparent), inset 0 -4px 0 rgba(0, 0, 0, 0.25); +} +div.landing .choose .start:hover::before { animation: arcade-blink 0.6s steps(1) infinite; } + +div.landing footer { border-top: 1px dashed var(--edge); } + +@keyframes arcade-blink { 50% { opacity: 0; } } +@keyframes arcade-flicker { + 0%, 18%, 22%, 25%, 53%, 57%, 100% { opacity: 1; } + 20%, 24%, 55% { opacity: 0.6; } +} +@media (prefers-reduced-motion: reduce) { + div.landing h1, .landing .choose .start:hover::before { animation: none; } +} diff --git a/src/assets/fonts/OFL-PressStart2P.txt b/src/assets/fonts/OFL-PressStart2P.txt new file mode 100644 index 0000000..22796df --- /dev/null +++ b/src/assets/fonts/OFL-PressStart2P.txt @@ -0,0 +1,93 @@ +Copyright 2012 The Press Start 2P Project Authors (cody@zone38.net), with Reserved Font Name "Press Start 2P". + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. \ No newline at end of file diff --git a/src/assets/fonts/PressStart2P-Regular.woff2 b/src/assets/fonts/PressStart2P-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..af51624209a91bbb8e11018f126ee0bd34eaa894 GIT binary patch literal 29796 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 Pn|XcLt=sH|2@VDTF89YQ literal 0 HcmV?d00001 diff --git a/src/components/Landing.tsx b/src/components/Landing.tsx index fff55ac..1c4d703 100644 --- a/src/components/Landing.tsx +++ b/src/components/Landing.tsx @@ -1,6 +1,7 @@ import { COLOURS, POWER_NAMES } from './Board' import { LAST_YEAR } from '../game/game' import { POWERS, SOLO, type Power } from '../game/map' +import '../arcade.css' /** * The page before the map. @@ -25,6 +26,10 @@ export function Landing({ }) { return (
+

Great Powers

-- 2.54.0