/** * Floor Plan Setup Panel Styles */ .floorplan-panel { position: fixed; top: 60px; right: 340px; width: 380px; max-height: calc(100vh - 80px); background: rgba(0, 0, 0, 0.9); border-radius: 8px; z-index: 100; overflow-y: auto; } .floorplan-header { display: flex; justify-content: space-between; align-items: center; padding: 12px 16px; border-bottom: 1px solid rgba(255, 255, 255, 0.1); } .floorplan-header h3 { font-size: 14px; color: #888; text-transform: uppercase; letter-spacing: 1px; margin: 0; } .floorplan-close { background: none; border: none; color: #888; font-size: 24px; cursor: pointer; padding: 0 4px; line-height: 1; transition: color 0.2s; } .floorplan-close:hover { color: #eee; } .floorplan-content { padding: 12px; } .floorplan-section { margin-bottom: 20px; } .floorplan-section h4 { font-size: 13px; color: #ccc; margin-bottom: 8px; } .floorplan-hint { font-size: 11px; color: #888; margin-bottom: 8px; } /* Upload area */ .floorplan-upload-area { display: flex; align-items: center; gap: 12px; } .floorplan-btn { padding: 6px 14px; border-radius: 4px; font-size: 12px; cursor: pointer; transition: background 0.2s; border: none; display: inline-flex; align-items: center; gap: 6px; } .floorplan-btn-primary { background: #4fc3f7; color: #1a1a2e; } .floorplan-btn-primary:hover:not(:disabled) { background: #29b6f6; } .floorplan-btn-primary:disabled { opacity: 0.5; cursor: not-allowed; } .floorplan-btn-secondary { background: rgba(255, 255, 255, 0.1); color: #ccc; border: 1px solid rgba(255, 255, 255, 0.2); } .floorplan-btn-secondary:hover { background: rgba(255, 255, 255, 0.15); } .floorplan-icon { font-size: 14px; } .floorplan-file-name { font-size: 11px; color: #888; max-width: 180px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* Preview */ .floorplan-preview { margin-top: 12px; text-align: center; } .floorplan-preview img { max-width: 100%; max-height: 200px; border-radius: 4px; border: 1px solid rgba(255, 255, 255, 0.1); } /* Calibration */ .floorplan-calibration-container { margin-top: 12px; } .floorplan-image-wrapper { position: relative; display: inline-block; border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 4px; overflow: hidden; } #floorplan-canvas { display: block; cursor: crosshair; max-width: 100%; } .floorplan-marker { position: absolute; width: 24px; height: 24px; border-radius: 50%; color: #fff; font-size: 12px; font-weight: bold; display: flex; align-items: center; justify-content: center; transform: translate(-50%, -50%); pointer-events: none; text-shadow: 0 1px 3px rgba(0, 0, 0, 0.8); } .floorplan-controls { margin-top: 12px; } .floorplan-instructions { font-size: 12px; color: #bbb; background: rgba(255, 255, 255, 0.05); padding: 8px 10px; border-radius: 4px; text-align: center; } .floorplan-points-info { background: rgba(0, 0, 0, 0.3); border-radius: 4px; padding: 8px 10px; margin-top: 8px; } .floorplan-point-info { display: flex; justify-content: space-between; font-size: 11px; margin-bottom: 4px; } .point-label { color: #888; } .floorplan-distance-input { margin-top: 8px; } .floorplan-distance-input label { display: block; font-size: 11px; color: #aaa; margin-bottom: 4px; } .floorplan-distance-input input { width: 100%; padding: 6px 10px; background: rgba(255, 255, 255, 0.08); border: 1px solid rgba(255, 255, 255, 0.15); border-radius: 4px; color: #eee; font-size: 13px; box-sizing: border-box; } .floorplan-distance-input input:focus { outline: none; border-color: #4fc3f7; box-shadow: 0 0 0 2px rgba(79, 195, 247, 0.2); } .floorplan-actions { display: flex; justify-content: space-between; margin-top: 12px; gap: 8px; } .floorplan-status-info { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 12px; } .status-item { display: flex; justify-content: space-between; font-size: 11px; } .status-label { color: #888; } /* Responsive adjustments */ @media (max-width: 1200px) { .floorplan-panel { right: 20px; width: 340px; } }