:root{--bg:#f6f7f9;--panel:#fff;--line:#e3e6ea;--text:#1f2933;--muted:#6b7680;--accent:#2563eb;--accent-soft:#e8efff;--warn:#dc2626;--warn-soft:#fdecec;--radius:10px;color:var(--text);background:var(--bg);font-family:Pretendard,Apple SD Gothic Neo,Noto Sans KR,Malgun Gothic,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}html,body{height:100%;margin:0;overflow:hidden}button,input{font:inherit;color:inherit}#app{grid-template-rows:auto 1fr;grid-template-columns:minmax(0,1fr);height:100dvh;display:grid}.topbar{background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:16px;min-height:52px;padding:8px 14px;display:flex}.brand{white-space:nowrap;align-items:baseline;gap:8px;display:flex}.brand .logo{color:var(--accent);font-family:Georgia,Times New Roman,serif;font-size:20px;font-style:italic}.brand .title{font-size:17px;font-weight:700}.brand small{color:var(--muted);font-size:12px}.view-controls{flex-wrap:wrap;align-items:center;gap:8px;margin-left:auto;display:flex}.sep{background:var(--line);width:1px;height:22px;display:inline-block}.btn,.toggle,.segmented button,.chip{border:1px solid var(--line);background:var(--panel);cursor:pointer;white-space:nowrap;border-radius:8px;padding:5px 10px;font-size:13px;transition:background .12s,border-color .12s}.btn:hover,.toggle:hover,.segmented button:hover,.chip:hover{background:#f8f9fb;border-color:#c5cbd3}.btn:disabled{opacity:.4;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.danger{color:var(--warn)}.toggle.active,.chip.active,.segmented button.active{background:var(--accent-soft);color:var(--accent);border-color:#b9cdfc;font-weight:600}.segmented{display:inline-flex}.segmented button{border-radius:0;margin-left:-1px}.segmented button:first-child{border-radius:8px 0 0 8px;margin-left:0}.segmented button:last-child{border-radius:0 8px 8px 0}.workspace{grid-template-columns:1fr 340px;min-height:0;display:grid}.viewport{min-width:0;min-height:0;position:relative;overflow:hidden}.viewport canvas{touch-action:none;display:block}.label-layer{pointer-events:none;position:absolute;inset:0}.room-label{white-space:nowrap;background:#ffffffd1;border-radius:7px;flex-direction:column;align-items:center;padding:3px 8px;font-size:12px;line-height:1.3;display:flex;box-shadow:0 1px 3px #0f172a1f}.room-label b{font-size:13px}.room-label span{color:var(--muted);font-size:11px}.furniture-label{color:#fff;text-align:center;word-break:keep-all;background:#1f2933d1;border-radius:6px;flex-direction:column;align-items:center;max-width:160px;padding:2px 7px;font-size:11px;line-height:1.3;display:flex}.furniture-label b{font-size:12px}.furniture-label span{color:#d5dae0;font-size:10.5px}.item-label{background:var(--accent);color:#fff;white-space:nowrap;border-radius:6px;padding:2px 8px;font-size:11px;transform:translateY(-14px)}.item-label.warn{background:var(--warn)}.inspector{z-index:5;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);width:max-content;max-width:calc(100% - 24px);padding:8px 10px;position:absolute;top:12px;left:50%;transform:translate(-50%);box-shadow:0 6px 24px #0f172a1f}.inspector[hidden]{display:none}.inspector .row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.inspector .name-input{border:1px solid var(--line);border-radius:7px;width:130px;padding:4px 8px;font-weight:600}.inspector .row+.row{margin-top:6px}.inspector .note-input{width:260px;color:var(--text);border:1px solid var(--line);border-radius:7px;padding:4px 8px;font-size:13px}.inspector .field{color:var(--muted);align-items:center;gap:4px;font-size:12px;display:inline-flex}.inspector .num{border:1px solid var(--line);border-radius:7px;width:62px;padding:4px 6px;font-size:13px}.inspector .unit{color:var(--muted);font-size:12px}.inspector .color{border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:7px;width:32px;height:28px;padding:0}.inspector-warn{color:var(--warn);margin-top:6px;font-size:12px}.inspector-warn[hidden]{display:none}.statusbar{z-index:4;border:1px solid var(--line);max-width:calc(100% - 24px);color:var(--muted);pointer-events:none;background:#ffffffe6;border-radius:8px;padding:6px 10px;font-size:12px;position:absolute;bottom:12px;left:12px}.statusbar.warn{color:var(--warn);background:var(--warn-soft);border-color:#f5c2c2}.sidebar{background:var(--panel);border-left:1px solid var(--line);flex-direction:column;min-height:0;display:flex}.sidebar-head{border-bottom:1px solid var(--line);padding:14px 14px 10px}.sidebar-head h2{margin:0;font-size:16px}.sidebar-head .hint{color:var(--muted);margin:4px 0 10px;font-size:12px;line-height:1.45}.search{border:1px solid var(--line);border-radius:8px;width:100%;margin-bottom:8px;padding:7px 10px;font-size:13px}.chips{flex-wrap:wrap;gap:5px;display:flex}.chip{border-radius:999px;padding:3px 9px;font-size:12px}.cards{flex:1;grid-template-columns:1fr 1fr;grid-auto-rows:max-content;align-content:start;gap:10px;padding:12px 14px;display:grid;overflow-y:auto}.card{border:1px solid var(--line);border-radius:var(--radius);cursor:grab;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:pan-y;background:#fff;transition:transform .12s,box-shadow .12s,border-color .12s;overflow:hidden}.card:hover{border-color:#b9cdfc;transform:translateY(-1px);box-shadow:0 4px 14px #2563eb1f}.card .thumb{background:linear-gradient(#f3f5f8,#e9edf2);justify-content:center;align-items:center;height:92px;display:flex}.card .thumb img{object-fit:contain;pointer-events:none;width:100%;height:100%}.card .meta{flex-direction:column;gap:2px;padding:7px 9px 8px;display:flex}.card .meta b{font-size:13px;font-weight:600}.card .meta span{color:var(--muted);font-size:11px}.empty{color:var(--muted);font-size:12px}.placed-section{border-top:1px solid var(--line);flex-direction:column;min-height:0;max-height:34%;display:flex}.placed-section h3{align-items:center;gap:6px;margin:0;padding:10px 14px 6px;font-size:13px;display:flex}.badge{border-radius:999px;padding:1px 7px;font-size:11px;font-weight:600}.badge.warn{background:var(--warn-soft);color:var(--warn)}.placed{margin:0;padding:0 8px 10px;list-style:none;overflow-y:auto}.placed li{cursor:pointer;border-radius:7px;align-items:center;gap:8px;padding:5px 6px;font-size:12px;display:flex}.placed li:hover{background:#f4f6f9}.placed li.selected{background:var(--accent-soft)}.placed li.warn .name{color:var(--warn)}.placed li.empty{cursor:default}.placed .dot{border:1px solid #0000001a;border-radius:50%;flex:none;width:10px;height:10px}.placed .name{flex:1;font-weight:600}.placed .size{color:var(--muted)}.icon{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:15px;line-height:1}.icon:hover{color:var(--warn)}.drag-chip{z-index:50;pointer-events:none;background:#fff;border:1px solid #b9cdfc;border-radius:9px;align-items:center;gap:6px;padding:4px 10px 4px 4px;font-size:12px;font-weight:600;display:flex;position:fixed;top:0;left:0;box-shadow:0 8px 24px #0f172a2e}.drag-chip img{object-fit:contain;width:44px;height:32px}body.dragging-card,body.dragging-card *{cursor:grabbing!important}body.moving canvas{cursor:move!important}body.rotating canvas{cursor:grabbing!important}body.resizing-structure canvas{cursor:ew-resize!important}.structure-dim{z-index:6;color:#fff;white-space:nowrap;pointer-events:none;background:#2563ebeb;border-radius:7px;padding:4px 9px;font-size:12px;font-weight:600;position:absolute;box-shadow:0 4px 14px #0f172a2e}.structure-dim[hidden]{display:none}dialog{border:none;border-radius:14px;width:min(640px,100vw - 32px);padding:0;box-shadow:0 20px 60px #0f172a4d}dialog::backdrop{background:#0f172a59}dialog form{padding:20px 24px}dialog h2{margin:0 0 4px;font-size:18px}dialog ol{padding-left:20px;font-size:14px;line-height:1.6}dialog .muted{color:var(--muted);font-size:13px}dialog .warn{color:var(--warn);font-size:13px}.dialog-actions{justify-content:flex-end;display:flex}@media (width<=900px){.topbar{gap:6px 12px;min-height:0;padding:6px 10px}.view-controls{scrollbar-width:thin;flex-wrap:nowrap;width:100%;margin-left:0;overflow-x:auto}.view-controls>*{flex:none}.workspace{grid-template-rows:minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr)}.sidebar{border-left:none;border-top:1px solid var(--line);min-width:0}.sidebar-head{padding:8px 10px 6px}.sidebar-head h2{display:none}.sidebar-head .hint{margin:0 0 6px}.search{margin-bottom:6px;padding:5px 9px}.chips{scrollbar-width:none;flex-wrap:nowrap;overflow-x:auto}.chip{flex:none}.cards{overscroll-behavior-x:contain;flex:none;grid-template-columns:none;grid-auto-columns:112px;grid-auto-flow:column;gap:8px;padding:8px 10px;overflow:auto hidden}.card{touch-action:pan-x}.card .thumb{height:64px}.card .meta{padding:5px 7px 6px}.card .meta b{font-size:12px}.placed-section{max-height:112px}.inspector{padding:6px 8px;top:6px}.inspector .row{gap:4px}.inspector .sep{display:none}.inspector .name-input{width:104px}.inspector .num{width:52px}.inspector .note-input{width:200px}.placed-section h3{padding:6px 10px 4px}}.start-dialog{width:min(980px,100vw - 32px);max-height:calc(100dvh - 32px);overflow:auto}.start-panel{padding:24px 26px 20px}.start-head h2{margin:0;font-size:22px}.start-head p{color:var(--muted);margin:4px 0 18px;font-size:13px}.start-panel h3{color:var(--muted);letter-spacing:.02em;margin:18px 0 8px;font-size:13px;font-weight:700}.start-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px;display:grid}.start-card{text-align:left;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);cursor:pointer;flex-direction:column;align-items:flex-start;gap:5px;min-height:104px;padding:14px;transition:border-color .12s,box-shadow .12s,transform .12s;display:flex}.start-card:hover{border-color:#b9cdfc;transform:translateY(-1px);box-shadow:0 6px 18px #2563eb1a}.start-card-title{font-size:14px;font-weight:700}.start-card-meta{color:var(--muted);font-size:12px;line-height:1.45}.start-card-badge{background:var(--accent-soft);color:var(--accent);border-radius:999px;margin-top:auto;padding:2px 7px;font-size:11px;font-weight:600}.start-card-add{background:#fafbfc;border-style:dashed}.start-card-add .start-card-title{color:var(--accent)}.preset-bands{flex-direction:column;gap:16px;display:flex}.preset-band-title{color:var(--text);align-items:baseline;gap:8px;margin:0 0 8px;font-size:13px;font-weight:700;display:flex}.preset-band-count{color:var(--muted);font-size:11px;font-weight:600}.start-presets{grid-template-columns:repeat(auto-fill,minmax(178px,1fr));gap:10px;display:grid}.preset-card{gap:7px;min-height:0;padding:10px}.preset-preview{background:#f5f7fa;border-radius:6px;width:100%;height:74px;display:block;overflow:hidden}.preset-card .start-card-meta{font-size:11px}.start-foot{margin-top:16px}.start-foot .muted{color:var(--muted);font-size:12px}
