diff mrjunejune/src/public/component-sandbox.css @ 273:e02e2036ef84 default tip

add Layer 2 JRPG component system Add reusable content and window modals, an isolated component sandbox, shared cyberpunk scroll areas, production-safe cache freshness, and server-rendered JRPG panel state. Co-authored-by: Copilot <[email protected]>
author MrJuneJune <me@mrjunejune.com>
date Sat, 08 Aug 2026 02:08:08 -0700
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mrjunejune/src/public/component-sandbox.css	Sat Aug 08 02:08:08 2026 -0700
@@ -0,0 +1,203 @@
+@font-face {
+  font-family: "Pixel Mplus";
+  src: url("/public/fonts/pixel-mplus-12-regular.ttf") format("truetype");
+  font-display: block;
+}
+
+:root {
+  --zenbu-sys-font-family-ui: "Pixel Mplus";
+  --zenbu-sys-font-family-content: "Pixel Mplus";
+  --zenbu-sys-font-family-code: "Pixel Mplus";
+  --zenbu-sys-type-caption-family: "Pixel Mplus";
+  --zenbu-sys-type-label-family: "Pixel Mplus";
+  --zenbu-sys-type-body-family: "Pixel Mplus";
+  --zenbu-sys-type-body-large-family: "Pixel Mplus";
+  --zenbu-sys-type-subtitle-family: "Pixel Mplus";
+  --zenbu-sys-type-title-family: "Pixel Mplus";
+  --zenbu-sys-type-page-title-family: "Pixel Mplus";
+  --zenbu-sys-type-reading-family: "Pixel Mplus";
+  --zenbu-sys-type-code-family: "Pixel Mplus";
+}
+
+body {
+  box-sizing: border-box;
+  min-height: 100dvh;
+  margin: 0;
+  padding: var(--zenbu-sys-padding-xl);
+  background: var(--zenbu-sys-color-surface-page);
+  color: var(--zenbu-sys-color-text-primary);
+  font-family: var(--zenbu-sys-font-family-ui);
+}
+
+body * {
+  font-family: inherit;
+}
+
+zen-icon svg {
+  shape-rendering: crispEdges;
+  stroke-linecap: square;
+  stroke-linejoin: miter;
+}
+
+main {
+  display: grid;
+  gap: var(--zenbu-sys-space-container);
+  width: min(100%, 64rem);
+  margin-inline: auto;
+}
+
+.sandbox-heading {
+  display: grid;
+  gap: var(--zenbu-sys-space-control);
+}
+
+.sandbox-heading h1 {
+  color: var(--zenbu-sys-color-action-primary-background);
+  text-shadow:
+    var(--zenbu-sys-space-icon-label)
+    var(--zenbu-sys-space-icon-label)
+    0
+    var(--zenbu-sys-color-danger-foreground);
+}
+
+.sandbox-heading :where(h1, p),
+.sandbox-card :where(h2, p),
+.sandbox-pane :where(h3, p) {
+  margin: 0;
+}
+
+.sandbox-heading p,
+.sandbox-card > p,
+.sandbox-muted {
+  color: var(--zenbu-sys-color-text-secondary);
+}
+
+.sandbox-grid {
+  display: grid;
+  grid-template-columns: repeat(2, minmax(0, 1fr));
+  gap: var(--zenbu-sys-space-group);
+}
+
+.sandbox-layers {
+  display: grid;
+  grid-template-columns: repeat(3, minmax(0, 1fr));
+  gap: var(--zenbu-sys-space-control);
+  margin: 0;
+}
+
+.sandbox-layers > div {
+  display: grid;
+  gap: var(--zenbu-sys-space-icon-label);
+  padding: var(--zenbu-sys-padding-md);
+  border: var(--zenbu-sys-stroke-width) solid
+    var(--zenbu-sys-color-border-default);
+  border-radius: var(--zenbu-sys-radius-control);
+  background: var(--zenbu-sys-color-surface-sunken);
+}
+
+.sandbox-layers > div:nth-child(1) dt {
+  color: var(--zenbu-sys-color-warning-foreground);
+}
+
+.sandbox-layers > div:nth-child(2) dt {
+  color: var(--zenbu-sys-color-info-foreground);
+}
+
+.sandbox-layers > div:nth-child(3) dt {
+  color: var(--zenbu-sys-color-action-primary-background);
+}
+
+.sandbox-layers dt {
+  color: var(--zenbu-sys-color-text-primary);
+  font-weight: var(--zenbu-sys-font-weight-strong);
+}
+
+.sandbox-layers dd {
+  margin: 0;
+  color: var(--zenbu-sys-color-text-secondary);
+  font-size: var(--zenbu-sys-font-size-sm);
+}
+
+.sandbox-rule {
+  padding: var(--zenbu-sys-padding-md);
+  border-inline-start: var(--zenbu-sys-stroke-width-emphasis) solid
+    var(--zenbu-sys-color-action-primary-border);
+  background: var(--zenbu-sys-color-surface-sunken);
+  color: var(--zenbu-sys-color-text-secondary);
+}
+
+.sandbox-card {
+  display: grid;
+  align-content: start;
+  gap: var(--zenbu-sys-space-group);
+  padding: var(--zenbu-sys-padding-xl);
+  border: var(--zenbu-sys-stroke-width) solid
+    var(--zenbu-sys-color-border-default);
+  border-radius: var(--zenbu-sys-radius-container);
+  background: var(--zenbu-sys-color-surface-raised);
+  box-shadow:
+    var(--zenbu-sys-space-control)
+    var(--zenbu-sys-space-control)
+    0
+    var(--zenbu-sys-color-danger-foreground);
+}
+
+.sandbox-card > h2 {
+  color: var(--zenbu-sys-color-action-primary-background);
+}
+
+.sandbox-list {
+  display: grid;
+  gap: var(--zenbu-sys-space-control);
+  margin: 0;
+  padding: 0;
+  list-style: none;
+}
+
+.sandbox-list li {
+  padding-bottom: var(--zenbu-sys-padding-sm);
+  border-bottom: var(--zenbu-sys-stroke-width) solid
+    var(--zenbu-sys-color-border-subtle);
+}
+
+.sandbox-audit {
+  display: grid;
+  gap: var(--zenbu-sys-space-control);
+  margin: var(--zenbu-sys-space-group) 0 0;
+  padding: 0;
+  list-style: none;
+}
+
+.sandbox-audit li {
+  display: grid;
+  grid-template-columns: auto minmax(0, 1fr);
+  gap: var(--zenbu-sys-space-control);
+  padding-block: var(--zenbu-sys-padding-sm);
+  border-top: var(--zenbu-sys-stroke-width) solid
+    var(--zenbu-sys-color-border-subtle);
+  color: var(--zenbu-sys-color-text-secondary);
+}
+
+.sandbox-audit strong {
+  color: var(--zenbu-sys-color-warning-foreground);
+}
+
+.sandbox-pane {
+  display: grid;
+  align-content: start;
+  gap: var(--zenbu-sys-space-control);
+}
+
+@media (max-width: 42rem) {
+  body {
+    padding: var(--zenbu-sys-padding-lg);
+  }
+
+  .sandbox-grid {
+    grid-template-columns: minmax(0, 1fr);
+  }
+
+  .sandbox-layers {
+    grid-template-columns: minmax(0, 1fr);
+  }
+}