:root{--bg:#f6f4f0;--panel:#fff;--ink:#23211e;--muted:#6f6a62;--line:#dedad3;--accent:#2f6f8f;--accent-ink:#fff;--warn:#8a5a00;--error:#a32b2b;color:var(--ink);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px}*{box-sizing:border-box}body{grid-template-rows:auto 1fr auto;height:100vh;margin:0;display:grid}button,select,input{font:inherit;color:inherit}button{border:1px solid var(--accent);background:var(--accent);color:var(--accent-ink);cursor:pointer;border-radius:6px;padding:5px 12px}button.secondary,.toolbar button{background:var(--panel);color:var(--ink);border-color:var(--line)}.toolbar #export{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}button:disabled{opacity:.45;cursor:default}button.icon{width:32px;padding:5px 0}select,input[type=text],input[type=search]{border:1px solid var(--line);background:var(--panel);border-radius:6px;padding:5px 8px}.toolbar{background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:16px;padding:8px 14px;display:flex}.brand{letter-spacing:.01em;font-weight:600}.group{align-items:center;gap:6px;display:inline-flex}#format{max-width:260px}.toggle{color:var(--muted);align-items:center;gap:4px;display:inline-flex}main{grid-template-columns:1fr 320px;min-height:0;display:grid}.stage{min-height:0;position:relative}canvas{cursor:grab;background:radial-gradient(circle at 50% 40%,#fbfaf7,#efece6);width:100%;height:100%;position:absolute;inset:0}canvas.rulers{pointer-events:none;background:0 0}#canvas3d{cursor:grab;background:#efece6}#canvas3d[hidden]{display:none}#machine{max-width:16rem}#hoop.warn{color:#b42318;border-color:#d24b4b}canvas.panning{cursor:grabbing}.empty{text-align:center;pointer-events:none;place-content:center;display:grid;position:absolute;inset:0}.empty[hidden]{display:none}.big{margin:0 0 6px;font-size:18px}body.dragging .stage{outline:3px dashed var(--accent);outline-offset:-10px}.busy{background:var(--ink);color:#fff;border-radius:999px;padding:6px 14px;position:absolute;top:12px;left:50%;transform:translate(-50%)}.panel{background:var(--panel);border-left:1px solid var(--line);padding:14px 16px;overflow-y:auto}.panel h2{overflow-wrap:anywhere;margin:4px 0 10px;font-size:15px}.panel section+section{margin-top:20px}dl{grid-template-columns:auto 1fr;gap:4px 12px;margin:0;display:grid}dt{color:var(--muted)}dd{overflow-wrap:anywhere;margin:0}.speed{margin-top:8px;display:block}.speed input{border:1px solid var(--line);background:var(--panel);border-radius:6px;width:70px;padding:2px 6px}.muted{color:var(--muted)}.small{font-size:12px}.colors{margin:0;padding:0;list-style:none}.color-row{text-align:left;width:100%;color:var(--ink);background:0 0;border:1px solid #0000;grid-template-columns:22px 28px 1fr;align-items:center;gap:8px;padding:6px;display:grid}.color-row:hover,.color-row:focus-visible{background:var(--bg);border-color:var(--line)}.num{color:var(--muted);font-variant-numeric:tabular-nums;text-align:right}.label{min-width:0;display:grid}.label strong{text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.swatch{border:1px solid #0000002e;border-radius:50%;width:28px;height:28px;display:inline-block}.swatch.large{vertical-align:middle;width:32px;height:32px;margin-right:10px}.status{border-top:1px solid var(--line);background:var(--panel);min-height:30px;padding:6px 14px}.status.warn{color:var(--warn)}.status.error{color:var(--error)}dialog.picker{border:1px solid var(--line);width:min(560px,94vw);color:var(--ink);border-radius:10px;padding:18px 20px}dialog.picker::backdrop{background:#1e1c1959}dialog h2{margin:0 0 12px;font-size:17px}dialog h3{color:var(--muted);margin:14px 0 6px;font-size:13px;font-weight:600}dialog .row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}dialog input[type=color]{border:1px solid var(--line);background:var(--panel);border-radius:6px;width:40px;height:32px;padding:2px}dialog .hex{width:90px;font-family:ui-monospace,monospace}dialog .code{width:90px}dialog select{flex:220px;min-width:0}.chart-grid{grid-template-columns:repeat(auto-fill,minmax(26px,1fr));gap:4px;max-height:180px;margin-top:8px;display:grid;overflow-y:auto}.chart-swatch{aspect-ratio:1;border:1px solid #00000026;border-radius:4px;padding:0}dialog footer{justify-content:flex-end;gap:8px;margin-top:18px;display:flex}canvas.dragging-object{cursor:move}canvas.resize-nesw{cursor:nesw-resize}canvas.resize-nwse{cursor:nwse-resize}canvas.resize-ns{cursor:ns-resize}canvas.resize-ew{cursor:ew-resize}canvas.rotate,canvas.rotating{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M19 12a7 7 0 1 1-2.05-4.95M19 4v4h-4' fill='none' stroke='white' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M19 12a7 7 0 1 1-2.05-4.95M19 4v4h-4' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") 12 12,crosshair}.objects{max-height:34vh;margin:0 0 12px;padding:0;list-style:none;overflow:auto}.object-row{text-align:left;width:100%;color:var(--ink);background:0 0;border:1px solid #0000;grid-template-columns:22px 1fr auto;align-items:center;gap:8px;padding:5px 6px;display:grid}.object-row .label{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.object-row:hover,.object-row:focus-visible{background:var(--bg);border-color:var(--line)}.object-row.selected{background:#eaf2ff;border-color:#1f6feb}.object-item{padding-left:calc(var(--depth,0) * 14px);align-items:center;gap:2px;display:flex}.object-item .object-row{flex:1;min-width:0}.caret,.eye{width:26px;height:26px;color:var(--ink);background:0 0;border:1px solid #0000;border-radius:4px;flex:none;place-items:center;padding:0;line-height:1;display:grid}.caret svg{transition:transform .12s}.caret[aria-expanded=true] svg{transform:rotate(90deg)}.caret-space{flex:none;width:26px}.caret:hover,.eye:hover{border-color:var(--line);background:var(--bg)}.eye.hidden{color:#b0aaa0}.eye.mixed{color:var(--muted);opacity:.6}.object-item.is-hidden .object-row{opacity:.55}.object-row.is-hidden .label{color:var(--muted);font-style:italic}.object-row.group-row .label{font-weight:600}.object-row .num svg{color:var(--muted);margin-left:auto;display:block}.object-item.in-group{background-image:linear-gradient(var(--line), var(--line));background-repeat:no-repeat;background-size:1px 100%;background-position:calc((var(--depth,1) - 1) * 14px + 13px) 0}.objects-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;display:flex}.objects-actions{flex-wrap:wrap;gap:4px;display:flex}#objects-help{margin-top:0}.object-item[draggable=true]{cursor:grab}.object-item.dragging-row{opacity:.45}.object-item.drop-above{box-shadow:inset 0 2px #1f6feb}.object-item.drop-below{box-shadow:inset 0 -2px #1f6feb}.transform-grid,.settings-grid{grid-template-columns:1fr 1fr;gap:6px 10px;display:grid}.transform-grid label,.settings-grid label{color:var(--muted);grid-template-columns:4.2em 1fr;align-items:center;gap:4px;font-size:12px;display:grid}.transform-grid input,.settings-grid input{text-align:right;width:100%;min-width:0;color:var(--ink)}.color-well{border:1px solid var(--line);border-radius:4px;min-width:0;height:24px;padding:0}.color-well.mixed{background:repeating-linear-gradient(45deg,#ccc 0 4px,#fff 4px 8px)}.settings-grid label[hidden]{display:none}.simbar{border:1px solid var(--line);background:#fffffff0;border-radius:8px;gap:6px;padding:8px 10px;display:grid;position:absolute;bottom:12px;left:12px;right:12px;box-shadow:0 2px 10px #00000014}.simbar[hidden],.group[hidden]{display:none}.sim-row{align-items:center;gap:6px;display:flex}.simbar button{background:var(--panel);color:var(--ink);border-color:var(--line)}#sim-scrub{flex:1;min-width:80px}.sim-readout{font-variant-numeric:tabular-nums;gap:16px}.sim-color{align-items:center;gap:6px;display:inline-flex}.simbar .swatch{width:14px;height:14px}#sim-object{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}#simulate[aria-pressed=true]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}canvas.drawing{cursor:crosshair}canvas.over-background{cursor:move}canvas.resizing{cursor:nwse-resize}.tool[aria-pressed=true]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.tool:disabled[aria-pressed=false]{opacity:.55}.draw-color{width:28px}#draw-width{width:4em}.bg-actions{flex-wrap:wrap;gap:6px;margin:6px 0;display:flex}#bg-controls>label,#chart-section>label{margin:4px 0;display:block}#chart-section{margin-top:8px}#chart-section summary{cursor:pointer;font-weight:600}#pdf-options select{max-width:11em}.bg-opacity input{vertical-align:middle;width:60%}#bg-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.text-shown{white-space:pre-wrap;overflow-wrap:anywhere;background:var(--bg);border:1px solid var(--line);border-radius:4px;margin:4px 0;padding:6px 8px;font-size:15px}.text-field{color:var(--muted);gap:3px;margin:6px 0;font-size:12px;display:grid}.text-field textarea,.text-field select,.text-field input{font:inherit;color:var(--ink);max-width:100%;font-size:14px}.text-field textarea{resize:vertical;font-size:16px}#text-size{width:7em}.text-dialog{width:min(32rem,92vw)}.text-dialog .field{color:var(--muted);gap:4px;margin:10px 0;font-size:12px;display:grid}.text-dialog .field>*{color:var(--ink);font-size:14px}.text-dialog .field.check{color:var(--ink);align-items:center;gap:6px;font-size:14px;display:flex}.text-dialog .field.check[hidden]{display:none}.text-dialog .swatches .swatch{vertical-align:middle;width:16px;height:16px;margin-right:3px}.text-dialog .text-input{resize:vertical;width:100%;font:inherit;font-size:16px}.text-dialog select{max-width:100%}.text-dialog input[type=number]{width:7em}
