:root{--bg:#f7f3f0;--panel:#fff;--text:#2b211c;--muted:#8a7a70;--line:#e4dbd4;--accent:#a73a08;--accent-soft:#f6e6dc;--radius:6px;--gap:8px;--control:30px;color:var(--text);font:14px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html{touch-action:pan-x pan-y}body{background:var(--bg);margin:0}.app{grid-template-columns:1fr minmax(320px,380px);height:100dvh;display:grid}.viewport{min-height:0;position:relative}.scene{position:absolute;inset:0}.status{top:var(--gap);left:calc(2 * var(--gap) + var(--control));gap:var(--gap);display:flex;position:absolute}.expert-toggle{top:var(--gap);left:var(--gap);width:var(--control);opacity:.25;background:0 0;border-color:#0000;padding:0;font-size:16px;line-height:1;transition:opacity .2s;position:absolute}.expert-toggle:hover,.expert-toggle:focus-visible,.expert-toggle.on{opacity:1;background:var(--panel);border-color:var(--line)}.expert-toggle.on{color:var(--accent);background:var(--accent-soft);border-color:var(--accent)}.toolbar{top:var(--gap);right:var(--gap);gap:4px;display:flex;position:absolute}.toolbar button{width:var(--control);font-size:18px;line-height:1}.toolbar .mode{width:auto;font-size:inherit}.points{gap:4px;margin:0;padding:0;list-style:none;display:grid}.points li{gap:4px;display:flex}.points input{flex:1;width:0}.points .control{opacity:.7;padding-left:1.5em}.points .selected input{border-color:var(--accent)}.panels{background:var(--panel);border-left:1px solid var(--line);overflow-y:auto}.app.panels-hidden{grid-template-columns:1fr}.app.panels-hidden>.panels{display:none}@media (width<=720px){:root{--control:38px}.app,.app.panels-hidden{grid-template:minmax(0,1fr) auto/1fr}.panels,.app.panels-hidden>.panels{border:0;border-top:1px solid var(--line);border-radius:12px 12px 0 0;max-height:60dvh;display:block;box-shadow:0 -2px 12px #00000014}}.sheet-handle{z-index:1;width:100%;min-height:0;color:var(--muted);background:var(--panel);border:0;border-bottom:1px solid var(--line);border-radius:0;justify-items:center;gap:2px;padding:6px 0 4px;font-size:12px;display:grid;position:sticky;top:0}.grabber{background:var(--line);border-radius:2px;width:36px;height:4px}summary,.node,.line .summary{cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.section{border-bottom:1px solid var(--line)}.section>summary{padding:10px 12px;font-weight:600}.section>.stack{padding:0 12px 12px}.subsection>summary{color:var(--muted)}.subsection>.stack{padding-top:var(--gap)}.stack{gap:var(--gap);display:grid}.row{align-items:center;gap:var(--gap);flex-wrap:wrap;display:flex}.row>input:not([type]),.row>input[type=number]{flex:1;width:0;min-width:3em}.pair{gap:var(--gap);grid-template-columns:1fr 1fr;display:grid}.mini{gap:2px;min-width:0;display:grid}.mini>span:first-child{color:var(--muted);font-size:11px}.mini>.meta{min-height:var(--control);align-items:center;display:flex}.anchor{grid-template-columns:repeat(3, var(--control));justify-self:start;gap:2px;display:grid}.anchor button{width:var(--control);min-height:0;height:calc(var(--control) * .75);background:var(--bg);border-color:var(--line);padding:0;position:relative}.anchor button:after{content:"";background:var(--line);border-radius:50%;width:6px;height:6px;margin:-3px;position:absolute;inset:50%}.anchor button.on{background:var(--accent-soft);border-color:var(--accent)}.anchor button.on:after{background:var(--accent);width:10px;height:10px;margin:-5px}.field{align-items:center;gap:var(--gap);grid-template-columns:7.5em 1fr;display:grid}.field>span,.hint{color:var(--muted)}.hint{margin:0;font-size:12px}.error{color:#b00020;font-size:12px}input,select,button,.upload{min-width:0;min-height:var(--control);font:inherit;color:inherit;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:2px 6px}button,select,.upload{cursor:pointer}button:hover:not(:disabled),select:hover,.upload:hover{border-color:var(--accent)}button:disabled{opacity:.5;cursor:default}.primary{color:#fff;background:var(--accent);border-color:var(--accent)}.upload{border-style:dashed;place-items:center;display:grid}input[type=checkbox]{min-height:0;accent-color:var(--accent);justify-self:start}input[type=color]{width:3em;padding:2px}input[type=range]{accent-color:var(--accent);border:0;padding:0}.log-slider{gap:var(--gap);grid-template-columns:1fr 5.5em;display:grid}.spinner{border:3px solid var(--accent-soft);border-top-color:var(--accent);border-radius:50%;width:20px;height:20px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(1turn)}}.formula{background:var(--bg);border-radius:var(--radius);overflow-wrap:anywhere;padding:6px 8px;font-size:12px}.formula mark{color:var(--accent);background:var(--accent-soft)}.tree,.tree ul{margin:0;padding:0;list-style:none}.tree ul{border-left:1px solid var(--line);margin-left:10px;padding-left:6px}.node,.line{align-items:center;gap:4px;display:flex}.node{border-radius:var(--radius);padding:1px 4px}.node:hover{background:var(--bg)}.node.selected{background:var(--accent-soft)}.name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.name small{color:var(--muted);margin-left:6px}.icon{width:1.25em;height:1.25em;color:var(--accent);vertical-align:middle;flex:none}.icon.large{width:var(--control);height:var(--control)}.meta{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}.caret,.menu{text-align:center;appearance:none;background:0 0;border-color:#0000;width:1.6em;min-height:0;padding:0}.kind-button,.line>button.kind-button,.column-head>button.kind-button{border-radius:var(--radius);background:0 0;border:1px solid #0000;flex:none;justify-content:center;align-items:center;width:auto;min-height:0;padding:2px;display:inline-flex}.kind-button:hover,.kind-button[aria-expanded=true]{background:var(--accent-soft);border-color:var(--line)}.line>button.kind-button{width:var(--control);min-height:var(--control)}.inspector{padding-top:var(--gap);border-top:1px solid var(--line)}.columns{gap:var(--gap);overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none;display:flex;overflow-x:auto}.column{scroll-snap-align:end;flex:0 0 85%;align-content:start;gap:4px;min-width:0;display:grid}.column:only-child{flex-basis:100%}.column-head{align-items:start;gap:4px;display:flex}.column-head>button{min-height:0;color:var(--accent);background:0 0;border:0;padding:0 6px}.column-head>details{flex:1;min-width:0}.column-head summary{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.card.on-path{border-left:3px solid var(--accent)}.line>button.active{color:var(--accent);font-weight:700}.card{gap:var(--gap);border:1px solid var(--line);border-radius:var(--radius);padding:2px 2px 2px 6px;display:grid}.card:has(>.stack){padding-bottom:var(--gap)}.line .summary{text-align:left;background:0 0;border:0;flex:1;align-items:center;gap:6px;min-width:0;padding:0;display:flex}.line .summary .name{flex:0 auto}.line .summary .meta{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.line>button:not(.summary){width:var(--control);background:0 0;border-color:#0000}.card.selected{border-color:var(--accent)}.card .menu{width:var(--control);min-height:var(--control)}.link{color:var(--muted);text-align:center;font-size:12px}.picker-trigger{text-align:left;align-items:center;gap:6px;min-width:0;display:flex}.picker-trigger .picker-label{flex:1}.picker-caret{color:var(--muted);font-size:10px}.picker{z-index:20;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);grid-template-rows:auto 1fr;width:max-content;min-width:220px;max-width:min(320px,100vw - 16px);display:grid;position:fixed;overflow:hidden;box-shadow:0 8px 24px #2b211c2e}.picker [role=listbox]{outline:none;padding:4px 0;overflow-y:auto}.picker>input{margin:6px 6px 0}.picker.sheet{width:auto;max-width:none;max-height:70dvh;padding-bottom:env(safe-area-inset-bottom);border-radius:12px 12px 0 0;inset:auto 0 0}.picker-backdrop{z-index:19;background:#2b211c4d;position:fixed;inset:0}.picker-section+.picker-section{border-top:1px solid var(--line);margin-top:4px;padding-top:4px}.picker-title{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding:2px 12px;font-size:11px}.picker-item{width:100%;min-height:var(--control);text-align:left;background:0 0;border:0;border-radius:0;align-items:center;gap:8px;padding:2px 12px;display:flex}.picker-item.active{background:var(--bg)}.picker-item.current{color:var(--accent);background:var(--accent-soft)}.picker-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.picker-check{margin-left:auto}.segmented{display:flex}.segmented button{border-radius:0;flex:1}.segmented button:first-child{border-radius:var(--radius) 0 0 var(--radius)}.segmented button:last-child{border-radius:0 var(--radius) var(--radius) 0}.segmented button+button{margin-left:-1px}.segmented .on{color:#fff;background:var(--accent);border-color:var(--accent);position:relative}.layouts{grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:4px;display:grid}.layout{color:var(--muted);padding:4px}.layout.on{color:var(--accent);background:var(--accent-soft);border-color:var(--accent)}.layout-drawing{width:100%;display:block}.pieces{width:100%;max-width:320px;display:block}.piece[role=button]{cursor:pointer}.piece.selected{stroke:var(--accent);stroke-width:.1px}.check{align-items:center;gap:var(--gap);display:flex}.swatches{flex-wrap:wrap;gap:4px;display:flex}.swatch{border:2px solid var(--panel);width:24px;height:24px;min-height:24px;box-shadow:0 0 0 1px var(--line);border-radius:50%;padding:0}.swatch.on{box-shadow:0 0 0 2px var(--accent)}@media (pointer:coarse){input,select,textarea{font-size:16px}}.marked{align-items:center;gap:4px;min-width:0;display:flex}.marked>:first-child{flex:1;min-width:0}.mark,.node-mark{color:var(--accent)}.mark,button.node-mark{background:var(--accent-soft);border-color:var(--accent);flex:none;min-height:0}.mark{width:var(--control);height:var(--control);padding:0}.mark:before{content:"●";vertical-align:middle;margin-right:2px;font-size:7px}.node-mark{font-size:11px}button.node-mark{padding:0 6px}.piece-mark{fill:var(--accent);stroke:var(--bg);stroke-width:.05px;pointer-events:none}
