CI / Typecheck, lint, tests, e2e (push) Failing after 3m51s
- Title screen over a real-time voxel office rendered at low resolution and quantized to a rotating 32-colour palette with Bayer dithering; day part and season re-light the scene and every surface. - 16-bit UI kit: name-plate dialogs, menu cursor, inventory, XP bar, badges, NPC speech, GAME OVER with CONTINUE, hand-placed 12x12 icons, Fusion Pixel font (Latin subset preloaded). - Sections as a game: quest log (onboarding), character select (AI CEO / AI Co-Founder), inventory (features), party roster (providers), live download XP, save point (all v1.5.1 builds), FAQ as NPC dialog, credits. - Downloads and source point to the Gitea release; the download function only redirects to git.zacharyzhang.com. - Tailwind and the old components removed; unit tests for platform/downloads, rewritten e2e suite. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
145 lines
2.3 KiB
CSS
145 lines
2.3 KiB
CSS
.map {
|
|
position: relative;
|
|
display: grid;
|
|
grid-template-columns: repeat(6, 1fr);
|
|
gap: 12px;
|
|
margin: 0 0 48px;
|
|
padding: 0;
|
|
list-style: none;
|
|
}
|
|
|
|
.map::before {
|
|
content: "";
|
|
position: absolute;
|
|
top: 34px;
|
|
left: 8%;
|
|
right: 8%;
|
|
height: 6px;
|
|
background: repeating-linear-gradient(90deg, var(--ui-muted) 0 12px, transparent 12px 24px);
|
|
}
|
|
|
|
.stop {
|
|
position: relative;
|
|
display: flex;
|
|
justify-content: center;
|
|
}
|
|
|
|
.node {
|
|
display: grid;
|
|
justify-items: center;
|
|
gap: 12px;
|
|
padding: 0;
|
|
font: inherit;
|
|
color: var(--ui-muted);
|
|
background: none;
|
|
border: 0;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.flag {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 72px;
|
|
height: 72px;
|
|
color: var(--ui-text);
|
|
background: var(--ui-panel);
|
|
box-shadow:
|
|
0 -6px 0 0 var(--ui-line),
|
|
0 6px 0 0 var(--ui-line),
|
|
-6px 0 0 0 var(--ui-line),
|
|
6px 0 0 0 var(--ui-line),
|
|
6px 12px 0 0 var(--ui-drop);
|
|
}
|
|
|
|
.stop[data-state="cleared"] .flag {
|
|
color: var(--ink-void);
|
|
background: var(--ink-mint);
|
|
}
|
|
|
|
.stop[data-state="current"] .flag {
|
|
color: var(--ink-void);
|
|
background: var(--ink-gold);
|
|
box-shadow:
|
|
0 -6px 0 0 var(--ink-accent),
|
|
0 6px 0 0 var(--ink-accent),
|
|
-6px 0 0 0 var(--ink-accent),
|
|
6px 0 0 0 var(--ink-accent),
|
|
6px 12px 0 0 var(--ui-drop);
|
|
animation: hop 800ms steps(2, jump-none) infinite;
|
|
}
|
|
|
|
@keyframes hop {
|
|
50% {
|
|
transform: translateY(-6px);
|
|
}
|
|
}
|
|
|
|
.stageNo {
|
|
font-size: var(--fs-1);
|
|
line-height: 2;
|
|
color: var(--ui-select);
|
|
}
|
|
|
|
.name {
|
|
font-size: var(--fs-2);
|
|
line-height: 1;
|
|
color: var(--ui-text);
|
|
}
|
|
|
|
.stop[data-state="current"] .name::before {
|
|
content: "▶";
|
|
color: var(--ui-select);
|
|
}
|
|
|
|
.detail {
|
|
display: grid;
|
|
grid-template-columns: 3fr 2fr;
|
|
gap: 24px;
|
|
align-items: start;
|
|
}
|
|
|
|
.body {
|
|
margin: 0 0 24px;
|
|
min-height: 108px;
|
|
font-size: var(--fs-2);
|
|
line-height: 1.5;
|
|
}
|
|
|
|
@media (max-width: 960px) {
|
|
.map {
|
|
grid-template-columns: repeat(3, 1fr);
|
|
row-gap: 36px;
|
|
}
|
|
|
|
.map::before {
|
|
display: none;
|
|
}
|
|
|
|
.detail {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 720px) {
|
|
.flag {
|
|
width: 48px;
|
|
height: 48px;
|
|
}
|
|
|
|
.name {
|
|
font-size: var(--fs-1);
|
|
}
|
|
|
|
.body {
|
|
min-height: 0;
|
|
font-size: var(--fs-1);
|
|
line-height: 2;
|
|
}
|
|
}
|
|
|
|
@media (prefers-reduced-motion: reduce) {
|
|
.stop[data-state="current"] .flag {
|
|
animation: none;
|
|
}
|
|
}
|