:root{--bg:#f6f7f4;--panel:#fff;--line:#e2e5df;--line-strong:#cfd4cb;--text:#1f2421;--muted:#6b736d;--accent:#3f7a34;--accent-soft:#e7f1e2;--blue:#2f6fed;--danger:#c0392b;--radius:8px;color:var(--text);background:var(--bg);font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:13px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;overflow:hidden}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;align-items:center;gap:6px;padding:5px 7px;display:inline-flex}button:hover:not(:disabled){background:#eef0ec}button:disabled{opacity:.35;cursor:default}button.on{background:var(--accent-soft);color:var(--accent)}button.danger:hover{color:var(--danger);background:#fbeceb}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--blue);outline-offset:1px}input[type=text],input[type=search],select,textarea{font:inherit;border:1px solid var(--line-strong);width:100%;min-width:0;color:var(--text);background:#fff;border-radius:6px;padding:6px 8px}textarea{resize:vertical}.muted{color:var(--muted);margin:6px 0 0;font-size:12px;line-height:1.45}.app{flex-direction:column;height:100%;display:flex}.topbar{background:var(--panel);border-bottom:1px solid var(--line);flex:none;align-items:center;gap:8px;height:48px;padding:0 10px;display:flex}.brand{white-space:nowrap;align-items:center;gap:8px;padding-right:8px;font-size:14px;display:flex}.spacer{flex:1}.btn-group{border-left:1px solid var(--line);align-items:center;gap:2px;padding:0 6px;display:flex}.zoom-level{text-align:center;font-variant-numeric:tabular-nums;min-width:44px;color:var(--muted)}.save-badge{color:var(--muted);white-space:nowrap;font-size:12px}.save-badge.error{color:var(--danger)}.workspace{flex:1;min-height:0;display:flex}.sidebar{background:var(--panel);border-right:1px solid var(--line);flex-direction:column;flex:none;width:248px;min-height:0;display:flex}.stage{flex:1;min-width:0;position:relative}.properties{background:var(--panel);border-left:1px solid var(--line);flex-direction:column;flex:none;width:272px;min-height:0;display:flex}.properties-body{flex:auto;min-height:0;overflow-y:auto}.menu{position:relative}.menu-btn{border-color:var(--line);max-width:280px}.plan-name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.menu-pop{z-index:20;border:1px solid var(--line);border-radius:var(--radius);background:#fff;flex-direction:column;min-width:240px;padding:6px;display:flex;position:absolute;top:calc(100% + 6px);left:0;box-shadow:0 10px 30px #0000001f}.export-menu .menu-pop{left:auto;right:0}.menu-pop>button{justify-content:flex-start;width:100%;padding:7px 10px}.menu-sep{border-top:1px solid var(--line);text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:6px 4px 4px;padding-top:8px;font-size:11px}.plan-list{max-height:280px;overflow-y:auto}.plan-row{align-items:center;display:flex}.plan-row.current .plan-open span{color:var(--accent);font-weight:600}.plan-open{text-align:left;flex-direction:column;flex:1;align-items:flex-start;gap:1px;min-width:0;padding:6px 10px}.plan-open span{text-overflow:ellipsis;white-space:nowrap;max-width:220px;overflow:hidden}.plan-open small{color:var(--muted);font-size:11px}.tool-palette{border-bottom:1px solid var(--line);grid-template-columns:repeat(4,1fr);gap:4px;padding:10px;display:grid}.tool-btn{border-color:var(--line);flex-direction:column;gap:3px;padding:7px 2px 5px;font-size:10.5px}.tool-btn span{white-space:nowrap;text-overflow:ellipsis;max-width:100%;overflow:hidden}.tool-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}.tool-btn.active:hover{background:var(--accent)}.library{flex-direction:column;flex:1;min-height:0;display:flex}.library-head{padding:10px 10px 6px}.library-head h2,.panel-section h3{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 8px;font-size:11px}.library-scroll{flex:1;padding:0 10px 16px;overflow-y:auto}.cat-toggle{width:100%;padding:8px 2px 6px;font-weight:600}.cat-toggle .rot svg{transform:rotate(-90deg)}.cat-toggle .count{color:var(--muted);margin-left:auto;font-size:11px;font-weight:400}.library-grid{grid-template-columns:repeat(3,1fr);gap:4px;display:grid}.lib-item{border-color:var(--line);text-align:center;cursor:grab;flex-direction:column;gap:2px;padding:6px 2px 5px;font-size:10.5px;line-height:1.2}.lib-item.active{border-color:var(--accent);background:var(--accent-soft)}.lib-item span{align-items:center;min-height:2.4em;display:flex}.canvas-wrap{position:absolute;inset:0;overflow:hidden}.canvas{touch-action:none;-webkit-user-select:none;user-select:none;display:block}.cursor-select{cursor:default}.cursor-select [data-id]{cursor:move}.cursor-draw{cursor:crosshair}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.canvas-hud{pointer-events:none;gap:6px;display:flex;position:absolute;bottom:10px;left:10px}.canvas-hud span{border:1px solid var(--line);font-variant-numeric:tabular-nums;white-space:pre;background:#ffffffeb;border-radius:6px;padding:3px 8px;font-size:12px}.canvas-hud .hud-measure{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:600}.canvas-hud .hud-mod{color:var(--muted)}.canvas-hint{color:#fff;pointer-events:none;text-align:right;background:#1f2421d1;border-radius:6px;max-width:55%;padding:5px 12px;font-size:12px;position:absolute;bottom:10px;right:10px}.panel-section{border-bottom:1px solid var(--line);flex-direction:column;gap:10px;padding:12px;display:flex}.panel-section>header{justify-content:space-between;align-items:center;gap:8px;display:flex}.panel-section>header h3{color:var(--text);margin:0;font-size:12px}.actions{gap:1px;display:flex}.actions button{padding:4px}.field{flex-direction:column;gap:4px;min-width:0;display:flex}.field-label{color:var(--muted);font-size:11px}.input-wrap{display:flex;position:relative}.input-wrap.highlight input{border-color:var(--blue);box-shadow:0 0 0 2px #2f6fed2e}.input-wrap input{font-variant-numeric:tabular-nums;padding-right:26px}.suffix{color:var(--muted);pointer-events:none;font-size:11px;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.grid2{grid-template-columns:1fr 1fr;gap:10px;display:grid}.grid2.align-end{align-items:end}.color-field{align-items:center;gap:8px;display:flex}.color-field input[type=color]{border:1px solid var(--line-strong);background:#fff;border-radius:6px;flex:none;width:34px;height:30px;padding:2px}.swatches{flex-wrap:wrap;gap:3px;display:flex}.swatch{border:1px solid #0003;border-radius:4px;width:16px;height:16px;padding:0}.swatch.active{outline:2px solid var(--blue);outline-offset:1px}.toggle{cursor:pointer;align-items:center;gap:8px;padding:2px 0;display:flex}.toggle input{accent-color:var(--accent);width:15px;height:15px;margin:0}.stat{justify-content:space-between;align-items:baseline;gap:8px;padding:2px 0;display:flex}.stat span{color:var(--muted)}.stat strong{font-variant-numeric:tabular-nums}.grid2 .stat{flex-direction:column;align-items:flex-start;gap:4px}.grid2 .stat span{font-size:11px}.grid2 .stat strong{padding:6px 0}.btn-row{gap:4px;display:flex}.btn-row button{border-color:var(--line-strong);padding:6px 8px}.btn-col{flex-direction:column;gap:2px;display:flex}.btn-col button{justify-content:flex-start}.prop-preview{border:1px solid var(--line);border-radius:var(--radius);background:#fafbf9;justify-content:center;padding:6px;display:flex}.segmented{border:1px solid var(--line-strong);border-radius:7px;grid-template-columns:repeat(3,1fr);gap:2px;padding:2px;display:grid}.segmented.two{grid-template-columns:1fr 1fr}button.outline{border-color:var(--line-strong);justify-content:center;padding:7px 10px}.segmented button{justify-content:center;padding:5px 4px;font-size:12px}.segmented button.active{background:var(--accent);color:#fff}.material-grid{grid-template-columns:repeat(3,1fr);gap:4px;display:grid}.material{border-color:var(--line);text-align:center;flex-direction:column;gap:3px;padding:5px 2px;font-size:10.5px;line-height:1.2}.material svg{border:1px solid #00000014;border-radius:4px}.material.active{border-color:var(--accent);background:var(--accent-soft)}.modal-backdrop{z-index:50;background:#14181559;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:#fff;border-radius:12px;width:min(620px,100%);max-height:calc(100vh - 32px);padding:18px 22px 22px;overflow-y:auto;box-shadow:0 20px 60px #00000040}.modal>header{justify-content:space-between;align-items:center;display:flex}.modal h2{margin:0;font-size:17px}.howto{padding-left:20px;line-height:1.55}.howto li{margin-bottom:4px}.shortcuts{border-collapse:collapse;width:100%;margin-top:14px}.shortcuts td{border-top:1px solid var(--line);vertical-align:top;padding:5px 4px}.shortcuts td:first-child{width:42%}kbd{border:1px solid var(--line-strong);background:#f1f3ef;border-radius:4px;padding:1px 5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px}.support-link{border:1px solid var(--line-strong);color:var(--text);white-space:nowrap;border-radius:6px;align-items:center;gap:6px;padding:5px 10px;text-decoration:none;display:inline-flex}.support-link svg{color:#e0475b;flex:none}.support-link:hover{background:#fdf0f2;border-color:#f2b8c1}.support-link.primary{color:#fff;background:#e0475b;border-color:#e0475b;font-weight:600}.support-link.primary svg{color:#fff}.support-link.primary:hover{background:#c93a4d;border-color:#c93a4d}.help-support{background:#fdf5f6;border:1px solid #f6d3d9;border-radius:10px;align-items:center;gap:14px;margin-top:14px;padding:12px 14px;display:flex}.help-support p{margin:0;line-height:1.5}.support-prompt{z-index:40;background:var(--panel);border:1px solid var(--line-strong);border-radius:12px;align-items:center;gap:12px;width:max-content;max-width:calc(100vw - 32px);padding:10px 12px 10px 14px;animation:.25s ease-out support-in;display:flex;position:fixed;bottom:22px;left:50%;transform:translate(-50%);box-shadow:0 10px 34px #0000002e}.support-prompt p{max-width:420px;margin:0;line-height:1.45}.support-prompt-heart{color:#e0475b;display:grid}.support-prompt-actions{flex:none;gap:6px;display:flex}.support-prompt-actions button{border-color:var(--line-strong);padding:5px 10px}@keyframes support-in{0%{opacity:0;transform:translate(-50%,10px)}}@media (width<=1100px){.brand strong,.save-badge,.topbar-support span{display:none}.sidebar{width:208px}.library-grid{grid-template-columns:repeat(2,1fr)}.properties{width:236px}}.layers .layers-toggle{gap:6px;padding:0}.layers .layers-toggle h3{margin:0}.properties>.layers{border-top:1px solid var(--line-strong);border-bottom:none;flex:0 auto;min-height:0;max-height:45%;box-shadow:0 -4px 10px #0000000a}.layer-list{flex:auto;min-height:60px;margin:0 -6px;padding:0 6px;position:relative;overflow-y:auto}.layer-heading{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:8px 4px 3px;font-size:10.5px}.layer-row{text-align:left;gap:8px;width:100%;padding:4px 6px}.layer-row.selected,.layer-row.selected:hover{background:#e6eefc;border-color:#b9cdf7}.layer-icon{width:24px;height:24px;color:var(--muted);flex:none;place-items:center;display:grid}.layer-icon svg{border-radius:3px}.layer-text{flex-direction:column;flex:1;min-width:0;line-height:1.25;display:flex}.layer-name,.layer-detail{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.layer-detail{color:var(--muted);font-size:11px}.layer-flag{color:var(--muted);display:flex}.mode-switch{grid-template-columns:1fr 1fr;width:92px}.mode-switch button{padding:4px 6px;font-weight:600}.view3d{background:#cfe2f0;position:absolute;inset:0;overflow:hidden}.view3d-canvas{touch-action:none;display:block}.view3d-bar{border:1px solid var(--line);border-radius:var(--radius);background:#fffffff0;flex-wrap:wrap;align-items:center;gap:10px;max-width:calc(100% - 20px);padding:6px 10px;display:flex;position:absolute;top:10px;left:10px;box-shadow:0 2px 10px #00000014}.view3d-bar button{border-color:var(--line-strong);padding:4px 9px}.view3d-time{align-items:center;gap:6px;display:flex}.view3d-time input{accent-color:#e8a13c;width:140px}.view3d-clock{font-variant-numeric:tabular-nums;min-width:38px}.view3d-sep{background:var(--line);align-self:stretch;width:1px}.view3d-loading,.view3d-error{color:var(--muted);text-align:center;place-items:center;padding:20px;font-size:14px;display:grid;position:absolute;inset:0}@media (width<=640px){.help-support,.support-prompt{flex-wrap:wrap}}
