:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--bg:#f4f1ea;--panel:#fbf9f4;--text:#2b2722;--muted:#6f675c;--border:#ddd6c8;--accent:#8a5a2b;--accent-text:#fffaf2;--control:#fff;--stage:#d9d3c7;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#1b1a18;--panel:#23211e;--text:#ebe6dc;--muted:#a39b8e;--border:#3a3631;--accent:#d9a066;--accent-text:#1b1a18;--control:#1b1a18;--stage:#121110}}*,:before,:after{box-sizing:border-box}body{margin:0}.app{grid-template-columns:minmax(280px,340px) 1fr;height:100dvh;display:grid}.panel{background:var(--panel);border-right:1px solid var(--border);padding:20px;overflow-y:auto}.brand h1{letter-spacing:.2em;text-transform:uppercase;margin:0;font-size:1.6rem;font-weight:600}.brand h1 a{color:inherit;text-decoration:none}.brand h1 a:hover,.brand h1 a:focus-visible{text-underline-offset:.2em;text-decoration:underline;text-decoration-thickness:1px}.brand p{color:var(--muted);margin:4px 0 0;font-size:.9rem}.panel-section{margin-top:24px}.panel-section h2{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;margin:0 0 10px;font-size:.75rem}.field{margin-bottom:12px}.field-label{margin-bottom:4px;font-size:.9rem;display:block}.field-row{align-items:center;gap:8px;display:flex}.field-row>input[type=range]{min-width:0;accent-color:var(--accent);flex:1}.field-value{min-width:3.2em;color:var(--muted);font-variant-numeric:tabular-nums;text-align:right;font-size:.85rem}textarea,select{width:100%;font:inherit;color:var(--text);background:var(--control);border:1px solid var(--border);border-radius:6px;padding:6px 8px}textarea{resize:vertical;font-size:.9rem}textarea:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:1px}button{font:inherit;color:var(--text);background:var(--control);border:1px solid var(--border);cursor:pointer;border-radius:6px;padding:6px 14px}button:hover:not(:disabled){border-color:var(--accent)}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button:disabled{cursor:progress;opacity:.7}button.primary{width:100%;color:var(--accent-text);background:var(--accent);border-color:var(--accent);font-weight:600}button.secondary{width:100%}button.secondary+button.secondary,button.primary+button.secondary,button.primary+.checkbox+button.secondary,button.secondary+.checkbox+button.secondary{margin-top:8px}button[hidden]{display:none}.checkbox{cursor:pointer;align-items:flex-start;gap:8px;margin:8px 0;font-size:.9rem;display:flex}.checkbox input{accent-color:var(--accent);margin:3px 0 0}.hint{color:var(--muted);margin:-6px 0 12px;font-size:.8rem}.hint code,.hint kbd{background:var(--bg);border:1px solid var(--border);border-radius:3px;padding:0 3px;font-size:.85em}.icon-button{padding:2px 8px;line-height:1.4}.segmented{width:100%;display:flex}.segmented button{border-radius:0;flex:1}.segmented button+button{margin-left:-1px}.segmented button:first-child{border-radius:6px 0 0 6px}.segmented button:last-child{border-radius:0 6px 6px 0}.segmented button[aria-pressed=true]{color:var(--accent-text);background:var(--accent);border-color:var(--accent);position:relative}.subsection{border:1px solid var(--border);border-radius:6px;margin:0 0 12px;padding:8px 10px}.subsection summary{cursor:pointer;font-size:.9rem}.subsection[open] summary{margin-bottom:8px}.subsection .field-label{font-size:.85rem}.diagnostics{color:var(--muted);margin-top:28px;font-size:.85rem}.diagnostics summary{cursor:pointer}.caps{grid-template-columns:auto 1fr;gap:4px 12px;margin:10px 0 0;display:grid}.caps dd{color:var(--text);overflow-wrap:anywhere;margin:0}.mono{font-family:ui-monospace,Cascadia Mono,Consolas,monospace}.stage{background:var(--stage);min-height:0;position:relative}.stage canvas{width:100%;height:100%;display:block;position:absolute;inset:0}.stage-message{text-align:center;white-space:pre-wrap;background:var(--stage);place-items:center;margin:0;padding:24px;display:grid;position:absolute;inset:0;overflow:auto}.stage-message[hidden]{display:none}.stage canvas.painting{cursor:none;touch-action:none}.brush-cursor{z-index:1;pointer-events:none;border:1.5px solid #ffffffe6;border-radius:50%;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #0000008c}.brush-cursor[hidden]{display:none}.block-list{flex-direction:column;gap:4px;margin:0 0 8px;display:flex}.block-item{text-align:left;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.block-item[aria-pressed=true]{color:var(--accent-text);background:var(--accent);border-color:var(--accent)}.button-row.add-blocks{flex-wrap:wrap}.button-row.add-blocks button{white-space:nowrap;flex:auto;padding:6px 8px}.block-editor{border-top:1px dashed var(--border);margin-top:12px;padding-top:12px}.stage canvas{touch-action:none}.block-frame{z-index:1;box-sizing:border-box;pointer-events:none;border:1.5px dashed #fffffff2;outline:1px solid #00000080;position:absolute}.block-frame[hidden]{display:none}.block-handle{border:1.5px solid var(--accent);pointer-events:auto;touch-action:none;background:#fff;border-radius:2px;width:12px;height:12px;margin:-6px 0 0 -6px;position:absolute;box-shadow:0 0 0 1px #0000004d}.block-handle.rotate{cursor:grab;border-radius:50%;top:-28px;left:50%}.block-stem{border-left:1.5px solid #fffffff2;width:0;height:22px;position:absolute;top:-22px;left:50%}.block-edge{pointer-events:auto;touch-action:none;cursor:move;display:none;position:absolute}.block-frame.editing .block-edge{display:block}.block-edge.top,.block-edge.bottom{height:11px;left:0;right:0}.block-edge.left,.block-edge.right{width:11px;top:0;bottom:0}.block-edge.top{top:-12px}.block-edge.bottom{bottom:-12px}.block-edge.left{left:-12px}.block-edge.right{right:-12px}.block-frame.editing{border-style:solid;border-color:#ffffffb3}.text-overlay{z-index:1;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.text-selection{fill:color-mix(in srgb, var(--accent) 38%, transparent)}.text-caret path{fill:none;stroke:#1b1a18;stroke-width:1.75px;stroke-linecap:round}.text-caret path.halo{stroke:#ffffffe6;stroke-width:4px}.text-caret{visibility:hidden}.text-overlay.typing .text-caret{visibility:visible;animation:1.1s step-end .5s infinite caret-blink}@keyframes caret-blink{50%{opacity:0}}.text-input{white-space:pre;opacity:0;resize:none;pointer-events:none;caret-color:#0000;border:0;outline:none;width:1px;height:1.2em;margin:0;padding:0;font-size:16px;position:absolute;top:0;left:0;overflow:hidden}.segmented.wrap{flex-wrap:wrap;gap:4px}.segmented.wrap button{border-radius:6px;flex:auto;margin-left:0}.button-row{gap:8px;display:flex}.button-row button{flex:1;width:auto}.button-row button+button,.button-row button.secondary+button.secondary{margin-top:0}.pager{z-index:1;background:var(--panel);border:1px solid var(--border);border-radius:999px;align-items:center;gap:10px;padding:4px 6px;font-size:.9rem;display:flex;position:absolute;bottom:12px;left:50%;transform:translate(-50%);box-shadow:0 1px 4px #00000026}.pager[hidden]{display:none}.pager button{border-radius:999px;padding:0 12px;font-size:1.2rem;line-height:1.6}.pager button:disabled{cursor:default;opacity:.35}.stage-status{z-index:1;color:var(--text);background:var(--panel);border:1px solid var(--border);pointer-events:none;border-radius:999px;margin:0;padding:4px 14px;font-size:.85rem;position:absolute;top:12px;left:50%;transform:translate(-50%);box-shadow:0 1px 4px #00000026}.stage-status[hidden]{display:none}@media (width<=720px){.app{grid-template-rows:42vh auto;grid-template-columns:1fr;height:auto}.stage{z-index:1;border-bottom:1px solid var(--border);order:-1;height:42vh;position:sticky;top:0}.panel{border-right:none;overflow:visible}}.print-sheet{display:none}@media print{.app,noscript{display:none!important}:root,body{background:#fff!important}.print-sheet{flex-direction:column;align-items:center;display:flex}.print-sheet img{object-fit:contain;break-inside:avoid;max-width:100%;max-height:100vh;display:block}.print-sheet img+img{break-before:page}}
