valeriow/parallel-constrained-decoding
0
1:root {2 --bg-app: #f8fafc;3 --bg-card: #ffffff;4 --border: #e2e8f0;5 --border-hover: #cbd5e1;6 7 --text-main: #0f172a;8 --text-muted: #64748b;9 --text-subtle: #94a3b8;10 11 --green-primary: #16a34a;12 --green-bg: #f0fdf4;13 --green-border: #bbf7d0;14 15 --font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;16 --font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, monospace;17}18 19* {20 box-sizing: border-box;21 margin: 0;22 padding: 0;23}24 25html, body {26 height: 100%;27 margin: 0;28 padding: 0;29}30 31body {32 background-color: var(--bg-app);33 color: var(--text-main);34 font-family: var(--font-sans);35 -webkit-font-smoothing: antialiased;36 display: flex;37 flex-direction: column;38}39 40.container {41 width: 100%;42 margin: 0;43 padding: 14px 16px 20px 16px;44 box-sizing: border-box;45 display: flex;46 flex-direction: column;47 gap: 14px;48 height: 100vh;49}50 51/* Controls Bar */52.controls-bar {53 display: flex;54 justify-content: center;55 align-items: center;56 gap: 14px;57 padding: 6px 0 2px 0;58 width: 100%;59}60 61select {62 background: #ffffff;63 border: 1px solid var(--border);64 color: var(--text-main);65 padding: 9px 14px;66 border-radius: 8px;67 font-family: var(--font-sans);68 font-size: 0.88rem;69 cursor: pointer;70 outline: none;71 font-weight: 500;72 transition: border-color 0.15s ease;73}74 75select:hover {76 border-color: var(--border-hover);77}78 79select:focus {80 border-color: var(--text-main);81}82 83.btn-primary {84 background: var(--text-main);85 color: #ffffff;86 border: none;87 padding: 9px 18px;88 border-radius: 8px;89 font-size: 0.88rem;90 font-weight: 600;91 cursor: pointer;92 display: inline-flex;93 align-items: center;94 gap: 6px;95 transition: all 0.15s ease;96 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);97}98 99.btn-primary:hover {100 background: #1e293b;101 transform: translateY(-1px);102}103 104.btn-primary:disabled {105 opacity: 0.6;106 cursor: not-allowed;107 transform: none;108}109 110/* Summary Pill */111.summary-bar {112 display: flex;113 justify-content: center;114 padding: 4px 0 2px 0;115 transition: all 0.2s ease;116}117 118.summary-bar.hidden {119 display: none;120}121 122.summary-pill {123 background: var(--green-bg);124 border: 2px solid var(--green-border);125 padding: 14px 34px;126 border-radius: 9999px;127 display: inline-flex;128 align-items: center;129 gap: 16px;130 box-shadow: 0 4px 16px rgba(22, 163, 74, 0.14);131}132 133.summary-highlight {134 font-family: var(--font-mono);135 font-size: 1.65rem;136 font-weight: 900;137 color: #14532d;138 letter-spacing: -0.02em;139}140 141.summary-sep {142 color: #4ade80;143 font-size: 1.6rem;144 font-weight: 900;145}146 147#sum-times {148 font-family: var(--font-mono);149 font-weight: 800;150 font-size: 1.35rem;151 color: #15803d;152 letter-spacing: -0.01em;153}154 155/* Main Grid */156.grid {157 display: grid;158 grid-template-columns: 1fr 1fr;159 gap: 16px;160 flex: 1;161 min-height: 0;162}163 164.card {165 background: var(--bg-card);166 border: 1px solid var(--border);167 border-radius: 12px;168 display: flex;169 flex-direction: column;170 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.03);171 overflow: hidden;172 height: 100%;173 min-height: 0;174}175 176.card-header {177 padding: 18px 24px;178 border-bottom: 1px solid var(--border);179 display: flex;180 justify-content: space-between;181 align-items: center;182}183 184.card-header h2 {185 font-size: 1.35rem;186 font-weight: 800;187 color: var(--text-main);188 letter-spacing: -0.02em;189}190 191.title-with-badge {192 display: flex;193 align-items: center;194 gap: 12px;195}196 197.badge-red {198 background: #fef2f2;199 color: #dc2626;200 border: 1.5px solid #fecaca;201 font-size: 0.85rem;202 font-weight: 700;203 padding: 4px 10px;204 border-radius: 6px;205 letter-spacing: -0.01em;206 display: inline-flex;207 align-items: center;208 white-space: nowrap;209}210 211.badge-red.hidden {212 display: none;213}214 215.timer-badge {216 font-family: var(--font-mono);217 font-size: 1.5rem;218 font-weight: 800;219 padding: 8px 18px;220 border-radius: 10px;221 background: #f8fafc;222 color: #0f172a;223 border: 1.5px solid #cbd5e1;224 letter-spacing: -0.02em;225 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);226}227 228.badge-green {229 background: var(--green-bg);230 color: #14532d;231 border: 2px solid #86efac;232 font-weight: 900;233 box-shadow: 0 1px 4px rgba(22, 163, 74, 0.12);234}235 236.card-body {237 padding: 18px 20px;238 flex: 1;239 min-height: 0;240 overflow-y: auto;241}242 243/* Code Box */244.code-box {245 font-family: var(--font-mono);246 font-size: 0.82rem;247 color: #1e293b;248 line-height: 1.6;249 white-space: pre;250 overflow-x: auto;251 margin: 0;252}253 254/* JSON Syntax Highlighting & Interactive Rows */255.json-row {256 display: block;257 padding: 1.5px 8px;258 border-radius: 4px;259 line-height: 1.6;260 white-space: pre;261 border-left: 2.5px solid transparent;262 transition: background-color 0.12s ease, border-left-color 0.12s ease;263}264 265.json-row:hover,266.json-row.row-hover {267 background-color: #f8fafc;268 border-left-color: #2563eb;269}270 271.json-key {272 color: #2563eb;273 font-weight: 600;274 letter-spacing: -0.01em;275}276 277.json-sub {278 color: var(--text-main);279 font-weight: 500;280}281 282.json-punct {283 color: var(--text-main);284}285 286.json-val-str {287 color: var(--text-main);288 font-weight: 500;289}290 291.json-val-bool {292 color: var(--text-main);293 font-weight: 600;294}295 296.json-val-bool.bool-true,297.json-val-bool.bool-false {298 color: var(--text-main);299}300 301.json-val-num {302 color: var(--text-main);303 font-weight: 500;304}305 306.json-val-prob {307 color: var(--text-main);308 font-weight: 500;309 font-family: var(--font-mono);310}311 312.json-val-null {313 color: var(--text-main);314 font-style: italic;315}316 317.placeholder-text {318 color: var(--text-subtle);319 font-style: italic;320}321 322/* Parallel Results List */323.results-list {324 display: flex;325 flex-direction: column;326 gap: 8px;327}328 329.empty-state {330 color: var(--text-subtle);331 font-size: 0.88rem;332 text-align: center;333 padding-top: 100px;334}335 336.item-row {337 display: flex;338 justify-content: space-between;339 align-items: center;340 padding: 8px 12px;341 background: #f8fafc;342 border: 1px solid var(--border);343 border-radius: 8px;344 font-size: 0.82rem;345}346 347.item-key {348 font-family: var(--font-mono);349 font-weight: 600;350 color: #334155;351}352 353.item-right {354 display: flex;355 align-items: center;356 gap: 8px;357}358 359.item-val {360 font-family: var(--font-mono);361 font-weight: 600;362 padding: 2px 6px;363 border-radius: 4px;364}365 366.val-true {367 background: #dcfce7;368 color: #15803d;369}370 371.val-false {372 background: #fee2e2;373 color: #b91c1c;374}375 376.val-enum {377 background: #f1f5f9;378 color: #0f172a;379}380 381.item-prob {382 font-family: var(--font-mono);383 font-size: 0.74rem;384 color: #16a34a;385 background: var(--green-bg);386 padding: 2px 6px;387 border-radius: 4px;388 font-weight: 600;389 min-width: 48px;390 text-align: center;391}392 393/* Card Footer */394.card-footer {395 padding: 12px 20px;396 border-top: 1px solid var(--border);397 background: #f8fafc;398 font-size: 0.78rem;399 color: var(--text-muted);400 display: flex;401 justify-content: space-between;402}403 404.text-green {405 color: var(--green-primary);406}407 408@media (max-width: 800px) {409 .grid {410 grid-template-columns: 1fr;411 }412}413 