diff mrjunejune/src/jrpg/jrpg.css @ 262:0f45474c1b1a

Add cyberpunk JRPG blog browser Show the latest posts in the JRPG preview and render the full blog archive and sanitized post details in the Inspect modal. Co-authored-by: Copilot <[email protected]>
author MrJuneJune <mrjunejune@users.noreply.github.com>
date Thu, 06 Aug 2026 04:08:45 -0700
parents b401627fc49e
children ee04e4e69fed
line wrap: on
line diff
--- a/mrjunejune/src/jrpg/jrpg.css	Wed Aug 05 20:38:32 2026 -0700
+++ b/mrjunejune/src/jrpg/jrpg.css	Thu Aug 06 04:08:45 2026 -0700
@@ -534,13 +534,13 @@
   margin-bottom: var(--zenbu-sys-space-content);
 }
 
-.jrpg-preview-dialog dialog.jrpg-resume-dialog {
+.jrpg-preview-dialog dialog.jrpg-detail-dialog {
   width: min(94vw, 72rem);
   max-height: calc(100dvh - var(--zenbu-sys-space-container));
   overflow: hidden;
 }
 
-.jrpg-preview-dialog dialog.jrpg-resume-dialog[open] {
+.jrpg-preview-dialog dialog.jrpg-detail-dialog[open] {
   display: grid;
   grid-template-rows: auto auto minmax(0, 1fr) auto;
   gap: var(--zenbu-sys-space-group);
@@ -556,7 +556,9 @@
 }
 
 .jrpg-resume-dossier[hidden],
+.jrpg-blog-browser[hidden],
 [data-dialog-copy][hidden],
+[data-blog-status][hidden],
 [data-resume-status][hidden],
 [data-resume-download][hidden] {
   display: none;
@@ -657,6 +659,102 @@
   gap: var(--zenbu-sys-space-control);
 }
 
+.jrpg-blog-browser {
+  display: grid;
+  grid-template-columns: minmax(12rem, 0.35fr) minmax(0, 1fr);
+  gap: var(--zenbu-sys-space-group);
+  min-height: 0;
+  overflow: hidden;
+}
+
+.jrpg-blog-browser > aside,
+.jrpg-blog-browser > article {
+  min-height: 0;
+  padding: var(--zenbu-sys-padding-md);
+  overflow: auto;
+  border: var(--zenbu-sys-stroke-width) solid var(--mjj-jrpg-frame-soft);
+  background: var(--mjj-jrpg-surface-sunken);
+  scrollbar-color: var(--mjj-jrpg-frame) transparent;
+}
+
+.jrpg-blog-browser h3,
+.jrpg-blog-browser [data-blog-status] {
+  margin-top: 0;
+  color: var(--mjj-jrpg-highlight);
+}
+
+.jrpg-blog-browser [data-blog-list] {
+  display: grid;
+  gap: var(--zenbu-sys-space-control);
+  margin: 0;
+  padding: 0;
+  list-style: none;
+}
+
+.jrpg-blog-browser [data-blog-list] zen-button,
+.jrpg-blog-browser [data-blog-list] button {
+  width: 100%;
+}
+
+.jrpg-blog-browser [data-blog-list] button {
+  display: grid;
+  justify-items: start;
+  gap: var(--zenbu-sys-space-icon-label);
+  border: var(--zenbu-sys-stroke-width) solid var(--mjj-jrpg-frame-soft);
+  border-radius: 0;
+  background: var(--mjj-jrpg-panel);
+  color: var(--mjj-jrpg-primary);
+  text-align: left;
+  cursor: pointer;
+}
+
+.jrpg-blog-browser [data-blog-list] button:hover,
+.jrpg-blog-browser [data-blog-list] button[aria-pressed="true"] {
+  border-color: var(--mjj-jrpg-accent);
+  background: var(--mjj-jrpg-surface-raised);
+}
+
+.jrpg-blog-browser [data-blog-list] small {
+  color: var(--mjj-jrpg-text-muted);
+  font-size: var(--zenbu-sys-font-size-xs);
+}
+
+.jrpg-blog-browser [data-blog-content] {
+  color: var(--mjj-jrpg-text);
+  line-height: var(--zenbu-sys-line-height-lg);
+}
+
+.jrpg-blog-browser [data-blog-content] :where(h1, h2, h3, h4) {
+  color: var(--mjj-jrpg-primary);
+}
+
+.jrpg-blog-browser [data-blog-content] a {
+  color: var(--mjj-jrpg-primary);
+  text-decoration-color: var(--mjj-jrpg-accent);
+  text-underline-offset: var(--zenbu-sys-space-icon-label);
+}
+
+.jrpg-blog-browser [data-blog-content] :where(img, video) {
+  display: block;
+  max-width: 100%;
+  height: auto;
+  margin-inline: auto;
+}
+
+.jrpg-blog-browser [data-blog-content] :where(pre, blockquote) {
+  max-width: 100%;
+  padding: var(--zenbu-sys-padding-md);
+  overflow: auto;
+  border-left: var(--zenbu-sys-stroke-width-emphasis) solid var(--mjj-jrpg-accent);
+  background: var(--mjj-jrpg-panel);
+}
+
+.jrpg-blog-browser [data-blog-content] code {
+  color: var(--mjj-jrpg-success);
+  white-space: pre-wrap;
+  overflow-wrap: anywhere;
+}
+
 mjj-jrpg-composer {
   grid-area: composer;
   display: block;
@@ -948,6 +1046,15 @@
     width: 100%;
   }
 
+  .jrpg-blog-browser {
+    grid-template-columns: 1fr;
+    overflow: auto;
+  }
+
+  .jrpg-blog-browser > aside {
+    max-height: 16rem;
+  }
+
   mjj-jrpg-menu ul {
     grid-template-columns: 1fr;
   }