@import"https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@400;500;600;700&family=Outfit:wght@400;500;600;700&display=swap";:root{font-family:Outfit,Noto Sans TC,sans-serif;color:#303c35;background:#f8f9f6;font-synthesis:none;font-size:13px;--green:#526c54;--muted:#899088;--line:#e8ebe4}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer;border:0;background:none;color:inherit;display:inline-flex;align-items:center;justify-content:center;gap:7px;transition:.18s}button:hover{background:#eef1e9}button:disabled{opacity:.3;cursor:default}svg{width:18px;height:18px;stroke-width:1.6}header{height:76px;display:flex;align-items:center;justify-content:space-between;background:#fff;border-bottom:1px solid var(--line);padding:0 28px}.brand{font-size:26px;letter-spacing:-1px;font-weight:600;display:flex;gap:9px;align-items:center}.brand svg{width:30px;height:30px;color:var(--green)}.brand small{font-size:10px;letter-spacing:2px;font-weight:400;margin-left:14px;padding-left:18px;border-left:1px solid #ddd;color:var(--muted)}.project{display:flex;gap:13px;align-items:center}.project span{font-size:11px;color:var(--muted)}.dot{width:6px;height:6px;background:#8da589;border-radius:50%;display:inline-block;margin-right:5px}.actions{display:flex;gap:12px}.btn{border:1px solid var(--line);padding:10px 15px;border-radius:8px;background:#fff}.primary{background:var(--green);color:#fff;border-color:var(--green)}.primary:hover{background:#405842}.workspace{height:calc(100dvh - 76px);display:block}.rail{position:absolute;top:76px;bottom:0;left:0;width:76px;background:#fff;border-right:1px solid var(--line);display:flex;flex-direction:column;padding-top:24px;gap:12px;align-items:center}.rail button{width:60px;height:65px;border-radius:10px;flex-direction:column;gap:8px;font-size:10px;color:#8a9189}.rail button.active{background:#edf2e9;color:var(--green)}.rail svg{width:22px;height:22px}.rail .bottom{margin-top:auto;margin-bottom:20px}.layout{display:grid;grid-template-columns:260px minmax(300px,1fr) 268px;margin-left:76px;height:100%;min-height:0}.panel{background:#fff;padding:28px 22px;overflow-y:auto}.left{border-right:1px solid var(--line)}h2{font-size:19px;font-weight:500;margin:0 0 8px}p{line-height:1.8}.sub{font-size:11px;color:var(--muted);margin:0 0 24px}.search{display:flex;align-items:center;gap:8px;padding:10px 12px;background:#f6f7f4;border:1px solid var(--line);border-radius:7px}.search input{width:100%;background:none;border:0;outline:none;font-size:12px}.search svg{width:15px;color:#999}.filters{display:flex;gap:6px;margin:18px 0}.filters button{padding:6px 10px;font-size:11px;border-radius:5px;color:#81877d}.filters button.active{background:#edf2e9;color:var(--green)}.catalog{display:grid;grid-template-columns:1fr 1fr;gap:12px}.item{padding:0;display:block;text-align:left;border:1px solid var(--line);border-radius:9px;overflow:hidden;background:#fff}.item:hover{border-color:#a4b49b;transform:translateY(-2px)}.thumb{height:91px;background:#f6f5f1;display:flex;align-items:center;justify-content:center;position:relative}.thumb img{width:100%;height:100%;object-fit:contain}.plus{position:absolute;right:6px;top:6px;background:#fff9;width:19px;height:19px;border-radius:50%;display:grid;place-items:center;color:#7a8774}.item strong{font-size:11px;font-weight:500;display:block;margin:10px 9px 4px}.item small{display:block;font-size:9px;color:#92978d;margin:0 9px 10px}.tip{margin-top:26px;padding:14px;border-radius:8px;background:#f6f7f1;font-size:10px;color:#838d7c;line-height:1.9;display:flex;gap:10px}.tip svg{flex-shrink:0;width:16px;margin-top:3px}.viewport{position:relative;overflow:hidden;background:#f1f2ed}.viewport canvas{display:block;width:100%;height:100%;touch-action:none}.scene-title{position:absolute;top:27px;left:28px;pointer-events:none}.eyebrow{font-size:9px;letter-spacing:2px;color:#8a9587;margin-bottom:8px}.scene-title h1{font-size:21px;font-weight:500;margin:0 0 8px}.badge{font-size:10px;color:#7c8778;background:#ffffff9c;border:1px solid #fff;padding:5px 9px;border-radius:5px}.scene-tools{position:absolute;top:27px;right:20px;display:flex;gap:6px}.icon{width:34px;height:34px;border:1px solid var(--line);border-radius:7px;background:#ffffffde}.view-tabs{position:absolute;bottom:56px;left:50%;transform:translate(-50%);display:flex;padding:5px;gap:4px;background:#fffffff0;border:1px solid white;box-shadow:0 4px 24px #384a3510;border-radius:10px;white-space:nowrap}.view-tabs button{border-radius:6px;padding:10px 14px;font-size:11px}.view-tabs button.active{background:var(--green);color:#fff}.hint{position:absolute;bottom:23px;width:100%;text-align:center;font-size:10px;color:#9ba295;pointer-events:none}.right{border-left:1px solid var(--line);padding:24px 21px}.section-label{font-size:10px;letter-spacing:1px;color:#92998b;margin:0 0 18px}.object-title{display:flex;align-items:center;justify-content:space-between}.object-title h2{font-size:17px}.tag{background:#eff3e9;color:#859276;font-size:9px;border-radius:4px;padding:4px 7px}.preview{height:135px;margin:12px 0 20px;border-radius:10px;background:#f7f6f2;display:flex;align-items:center;justify-content:center}.preview img{height:100%;width:100%;object-fit:contain}.field-title{font-size:11px;margin:20px 0 12px;display:flex;justify-content:space-between}.field-title small{color:#9ba28f;font-size:10px;font-weight:400}.fields{display:flex;gap:9px}.field{flex:1;min-width:0}.field label{display:block;font-size:10px;color:#92998b;margin-bottom:7px}.input-wrap{display:flex;align-items:center;border:1px solid #e4e8df;border-radius:6px;padding:9px 8px;background:#fff}.input-wrap input{min-width:0;width:100%;border:0;outline:0;color:#4f5c4c;background:none}.input-wrap span{font-size:9px;color:#a0a695}.swatches{display:flex;gap:10px}.swatch{width:28px;height:28px;border-radius:50%;border:3px solid #fff;outline:1px solid #e5e8df}.swatch.active{outline:2px solid #68805c}.material-label{font-size:10px;color:#959d8e;margin-top:10px}.divider{height:1px;background:var(--line);margin:24px 0}.row{display:flex;gap:8px}.row .btn{flex:1;font-size:10px;padding:10px 6px}.danger{color:#a17e71}.room-summary{margin-top:24px;background:#f7f8f3;border:1px solid #ecefe4;border-radius:9px;padding:14px}.room-summary strong{font-size:11px;font-weight:500}.room-summary p{font-size:10px;color:#959b8e;margin:6px 0}.room-summary .stat{font-size:22px;color:#576d4d}.room-summary .stat small{font-size:11px;color:#9ca492}.warning{font-size:10px;color:#a57438;line-height:1.8;margin-top:12px}.style-card{display:block;width:100%;text-align:left;padding:14px;margin:12px 0;border:1px solid var(--line);border-radius:8px}.style-card.active{border-color:#6f8864;background:#f5f7f0}.palette{display:flex;height:42px;border-radius:5px;overflow:hidden;margin-bottom:12px}.palette span{flex:1}.style-card strong{font-size:12px;display:block}.style-card small{font-size:10px;color:#909787;display:block;margin-top:5px}.full-btn{width:100%;margin-top:18px}.toast{position:fixed;bottom:30px;left:50%;transform:translate(-50%);background:#354731;color:#fff;padding:12px 24px;border-radius:9px;z-index:100;box-shadow:0 4px 20px #0002;opacity:0;pointer-events:none;transition:.2s}.toast.show{opacity:1}.help-box{font-size:12px;line-height:2.2;color:#7a8474}dialog{border:1px solid var(--line);border-radius:15px;padding:30px;max-width:440px;box-shadow:0 25px 100px #0002}dialog::backdrop{background:#24332444}.scheme{padding:13px;border:1px solid var(--line);border-radius:8px;margin-top:12px;display:flex;align-items:center;justify-content:space-between;gap:14px}.empty{font-size:12px;color:#888;line-height:2}@media(max-width:1150px){.layout{grid-template-columns:215px minmax(250px,1fr) 235px}.panel{padding:22px 15px}.brand small,.project span{display:none}.view-tabs button{padding:9px}.scene-title{left:20px}.item small{font-size:8px}}@media(max-width:850px){header{padding:0 15px}.project{display:none}.layout{grid-template-columns:190px minmax(260px,1fr)}.right{position:absolute;right:12px;top:135px;width:210px;max-height:65vh;border:1px solid var(--line);border-radius:10px;display:none}.right.visible{display:block}.rail{width:64px}.layout{margin-left:64px}.brand{font-size:23px}.actions{gap:5px}.btn{padding:9px}.scene-tools{top:90px}}@media(max-width:600px){.layout{grid-template-columns:1fr}.left{position:absolute;left:64px;top:76px;bottom:0;width:210px;z-index:4;display:none}.left.visible{display:block}.actions .export-label{display:none}.scene-title h1{font-size:18px}}.mode-switch{display:flex;gap:4px;padding:4px;background:#f2f4ee;border:1px solid #e6ebe0;border-radius:9px}.mode-switch button{padding:9px 15px;border-radius:6px;font-size:12px;white-space:nowrap}.mode-switch button.active{background:#526c54;color:#fff}.layout-editor{position:absolute;inset:0;z-index:1;background:#f1f4ee}.layout-editor[hidden]{display:none}.layout-editor svg{width:100%;height:100%;touch-action:none}.editing .scene-title,.editing .scene-tools{z-index:2}.editing .view-tabs,.editing .hint{display:none}.wall-hit{stroke:#87977a;stroke-width:8;cursor:pointer;stroke-linecap:square}.wall-hit:hover,.wall-hit.selected{stroke:#4f6b49;stroke-width:10}.wall-dimension{font-size:11px;text-anchor:middle;dominant-baseline:middle;fill:#627457;cursor:pointer;paint-order:stroke;stroke:#f1f4ee;stroke-width:5px;stroke-linejoin:round}.corner{fill:#fff;stroke:#6b845f;stroke-width:2;cursor:grab}.corner.selected{fill:#638356;stroke:#fff;stroke-width:2}.area-label{font-size:13px;fill:#718469}.opening{cursor:ew-resize}.opening.selected rect{stroke:#486744;stroke-width:4}.column{cursor:move}.column rect{fill:#98a68d;stroke:#748567;stroke-width:2}.column.selected rect{stroke:#3f6234;stroke-width:4}.shape-choices{display:grid;grid-template-columns:1fr 1fr;gap:10px}.shape-choice{flex-direction:column;border:1px solid #e2e7da;border-radius:8px;padding:14px 10px;font-size:11px;background:#fafbf7}.shape-choice svg{width:70px;height:55px;fill:#edf1e5;stroke:#80946f;stroke-width:3}.draft-actions{position:absolute;bottom:24px;left:50%;transform:translate(-50%);background:#fff;box-shadow:0 3px 20px #0001;border:1px solid #e5eada;border-radius:10px;padding:12px;display:flex;gap:8px;align-items:center;white-space:nowrap}.draft-actions[hidden]{display:none}.draft-actions span{font-size:11px;color:#79876e}.right select{width:100%;padding:10px;border:1px solid #e4e8df;border-radius:6px;background:#fff;color:#56654e}.editing .scene-title{pointer-events:none}.editing .scene-title h1{font-size:18px}@media(max-width:1250px){header .project{display:none}}@media(max-width:850px){.mode-switch button{padding:8px;font-size:10px}.brand small{display:none}}@media(max-width:600px){header .brand{display:none}.draft-actions span{display:none}}.scene-tools .history-button{width:auto;min-width:62px;padding:0 9px;font-size:11px;gap:5px}.column-resize-ui .resize-handle{fill:#fff;stroke:#456c3b;stroke-width:1.6;vector-effect:non-scaling-stroke;pointer-events:all}.column-resize-ui .resize-handle:hover{fill:#dbe8d1;stroke-width:2.5}.column-resize-ui.invalid .resize-handle{stroke:#b76449;fill:#fff3ed}.column-size-label{fill:#456c3b;paint-order:stroke;stroke:#f9faf4;stroke-width:4px;stroke-linejoin:round;pointer-events:none}.column-resize-ui.invalid .column-size-label{fill:#b76449}.handle-nw,.handle-se{cursor:nwse-resize}.handle-ne,.handle-sw{cursor:nesw-resize}.handle-n,.handle-s{cursor:ns-resize}.handle-e,.handle-w{cursor:ew-resize}@media(max-width:1000px){.scene-tools .history-button{min-width:34px}.history-button span{display:none}}.wall-room-size{background:#f2f5ec;border:1px solid #e2e8d9;padding:12px;border-radius:8px;font-size:11px;color:#718265}.wall-room-size strong{display:block;font-size:19px;font-weight:500;color:#4f6b49;margin:5px 0}.wall-room-size small{font-size:9px}.wall-hit.invalid-wall{stroke:#bb745c!important}.wall-dimension{cursor:grab}.resize-3d{position:absolute;inset:0;pointer-events:none;z-index:1}.resize-3d[hidden]{display:none}.size-handle{position:absolute;transform:translate(-50%,-50%);pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none;border:1.5px solid var(--axis);color:var(--axis);background:#fffffff2;border-radius:6px;padding:5px 7px;font-size:10px;font-weight:600;white-space:nowrap;box-shadow:0 2px 8px #23332222;cursor:grab;transition:background .15s}.size-handle[hidden]{display:none}.size-handle:hover,.size-handle.dragging{background:var(--axis);color:#fff}.size-handle.dragging{cursor:grabbing}.axis-w{--axis:#b56c53}.axis-d{--axis:#4d859c}.axis-h{--axis:#65864e}.axis-arrow{display:inline-block;font-size:15px;line-height:1}.scene-tools,.view-tabs{z-index:3}.surface-custom{display:flex;gap:10px;align-items:center;margin:15px 0 28px}.surface-custom input[type=color]{width:42px;height:42px;flex-shrink:0;padding:3px;border:1px solid var(--line);border-radius:7px;background:#fff;cursor:pointer}.surface-custom>div{min-width:0;flex:1}.surface-custom label{display:block;color:#899088;font-size:10px;margin-bottom:5px}.surface-custom input[type=text]{width:100%;padding:8px;border:1px solid var(--line);border-radius:6px;font-family:monospace}.object-remove{padding:6px 8px;font-size:10px;flex-shrink:0}.object-remove svg{width:14px;height:14px}#resize-room{font-size:11px;padding:7px 10px}#resize-room[aria-pressed=true]{background:#447f94;color:#fff;border-color:#447f94}.room-size-readout{padding:15px 10px;margin:16px 0;background:#eef4f5;border-radius:8px;color:#447f94;font-size:18px}.editing #resize-room{display:none}.column.beam rect{fill:#b19778;fill-opacity:.65;stroke:#9d7b56;stroke-dasharray:5 3}.column.beam.selected rect{stroke:#79522b;stroke-width:3}header .brand{display:flex;flex-shrink:0;line-height:0;align-items:center;gap:18px}header .brand-home{display:block;line-height:0}header .back-hub{font-size:12px;line-height:1;color:var(--muted);white-space:nowrap;text-decoration:none}header .back-hub:hover{color:var(--green)}header .brand-logo{display:block;width:210px;height:auto;max-height:48px;object-fit:contain}@media(max-width:850px){header .brand-logo{width:155px}}@media(max-width:600px){header{padding:0 8px;gap:6px}header .brand{display:flex;padding:3px 4px;border-radius:4px}header .brand-logo{width:94px}.mode-switch button{padding:7px 5px;font-size:9px}.actions #plans{display:none}.actions .btn{padding:7px;font-size:10px}}
