.floor-plan-editor{--fp-bg:#fff;--fp-text:#1e293b;--fp-muted:#64748b;--fp-border:#cbd5e1;--fp-accent:#165a49;color:var(--fp-text);width:100%;min-width:0;font-size:14px}.dark .floor-plan-editor{--fp-bg:#172231;--fp-text:#e2e8f0;--fp-muted:#a8b8ca;--fp-border:#465569;--fp-accent:#82c6ad}.fp-tool-row{display:flex;align-items:end;gap:8px;flex-wrap:wrap;margin:8px 0}.floor-plan-editor button,.floor-plan-editor input,.floor-plan-editor select,.floor-plan-editor textarea{font:inherit;box-sizing:border-box}.floor-plan-editor button{min-height:44px;padding:8px 12px;border:1px solid var(--fp-border);border-radius:8px;background:var(--fp-bg);color:var(--fp-text);cursor:pointer;touch-action:manipulation}.floor-plan-editor button[aria-pressed=true]{background:var(--fp-accent);color:var(--fp-bg);border-color:var(--fp-accent)}.floor-plan-editor button:disabled{opacity:.45;cursor:default}.floor-plan-editor button:focus-visible,.floor-plan-editor input:focus-visible,.floor-plan-editor select:focus-visible,.floor-plan-editor textarea:focus-visible{outline:3px solid #e6aa61;outline-offset:2px}.floor-plan-editor label{display:flex;flex-direction:column;gap:4px;color:var(--fp-muted);font-size:12px;min-width:0}.floor-plan-editor input,.floor-plan-editor select,.floor-plan-editor textarea{border:1px solid var(--fp-border);border-radius:7px;background:var(--fp-bg);color:var(--fp-text);padding:10px;min-height:44px;min-width:0;max-width:100%;font-size:16px}.floor-plan-editor textarea{width:100%;min-height:72px}.fp-tool-row input{max-width:180px}.fp-hint{color:var(--fp-muted);font-size:12px;line-height:1.6;margin:8px 0}.fp-stage{position:relative;border:1px solid var(--fp-border);border-radius:12px;overflow:hidden;background:var(--fp-bg);width:100%;-moz-user-select:none;user-select:none;-webkit-user-select:none}.fp-status{padding:10px 12px;min-height:0;background:#e8f2ec;color:#174b37;border-radius:8px;margin:8px 0;font-size:13px}.fp-status:empty{display:none}.fp-status[data-error=true]{background:#fff1e7;color:#833715}.fp-status[data-busy=true]:before{content:"";display:inline-block;width:12px;height:12px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;margin-right:8px;animation:fp-spin .8s linear infinite}.fp-card{margin-top:12px;padding:16px;border:1px solid var(--fp-border);border-radius:12px;background:var(--fp-bg)}.fp-card h3{font-size:14px;font-weight:700;margin:0 0 12px}.fp-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:12px;margin:12px 0}.fp-metrics{display:flex;gap:20px;flex-wrap:wrap;margin:12px 0}.fp-metrics span{display:flex;flex-direction:column;font-size:11px;color:var(--fp-muted)}.fp-metrics strong{font-size:17px;color:var(--fp-text)}.fp-edge{padding:12px;margin-top:10px;border:1px solid var(--fp-border);border-radius:8px}.fp-edge-selected{border-color:var(--fp-accent);box-shadow:0 0 0 1px var(--fp-accent)}.fp-photos{display:flex;gap:8px;flex-wrap:wrap}.fp-photos img{width:90px;height:70px;-o-object-fit:cover;object-fit:cover;border-radius:5px}.fp-upload input{max-width:210px}.fp-warning{color:#b45309;font-size:12px}.fp-table-scroll{overflow-x:auto;touch-action:pan-x pan-y}.fp-card table{width:100%;border-collapse:collapse}.fp-card td,.fp-card th{padding:8px;text-align:left;border-bottom:1px solid var(--fp-border);font-size:12px}.fp-grow{flex:1}.fp-photo-dialog{position:fixed;top:12px;right:12px;bottom:12px;left:12px;margin:auto;width:min(900px,calc(100vw - 24px));height:calc(100dvh - 24px);max-width:none;max-height:none;padding:16px;overflow:auto;border:1px solid var(--fp-border);border-radius:12px;background:var(--fp-bg);color:var(--fp-text);z-index:10000}.fp-photo-dialog::backdrop{background:#000b}.fp-photo-dialog canvas{max-width:100%;height:auto;touch-action:none;display:block}.fp-photo-dialog .fp-photo-status{min-height:20px}@keyframes fp-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.fp-status[data-busy=true]:before{animation:none}}@media(max-width:600px){.fp-card{padding:12px}.fp-tool-row{gap:6px}.floor-plan-editor button{padding:8px 10px}.fp-fields{grid-template-columns:1fr 1fr}.fp-metrics{gap:12px}}
