@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";:root{--ink: #1f2933;--ink-soft: #52606d;--ink-faint: #8a96a3;--line: #dde3ea;--panel: #ffffff;--chrome: #f7f9fb;--accent: #1f6fd1;--accent-soft: #e6f0fc;--danger: #c2412d;font-family:Inter,system-ui,sans-serif;color:var(--ink);background:#fff;font-synthesis:none;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0;overflow:hidden}button,input,select{font:inherit;color:inherit}button{cursor:pointer;display:inline-flex;align-items:center;gap:6px;background:#fff;border:1px solid var(--line);border-radius:6px;padding:6px 11px;font-size:13px;font-weight:500;white-space:nowrap}button:hover:not(:disabled){background:#f1f4f8;border-color:#c9d2dc}button:disabled{opacity:.4;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover:not(:disabled){background:#185db1;border-color:#185db1}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:1px}input,select{background:#fff;border:1px solid var(--line);border-radius:5px;padding:5px 7px;font-size:13px;min-width:0}.app{height:100dvh;min-width:960px;display:flex;flex-direction:column}.topbar{height:54px;display:flex;align-items:center;gap:16px;padding:0 16px;border-bottom:1px solid var(--line);background:#fff;flex-shrink:0}.brand{display:flex;align-items:center;gap:9px;font-size:18px;letter-spacing:-.4px;color:var(--ink-soft)}.brand b{color:var(--ink);font-weight:700;margin-right:-9px}.logo{display:grid;grid-template-columns:11px 11px;gap:2px}.logo i{width:11px;height:11px;border-radius:2px}.logo i:nth-child(1){background:#e2433b}.logo i:nth-child(2){background:#f7c531}.logo i:nth-child(3){background:#2c9fd9}.logo i:nth-child(4){background:#4cb848}.project-name{border-color:transparent;font-size:14px;font-weight:600;width:220px;margin-left:12px}.project-name:hover{border-color:var(--line)}.save-state{font-size:12px;color:var(--ink-faint)}.save-state.dirty{color:#b7791f}.top-actions{margin-left:auto;display:flex;gap:6px;align-items:center}.menu-anchor{position:relative}.toolbar{height:52px;display:flex;justify-content:space-between;align-items:center;padding:0 10px;background:var(--chrome);border-bottom:1px solid var(--line);flex-shrink:0}.tool-group{display:flex;align-items:center;gap:2px}.tool{flex-direction:column;gap:2px;padding:4px 9px;border-color:transparent;background:transparent;font-size:10.5px;font-weight:500;color:var(--ink-soft);min-width:56px}.tool:hover:not(:disabled){background:#e9eef4;border-color:transparent}.tool.active{background:var(--accent-soft);color:var(--accent)}.tool svg{color:var(--ink)}.tool.active svg{color:var(--accent)}.divider{width:1px;height:30px;background:var(--line);margin:0 6px}.workspace{flex:1;display:flex;min-height:0}.viewport{position:relative;flex:1;min-width:0;background:linear-gradient(180deg,#f4f7fa,#e4eaf0);overflow:hidden}.viewport-canvas{position:absolute;inset:0}.viewport-canvas.placing,.viewport-canvas.picking{cursor:crosshair}.marquee{position:absolute;border:1px solid var(--accent);background:#1f6fd114;pointer-events:none}.viewport-failure{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:40px;text-align:center}.viewport-failure strong{font-size:17px}.viewport-failure span{font-size:13px;color:var(--ink-soft)}.viewport-failure code{max-width:620px;font-size:11px;color:var(--ink-faint);word-break:break-word}.view-controls{position:absolute;left:16px;top:16px;display:flex;flex-direction:column;align-items:center;gap:12px}.view-cube{width:84px;height:84px;perspective:600px;display:flex;align-items:center;justify-content:center}.cube{position:relative;width:0;height:0;transform-style:preserve-3d}.face{position:absolute;left:-30px;top:-30px;width:60px;height:60px;display:grid;grid-template:13px 1fr 13px / 13px 1fr 13px;border-radius:3px;border:1px solid #b9c4d0;background:#fffffff2;backface-visibility:hidden;overflow:hidden}.view-cube{cursor:grab}.cell{border:none;border-radius:0;padding:0;background:transparent;justify-content:center;font-size:10.5px;font-weight:600;color:var(--ink-soft)}.cell:hover:not(:disabled){background:var(--accent-soft);color:var(--accent)}.cell.edge:hover:not(:disabled),.cell.corner:hover:not(:disabled){background:#b9d3f3}.view-buttons{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:8px;overflow:hidden;box-shadow:0 1px 3px #1f293314}.view-buttons button{border:none;border-radius:0;padding:8px;color:var(--ink-soft)}.view-buttons button+button{border-top:1px solid var(--line)}.view-buttons button.active{background:var(--accent-soft);color:var(--accent)}.breadcrumbs{position:absolute;top:14px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:2px;background:#fff;border:1px solid var(--line);border-radius:8px;padding:4px 6px;box-shadow:0 2px 8px #1f29331a;font-size:13px}.breadcrumbs span{display:flex;align-items:center;color:var(--ink-faint)}.breadcrumbs button{border:none;padding:4px 7px}.breadcrumbs .done{background:var(--accent);color:#fff;margin-left:8px}.mode-hint{position:absolute;bottom:56px;left:50%;transform:translate(-50%);background:#1f2933db;color:#fff;padding:8px 14px;border-radius:18px;font-size:13px;pointer-events:none;white-space:nowrap}.empty-hint{position:absolute;bottom:70px;left:50%;transform:translate(-50%);color:var(--ink-soft);font-size:15px;pointer-events:none}.computing{position:absolute;bottom:16px;left:16px;font-size:12px;color:var(--ink-soft);background:#ffffffd9;padding:5px 10px;border-radius:12px}.grid-settings{position:absolute;right:16px;bottom:14px;display:flex;gap:14px;background:#ffffffeb;border:1px solid var(--line);border-radius:8px;padding:6px 12px;font-size:12px;color:var(--ink-soft)}.grid-settings label{display:flex;align-items:center;gap:6px}.grid-settings select{padding:3px 5px;font-size:12px}.workplane-settings summary{cursor:pointer;white-space:nowrap}.workplane-popover{position:absolute;bottom:calc(100% + 10px);right:0;width:360px;z-index:35;padding:15px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 28px #1f293330}.workplane-popover p{font-size:11px;line-height:1.5}.workplane-popover .field-grid{margin:12px 0}.grid-settings .workplane-popover .num{align-items:stretch}.precision-options{font-size:11px;color:var(--ink-soft)}.precision-options summary{cursor:pointer;padding:4px 0}.anchor-options{display:flex;flex-direction:column;gap:6px;margin-top:7px}.anchor-options label{display:flex;align-items:center;justify-content:space-between;gap:10px}.anchor-options select{max-width:185px;font-size:11px}.rotation-actions{display:flex;gap:6px;margin-top:8px}.rotation-actions button{flex:1;font-size:11px}.geometry-warning{position:absolute;left:15px;bottom:58px;max-width:450px;padding:8px 11px;border:1px solid #dcaa5d;border-radius:7px;background:#fff5de;color:#805322;font-size:11px;line-height:1.5;pointer-events:none}.inspector{position:absolute;top:16px;right:16px;width:272px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 6px 22px #1f293324;padding:12px;display:flex;flex-direction:column;gap:10px}.inspector header{display:flex;align-items:center;gap:6px}.inspector-body{display:flex;flex-direction:column;gap:10px;border:none;margin:0;padding:0;min-width:0}.inspector-body:disabled{opacity:.55}.locked-badge{flex-shrink:0;gap:4px;padding:3px 8px;font-size:11.5px;color:var(--ink-soft);background:#f1f4f8}.inspector header .title{width:100%;font-size:14px;font-weight:600;border-color:transparent;padding:4px 6px;display:block}.inspector header input.title:hover{border-color:var(--line)}.role-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.role{justify-content:flex-start;padding:8px 10px}.role.active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.swatch{width:20px;height:20px;border-radius:4px;border:1px solid rgba(0,0,0,.15);flex-shrink:0}.swatch.striped{background-image:repeating-linear-gradient(45deg,rgba(255,255,255,.45) 0 3px,transparent 3px 6px)!important}.palette{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.palette button,.palette .custom{height:28px;padding:0;border-radius:5px;border:1px solid rgba(0,0,0,.14);justify-content:center}.palette button.active{outline:2px solid var(--accent);outline-offset:1px}.palette .custom{position:relative;display:flex;align-items:center;font-weight:600;color:var(--ink-soft);cursor:pointer;background:#fff}.palette .custom input{position:absolute;inset:0;opacity:0;cursor:pointer}.field-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.field-grid.one{grid-template-columns:1fr 1fr 1fr}.num{position:relative;display:flex;flex-direction:column;gap:3px;font-size:11px;color:var(--ink-soft)}.num input{width:100%;padding-right:26px}.num em{position:absolute;right:7px;bottom:7px;font-style:normal;font-size:10px;color:var(--ink-faint);pointer-events:none}.num.invalid input{border-color:var(--danger)}.num.wide{grid-column:1 / -1}.num.wide input{padding-right:8px}.rotate-row{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--ink-soft)}.rotate-pair{display:flex;align-items:center;gap:2px}.rotate-pair button{padding:4px}.rotate-pair b{width:12px;text-align:center;font-size:11px}.link{border:none;padding:0;color:var(--accent);background:none;font-size:12px}.error-detail{margin:0;padding:8px 10px;font-size:12px;line-height:1.5;color:#8a2c1d;background:#fdecea;border-radius:6px}.shape-panel{width:248px;flex-shrink:0;border-left:1px solid var(--line);background:#fff;padding:14px;overflow-y:auto}.shape-panel h2{margin:2px 0 4px;font-size:14px}.shape-panel .hint{margin:0 0 12px;font-size:12px;color:var(--ink-faint);line-height:1.45}.panel-tabs{display:flex;gap:2px;margin:-4px 0 12px;padding:3px;background:#eef2f6;border-radius:8px}.panel-tabs button{flex:1;justify-content:center;border:none;background:transparent;padding:5px 8px;font-size:12.5px;color:var(--ink-soft)}.panel-tabs button.active{background:#fff;color:var(--ink);box-shadow:0 1px 2px #1f29331f}.object-list{position:relative;display:flex;flex-direction:column;margin:0 -8px;-webkit-user-select:none;user-select:none}.object-list.dragging{cursor:grabbing}.object-row{display:flex;align-items:center;gap:5px;height:28px;padding-right:4px;border-radius:5px;font-size:12.5px;color:var(--ink);cursor:default;touch-action:none}.object-row:hover,.object-row.hovered{background:#f1f4f8}.object-row.selected{background:var(--accent-soft);color:var(--accent)}.object-row.scope .name{font-weight:600}.object-row.is-hidden .name,.object-row.is-hidden .kind,.object-row.is-hidden .swatch{opacity:.45}.object-row.moving{opacity:.5}.object-row .chevron{width:16px;height:16px;flex-shrink:0;padding:0;border:none;background:transparent;justify-content:center;color:var(--ink-faint)}.object-row .chevron svg{transition:transform .12s}.object-row .chevron.open svg{transform:rotate(90deg)}.object-row .swatch{width:11px;height:11px;flex-shrink:0;border-radius:3px;border:1px solid rgba(31,41,51,.18)}.object-row .swatch.striped{background-image:repeating-linear-gradient(45deg,rgba(255,255,255,.55) 0 2px,transparent 2px 4px)!important}.object-row .kind{display:flex;color:var(--ink-faint);flex-shrink:0}.object-row .name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.object-row .rename{flex:1;min-width:0;padding:2px 5px;font-size:12.5px}.object-row .flag{flex-shrink:0;padding:3px;border:none;background:transparent;color:var(--ink-faint);visibility:hidden}.object-row:hover .flag,.object-row .flag.on,.object-row .flag.inherited{visibility:visible}.object-row .flag.on{color:var(--ink)}.object-row .flag.inherited{opacity:.5}.object-row .flag:hover{color:var(--accent)}.drop-line{position:absolute;right:4px;height:2px;background:var(--accent);border-radius:1px;pointer-events:none}.objects-empty{padding:4px 0}.shape-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.shape-tile{flex-direction:column;gap:2px;padding:6px 2px 5px;border-color:transparent;font-size:11px;color:var(--ink-soft);touch-action:none;-webkit-user-select:none;user-select:none}.shape-tile svg{width:52px;height:52px;pointer-events:none}.shape-tile:hover:not(:disabled){background:#f1f4f8;border-color:var(--line)}.shape-tile.active{background:var(--accent-soft);border-color:#9cc0ec}.popover{position:absolute;top:calc(100% + 6px);right:0;z-index:30;background:#fff;border:1px solid var(--line);border-radius:9px;box-shadow:0 10px 30px #1f293329;padding:8px;display:flex;flex-direction:column;gap:4px;min-width:210px}.export-menu button{border:none;justify-content:flex-start}.import-scale{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;color:var(--ink-soft);border-top:1px solid var(--line);padding:8px 4px 2px;margin-top:4px}.import-scale input{width:70px}.close{border:none;font-size:18px;padding:0 4px;line-height:1}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);z-index:50;display:flex;align-items:center;gap:14px;max-width:640px;background:#1f2933;color:#fff;padding:10px 10px 10px 16px;border-radius:8px;font-size:13px;line-height:1.45;box-shadow:0 8px 24px #00000040}.toast button{background:none;border:none;color:#cbd2d9;font-size:18px;padding:0 6px}.toast button:hover:not(:disabled){background:#ffffff1a}.modal-backdrop{position:fixed;inset:0;z-index:60;display:flex;justify-content:flex-end;align-items:flex-start;padding:120px 290px 0 0;pointer-events:none}.dialog{pointer-events:auto;width:400px;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 20px 60px #1f293340;padding:20px;display:flex;flex-direction:column;gap:10px}.dialog h2{margin:0;font-size:17px}.dialog p{margin:0;font-size:13px;line-height:1.55;color:var(--ink-soft)}.repair-actions{display:flex;flex-direction:column;gap:6px}.repair-actions button{justify-content:flex-start}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:6px}@media(max-width:1180px){.save-state,.tool span{display:none}.tool{min-width:0}.shape-panel{width:214px}}.dim-label{padding:2px 7px;border-radius:4px;border:1px solid #b9c4d0;background:#fff;font-size:12px;font-weight:600;color:var(--ink);box-shadow:0 1px 3px #1f29332e;font-variant-numeric:tabular-nums}.dim-label:hover:not(:disabled){border-color:var(--accent);color:var(--accent);background:#fff}.dim-label.static{display:inline-block}.dim-input{width:70px;padding:3px 6px;font-size:12px;font-weight:600;border:2px solid var(--accent);border-radius:4px;text-align:center}.ruler-close{width:22px;height:22px;padding:0;justify-content:center;border-radius:50%;font-size:15px;line-height:1;color:var(--ink-soft);box-shadow:0 1px 3px #1f293333}.ruler-close:hover:not(:disabled){color:var(--danger);border-color:var(--danger)}.dim-label.ruler-distance{color:var(--accent)}
