/** * Floor Plan Setup Panel Styles */ .floorplan-panel { position: fixed; top: 60px; right: 340px; width: 380px; max-height: calc(100vh - 80px); background: var(--overlay-panel); border-radius: var(--radius-card); z-index: 100; overflow-y: auto; } .floorplan-header { display: flex; justify-content: space-between; align-items: center; padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--bg-hover); } .floorplan-header h3 { font-size: var(--text-sm); color: var(--text-muted); text-transform: uppercase; letter-spacing: var(--ls-wide); margin: 0; } .floorplan-close { background: none; border: none; color: var(--text-muted); font-size: var(--text-3xl); cursor: pointer; padding: 0 4px; line-height: 1; transition: color 0.2s; } .floorplan-close:hover { color: var(--slate-12); } .floorplan-content { padding: var(--space-3); } .floorplan-section { margin-bottom: var(--space-5); } .floorplan-section h4 { font-size: var(--text-sm); color: var(--slate-11); margin-bottom: var(--space-2); } .floorplan-hint { font-size: var(--text-2xs); color: var(--text-muted); margin-bottom: var(--space-2); } /* Upload area */ .floorplan-upload-area { display: flex; align-items: center; gap: var(--space-3); } .floorplan-btn { padding: 6px 14px; border-radius: var(--radius-control); font-size: var(--text-xs); cursor: pointer; transition: background 0.2s; border: none; display: inline-flex; align-items: center; gap: 6px; } .floorplan-btn-primary { background: var(--blue-10); color: var(--bg-card); } .floorplan-btn-primary:hover:not(:disabled) { background: var(--blue-10); } .floorplan-btn-primary:disabled { opacity: 0.5; cursor: not-allowed; } .floorplan-btn-secondary { background: var(--bg-hover); color: var(--slate-11); border: 1px solid var(--border-strong); } .floorplan-btn-secondary:hover { background: var(--border-strong); } .floorplan-icon { font-size: var(--text-sm); } .floorplan-file-name { font-size: var(--text-2xs); color: var(--text-muted); max-width: 180px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* Preview */ .floorplan-preview { margin-top: var(--space-3); text-align: center; } .floorplan-preview img { max-width: 100%; max-height: 200px; border-radius: var(--radius-control); border: 1px solid var(--bg-hover); } /* Calibration */ .floorplan-calibration-container { margin-top: var(--space-3); } .floorplan-image-wrapper { position: relative; display: inline-block; border: 1px solid var(--bg-hover); border-radius: var(--radius-control); overflow: hidden; } #floorplan-canvas { display: block; cursor: crosshair; max-width: 100%; } .floorplan-marker { position: absolute; width: 24px; height: 24px; border-radius: 50%; color: var(--text-on-accent); font-size: var(--text-xs); font-weight: bold; display: flex; align-items: center; justify-content: center; transform: translate(-50%, -50%); pointer-events: none; text-shadow: 0 1px 3px var(--overlay-strong); } .floorplan-controls { margin-top: var(--space-3); } .floorplan-instructions { font-size: var(--text-xs); color: var(--text-muted); background: var(--border-subtle); padding: var(--space-2) 10px; border-radius: var(--radius-control); text-align: center; } .floorplan-points-info { background: var(--shadow); border-radius: var(--radius-control); padding: var(--space-2) 10px; margin-top: var(--space-2); } .floorplan-point-info { display: flex; justify-content: space-between; font-size: var(--text-2xs); margin-bottom: var(--space-1); } .point-label { color: var(--text-muted); } .floorplan-distance-input { margin-top: var(--space-2); } .floorplan-distance-input label { display: block; font-size: var(--text-2xs); color: var(--text-secondary); margin-bottom: var(--space-1); } .floorplan-distance-input input { width: 100%; padding: 6px 10px; background: var(--border-default); border: 1px solid var(--border-strong); border-radius: var(--radius-control); color: var(--slate-12); font-size: var(--text-sm); box-sizing: border-box; } .floorplan-distance-input input:focus { outline: none; border-color: var(--blue-10); box-shadow: 0 0 0 2px var(--blue-muted); } .floorplan-actions { display: flex; justify-content: space-between; margin-top: var(--space-3); gap: var(--space-2); } .floorplan-status-info { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-2); margin-bottom: var(--space-3); } .status-item { display: flex; justify-content: space-between; font-size: var(--text-2xs); } .status-label { color: var(--text-muted); } /* Responsive adjustments */ @media (max-width: 1200px) { .floorplan-panel { right: 20px; width: 340px; } }