File size: 9,351 Bytes
1624300
 
 
 
 
 
9840e64
 
 
 
 
 
 
 
 
 
1624300
9840e64
c07e143
 
1624300
 
 
 
 
 
 
9840e64
 
 
 
1624300
 
 
 
 
 
9840e64
1624300
 
 
 
9840e64
1624300
 
 
 
9840e64
1624300
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2fd30a7
1624300
 
 
 
 
 
 
 
9840e64
1624300
 
 
 
9840e64
1624300
 
 
 
c07e143
 
1624300
 
c07e143
1624300
c07e143
1624300
 
 
 
 
2fd30a7
1624300
 
 
 
 
 
 
 
 
 
c07e143
1624300
 
c07e143
1624300
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
.gradio-container { max-width: 1440px !important; font-size: 16px; }
#intro p { font-size: 1.05rem; max-width: 72rem; }

/* ---------------------------------------------------------------- the map */
.bm { --bm-ink: var(--body-text-color); --bm-soft: var(--body-text-color-subdued); --bm-line: var(--border-color-primary);
      --bm-panel: var(--background-fill-secondary); --bm-card: var(--block-background-fill);
      --bm-heat: #7048e8; display: grid; grid-template-columns: minmax(0, 2.5fr) minmax(300px, 1fr);
      gap: 14px; align-items: start; color: var(--bm-ink); }
/* The map is tall: palette and tools sit beside it, under it on narrow screens. */
@media (max-width: 1100px) { .bm { grid-template-columns: 1fr; } .bm-side { order: -1; } }
.bm-side { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.bm-palette { display: flex; flex-direction: column; gap: 8px; }
.bm-group { display: flex; flex-wrap: wrap; gap: 5px; align-items: center; }
.bm-group-label { flex-basis: 100%; font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.06em;
                  color: var(--bm-soft); }
.bm .bm-tile { display: inline-flex; align-items: center; gap: 5px; padding: 4px 9px; border-radius: 999px;
           border: 1px solid var(--bm-line); background: var(--bm-card); color: var(--bm-ink); cursor: pointer;
           font: inherit; font-size: 0.86rem; line-height: 1.2; }
.bm .bm-tile:hover { border-color: var(--color-accent); box-shadow: 0 0 0 2px color-mix(in srgb, var(--color-accent) 25%, transparent); }
.bm .bm-tile.bm-used { font-weight: 600; }
.bm-ico { font-size: 1.05rem; width: 1.2em; text-align: center; }
.bm-dot { width: 9px; height: 9px; border-radius: 50%; display: inline-block; }
.bm-pal-hint { flex-basis: 100%; font-size: 0.85rem; color: var(--bm-soft); }

.bm-stage { position: relative; border: 1px solid var(--bm-line); border-radius: 12px; background: var(--bm-panel);
            padding: 6px; }
.bm-svg { width: 100%; height: auto; display: block; font-family: inherit; user-select: none; touch-action: pan-y; }
.bm-svg text { fill: var(--bm-ink); font-size: 15px; }
.bm-svg .bm-t { font-weight: 600; font-size: 15px; }
.bm-svg .bm-s { fill: var(--bm-soft); font-size: 13px; }
.bm-svg .bm-h { font-size: 17px; font-weight: 700; }
.bm-svg .bm-strong { font-weight: 700; fill: var(--bm-ink); }
.bm-svg .bm-val { fill: var(--bm-ink); font-weight: 600; }
.bm-node rect, .bm-block-bg { fill: var(--bm-card); stroke: var(--bm-line); stroke-width: 1.2; }
.bm-node, .bm-block, .bm-glyph, .bm-skip, .bm-chip-svg { cursor: pointer; }
.bm-node:hover rect, .bm-block:hover .bm-block-bg { stroke: var(--bm-soft); }
.bm-heatfill { fill: var(--bm-heat); pointer-events: none; }
.bm-frame { fill: color-mix(in srgb, var(--bm-panel) 60%, var(--bm-line)); fill-opacity: 0.35; stroke: var(--bm-line); stroke-dasharray: 6 4; }
.bm-glyph rect { stroke: var(--bm-line); stroke-width: 1; }
.bm-gR rect { fill: color-mix(in srgb, var(--bm-card) 80%, #868e96); }
.bm-gS rect { fill: color-mix(in srgb, var(--bm-card) 78%, #4dabf7); }
.bm-gX rect { fill: color-mix(in srgb, var(--bm-card) 78%, #f783ac); }
.bm-glyph text { font-size: 12.5px; font-weight: 600; }
.bm-glyph:hover rect { stroke: var(--bm-ink); }
.bm-stripe { fill: color-mix(in srgb, var(--bm-card) 70%, #868e96); stroke: none; }
.bm-chip-svg rect { fill: color-mix(in srgb, var(--bm-card) 85%, #f783ac); stroke: var(--bm-line); }
.bm-chip-svg.bm-special rect { fill: var(--bm-panel); stroke-dasharray: 3 2; }
.bm-chip-svg text { font-size: 12px; }
.bm-arrow { stroke: var(--bm-soft); stroke-width: 1.4; fill: none; }
.bm-headpath { fill: var(--bm-soft); }
.bm-after { stroke-dasharray: 5 4; }
.bm-skipline { stroke-dasharray: 2 3; }
.bm-hit { stroke: transparent; stroke-width: 14; }
.bm-skip:hover .bm-skipline { stroke: var(--bm-ink); }
.bm-thin rect { stroke-dasharray: 3 2; }
.bm-off { opacity: 0.35; }
.bm-hl { pointer-events: none; }
.bm-spark { fill: none; stroke: var(--bm-heat); stroke-width: 1.8; stroke-linejoin: round; }
.bm-latent { stroke-width: 2.2; }
.bm-base { stroke: var(--bm-line); stroke-width: 1; }
.bm-axis { stroke: var(--bm-soft); stroke-width: 1.2; }
.bm-base-lane { fill: var(--bm-line); }
.bm-band { cursor: grab; }
.bm-handle { fill: var(--bm-card); stroke-width: 2.5; cursor: ew-resize; }
.bm-hatch { fill: url(#bm-hatch); }
.bm-envelope { fill: none; stroke: #fff; stroke-width: 1.6; stroke-opacity: 0.9; }
.bm-svg .bm-on-band { fill: #fff; font-size: 11px; font-weight: 700; paint-order: stroke; stroke: rgba(0,0,0,0.35); stroke-width: 2px; }
.bm-svg .bm-lane-sel { text-decoration: underline; }
.bm-stale { opacity: 0.45; }
.bm-tip { position: absolute; z-index: 20; max-width: 300px; padding: 7px 10px; border-radius: 8px; font-size: 0.85rem;
          line-height: 1.35; white-space: pre-line; pointer-events: none; color: var(--bm-ink);
          background: var(--bm-card); border: 1px solid var(--bm-line); box-shadow: 0 4px 14px rgba(0,0,0,0.15); }

/* ---------------------------------------------------------------- the slots */
.bm-slots { display: grid; grid-template-columns: 1fr; gap: 10px; }
.bm-card { --c: #868e96; border: 1px solid var(--bm-line); border-top: 5px solid var(--c); border-radius: 10px;
           background: var(--bm-card); padding: 10px 12px; display: flex; flex-direction: column; gap: 7px; }
.bm-card.bm-sel { box-shadow: 0 0 0 2px var(--c); }
.bm-card.bm-empty { border-style: dashed; border-top-width: 1px; color: var(--bm-soft); flex-direction: row;
                    align-items: center; justify-content: center; min-height: 52px; font-size: 0.92rem; gap: 8px; }
.bm-card-head { display: flex; align-items: center; gap: 7px; }
.bm-card-head b { flex: 1; font-size: 1rem; }
.bm-badge { width: 22px; height: 22px; border-radius: 50%; background: var(--c); color: #fff; font-weight: 700;
            display: inline-flex; align-items: center; justify-content: center; font-size: 0.85rem; flex: none; }
.bm .bm-x { border: none; background: transparent; color: var(--bm-soft); cursor: pointer; font-size: 1rem; padding: 2px 6px; }
.bm .bm-x:hover { color: var(--bm-ink); }
.bm-what { margin: 0; font-size: 0.88rem; line-height: 1.4; color: var(--bm-ink); }
.bm-places { display: flex; flex-wrap: wrap; gap: 5px; }
.bm .bm-pchip { font: inherit; font-size: 0.82rem; padding: 4px 9px; border-radius: 999px; border: 1px dashed var(--c);
            background: transparent; color: var(--bm-ink); cursor: pointer; }
.bm .bm-pchip.bm-on { border-style: solid; background: color-mix(in srgb, var(--c) 18%, transparent); font-weight: 600; }
.bm-row { display: flex; align-items: center; gap: 8px; font-size: 0.88rem; flex-wrap: wrap; }
.bm-row input[type=text] { flex: 1; min-width: 6em; }
.bm-row input[type=text], .bm-row input[type=number] { font: inherit; padding: 4px 6px; border-radius: 6px;
            border: 1px solid var(--bm-line); background: var(--input-background-fill); color: var(--bm-ink); }
.bm-row input[type=number] { width: 5.5em; }
.bm-knob span { flex-basis: 100%; }                     /* the label above, slider and number below */
.bm-knob input[type=range] { flex: 1; min-width: 6em; accent-color: var(--c); }
.bm-hint { font-size: 0.78rem; color: var(--bm-soft); }
.bm-foot { margin: 0; font-size: 0.75rem; color: var(--bm-soft); }

/* ---------------------------------------------------------------- results with a wipe */
.bc { display: flex; flex-direction: column; gap: 8px; }
.bc-empty { padding: 28px; text-align: center; color: var(--body-text-color-subdued);
            border: 1px dashed var(--border-color-primary); border-radius: 12px; }
.bc-bar { display: flex; justify-content: space-between; align-items: center; gap: 12px; font-size: 0.9rem;
          color: var(--body-text-color-subdued); }
.bc .bc-toggle { font: inherit; font-size: 0.85rem; padding: 5px 12px; border-radius: 999px; cursor: pointer;
             border: 1px solid var(--border-color-primary); background: var(--block-background-fill);
             color: var(--body-text-color); }
.bc .bc-toggle.bc-on { background: var(--color-accent); color: #fff; border-color: var(--color-accent); }
.bc-grid { display: grid; gap: 8px; max-width: 980px; margin: 0 auto; width: 100%; }
.bc-card { margin: 0; display: flex; flex-direction: column; gap: 4px; }
.bc-card img { width: 100%; display: block; border-radius: 8px; }
.bc-frame { position: relative; --cut: 0%; cursor: ew-resize; touch-action: pan-y; }
.bc-plain { position: absolute; inset: 0; clip-path: inset(0 calc(100% - var(--cut)) 0 0); }
.bc-line { position: absolute; top: 0; bottom: 0; left: var(--cut); width: 2px; background: #fff;
           box-shadow: 0 0 0 1px rgba(0,0,0,0.35); opacity: 0; pointer-events: none; }
.bc-frame.bc-wiping .bc-line { opacity: 1; }
.bc-tag { position: absolute; top: 6px; font-size: 0.72rem; font-weight: 700; padding: 2px 7px; border-radius: 999px;
          background: rgba(0,0,0,0.55); color: #fff; opacity: 0; transition: opacity 0.15s; pointer-events: none; }
.bc-tag-plain { left: 6px; }
.bc-tag-bent { right: 6px; }
.bc-frame.bc-wiping .bc-tag { opacity: 1; }
.bc-card figcaption { font-size: 0.82rem; color: var(--body-text-color-subdued); display: flex;
                      justify-content: space-between; }
#go { min-height: 64px; font-size: 1.15rem; margin-top: 18px; }