comparison mrjunejune/src/jrpg/jrpg.css @ 263:ee04e4e69fed

Add functional JRPG frame and tools Add full-screen background_2 apertures, functional frame chrome, card-driven details, dual-window tools, live conversion workflows, and bounded cleanup for generated downloads. Co-authored-by: Copilot <[email protected]>
author MrJuneJune <mrjunejune@users.noreply.github.com>
date Thu, 06 Aug 2026 11:31:30 -0700
parents 0f45474c1b1a
children 04fee26ecce0
comparison
equal deleted inserted replaced
262:0f45474c1b1a 263:ee04e4e69fed
4 font-display: block; 4 font-display: block;
5 } 5 }
6 6
7 :root { 7 :root {
8 --mjj-jrpg-art: url("/public/jrpg/bar-ink.webp"); 8 --mjj-jrpg-art: url("/public/jrpg/bar-ink.webp");
9 --mjj-jrpg-frame-art: url("/public/jrpg/background-frame-2.webp");
9 --mjj-jrpg-canvas: var(--zenbu-sys-color-surface-page); 10 --mjj-jrpg-canvas: var(--zenbu-sys-color-surface-page);
10 --mjj-jrpg-surface: var(--zenbu-sys-color-surface-default); 11 --mjj-jrpg-surface: var(--zenbu-sys-color-surface-default);
11 --mjj-jrpg-surface-raised: var(--zenbu-sys-color-surface-raised); 12 --mjj-jrpg-surface-raised: var(--zenbu-sys-color-surface-raised);
12 --mjj-jrpg-surface-sunken: var(--zenbu-sys-color-surface-sunken); 13 --mjj-jrpg-surface-sunken: var(--zenbu-sys-color-surface-sunken);
13 --mjj-jrpg-text: var(--zenbu-sys-color-text-primary); 14 --mjj-jrpg-text: var(--zenbu-sys-color-text-primary);
53 54
54 .jrpg-page * { 55 .jrpg-page * {
55 font-family: inherit; 56 font-family: inherit;
56 } 57 }
57 58
59 .jrpg-page zen-icon svg {
60 shape-rendering: crispEdges;
61 stroke-linecap: square;
62 stroke-linejoin: miter;
63 }
64
58 .jrpg-main { 65 .jrpg-main {
59 box-sizing: border-box; 66 box-sizing: border-box;
60 width: 100%; 67 width: 100%;
61 max-width: none; 68 max-width: none;
62 height: 100dvh; 69 height: 100dvh;
63 min-height: 0; 70 min-height: 0;
64 padding: 0; 71 padding: 0;
65 } 72 }
66 73
67 .jrpg-shell { 74 .jrpg-shell {
75 --mjj-frame-scene-inline: 3.2%;
76 --mjj-frame-scene-block: 9.4%;
77 --mjj-frame-scene-width: 54.8%;
78 --mjj-frame-scene-height: 57%;
79 --mjj-frame-utility-inline: 60.4%;
80 --mjj-frame-utility-block: 9.4%;
81 --mjj-frame-utility-width: 36.5%;
82 --mjj-frame-utility-height: 57%;
83 --mjj-frame-composer-inline: 3.2%;
84 --mjj-frame-composer-block: 72%;
85 --mjj-frame-composer-width: 68.2%;
86 --mjj-frame-composer-height: 17.2%;
87 --mjj-frame-menu-inline: 73.4%;
88 --mjj-frame-menu-block: 72%;
89 --mjj-frame-menu-width: 23.4%;
90 --mjj-frame-menu-height: 17.2%;
91 --mjj-frame-brand-inline: 5.4%;
92 --mjj-frame-brand-block: 2.2%;
93 --mjj-frame-brand-width: 7.8%;
94 --mjj-frame-brand-height: 5.2%;
95 --mjj-frame-controls-inline: 86.6%;
96 --mjj-frame-controls-block: 3.4%;
97 --mjj-frame-controls-width: 11.5%;
98 --mjj-frame-controls-height: 10%;
99 --mjj-frame-controls-gap: 7%;
100 --mjj-frame-telemetry-inline: 8.5%;
101 --mjj-frame-telemetry-block: 92.8%;
102 --mjj-frame-telemetry-width: 75%;
103 --mjj-frame-telemetry-height: 4.8%;
104 --mjj-frame-temp-value-inline: 12%;
105 --mjj-frame-user-value-inline: 32.5%;
106 --mjj-frame-status-value-inline: 60.5%;
107 --mjj-frame-uptime-value-inline: 88%;
108 --mjj-frame-dog-bar-block-end: 4%;
109 --mjj-frame-dog-bar-height: 31%;
68 box-sizing: border-box; 110 box-sizing: border-box;
69 display: block; 111 display: grid;
112 place-items: center;
70 width: 100%; 113 width: 100%;
71 max-width: none; 114 max-width: none;
72 height: 100%; 115 height: 100%;
73 margin: 0; 116 margin: 0;
74 padding: var(--zenbu-sys-padding-sm); 117 padding: 0;
75 border: var(--zenbu-sys-stroke-width-emphasis) solid var(--mjj-jrpg-frame); 118 border: 0;
76 background: var(--mjj-jrpg-canvas); 119 background: var(--mjj-jrpg-canvas);
77 box-shadow: 120 box-shadow: none;
78 inset 0 0 0 var(--zenbu-sys-stroke-width)
79 var(--mjj-jrpg-frame-soft);
80 } 121 }
81 122
82 .jrpg-workspace { 123 .jrpg-workspace {
83 display: grid; 124 position: relative;
84 grid-template: 125 display: block;
85 "scene utility" minmax(0, 1fr) 126 width: 100%;
86 "composer menu" minmax(9rem, auto) /
87 minmax(0, 1.22fr) minmax(19rem, 0.95fr);
88 gap: var(--zenbu-sys-space-group);
89 height: 100%; 127 height: 100%;
128 max-height: none;
129 aspect-ratio: auto;
90 min-height: 0; 130 min-height: 0;
131 background-image: var(--mjj-jrpg-frame-art);
132 background-position: center;
133 background-repeat: no-repeat;
134 background-size: 100% 100%;
135 image-rendering: pixelated;
136 }
137
138 .jrpg-workspace > .jrpg-brand {
139 position: absolute;
140 z-index: 4;
141 inset:
142 var(--mjj-frame-brand-block)
143 auto
144 auto
145 var(--mjj-frame-brand-inline);
146 display: grid;
147 place-items: center;
148 width: var(--mjj-frame-brand-width);
149 height: var(--mjj-frame-brand-height);
150 margin: 0;
151 padding: 0;
152 border: 0;
153 background: var(--mjj-jrpg-canvas);
154 box-shadow: none;
155 text-align: center;
156 }
157
158 .jrpg-workspace > .jrpg-brand header {
159 position: relative;
160 z-index: 1;
161 }
162
163 .jrpg-frame-controls {
164 position: absolute;
165 z-index: 5;
166 inset:
167 var(--mjj-frame-controls-block)
168 auto
169 auto
170 var(--mjj-frame-controls-inline);
171 display: grid;
172 grid-template-columns: repeat(3, minmax(0, 1fr));
173 gap: var(--mjj-frame-controls-gap);
174 width: var(--mjj-frame-controls-width);
175 height: var(--mjj-frame-controls-height);
176 margin: 0;
177 }
178
179 .jrpg-frame-controls zen-button,
180 .jrpg-frame-controls :where(button, a) {
181 width: 100%;
182 height: 100%;
183 }
184
185 .jrpg-frame-controls :where(button, a) {
186 padding: 0;
187 border: 0;
188 border-radius: 0;
189 background: transparent;
190 color: transparent;
191 cursor: pointer;
192 }
193
194 .jrpg-frame-controls zen-icon {
195 opacity: 0;
196 }
197
198 .jrpg-frame-telemetry {
199 position: absolute;
200 z-index: 4;
201 inset:
202 var(--mjj-frame-telemetry-block)
203 auto
204 auto
205 var(--mjj-frame-telemetry-inline);
206 display: block;
207 width: var(--mjj-frame-telemetry-width);
208 height: var(--mjj-frame-telemetry-height);
209 margin: 0;
210 padding: 0;
211 color: var(--mjj-jrpg-primary);
212 font-size: clamp(
213 var(--zenbu-sys-font-size-xs),
214 1vw,
215 var(--zenbu-sys-font-size-sm)
216 );
217 }
218
219 .jrpg-frame-telemetry > * {
220 position: absolute;
221 top: 50%;
222 padding-inline: var(--zenbu-sys-padding-md);
223 background: var(--mjj-jrpg-canvas);
224 transform: translate(-50%, -50%);
225 white-space: nowrap;
226 }
227
228 .jrpg-frame-telemetry > :nth-child(1) {
229 left: var(--mjj-frame-temp-value-inline);
230 }
231
232 .jrpg-frame-telemetry > :nth-child(2) {
233 left: var(--mjj-frame-user-value-inline);
234 padding-inline: var(--zenbu-sys-padding-xl);
235 }
236
237 .jrpg-frame-telemetry > :nth-child(3) {
238 left: var(--mjj-frame-status-value-inline);
239 padding-inline: var(--zenbu-sys-padding-xl);
240 }
241
242 .jrpg-frame-telemetry > :nth-child(4) {
243 left: var(--mjj-frame-uptime-value-inline);
244 }
245
246 .jrpg-frame-telemetry [data-frame-network][data-state="offline"] {
247 color: var(--mjj-jrpg-accent);
248 }
249
250 .jrpg-frame-controls :where(button, a):focus-visible {
251 outline-color: var(--mjj-jrpg-focus);
252 }
253
254 .jrpg-shell[data-minimized="true"] .jrpg-workspace > :is(
255 .jrpg-scene,
256 .jrpg-utility,
257 mjj-jrpg-composer,
258 mjj-jrpg-menu
259 ) {
260 visibility: hidden;
261 }
262
263 .jrpg-workspace > .jrpg-scene,
264 .jrpg-workspace > .jrpg-utility,
265 .jrpg-workspace > mjj-jrpg-composer,
266 .jrpg-workspace > mjj-jrpg-menu {
267 position: absolute;
268 margin: 0;
269 border: 0;
270 border-radius: 0;
271 box-shadow: none;
272 }
273
274 .jrpg-workspace > .jrpg-scene {
275 inset:
276 var(--mjj-frame-scene-block)
277 auto
278 auto
279 var(--mjj-frame-scene-inline);
280 width: var(--mjj-frame-scene-width);
281 height: var(--mjj-frame-scene-height);
282 }
283
284 .jrpg-workspace > .jrpg-utility {
285 inset:
286 var(--mjj-frame-utility-block)
287 auto
288 auto
289 var(--mjj-frame-utility-inline);
290 width: var(--mjj-frame-utility-width);
291 height: var(--mjj-frame-utility-height);
292 }
293
294 .jrpg-workspace > mjj-jrpg-composer {
295 inset:
296 var(--mjj-frame-composer-block)
297 auto
298 auto
299 var(--mjj-frame-composer-inline);
300 width: var(--mjj-frame-composer-width);
301 height: var(--mjj-frame-composer-height);
302 }
303
304 .jrpg-workspace > mjj-jrpg-menu {
305 inset:
306 var(--mjj-frame-menu-block)
307 auto
308 auto
309 var(--mjj-frame-menu-inline);
310 width: var(--mjj-frame-menu-width);
311 height: var(--mjj-frame-menu-height);
91 } 312 }
92 313
93 .jrpg-scene, 314 .jrpg-scene,
94 .jrpg-utility, 315 .jrpg-utility,
95 mjj-jrpg-composer, 316 mjj-jrpg-composer,
100 border-radius: 0; 321 border-radius: 0;
101 } 322 }
102 323
103 .jrpg-scene { 324 .jrpg-scene {
104 grid-area: scene; 325 grid-area: scene;
105 display: grid; 326 position: relative;
106 grid-template-columns: minmax(8rem, 0.38fr) minmax(15rem, 0.92fr); 327 display: grid;
328 grid-template-columns: minmax(5rem, 0.38fr) minmax(0, 0.92fr);
107 align-items: end; 329 align-items: end;
108 gap: var(--zenbu-sys-space-group); 330 gap: var(--zenbu-sys-space-control);
109 min-height: 0; 331 min-height: 0;
110 padding: var(--zenbu-sys-padding-lg); 332 padding: var(--zenbu-sys-padding-md);
111 overflow: hidden; 333 overflow: hidden;
112 background-image: 334 background-image:
113 linear-gradient( 335 linear-gradient(
114 to top, 336 to top,
115 color-mix( 337 color-mix(
122 var(--mjj-jrpg-art); 344 var(--mjj-jrpg-art);
123 background-position: center; 345 background-position: center;
124 background-size: cover; 346 background-size: cover;
125 } 347 }
126 348
349 .jrpg-scene::before {
350 position: absolute;
351 z-index: 0;
352 inset: auto 0 var(--mjj-frame-dog-bar-block-end);
353 height: var(--mjj-frame-dog-bar-height);
354 background-image: var(--mjj-jrpg-art);
355 background-position: center;
356 background-repeat: no-repeat;
357 background-size: 100% 100%;
358 content: "";
359 image-rendering: pixelated;
360 pointer-events: none;
361 }
362
127 mjj-jrpg-character { 363 mjj-jrpg-character {
364 position: relative;
365 z-index: 2;
128 display: block; 366 display: block;
129 align-self: end; 367 align-self: end;
130 min-width: 0; 368 min-width: 0;
131 filter: drop-shadow( 369 filter: drop-shadow(
132 var(--zenbu-sys-space-related) 370 var(--zenbu-sys-space-related)
154 50% { transform: translateY(calc(var(--zenbu-sys-space-related) * -1)); } 392 50% { transform: translateY(calc(var(--zenbu-sys-space-related) * -1)); }
155 } 393 }
156 394
157 mjj-jrpg-chat { 395 mjj-jrpg-chat {
158 position: relative; 396 position: relative;
397 z-index: 1;
159 display: grid; 398 display: grid;
160 grid-template-rows: auto minmax(0, 1fr) auto; 399 grid-template-rows: auto minmax(0, 1fr) auto;
161 align-self: stretch; 400 align-self: stretch;
162 min-height: 0; 401 min-height: 0;
163 padding: var(--zenbu-sys-padding-md); 402 padding: var(--zenbu-sys-padding-md);
178 } 417 }
179 418
180 .jrpg-preview-kicker, 419 .jrpg-preview-kicker,
181 .jrpg-menu-label, 420 .jrpg-menu-label,
182 .jrpg-brand > p, 421 .jrpg-brand > p,
183 .jrpg-dialog-heading p, 422 .jrpg-dialog-heading p {
184 .jrpg-preview-stats dt {
185 color: var(--mjj-jrpg-text-muted); 423 color: var(--mjj-jrpg-text-muted);
186 font-size: var(--zenbu-sys-font-size-xs); 424 font-size: var(--zenbu-sys-font-size-xs);
187 letter-spacing: 0.08em; 425 letter-spacing: 0.08em;
188 } 426 }
189 427
315 } 553 }
316 554
317 .jrpg-utility { 555 .jrpg-utility {
318 grid-area: utility; 556 grid-area: utility;
319 display: grid; 557 display: grid;
320 grid-template-rows: auto minmax(0, 1fr); 558 grid-template-rows: minmax(0, 1fr);
321 gap: var(--zenbu-sys-space-group); 559 gap: 0;
322 padding: var(--zenbu-sys-padding-md); 560 padding: var(--zenbu-sys-padding-md);
323 background: var(--mjj-jrpg-surface); 561 background: var(--mjj-jrpg-surface);
324 } 562 }
325 563
326 .jrpg-brand { 564 .jrpg-brand {
361 mjj-jrpg-preview { 599 mjj-jrpg-preview {
362 display: block; 600 display: block;
363 min-height: 0; 601 min-height: 0;
364 } 602 }
365 603
604 .jrpg-workspace > .jrpg-brand header h1 {
605 font-size: clamp(
606 var(--zenbu-sys-font-size-xs),
607 0.95vw,
608 var(--zenbu-sys-font-size-sm)
609 );
610 line-height: 1;
611 white-space: nowrap;
612 }
613
366 .jrpg-preview-panel { 614 .jrpg-preview-panel {
367 display: grid; 615 display: grid;
368 grid-template-rows: auto auto auto minmax(0, 1fr) auto auto; 616 grid-template-rows: auto auto auto minmax(0, 1fr) auto;
369 gap: var(--zenbu-sys-space-group); 617 gap: var(--zenbu-sys-space-group);
370 height: 100%; 618 height: 100%;
371 padding: var(--zenbu-sys-padding-lg); 619 padding: var(--zenbu-sys-padding-lg);
372 background: 620 background:
373 linear-gradient( 621 linear-gradient(
425 .jrpg-work-showcase small { 673 .jrpg-work-showcase small {
426 color: var(--mjj-jrpg-text-muted); 674 color: var(--mjj-jrpg-text-muted);
427 font-size: var(--zenbu-sys-font-size-xs); 675 font-size: var(--zenbu-sys-font-size-xs);
428 } 676 }
429 677
430 .jrpg-preview-stats { 678 .jrpg-work-showcase a:has(> zen-icon) {
431 display: grid; 679 grid-template-columns: auto minmax(0, 1fr);
432 grid-template-columns: repeat(2, 1fr); 680 }
433 gap: var(--zenbu-sys-space-control); 681
434 margin: 0; 682 .jrpg-work-showcase a > zen-icon {
435 } 683 grid-row: 1 / 3;
436 684 align-self: center;
437 .jrpg-preview-stats div { 685 color: var(--mjj-jrpg-highlight);
438 padding: var(--zenbu-sys-padding-sm);
439 border: var(--zenbu-sys-stroke-width) solid var(--mjj-jrpg-frame-soft);
440 background: var(--mjj-jrpg-panel);
441 }
442
443 .jrpg-preview-stats dd {
444 color: var(--mjj-jrpg-success);
445 margin: var(--zenbu-sys-space-icon-label) 0 0;
446 } 686 }
447 687
448 .jrpg-preview-dialog > zen-button > button, 688 .jrpg-preview-dialog > zen-button > button,
449 .jrpg-preview-dialog dialog zen-button > :where(button, a) { 689 .jrpg-preview-dialog dialog zen-button > :where(button, a) {
450 width: 100%; 690 width: 100%;
515 755
516 .jrpg-dialog-heading zen-button { 756 .jrpg-dialog-heading zen-button {
517 width: auto; 757 width: auto;
518 } 758 }
519 759
520 .jrpg-dialog-heading zen-button > button { 760 .jrpg-dialog-heading-actions {
521 width: var(--zenbu-control-height); 761 display: flex;
762 align-items: center;
763 gap: var(--zenbu-sys-space-control);
764 }
765
766 .jrpg-dialog-heading zen-button > :where(button, a) {
767 width: auto;
522 min-width: var(--zenbu-control-height); 768 min-width: var(--zenbu-control-height);
523 padding: 0;
524 border-color: var(--mjj-jrpg-accent); 769 border-color: var(--mjj-jrpg-accent);
525 background: var(--mjj-jrpg-surface); 770 background: var(--mjj-jrpg-surface);
526 color: var(--mjj-jrpg-text); 771 color: var(--mjj-jrpg-text);
772 }
773
774 .jrpg-dialog-heading zen-button > button {
775 width: var(--zenbu-control-height);
776 padding: 0;
527 } 777 }
528 778
529 .jrpg-preview-dialog dialog h2 { 779 .jrpg-preview-dialog dialog h2 {
530 margin-top: var(--zenbu-sys-space-content); 780 margin-top: var(--zenbu-sys-space-content);
531 } 781 }
542 792
543 .jrpg-preview-dialog dialog.jrpg-detail-dialog[open] { 793 .jrpg-preview-dialog dialog.jrpg-detail-dialog[open] {
544 display: grid; 794 display: grid;
545 grid-template-rows: auto auto minmax(0, 1fr) auto; 795 grid-template-rows: auto auto minmax(0, 1fr) auto;
546 gap: var(--zenbu-sys-space-group); 796 gap: var(--zenbu-sys-space-group);
797 }
798
799 .jrpg-preview-dialog dialog.jrpg-detail-dialog[data-detail-mode="tools"] {
800 width: calc(100vw - var(--zenbu-sys-space-content));
801 max-width: none;
802 height: calc(100dvh - var(--zenbu-sys-space-content));
803 max-height: none;
804 padding: 0;
805 border: 0;
806 background: transparent;
807 box-shadow: none;
808 }
809
810 .jrpg-preview-dialog dialog.jrpg-detail-dialog[data-detail-mode="tools"][open] {
811 grid-template-rows: auto minmax(0, 1fr);
812 gap: var(--zenbu-sys-space-control);
813 }
814
815 .jrpg-detail-dialog[data-detail-mode="tools"] > h2 {
816 display: none;
817 }
818
819 .jrpg-detail-dialog[data-detail-mode="tools"] .jrpg-dialog-heading {
820 padding: var(--zenbu-sys-padding-sm);
821 border: var(--zenbu-sys-stroke-width-emphasis) solid var(--mjj-jrpg-frame);
822 background: var(--mjj-jrpg-surface-raised);
823 box-shadow:
824 inset 0 0 0 var(--zenbu-sys-stroke-width)
825 var(--mjj-jrpg-accent);
547 } 826 }
548 827
549 .jrpg-resume-dossier { 828 .jrpg-resume-dossier {
550 min-height: 0; 829 min-height: 0;
551 padding: var(--zenbu-sys-padding-lg); 830 padding: var(--zenbu-sys-padding-lg);
555 scrollbar-color: var(--mjj-jrpg-frame) transparent; 834 scrollbar-color: var(--mjj-jrpg-frame) transparent;
556 } 835 }
557 836
558 .jrpg-resume-dossier[hidden], 837 .jrpg-resume-dossier[hidden],
559 .jrpg-blog-browser[hidden], 838 .jrpg-blog-browser[hidden],
839 .jrpg-tool-browser[hidden],
840 [data-dialog-trigger-owner][hidden],
560 [data-dialog-copy][hidden], 841 [data-dialog-copy][hidden],
561 [data-blog-status][hidden], 842 [data-blog-status][hidden],
843 [data-tool-status][hidden],
562 [data-resume-status][hidden], 844 [data-resume-status][hidden],
845 [data-dialog-actions][hidden],
563 [data-resume-download][hidden] { 846 [data-resume-download][hidden] {
564 display: none; 847 display: none;
565 } 848 }
566 849
567 .jrpg-resume-dossier [data-resume-status] { 850 .jrpg-resume-dossier [data-resume-status] {
657 display: grid; 940 display: grid;
658 grid-template-columns: repeat(2, minmax(0, 1fr)); 941 grid-template-columns: repeat(2, minmax(0, 1fr));
659 gap: var(--zenbu-sys-space-control); 942 gap: var(--zenbu-sys-space-control);
660 } 943 }
661 944
662 .jrpg-blog-browser { 945 :is(.jrpg-blog-browser, .jrpg-tool-browser) {
663 display: grid; 946 display: grid;
664 grid-template-columns: minmax(12rem, 0.35fr) minmax(0, 1fr); 947 grid-template-columns: minmax(12rem, 0.35fr) minmax(0, 1fr);
665 gap: var(--zenbu-sys-space-group); 948 gap: var(--zenbu-sys-space-group);
666 min-height: 0; 949 min-height: 0;
667 overflow: hidden; 950 overflow: hidden;
668 } 951 }
669 952
670 .jrpg-blog-browser > aside, 953 :is(.jrpg-blog-browser, .jrpg-tool-browser) > aside,
671 .jrpg-blog-browser > article { 954 :is(.jrpg-blog-browser, .jrpg-tool-browser) > article {
672 min-height: 0; 955 min-height: 0;
673 padding: var(--zenbu-sys-padding-md); 956 padding: var(--zenbu-sys-padding-md);
674 overflow: auto; 957 overflow: auto;
675 border: var(--zenbu-sys-stroke-width) solid var(--mjj-jrpg-frame-soft); 958 border: var(--zenbu-sys-stroke-width) solid var(--mjj-jrpg-frame-soft);
676 background: var(--mjj-jrpg-surface-sunken); 959 background: var(--mjj-jrpg-surface-sunken);
677 scrollbar-color: var(--mjj-jrpg-frame) transparent; 960 scrollbar-color: var(--mjj-jrpg-frame) transparent;
678 } 961 }
679 962
680 .jrpg-blog-browser h3, 963 .jrpg-tool-browser {
681 .jrpg-blog-browser [data-blog-status] { 964 display: block;
965 height: 100%;
966 }
967
968 .jrpg-tool-browser > article {
969 height: 100%;
970 padding: 0;
971 overflow: hidden;
972 border: 0;
973 background: transparent;
974 }
975
976 .jrpg-tool-browser [data-tool-content],
977 .jrpg-functional-tool,
978 .jrpg-tool-panes {
979 height: 100%;
980 min-height: 0;
981 }
982
983 :is(.jrpg-blog-browser, .jrpg-tool-browser) h3,
984 .jrpg-blog-browser [data-blog-status],
985 .jrpg-tool-browser [data-tool-status] {
682 margin-top: 0; 986 margin-top: 0;
683 color: var(--mjj-jrpg-highlight); 987 color: var(--mjj-jrpg-highlight);
684 } 988 }
685 989
686 .jrpg-blog-browser [data-blog-list] { 990 :is(.jrpg-blog-browser, .jrpg-tool-browser)
991 :is([data-blog-list], [data-tool-list]) {
687 display: grid; 992 display: grid;
688 gap: var(--zenbu-sys-space-control); 993 gap: var(--zenbu-sys-space-control);
689 margin: 0; 994 margin: 0;
690 padding: 0; 995 padding: 0;
691 list-style: none; 996 list-style: none;
692 } 997 }
693 998
694 .jrpg-blog-browser [data-blog-list] zen-button, 999 :is(.jrpg-blog-browser, .jrpg-tool-browser)
695 .jrpg-blog-browser [data-blog-list] button { 1000 :is([data-blog-list], [data-tool-list]) zen-button,
1001 :is(.jrpg-blog-browser, .jrpg-tool-browser)
1002 :is([data-blog-list], [data-tool-list]) button {
696 width: 100%; 1003 width: 100%;
697 } 1004 }
698 1005
699 .jrpg-blog-browser [data-blog-list] button { 1006 :is(.jrpg-blog-browser, .jrpg-tool-browser)
1007 :is([data-blog-list], [data-tool-list]) button {
700 display: grid; 1008 display: grid;
701 justify-items: start; 1009 justify-items: start;
702 gap: var(--zenbu-sys-space-icon-label); 1010 gap: var(--zenbu-sys-space-icon-label);
703 border: var(--zenbu-sys-stroke-width) solid var(--mjj-jrpg-frame-soft); 1011 border: var(--zenbu-sys-stroke-width) solid var(--mjj-jrpg-frame-soft);
704 border-radius: 0; 1012 border-radius: 0;
706 color: var(--mjj-jrpg-primary); 1014 color: var(--mjj-jrpg-primary);
707 text-align: left; 1015 text-align: left;
708 cursor: pointer; 1016 cursor: pointer;
709 } 1017 }
710 1018
711 .jrpg-blog-browser [data-blog-list] button:hover, 1019 :is(.jrpg-blog-browser, .jrpg-tool-browser)
712 .jrpg-blog-browser [data-blog-list] button[aria-pressed="true"] { 1020 :is([data-blog-list], [data-tool-list]) button:hover,
1021 :is(.jrpg-blog-browser, .jrpg-tool-browser)
1022 :is([data-blog-list], [data-tool-list]) button[aria-pressed="true"] {
713 border-color: var(--mjj-jrpg-accent); 1023 border-color: var(--mjj-jrpg-accent);
714 background: var(--mjj-jrpg-surface-raised); 1024 background: var(--mjj-jrpg-surface-raised);
715 } 1025 }
716 1026
717 .jrpg-blog-browser [data-blog-list] small { 1027 :is(.jrpg-blog-browser, .jrpg-tool-browser)
1028 :is([data-blog-list], [data-tool-list]) small {
718 color: var(--mjj-jrpg-text-muted); 1029 color: var(--mjj-jrpg-text-muted);
719 font-size: var(--zenbu-sys-font-size-xs); 1030 font-size: var(--zenbu-sys-font-size-xs);
720 } 1031 }
721 1032
722 .jrpg-blog-browser [data-blog-content] { 1033 :is(.jrpg-blog-browser, .jrpg-tool-browser)
1034 :is([data-blog-content], [data-tool-content]) {
723 color: var(--mjj-jrpg-text); 1035 color: var(--mjj-jrpg-text);
724 line-height: var(--zenbu-sys-line-height-lg); 1036 line-height: var(--zenbu-sys-line-height-lg);
725 } 1037 }
726 1038
727 .jrpg-blog-browser [data-blog-content] :where(h1, h2, h3, h4) { 1039 :is(.jrpg-blog-browser, .jrpg-tool-browser)
1040 :is([data-blog-content], [data-tool-content])
1041 :where(h1, h2, h3, h4) {
728 color: var(--mjj-jrpg-primary); 1042 color: var(--mjj-jrpg-primary);
729 } 1043 }
730 1044
731 .jrpg-blog-browser [data-blog-content] a { 1045 :is(.jrpg-blog-browser, .jrpg-tool-browser)
1046 :is([data-blog-content], [data-tool-content]) a {
732 color: var(--mjj-jrpg-primary); 1047 color: var(--mjj-jrpg-primary);
733 text-decoration-color: var(--mjj-jrpg-accent); 1048 text-decoration-color: var(--mjj-jrpg-accent);
734 text-underline-offset: var(--zenbu-sys-space-icon-label); 1049 text-underline-offset: var(--zenbu-sys-space-icon-label);
735 } 1050 }
736 1051
737 .jrpg-blog-browser [data-blog-content] :where(img, video) { 1052 :is(.jrpg-blog-browser, .jrpg-tool-browser)
1053 :is([data-blog-content], [data-tool-content])
1054 :where(img, video) {
738 display: block; 1055 display: block;
739 max-width: 100%; 1056 max-width: 100%;
740 height: auto; 1057 height: auto;
741 margin-inline: auto; 1058 margin-inline: auto;
742 } 1059 }
743 1060
744 .jrpg-blog-browser [data-blog-content] :where(pre, blockquote) { 1061 :is(.jrpg-blog-browser, .jrpg-tool-browser)
1062 :is([data-blog-content], [data-tool-content])
1063 :where(pre, blockquote) {
745 max-width: 100%; 1064 max-width: 100%;
746 padding: var(--zenbu-sys-padding-md); 1065 padding: var(--zenbu-sys-padding-md);
747 overflow: auto; 1066 overflow: auto;
748 border-left: var(--zenbu-sys-stroke-width-emphasis) solid var(--mjj-jrpg-accent); 1067 border-left: var(--zenbu-sys-stroke-width-emphasis) solid var(--mjj-jrpg-accent);
749 background: var(--mjj-jrpg-panel); 1068 background: var(--mjj-jrpg-panel);
750 } 1069 }
751 1070
752 .jrpg-blog-browser [data-blog-content] code { 1071 :is(.jrpg-blog-browser, .jrpg-tool-browser)
1072 :is([data-blog-content], [data-tool-content]) code {
753 color: var(--mjj-jrpg-success); 1073 color: var(--mjj-jrpg-success);
754 white-space: pre-wrap; 1074 white-space: pre-wrap;
755 overflow-wrap: anywhere; 1075 overflow-wrap: anywhere;
1076 }
1077
1078 .jrpg-tool-readonly-note {
1079 padding: var(--zenbu-sys-padding-sm);
1080 border: var(--zenbu-sys-stroke-width) solid var(--mjj-jrpg-highlight);
1081 background: var(--mjj-jrpg-panel);
1082 color: var(--mjj-jrpg-highlight);
1083 }
1084
1085 .jrpg-functional-tool {
1086 min-height: 100%;
1087 }
1088
1089 .jrpg-functional-tool [hidden] {
1090 display: none;
1091 }
1092
1093 .jrpg-tool-panes {
1094 position: relative;
1095 box-sizing: border-box;
1096 display: grid;
1097 grid-template-columns:
1098 minmax(0, 1fr)
1099 calc(var(--zenbu-sys-space-container) * 2)
1100 minmax(0, 1fr);
1101 gap: var(--zenbu-sys-space-control);
1102 height: 100%;
1103 min-height: 0;
1104 padding: var(--zenbu-sys-padding-sm);
1105 }
1106
1107 .jrpg-tool-panes::before {
1108 grid-column: 2;
1109 grid-row: 1;
1110 border: var(--zenbu-sys-stroke-width-emphasis) solid var(--mjj-jrpg-frame);
1111 background-image:
1112 radial-gradient(
1113 circle at 50% var(--zenbu-sys-space-content),
1114 var(--mjj-jrpg-highlight) 0 var(--zenbu-sys-stroke-width-emphasis),
1115 var(--mjj-jrpg-frame) var(--zenbu-sys-stroke-width-emphasis)
1116 calc(var(--zenbu-sys-stroke-width-emphasis) * 2),
1117 transparent calc(var(--zenbu-sys-stroke-width-emphasis) * 2)
1118 ),
1119 radial-gradient(
1120 circle at 50% calc(100% - var(--zenbu-sys-space-content)),
1121 var(--mjj-jrpg-highlight) 0 var(--zenbu-sys-stroke-width-emphasis),
1122 var(--mjj-jrpg-frame) var(--zenbu-sys-stroke-width-emphasis)
1123 calc(var(--zenbu-sys-stroke-width-emphasis) * 2),
1124 transparent calc(var(--zenbu-sys-stroke-width-emphasis) * 2)
1125 ),
1126 linear-gradient(
1127 90deg,
1128 var(--mjj-jrpg-surface-sunken),
1129 var(--mjj-jrpg-surface-raised) 45%,
1130 var(--mjj-jrpg-frame) 50%,
1131 var(--mjj-jrpg-surface-raised) 55%,
1132 var(--mjj-jrpg-surface-sunken)
1133 ),
1134 var(--mjj-jrpg-art);
1135 background-position: center;
1136 background-size: auto, auto, auto, cover;
1137 box-shadow:
1138 inset 0 0 0 var(--zenbu-sys-stroke-width)
1139 var(--mjj-jrpg-info),
1140 0 0 var(--zenbu-sys-space-related)
1141 color-mix(in srgb, var(--mjj-jrpg-primary) 65%, transparent);
1142 content: "";
1143 image-rendering: pixelated;
1144 }
1145
1146 .jrpg-tool-window:first-of-type {
1147 grid-column: 1;
1148 grid-row: 1;
1149 }
1150
1151 .jrpg-tool-window:last-of-type {
1152 grid-column: 3;
1153 grid-row: 1;
1154 }
1155
1156 .jrpg-tool-pane {
1157 display: grid;
1158 grid-template-rows: auto minmax(0, 1fr) auto;
1159 align-content: start;
1160 gap: var(--zenbu-sys-space-control);
1161 min-width: 0;
1162 min-height: 0;
1163 padding: var(--zenbu-sys-padding-md);
1164 overflow: auto;
1165 border: var(--zenbu-sys-stroke-width) solid var(--mjj-jrpg-frame-soft);
1166 background: var(--mjj-jrpg-panel);
1167 }
1168
1169 .jrpg-tool-window {
1170 border: var(--zenbu-sys-stroke-width-emphasis) solid var(--mjj-jrpg-primary);
1171 box-shadow:
1172 inset 0 0 0 var(--zenbu-sys-stroke-width)
1173 var(--mjj-jrpg-info),
1174 0 0 0 var(--zenbu-sys-stroke-width-emphasis)
1175 var(--mjj-jrpg-accent),
1176 0 0 var(--zenbu-sys-space-control)
1177 color-mix(in srgb, var(--mjj-jrpg-info) 68%, transparent);
1178 }
1179
1180 .jrpg-tool-pane h2,
1181 .jrpg-tool-pane-heading {
1182 margin: 0;
1183 color: var(--mjj-jrpg-primary);
1184 }
1185
1186 .jrpg-tool-pane h2 {
1187 display: flex;
1188 align-items: center;
1189 gap: var(--zenbu-sys-space-icon-label);
1190 }
1191
1192 .jrpg-tool-pane h2 zen-icon {
1193 color: var(--mjj-jrpg-highlight);
1194 }
1195
1196 .jrpg-tool-pane-heading {
1197 display: flex;
1198 align-items: baseline;
1199 justify-content: space-between;
1200 gap: var(--zenbu-sys-space-control);
1201 }
1202
1203 .jrpg-tool-pane-heading h2 {
1204 margin: 0;
1205 }
1206
1207 .jrpg-functional-tool zen-field[appearance="plain"] {
1208 display: grid;
1209 grid-template-rows: auto minmax(0, 1fr);
1210 gap: var(--zenbu-sys-space-icon-label);
1211 min-height: 0;
1212 }
1213
1214 .jrpg-functional-tool :where(input, textarea) {
1215 box-sizing: border-box;
1216 width: 100%;
1217 min-height: var(--zenbu-control-height);
1218 padding:
1219 var(--zenbu-control-padding-block)
1220 var(--zenbu-control-padding-inline);
1221 border: var(--zenbu-sys-stroke-width-emphasis) solid var(--mjj-jrpg-frame);
1222 border-radius: 0;
1223 background: var(--mjj-jrpg-surface-sunken);
1224 color: var(--mjj-jrpg-text);
1225 font: inherit;
1226 }
1227
1228 .jrpg-functional-tool textarea {
1229 height: 100%;
1230 min-height: 22rem;
1231 resize: vertical;
1232 }
1233
1234 .jrpg-functional-tool zen-button > :where(button, a) {
1235 width: 100%;
1236 border: var(--zenbu-sys-stroke-width-emphasis) solid var(--mjj-jrpg-frame);
1237 border-radius: 0;
1238 background: var(--mjj-jrpg-primary);
1239 color: var(--mjj-jrpg-primary-foreground);
1240 cursor: pointer;
1241 }
1242
1243 .jrpg-functional-tool zen-button > :where(button, a):hover {
1244 border-color: var(--mjj-jrpg-primary-hover);
1245 background: var(--mjj-jrpg-primary-hover);
1246 }
1247
1248 .jrpg-functional-tool button:disabled {
1249 opacity: var(--zenbu-sys-opacity-disabled);
1250 cursor: not-allowed;
1251 }
1252
1253 .jrpg-tool-actions {
1254 display: flex;
1255 gap: var(--zenbu-sys-space-control);
1256 }
1257
1258 .jrpg-tool-actions zen-button {
1259 flex: 1;
1260 }
1261
1262 .jrpg-tool-status {
1263 margin-top: 0;
1264 padding: var(--zenbu-sys-padding-sm);
1265 border-left: var(--zenbu-sys-stroke-width-emphasis) solid var(--mjj-jrpg-info);
1266 background: var(--mjj-jrpg-panel);
1267 color: var(--mjj-jrpg-text);
1268 }
1269
1270 .jrpg-tool-status[data-state="ready"] {
1271 border-left-color: var(--mjj-jrpg-success);
1272 color: var(--mjj-jrpg-success);
1273 }
1274
1275 .jrpg-tool-status[data-state="working"] {
1276 border-left-color: var(--mjj-jrpg-highlight);
1277 color: var(--mjj-jrpg-highlight);
1278 }
1279
1280 .jrpg-tool-status[data-state="error"] {
1281 border-left-color: var(--mjj-jrpg-accent);
1282 color: var(--mjj-jrpg-accent);
1283 }
1284
1285 .jrpg-markdown-output {
1286 min-height: 22rem;
1287 padding: var(--zenbu-sys-padding-md);
1288 overflow: auto;
1289 border: var(--zenbu-sys-stroke-width-emphasis) solid var(--mjj-jrpg-frame);
1290 background: var(--mjj-jrpg-surface-sunken);
1291 }
1292
1293 .jrpg-markdown-output :where(h1, h2, h3) {
1294 color: var(--mjj-jrpg-primary);
1295 }
1296
1297 .jrpg-markdown-output code {
1298 color: var(--mjj-jrpg-success);
1299 }
1300
1301 .jrpg-functional-tool :where(video, iframe) {
1302 width: 100%;
1303 min-height: 22rem;
1304 border: var(--zenbu-sys-stroke-width-emphasis) solid var(--mjj-jrpg-frame);
1305 background: var(--mjj-jrpg-canvas);
1306 }
1307
1308 .jrpg-tool-details {
1309 display: grid;
1310 grid-template-columns: repeat(2, minmax(0, 1fr));
1311 gap: var(--zenbu-sys-space-control);
1312 margin: 0;
1313 }
1314
1315 .jrpg-tool-details div {
1316 padding: var(--zenbu-sys-padding-sm);
1317 border: var(--zenbu-sys-stroke-width) solid var(--mjj-jrpg-frame-soft);
1318 }
1319
1320 .jrpg-tool-details dd {
1321 margin: var(--zenbu-sys-space-icon-label) 0 0;
1322 color: var(--mjj-jrpg-success);
1323 }
1324
1325 .jrpg-functional-tool [data-converter-download] {
1326 color: var(--mjj-jrpg-primary);
1327 text-decoration-color: var(--mjj-jrpg-accent);
756 } 1328 }
757 1329
758 mjj-jrpg-composer { 1330 mjj-jrpg-composer {
759 grid-area: composer; 1331 grid-area: composer;
760 display: block; 1332 display: block;
926 1498
927 mjj-jrpg-menu button[aria-pressed="true"] zen-icon { 1499 mjj-jrpg-menu button[aria-pressed="true"] zen-icon {
928 opacity: 1; 1500 opacity: 1;
929 } 1501 }
930 1502
931 @media (max-width: 52rem) { 1503 .jrpg-workspace > :is(
1504 .jrpg-scene,
1505 .jrpg-utility,
1506 mjj-jrpg-composer,
1507 mjj-jrpg-menu
1508 ),
1509 .jrpg-scene > mjj-jrpg-chat,
1510 .jrpg-utility > mjj-jrpg-preview > .jrpg-preview-panel {
1511 border: 0;
1512 background-color: transparent;
1513 box-shadow: none;
1514 }
1515
1516 .jrpg-workspace > .jrpg-scene {
1517 background-image: none;
1518 }
1519
1520 .jrpg-workspace > mjj-jrpg-composer,
1521 .jrpg-workspace > mjj-jrpg-menu {
1522 padding: var(--zenbu-sys-padding-sm);
1523 }
1524
1525 .jrpg-workspace > mjj-jrpg-composer textarea {
1526 min-height: 0;
1527 }
1528
1529 .jrpg-scene .jrpg-panel-heading,
1530 .jrpg-scene .jrpg-message,
1531 .jrpg-scene .jrpg-turn-navigation,
1532 .jrpg-brand,
1533 .jrpg-work-showcase a,
1534 .jrpg-preview-panel > .jrpg-preview-dialog > zen-button > button,
1535 mjj-jrpg-composer > .jrpg-composer textarea,
1536 mjj-jrpg-composer > .jrpg-composer zen-button > button,
1537 mjj-jrpg-menu nav button {
1538 border: 0;
1539 }
1540
1541 @media
1542 (max-width: 52rem),
1543 (max-height: 40rem),
1544 (min-aspect-ratio: 2 / 1) {
932 .jrpg-page { 1545 .jrpg-page {
933 overflow-y: auto; 1546 overflow-y: auto;
934 } 1547 }
935 1548
936 .jrpg-main { 1549 .jrpg-main {
943 height: auto; 1556 height: auto;
944 min-height: 100dvh; 1557 min-height: 100dvh;
945 } 1558 }
946 1559
947 .jrpg-workspace { 1560 .jrpg-workspace {
1561 display: grid;
948 grid-template: 1562 grid-template:
1563 "brand" auto
949 "scene" auto 1564 "scene" auto
950 "utility" auto 1565 "utility" auto
951 "menu" auto 1566 "menu" auto
952 "composer" auto / 1567 "composer" auto
1568 "telemetry" auto /
953 minmax(0, 1fr); 1569 minmax(0, 1fr);
1570 gap: var(--zenbu-sys-space-group);
1571 width: 100%;
1572 max-height: none;
954 height: auto; 1573 height: auto;
1574 aspect-ratio: auto;
955 min-height: 0; 1575 min-height: 0;
1576 background-size: cover;
1577 }
1578
1579 .jrpg-workspace > .jrpg-scene,
1580 .jrpg-workspace > .jrpg-utility,
1581 .jrpg-workspace > mjj-jrpg-composer,
1582 .jrpg-workspace > mjj-jrpg-menu,
1583 .jrpg-workspace > .jrpg-brand,
1584 .jrpg-workspace > .jrpg-frame-controls,
1585 .jrpg-workspace > .jrpg-frame-telemetry {
1586 position: relative;
1587 inset: auto;
1588 width: auto;
1589 height: auto;
1590 }
1591
1592 .jrpg-workspace > .jrpg-brand {
1593 grid-area: brand;
1594 justify-self: start;
1595 padding: var(--zenbu-sys-padding-sm);
1596 background: transparent;
1597 box-shadow: none;
1598 }
1599
1600 .jrpg-workspace > .jrpg-frame-controls {
1601 grid-area: brand;
1602 justify-self: end;
1603 align-self: center;
1604 display: flex;
1605 gap: var(--zenbu-sys-space-icon-label);
1606 }
1607
1608 .jrpg-frame-controls zen-button,
1609 .jrpg-frame-controls :where(button, a) {
1610 width: var(--zenbu-control-height);
1611 height: var(--zenbu-control-height);
1612 }
1613
1614 .jrpg-frame-controls :where(button, a) {
1615 background: var(--mjj-jrpg-surface-raised);
1616 color: var(--mjj-jrpg-text);
1617 }
1618
1619 .jrpg-frame-controls zen-icon {
1620 opacity: 1;
1621 }
1622
1623 .jrpg-workspace > .jrpg-frame-telemetry {
1624 grid-area: telemetry;
1625 display: grid;
1626 grid-template-columns: repeat(2, minmax(0, 1fr));
1627 gap: var(--zenbu-sys-space-control);
1628 padding: var(--zenbu-sys-padding-sm);
1629 background: var(--mjj-jrpg-surface-sunken);
1630 }
1631
1632 .jrpg-frame-telemetry > * {
1633 position: static;
1634 justify-self: start;
1635 background: transparent;
1636 transform: none;
956 } 1637 }
957 1638
958 .jrpg-scene { 1639 .jrpg-scene {
959 min-height: 34rem; 1640 min-height: 34rem;
960 } 1641 }
997 max-height: 15rem; 1678 max-height: 15rem;
998 } 1679 }
999 1680
1000 .jrpg-brand { 1681 .jrpg-brand {
1001 align-items: center; 1682 align-items: center;
1002 }
1003
1004 .jrpg-brand > p {
1005 max-width: 9rem;
1006 } 1683 }
1007 1684
1008 .jrpg-composer { 1685 .jrpg-composer {
1009 grid-template-columns: 1fr; 1686 grid-template-columns: 1fr;
1010 grid-template-rows: 1687 grid-template-rows:
1044 1721
1045 .jrpg-composer zen-button > button { 1722 .jrpg-composer zen-button > button {
1046 width: 100%; 1723 width: 100%;
1047 } 1724 }
1048 1725
1049 .jrpg-blog-browser { 1726 :is(.jrpg-blog-browser, .jrpg-tool-browser) {
1050 grid-template-columns: 1fr; 1727 grid-template-columns: 1fr;
1051 overflow: auto; 1728 overflow: auto;
1052 } 1729 }
1053 1730
1054 .jrpg-blog-browser > aside { 1731 :is(.jrpg-blog-browser, .jrpg-tool-browser) > aside {
1055 max-height: 16rem; 1732 max-height: 16rem;
1733 }
1734
1735 .jrpg-tool-panes {
1736 grid-template-columns: 1fr;
1737 grid-template-rows:
1738 minmax(24rem, auto)
1739 calc(var(--zenbu-sys-space-container) * 2)
1740 minmax(24rem, auto);
1741 overflow: auto;
1742 }
1743
1744 .jrpg-tool-panes::before {
1745 grid-column: 1;
1746 grid-row: 2;
1747 background-image:
1748 radial-gradient(
1749 circle at var(--zenbu-sys-space-content) 50%,
1750 var(--mjj-jrpg-highlight) 0 var(--zenbu-sys-stroke-width-emphasis),
1751 var(--mjj-jrpg-frame) var(--zenbu-sys-stroke-width-emphasis)
1752 calc(var(--zenbu-sys-stroke-width-emphasis) * 2),
1753 transparent calc(var(--zenbu-sys-stroke-width-emphasis) * 2)
1754 ),
1755 radial-gradient(
1756 circle at calc(100% - var(--zenbu-sys-space-content)) 50%,
1757 var(--mjj-jrpg-highlight) 0 var(--zenbu-sys-stroke-width-emphasis),
1758 var(--mjj-jrpg-frame) var(--zenbu-sys-stroke-width-emphasis)
1759 calc(var(--zenbu-sys-stroke-width-emphasis) * 2),
1760 transparent calc(var(--zenbu-sys-stroke-width-emphasis) * 2)
1761 ),
1762 linear-gradient(
1763 var(--mjj-jrpg-surface-sunken),
1764 var(--mjj-jrpg-surface-raised) 45%,
1765 var(--mjj-jrpg-frame) 50%,
1766 var(--mjj-jrpg-surface-raised) 55%,
1767 var(--mjj-jrpg-surface-sunken)
1768 ),
1769 var(--mjj-jrpg-art);
1770 }
1771
1772 .jrpg-tool-window:first-of-type {
1773 grid-column: 1;
1774 grid-row: 1;
1775 }
1776
1777 .jrpg-tool-window:last-of-type {
1778 grid-column: 1;
1779 grid-row: 3;
1780 }
1781
1782 .jrpg-tool-pane {
1783 min-height: 24rem;
1056 } 1784 }
1057 1785
1058 mjj-jrpg-menu ul { 1786 mjj-jrpg-menu ul {
1059 grid-template-columns: 1fr; 1787 grid-template-columns: 1fr;
1060 } 1788 }
1071 .jrpg-preview-dialog dialog[open] { 1799 .jrpg-preview-dialog dialog[open] {
1072 animation: none; 1800 animation: none;
1073 } 1801 }
1074 } 1802 }
1075 1803
1804 .jrpg-page,
1805 .jrpg-page * {
1806 scrollbar-color: var(--mjj-jrpg-primary) transparent;
1807 scrollbar-width: thin;
1808 }
1809
1810 .jrpg-page::-webkit-scrollbar,
1811 .jrpg-page *::-webkit-scrollbar {
1812 width: var(--zenbu-sys-space-related);
1813 height: var(--zenbu-sys-space-related);
1814 }
1815
1816 .jrpg-page::-webkit-scrollbar-track,
1817 .jrpg-page *::-webkit-scrollbar-track {
1818 background: transparent;
1819 }
1820
1821 .jrpg-page::-webkit-scrollbar-thumb,
1822 .jrpg-page *::-webkit-scrollbar-thumb {
1823 border: 0;
1824 border-radius: 0;
1825 background: var(--mjj-jrpg-primary);
1826 }
1827
1828 .jrpg-page::-webkit-scrollbar-button,
1829 .jrpg-page *::-webkit-scrollbar-button {
1830 display: none;
1831 }
1832
1076 @media (forced-colors: active) { 1833 @media (forced-colors: active) {
1077 .jrpg-scene { 1834 .jrpg-workspace,
1835 .jrpg-scene,
1836 .jrpg-scene::before {
1078 background-image: none; 1837 background-image: none;
1079 } 1838 }
1080 } 1839 }