view 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 source

@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);
  }
}