Files
wyrm/src/app.css
T
Eric WagonerandClaude Fable 5.1 0be89a1dfe Credibility pass: the code reads as one hand's work. Dead plumbing and copies removed, four claims the source does not support corrected, and inherited kit text re-read for this game
Engine: the facade re-exports the board in one block; describe() and the
dead letters preference, void ply, the King-taken line, the identity maps
and the unused imports are gone; SIDE_NAMES is the one spelling of a side;
the drake's hunter comment no longer claims only four kinds reach the air.
Prose: no shatranj and no sitting duck, which Gygax never wrote; the Thief
statistic and the Basilisk's "one trick" are gone; lessons say what the
board shows instead of repeating the panel; a Thief's leap counts four.
Browser: one keyboard walk, in BoardArtwork; the lesson board and page share
one game and one inspected piece; the chronicle's possessive is told, not
patched by a regex; the chronicle colours and the reading layout are global
rules instead of three copies; the guide and the about panel say what the
code and the article actually do.
Server and docs: the room server states that it is the kit's, kept whole;
the skills, the deploy README and the share card name files that exist.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CCLa2PaEeCj8njQZSWGqHx
2026-10-26 22:38:00 -04:00

243 lines
3.8 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* Design tokens. Every game picks its own palette and typeface here; the
components only ever name these tokens, so a new look is this block. */
:root {
--slate: #1c2830;
--slate-deep: #121a20;
--bone: #e9e2d2;
--bone-dim: #98a4ab;
--bone-faint: #5d6b73;
--ember: #f0a53a;
--frost: #8cc8e0;
--blood: #e0655c;
--rule: rgba(233, 226, 210, 0.14);
--rule-strong: rgba(233, 226, 210, 0.32);
--font: 'Iowan Old Style', Georgia, serif;
--gutter: clamp(16px, 3vw, 40px);
}
* {
box-sizing: border-box;
}
html {
background: var(--slate-deep);
}
body {
margin: 0;
background: var(--slate-deep);
color: var(--bone);
font-family: var(--font);
font-size: 17px;
line-height: 1.55;
-webkit-font-smoothing: antialiased;
}
h1,
h2,
h3 {
font-weight: 500;
line-height: 1.15;
margin: 0;
}
p {
margin: 0;
}
button,
select,
input,
textarea {
font: inherit;
color: inherit;
}
button {
cursor: pointer;
}
button:focus-visible,
select:focus-visible,
input:focus-visible,
textarea:focus-visible,
summary:focus-visible {
outline: 2px solid var(--frost);
outline-offset: 2px;
}
select,
input[type='text'],
textarea {
background: var(--slate-deep);
border: 1px solid var(--rule-strong);
border-radius: 4px;
padding: 0.3rem 0.6rem;
max-width: 100%;
color: var(--bone);
}
button:disabled {
opacity: 0.35;
cursor: not-allowed;
}
/* An action written as a word in running text. */
.link {
background: none;
border: 0;
padding: 0;
font-size: inherit;
color: var(--frost);
text-decoration: underline;
}
/* The one button that commits a move. */
.commit {
background: var(--bone);
color: var(--slate-deep);
border: 0;
border-radius: 4px;
padding: 0.6rem 1.4rem;
font-size: 1.05rem;
font-weight: 500;
}
.commit:hover:not(:disabled) {
background: #fff;
}
.commit.small {
padding: 0.4rem 0.9rem;
font-size: 1rem;
}
/* A bordered, unemphatic button: navigation, secondary actions. */
.quiet {
background: none;
border: 1px solid var(--rule-strong);
border-radius: 4px;
padding: 0.4rem 0.9rem;
white-space: nowrap;
color: var(--bone);
text-decoration: none;
line-height: 1.55;
}
.quiet:hover:not(:disabled) {
border-color: var(--bone);
}
.muted {
color: var(--bone-dim);
}
.small {
font-size: 0.85rem;
}
.warning {
color: var(--blood);
}
.eyebrow {
font-size: 0.85rem;
letter-spacing: 0.12em;
color: var(--bone-faint);
margin-bottom: 0.2rem;
}
.visually-hidden {
position: absolute;
width: 1px;
height: 1px;
overflow: hidden;
clip: rect(0 0 0 0);
white-space: nowrap;
}
/* The × that sends a bot away or forgets a game. */
.dismiss {
background: none;
border: 0;
color: var(--bone-faint);
font-size: 1.1rem;
padding: 0 0.4rem;
line-height: 1;
}
.dismiss:hover {
color: var(--blood);
}
/* A page of reading beside the game: the rules, the guide. */
.reading {
max-width: 46rem;
margin: 0 auto;
padding: 1.5rem var(--gutter) 4rem;
}
.reading a {
color: var(--frost);
}
.reading .back {
font-size: 0.95rem;
}
.reading h1 {
font-size: 2.4rem;
font-weight: 300;
margin: 0.5rem 0 0.3rem;
}
.reading .lede {
color: var(--bone-dim);
max-width: 40em;
}
/* A lesson: the boards beside the words. */
.reading.wide {
max-width: 1280px;
}
/* The chronicle's lines, coloured by what they tell, at the table and in a lesson. */
.telling li.capture {
color: var(--ember);
}
.telling li.check,
.telling li.freeze,
.telling li.promotion {
color: var(--frost);
}
.telling li.note {
color: var(--bone-dim);
font-style: italic;
}
.telling li.end {
color: var(--blood);
}
.reading section {
padding: 1.25rem 0 0.5rem;
border-top: 1px solid var(--rule);
margin-top: 1rem;
}
.reading h2 {
font-size: 1.5rem;
margin-bottom: 0.7rem;
}
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation: none !important;
transition: none !important;
}
}