:root{--paper:#eef1eb;--panel:#f9faf7;--line:#d5dbd3;--line-strong:#b9c3bb;--ink:#27302c;--muted:#66736c;--highlight:#ffd43b;--action:#1d6fb8;--danger:#b42318;--radius:5px;color:var(--ink);background:var(--panel);-webkit-font-smoothing:antialiased;font-family:Barlow,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:14px;line-height:1.4}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;border:1px solid var(--line);border-radius:var(--radius);background:#fff;padding:5px 10px;line-height:1.25}button:hover:not(:disabled){border-color:var(--line-strong);background:#f3f5f1}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--ink);border-color:var(--ink);color:#fff}button.danger{color:var(--danger)}:focus-visible{outline:2px solid var(--action);outline-offset:1px}input:not([type=checkbox]):not([type=range]),select,textarea{border:1px solid var(--line);border-radius:var(--radius);background:#fff;width:100%;padding:5px 8px}textarea{resize:vertical}input[type=range]{width:100%;accent-color:var(--ink)}input[type=checkbox]{accent-color:var(--ink);margin:0}kbd{color:var(--muted);border:1px solid var(--line);background:#fff;border-bottom-width:2px;border-radius:3px;padding:2px 4px;font:500 11px/1 Barlow,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue}code{background:#eceee9;border-radius:3px;padding:0 3px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.muted{color:var(--muted)}.error{color:var(--danger)}.loading{height:100%;color:var(--muted);place-items:center;display:grid}.app{grid-template:"top top top"48px"left stage right"1fr/216px 1fr 300px;height:100%;display:grid}.topbar{border-bottom:1px solid var(--line);background:#fff;grid-area:top;align-items:center;gap:12px;min-width:0;padding:0 12px;display:flex}.brand{letter-spacing:.01em;align-items:center;gap:7px;padding-right:6px;font-size:16px;font-weight:700;display:flex}.brand svg{color:var(--ink)}.site-select{min-width:120px;font-weight:600;width:auto!important}.floor-tabs{flex:1;align-items:stretch;gap:2px;min-width:0;height:100%;display:flex;overflow-x:auto}.floor-tab,.floor-add{white-space:nowrap;color:var(--muted);background:0 0;border:none;border-bottom:3px solid #0000;border-radius:0;padding:0 12px}.floor-tab:hover:not(:disabled),.floor-add:hover:not(:disabled){background:#f3f5f1}.floor-tab.is-active{color:var(--ink);border-bottom-color:var(--highlight);font-weight:600}.floor-add{color:var(--action)}.floor-rename{align-self:center;width:140px!important}.topbar-actions{align-items:center;gap:6px;display:flex}.menu{position:relative}.menu-pop{z-index:20;border:1px solid var(--line);border-radius:var(--radius);background:#fff;flex-direction:column;min-width:220px;padding:4px;display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 8px 24px #27302c24}.menu-pop button{text-align:left;border:none;padding:7px 10px}.menu-pop hr{border:none;border-top:1px solid var(--line);margin:4px 0}.left-panel{border-right:1px solid var(--line);background:var(--panel);flex-direction:column;grid-area:left;display:flex;overflow-y:auto}.tools{border-bottom:1px solid var(--line);flex-direction:column;gap:1px;padding:8px;display:flex}.tool{text-align:left;background:0 0;border:none;grid-template-columns:22px 1fr auto;align-items:center;gap:8px;padding:5px 8px;display:grid}.tool.is-active,.tool.is-active:hover:not(:disabled){background:linear-gradient(transparent 12%, var(--highlight) 12%, var(--highlight) 88%, transparent 88%);font-weight:600}.tool.is-active kbd{background:#fff9;border-color:#27302c40}.palette{padding:10px 8px 24px}.palette h2{margin:2px 8px 6px;font-size:13px;font-weight:700}.palette-group h3{margin:10px 8px 2px;font-size:12px;font-weight:600}.palette-items{flex-direction:column;display:flex}.palette-item{text-align:left;background:0 0;border:none;align-items:center;gap:8px;padding:3px 8px;font-size:13px;display:flex}.palette-item svg{flex:none}.palette-item.is-active,.palette-item.is-active:hover:not(:disabled){background:linear-gradient(transparent 12%, var(--highlight) 12%, var(--highlight) 88%, transparent 88%);font-weight:600}.stage{grid-area:stage;min-width:0;min-height:0;position:relative}.canvas-wrap{background:var(--paper);position:absolute;top:0;bottom:0;left:0;right:0}.canvas{touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.scalebar{color:var(--muted);pointer-events:none;align-items:center;gap:8px;font-size:12px;display:flex;position:absolute;bottom:12px;left:14px}.scalebar-bar{border:1.5px solid var(--ink);border-top:none;height:6px}.tool-hint{border:1px solid var(--line);color:var(--muted);pointer-events:none;white-space:nowrap;text-overflow:ellipsis;background:#ffffffeb;border-radius:20px;max-width:calc(100% - 200px);padding:4px 14px;font-size:13px;position:absolute;bottom:12px;left:50%;overflow:hidden;transform:translate(-50%)}.calibrate{border:1px solid var(--line);border-radius:var(--radius);background:#fff;width:380px;padding:12px 14px;position:absolute;top:14px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #27302c24}.calibrate label{margin-bottom:6px;font-weight:600;display:block}.calibrate .row{gap:6px;display:flex}.calibrate p{margin:8px 0 0;font-size:12px}.right-panel{border-left:1px solid var(--line);background:var(--panel);flex-direction:column;grid-area:right;min-height:0;display:flex}.tabs{border-bottom:1px solid var(--line);background:#fff;flex:none;display:flex}.tabs button{color:var(--muted);background:0 0;border:none;border-bottom:3px solid #0000;border-radius:0;flex:1;padding:10px 4px 8px;font-size:13px}.tabs button.is-active{color:var(--ink);border-bottom-color:var(--highlight);font-weight:600}.tab-body{flex:1;overflow-y:auto}.inspector,.panel-body,.inventory,.inspector-empty{flex-direction:column;gap:10px;padding:14px 16px 32px;display:flex}.inspector h2{margin:0 0 2px;font-size:17px}.panel-body h3,.inventory h3{margin:10px 0 0;font-size:13px;font-weight:700}.panel-body h3:first-child{margin-top:0}.panel-body p{margin:0;font-size:13px}.field{flex-direction:column;gap:3px;display:flex}.field label,.field .label{color:var(--muted);font-size:12px;font-weight:600}.check{cursor:pointer;align-items:center;gap:8px;display:flex}fieldset{border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;gap:10px;margin:0;padding:8px 12px 12px;display:flex}legend{padding:0 4px;font-size:13px;font-weight:700}.actions,.swatches{flex-wrap:wrap;gap:6px;display:flex}.swatch{border:1px solid #27302c2e;width:26px;height:26px;padding:0}.swatch.is-active{outline:2px solid var(--ink);outline-offset:1px}.confirm{border-radius:var(--radius);background:#fdf3f2;border:1px solid #f0c8c3;padding:10px 12px}.confirm p{margin:0 0 8px}.inspector-empty .lead{margin:0;font-size:16px;font-weight:600}.inspector-empty p{margin:0}.steps{flex-direction:column;gap:8px;margin:0;padding-left:20px;display:flex}.shortcuts{border-top:1px solid var(--line);flex-direction:column;gap:4px;margin:12px 0 0;padding-top:12px;font-size:13px;display:flex}.shortcuts div{justify-content:space-between;gap:12px;display:flex}.shortcuts dt{font-weight:600}.shortcuts dd{color:var(--muted);text-align:right;margin:0}.inventory-head{justify-content:space-between;gap:8px;display:flex}.segmented{display:flex}.segmented button{border-radius:0;font-size:13px}.segmented button:first-child{border-radius:var(--radius) 0 0 var(--radius)}.segmented button:last-child{border-radius:0 var(--radius) var(--radius) 0;margin-left:-1px}.segmented button[aria-pressed=true]{background:var(--ink);color:#fff;border-color:var(--ink)}.inventory h3 .count{color:var(--muted);font-weight:500}.inventory ul{margin:4px 0 0;padding:0;list-style:none}.inv-row{text-align:left;background:0 0;border:none;grid-template-rows:auto auto;grid-template-columns:auto 1fr;column-gap:8px;width:100%;padding:4px 6px;display:grid}.inv-row svg{grid-row:span 2;align-self:center}.inv-row .inv-name{font-weight:600}.inv-row .inv-meta{color:var(--muted);font-size:12px}.inv-row:not(:has(svg)) .inv-name{grid-column:1/-1}.inv-row:not(:has(svg)) .inv-meta{grid-column:1/-1}.inv-row.is-active,.inv-row.is-active:hover:not(:disabled){background:linear-gradient(transparent 6%, var(--highlight) 6%, var(--highlight) 94%, transparent 94%)}.toast{background:var(--ink);color:#fff;border-radius:var(--radius);z-index:30;max-width:420px;padding:9px 14px;position:fixed;bottom:20px;right:320px;box-shadow:0 8px 24px #27302c33}@media (max-width:900px){.app{grid-template-columns:170px 1fr 260px}.tool-name{font-size:13px}}.drawbar{border:1px solid var(--line);z-index:5;background:#fff;border-radius:8px;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;max-width:calc(100% - 24px);padding:6px;display:flex;position:absolute;top:12px;left:50%;transform:translate(-50%);box-shadow:0 6px 20px #27302c1f}.drawbar-length{gap:3px;display:flex}.drawbar-length input{width:150px!important}.drawbar-length button{min-width:34px;padding-inline-start:6px;padding-inline-end:6px}#fatal{color:var(--danger);white-space:pre-wrap;z-index:100;background:#fff;margin:0;padding:24px;font:13px/1.5 ui-monospace,Menlo,monospace;position:fixed;top:0;bottom:0;left:0;right:0;overflow:auto}.app.panel-closed{grid-template-columns:216px 1fr 0}.right-panel[hidden]{display:none}body{touch-action:manipulation}.canvas{-webkit-user-select:none;-webkit-touch-callout:none}@media (max-width:1100px){.app{grid-template-columns:184px 1fr 280px}.app.panel-closed{grid-template-columns:184px 1fr 0}.brand span,.tool-hint{display:none}}@media (max-width:900px){.app,.app.panel-closed{grid-template-columns:168px 1fr;grid-template-areas:"top top""left stage"}.right-panel{z-index:15;width:min(320px,85vw);position:fixed;top:48px;bottom:0;right:0;box-shadow:-8px 0 24px #27302c24}.toast{right:20px}}@media (pointer:coarse){.tool{padding:9px 8px}.tool kbd{display:none}.palette-item{padding:7px 8px}.topbar-actions button,.floor-tab,.floor-add{min-height:36px}.inv-row{padding:8px 6px}.drawbar button,.drawbar-length input{min-height:38px}}
