:root{--bg:#e9e4da;--panel:#f7f4ee;--panel-2:#fffdf9;--ink:#1f1b16;--ink-2:#5b5346;--muted:#8a8172;--line:#d8d0c2;--accent:#c2410c;--accent-ink:#fff7ed;--good:#15803d;--warn:#b45309;--bad:#b91c1c;--radius:8px;--sans:"IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--mono:"IBM Plex Mono", ui-monospace, Menlo, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}[hidden]{display:none!important}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font:13px/1.45 var(--sans);-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}.mono{font-family:var(--mono)}.muted{color:var(--muted)}.row{align-items:center;display:flex}.row.gap,.gap{gap:6px}.hint{color:var(--muted);margin:6px 0;font-size:12px}.app{grid-template:"top top top"48px"layers ws insp"minmax(0,1fr)/minmax(220px,270px) minmax(0,1fr) minmax(280px,340px);height:100dvh;display:grid}.topbar{background:var(--ink);color:#f5efe4;grid-area:top;align-items:center;gap:14px;padding:0 14px;display:flex}.brand{letter-spacing:.02em;align-items:center;gap:8px;font-size:15px;font-weight:700;display:flex}.project-name{color:#fff;background:0 0;border:1px solid #0000;border-radius:6px;min-width:240px;padding:5px 8px;font-weight:500}.project-name:hover,.project-name:focus{background:#2a251f;border-color:#4b443a;outline:none}.save{color:#b9b0a0;font-size:11px}.save.unsaved,.save.saving{color:#fbbf24}.save.error{color:#f87171}.topbar nav{margin-left:auto}.topbar .btn.ghost{color:#efe7d8;border-color:#4b443a}.topbar .btn.ghost:hover{background:#2f2a23}.panel{background:var(--panel);border-right:1px solid var(--line);min-height:0;overflow:auto}.panel.layers{grid-area:layers;padding:12px}.panel.layers.drag{outline:2px dashed var(--accent);outline-offset:-6px}.panel.inspector{border-right:0;border-left:1px solid var(--line);flex-direction:column;grid-area:insp;display:flex}.panel-head{justify-content:space-between;align-items:center;display:flex}.panel-head h2{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-2);margin:0;font-size:13px}.btn{border:1px solid var(--line);background:var(--panel-2);cursor:pointer;border-radius:6px;padding:6px 12px;transition:background .12s,border-color .12s}.btn:hover:not(:disabled){border-color:var(--ink-2)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.small{padding:4px 9px;font-size:12px}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}.btn.primary:hover:not(:disabled){background:#9a3412;border-color:#9a3412}.btn.danger{color:var(--bad)}.btn.ghost{background:0 0}.btn.block{width:100%;margin:8px 0;display:block}.chip{border:1px solid var(--line);background:var(--panel-2);cursor:pointer;border-radius:999px;padding:3px 10px;font-size:12px}.chip.on{background:var(--ink);color:#fff;border-color:var(--ink)}.chip:disabled{opacity:.4}.link{color:var(--accent);cursor:pointer;background:0 0;border:0;padding:0;font-weight:600}.add-menu{gap:4px;margin:10px 0;display:grid}.add-menu button{text-align:left;background:var(--panel-2);border:1px solid var(--line);cursor:pointer;border-radius:6px;padding:7px 9px}.add-menu button:hover{border-color:var(--accent)}.add-menu strong{font-size:12px;display:block}.add-menu span{color:var(--muted);font-size:11px}.layer-list{gap:6px;margin:0;padding:0;list-style:none;display:grid}.layer-list li{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;grid-template-columns:44px 1fr auto;align-items:center;gap:8px;padding:6px;display:grid}.layer-list li:hover{border-color:#b8ad9a}.layer-list li.sel{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.layer-list li.hidden-layer{opacity:.55}.thumb{border:1px solid var(--line);width:44px;height:44px;color:var(--muted);background-color:#f1ece2;background-image:linear-gradient(45deg,#e5dfd3 25%,#0000 25% 75%,#e5dfd3 75%),linear-gradient(45deg,#e5dfd3 25%,#0000 25% 75%,#e5dfd3 75%);background-position:0 0,5px 5px;background-repeat:no-repeat;background-size:10px 10px;background-attachment:scroll;background-origin:padding-box;background-clip:border-box;border-radius:5px;place-items:center;font-size:9px;display:grid}.thumb[style]{background-position:50%;background-repeat:no-repeat;background-size:contain}.thumb.big{width:84px;height:84px}.meta .name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.meta .code{color:var(--accent);font-size:11px}.meta .sub{color:var(--muted);align-items:center;gap:6px;font-size:11px;display:flex}.dot{border-radius:50%;width:7px;height:7px;display:inline-block}.dot.err{background:var(--bad)}.dot.warn{background:var(--warn)}.tools{grid-template-columns:1fr 1fr;gap:2px;display:grid}.tools button{cursor:pointer;color:var(--ink-2);background:0 0;border:0;border-radius:4px;padding:2px 4px;font-size:12px}.tools button:hover:not(:disabled){background:#eee6d8}.tools button:disabled{opacity:.25}.empty{color:var(--muted);text-align:center;padding:16px}.workspace{flex-direction:column;grid-area:ws;min-width:0;min-height:0;display:flex}.ws-tabs{border-bottom:1px solid var(--line);background:var(--panel);align-items:center;gap:4px;padding:6px 10px;display:flex}.ws-tabs button{cursor:pointer;color:var(--ink-2);background:0 0;border:0;border-radius:6px;padding:5px 10px;font-weight:500}.ws-tabs button.on{background:var(--ink);color:#fff}.card-size{color:var(--muted);margin-left:auto;font-size:11px}.ws-body{flex:1;min-height:0;display:grid}.ws-body.split{grid-template-rows:1fr 1fr}.ws-3d,.ws-2d{min-height:0;position:relative}.ws-2d{border-top:1px solid var(--line)}.scene,.scene-canvas{position:absolute;inset:0}.scene-canvas canvas{display:block}.scene-toolbar{pointer-events:none;align-items:center;gap:8px;display:flex;position:absolute;left:10px;right:10px}.scene-toolbar>*{pointer-events:auto}.scene-toolbar.top{flex-wrap:wrap;top:10px}.scene-toolbar.bottom{border:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#fffdf9eb;border-radius:999px;padding:5px 10px;bottom:10px}.scene-toolbar.bottom input[type=range]{accent-color:var(--accent);flex:1}.angle{text-align:right;min-width:38px;font-weight:500}.icon-btn{border:1px solid var(--line);background:var(--panel-2);cursor:pointer;border-radius:50%;width:30px;height:30px;font-size:12px}.seg{border:1px solid var(--line);background:#fffdf9eb;border-radius:7px;display:inline-flex;overflow:hidden}.seg button{cursor:pointer;color:var(--ink-2);background:0 0;border:0;padding:4px 10px;font-size:12px}.seg button+button{border-left:1px solid var(--line)}.seg button.on{background:var(--ink);color:#fff}.collision-banner{color:var(--bad);background:#fef2f2;border:1px solid #fecaca;border-radius:6px;padding:5px 12px;font-size:12px;position:absolute;top:48px;left:50%;transform:translate(-50%)}.mfg{background:#ded8cc;flex-direction:column;display:flex;position:absolute;inset:0}.mfg-toolbar{background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:10px;padding:6px 10px;display:flex}.layer-toggles{color:var(--ink-2);gap:8px;font-size:11px;display:flex}.layer-toggles label{cursor:pointer;text-transform:capitalize;align-items:center;gap:3px;display:flex}.mfg-canvas{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;flex:1;width:100%;min-height:0}.mfg-canvas .part{cursor:move}.mfg-legend{background:var(--panel);border-top:1px solid var(--line);align-items:center;gap:14px;padding:4px 10px;font-size:11px;display:flex}.mfg-legend .err{color:var(--bad);font-weight:600}.ln{vertical-align:middle;border-top:2px solid;width:22px;height:0;margin-right:3px;display:inline-block}.ln.cut{border-color:#111}.ln.mountain{border-color:#c0262d;border-top-style:dashed}.ln.valley{border-color:#1d4fd8;border-top-style:dashed}.ln.glue{border-color:#8a6d00;border-top-style:dotted}.tabs{border-bottom:1px solid var(--line);background:var(--panel);z-index:2;display:flex;position:sticky;top:0}.tabs button{cursor:pointer;color:var(--ink-2);background:0 0;border:0;border-bottom:2px solid #0000;flex:1;padding:10px 4px;font-size:12px;font-weight:500}.tabs button.on{color:var(--ink);border-bottom-color:var(--accent)}.badge{color:var(--ink-2);background:#e7e0d2;border-radius:999px;margin-left:4px;padding:0 5px;font-size:10px;display:inline-block}.badge.bad{background:var(--bad);color:#fff}.badge.warn{color:#78350f;background:#fde68a}.inspector-body{padding:12px 14px 24px;overflow:auto}.inspector-body[aria-disabled=true]{opacity:.85}.section{border-bottom:1px solid var(--line);padding:10px 0 12px}.section header{justify-content:space-between;align-items:center;display:flex}.section h3{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-2);margin:0 0 8px;font-size:11px}.field{color:var(--ink-2);gap:3px;margin:6px 0;font-size:11px;display:grid}.field input,.field select,textarea{border:1px solid var(--line);background:var(--panel-2);color:var(--ink);border-radius:6px;width:100%;padding:5px 7px;font-size:13px}.field input:focus,.field select:focus,textarea:focus{border-color:var(--accent);outline:2px solid #fdba74}.num{position:relative}.num input{font-family:var(--mono);padding-right:30px;font-size:12px}.num em{color:var(--muted);font-size:11px;font-style:normal;position:absolute;top:50%;right:7px;transform:translateY(-50%)}.grid2{grid-template-columns:1fr 1fr;column-gap:10px;display:grid}.check{align-items:flex-start;gap:6px;margin:8px 0;font-size:12px;display:flex}.image-row{align-items:flex-start;gap:10px;display:flex}.image-row .col{justify-items:start;gap:5px;display:grid}.sub-details{margin:8px 0}.sub-details summary{cursor:pointer;color:var(--ink-2);font-size:12px;font-weight:500}.profile{width:150px;height:112px;color:var(--ink-2);margin-top:6px;display:block}.mini-issues{margin:8px 0 0;padding-left:16px;font-size:12px}.mini-issues li.error{color:var(--bad)}.mini-issues li.warning{color:var(--warn)}.attach-list{margin:0;padding-left:16px;font-size:12px}.verdict{border-radius:var(--radius);gap:2px;margin-bottom:8px;padding:10px 12px;display:grid}.verdict.good{color:#14532d;background:#ecfdf3;border:1px solid #bbf7d0}.verdict.warn{color:#78350f;background:#fffbeb;border:1px solid #fde68a}.verdict.bad{color:#7f1d1d;background:#fef2f2;border:1px solid #fecaca}.verdict span{font-size:12px}.issues{gap:6px;margin:0;padding:0;list-style:none;display:grid}.issues li{border:1px solid var(--line);border-left:4px solid var(--muted);background:var(--panel-2);cursor:pointer;border-radius:6px;padding:7px 9px}.issues li.error{border-left-color:var(--bad)}.issues li.warning{border-left-color:var(--warn)}.issues li.info{border-left-color:#64748b}.issues li p{margin:4px 0 0;font-size:12px}.sev,.basis{text-transform:uppercase;letter-spacing:.06em;margin-right:6px;font-size:10px;font-weight:600}.issues li.error .sev{color:var(--bad)}.issues li.warning .sev{color:var(--warn)}.basis.physical{color:#6d28d9}.basis.computed{color:var(--muted)}.draft-box{border:1px dashed var(--bad);border-radius:6px;margin:8px 0;padding:8px}.file-buttons{flex-wrap:wrap;gap:6px;display:flex}.export-result{font-size:12px;font-family:var(--mono);padding:0;list-style:none}.export-result .ok{color:var(--good)}.export-result .fail{color:var(--bad)}.ai-error{color:#9a3412;background:#fff7ed;border:1px solid #fed7aa;border-radius:6px;margin-top:8px;padding:8px;font-size:12px}.ai-result{border:1px solid var(--line);background:var(--panel-2);border-radius:8px;margin-top:10px;padding:10px}.ai-result ol{padding-left:18px}.toast{background:var(--ink);color:#fff;z-index:50;border-radius:8px;padding:9px 16px;position:fixed;bottom:18px;left:50%;transform:translate(-50%);box-shadow:0 6px 24px #0003}.toast.error{background:var(--bad)}.modal-bg{z-index:40;background:#1f1b1673;place-items:center;display:grid;position:fixed;inset:0}.modal{background:var(--panel);border-radius:12px;width:min(440px,100vw - 32px);max-height:80vh;padding:18px 20px;overflow:auto;box-shadow:0 20px 60px #0000004d}.modal h3{margin-top:0}.open-list{gap:8px;padding:0;list-style:none;display:grid}.open-list li{grid-template-columns:1fr auto;align-items:center;gap:2px 8px;display:grid}.open-list small{grid-column:1}.open-list .btn{grid-area:1/2/span 2}.plan-bar{border:1px solid var(--line);background:var(--panel-2);border-radius:7px;justify-content:space-between;align-items:center;gap:8px;margin:10px 0 4px;padding:7px 9px;font-size:12px;display:flex}.plan-bar.auto{color:#14532d;background:#f0fdf4;border-color:#bbf7d0}.plan-bar.manual{color:#78350f;background:#fffbeb;border-color:#fde68a}.hint-touch{display:none}.app.mobile{flex-direction:column;min-width:0;height:100dvh;display:flex;overflow:hidden}.app.mobile .topbar{height:auto;padding:calc(env(safe-area-inset-top,0px) + 6px) max(12px, env(safe-area-inset-right,0px)) 6px max(12px, env(safe-area-inset-left,0px));flex:none;gap:8px}.app.mobile .brand span{display:none}.app.mobile .project-name{flex:1;min-width:0;font-size:16px}.icon-menu{color:#f5efe4;cursor:pointer;background:0 0;border:1px solid #4b443a;border-radius:10px;flex:none;place-items:center;width:42px;height:42px;display:grid}.m-body{flex:1;min-height:0;position:relative}.m-view{position:absolute;inset:0}.m-scroll{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;overflow:auto}.app.mobile .m-view.panel{border:0}.app.mobile .panel.layers{min-height:100%;padding:14px max(16px, env(safe-area-inset-right,0px)) 24px max(16px, env(safe-area-inset-left,0px));border:0}.app.mobile .inspector-body{padding:14px max(16px, env(safe-area-inset-right,0px)) 28px max(16px, env(safe-area-inset-left,0px))}.m-nav{background:var(--panel);border-top:1px solid var(--line);padding:0 env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px);flex:none;grid-template-columns:repeat(6,1fr);display:grid}.m-nav button{min-height:56px;color:var(--muted);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:2px;font-size:11px;font-weight:500;display:flex;position:relative}.m-nav button.on{color:var(--accent)}.m-nav button.on:before{content:"";background:var(--accent);border-radius:2px;height:2px;position:absolute;top:0;left:28%;right:28%}.nav-badge{color:#fff;background:var(--warn);border-radius:8px;min-width:16px;height:16px;padding:0 4px;font-size:10px;font-style:normal;font-weight:600;line-height:16px;position:absolute;top:5px;left:calc(50% + 5px)}.nav-badge.bad{background:var(--bad)}.sheet-bg{z-index:45;background:#1f1b166b;align-items:flex-end;display:flex;position:fixed;inset:0}.menu-sheet{background:var(--panel);width:100%;padding:6px max(16px, env(safe-area-inset-right,0px)) calc(16px + env(safe-area-inset-bottom,0px)) max(16px, env(safe-area-inset-left,0px));border-radius:16px 16px 0 0;gap:6px;display:grid;box-shadow:0 -10px 40px #0003}.grabber{background:var(--line);border-radius:2px;width:40px;height:4px;margin:6px auto 4px}.menu-sheet .small{margin:0 0 6px;font-size:12px}.menu-item{text-align:left;background:var(--panel-2);cursor:pointer;border:0;border-radius:10px;padding:14px;font-size:15px;font-weight:500}.menu-item:active{background:#eee6d8}.app.mobile .field input,.app.mobile .field select,.app.mobile textarea{padding:9px 10px;font-size:16px}.app.mobile .num input{padding-right:34px}.app.mobile .btn.small{padding:8px 12px;font-size:13px}.app.mobile .chip{padding:6px 12px;font-size:13px}.app.mobile .layer-list li{grid-template-columns:52px minmax(0,1fr) auto;padding:8px}.app.mobile .layer-list .thumb{width:52px;height:52px}.app.mobile .tools{gap:4px}.app.mobile .tools button{padding:8px 9px;font-size:15px}.app.mobile .plan-bar{font-size:13px}.app.mobile .add-menu button{padding:11px 12px}.app.mobile .scene-toolbar{left:max(8px, env(safe-area-inset-left,0px));right:max(8px, env(safe-area-inset-right,0px));gap:6px}.app.mobile .scene-toolbar.top{top:8px}.app.mobile .seg button{padding:7px 10px}.app.mobile .scene-toolbar.bottom{border-radius:16px;flex-wrap:wrap;row-gap:4px;padding:6px 10px;bottom:8px}.app.mobile .scene-toolbar.bottom input[type=range]{flex:120px;min-width:0;height:28px}.app.mobile .icon-btn{width:36px;height:36px}.app.mobile .collision-banner{max-width:calc(100% - 24px);top:auto;bottom:104px}.app.mobile .mfg-toolbar{scrollbar-width:none;flex-wrap:nowrap;overflow-x:auto}.app.mobile .mfg-toolbar::-webkit-scrollbar{display:none}.app.mobile .mfg-toolbar>*{flex:none}.app.mobile .layer-toggles{display:none}.app.mobile .mfg-legend{flex-wrap:wrap;gap:4px 12px;padding:6px 12px}.app.mobile .hint-desktop{display:none}.app.mobile .hint-touch{display:inline}.app.mobile+.toast{bottom:calc(72px + env(safe-area-inset-bottom,0px));text-align:center;max-width:calc(100vw - 32px)}
